/// <summary>
        /// Загрузка терриконов в главный грид окна.
        /// Если указан ID склада - в выборку попадут терриконы склада,
        /// если ID не указан - ХП вернёт все терриконы цеха.
        /// </summary>
        private void RefreshSimilarHeaps()
        {
            try
            {
                // 1) вызов ХП осуществляющей выборку терриконов,
                // 2) сохранение рекордсета в переменную "dts".
                dts = ExceptionWrapper.ProcessResult(
                    () => spc.FillTable("GetHeap",
                                        "nUnitIdIn", UnitId, SqlDbType.Int,    //если null - ХП вернёт все терриконы цеха.
                                        "nOwnerIdIn", OwnerId, SqlDbType.Int,
                                        "nMaterialIdIn", null, SqlDbType.Int,
                                        "nFractionIdIn", null, SqlDbType.Int,
                                        "nIsDel", 0, SqlDbType.Int
                                        ),
                    "Ошибка получения списка терриконов",
                    this
                    );

                // Загрузка полученного рекордсета в грид.
                igMain.DataSource = dts;

                // Запомним DataRow требуемого террикона.
                if (dts != null && dts.Rows.Count > 0)
                {
                    requiredRow = dts.AsEnumerable()
                                  .Where(row => row.Field <int>("nHeapId").Equals(HeapId))
                                  .FirstOrDefault();

                    // Сортировка терриконов по складам.
                    igMain.Sort(igMain.Columns["colSHPlace"], ListSortDirection.Descending);
                    // Сброс выделения строки по умолчанию
                    igMain.ClearSelection();
                    // Check записи в гриде с входным терриконом.
                    igMain.CheckRow(requiredRow, true);
                }
                // Получаем cуммарную ширину столбцов главного грида.
                WidthVisibleColumnsGrid(igMain);
            }
            catch (Exception ex)
            {
                // public class MessageBoxes from Itm.WClient.Com;
                MessageBoxes.Error(this, ex, "Ошибка наполнения главной таблицы!");
                return;
            }
        }
        /// <summary>
        /// Загрузка справочников: материалов, фракций, складов, шаблонов названий террикона.
        /// </summary>
        private void LoadDicts()
        {
            try
            {
                // Загрузка справочника материалов.
                var mats = ExceptionWrapper.ProcessResult(
                    () => spc.FillTable("GetMaterialUser"));
                itbMaterial.DisplayMember = "cNameMaterial";
                itbMaterial.ValueMember   = "nMaterialId";
                itbMaterial.DataSource    = mats;

                if (MaterialId.HasValue)
                {
                    itbMaterial.SelectedValue = MaterialId.Value;
                }

                // Загрузка справочника фракций.
                var fracs = ExceptionWrapper.ProcessResult(
                    () => spc.FillTable("GetFractionUser"));
                itbFraction.DisplayMember = "cNameFraction";
                itbFraction.ValueMember   = "nFractionId";
                itbFraction.DataSource    = fracs;

                if (FractionId.HasValue)
                {
                    itbFraction.SelectedValue = FractionId.Value;
                }

                // Если известен список разрешённых подраздлений,
                // то подставим его, иначе - все подразделения.
                itbPlace.DisplayMember = "cFullNameUnit";
                itbPlace.ValueMember   = "nUnitId";
                itbPlace.DataSource    = AllowUnits ?? Units;

                if (PlaceId.HasValue)
                {
                    itbPlace.SelectedValue = PlaceId.Value;
                }

                itbOwner.DisplayMember = "cFullNameUnit";
                itbOwner.ValueMember   = "nUnitId";
                itbOwner.DataSource    = Units;

                if (OwnerId.HasValue)
                {
                    itbOwner.SelectedValue = OwnerId.Value;
                }

                // Собственника можно менять только диспетчеру.
                if (DisableOwner)
                {
                    itbOwner.Enabled = false;
                }

                // Наполнение справочника шаблонов названий террикона(результата объединения).
                CreateContextMenuStripItems();
            }
            catch (Exception ex)
            {
                // public class MessageBoxes from Itm.WClient.Com;
                MessageBoxes.Error(this, ex, "Ошибка загрузки справочников!");
                return;
            }
        }