// Выбор площадки из справочника.
        // (! будет время  - выполнить рефакторинг загрузки справочников).
        private void itbPlace_ButtonClick(object sender, EventArgs e)
        {
            try
            {
                using (var dlg = new TableSelectionForm
                {
                    Name = "dlgPlace",
                    Text = "Выбор места",
                    ValueColumnName = "nUnitId",
                    Width = 600,
                    Height = 380
                })
                {
                    dlg.AddTextColumn("Наименование места",
                                      "cNameUnit", DataGridViewAutoSizeColumnMode.Fill, 100, 100);
                    SQLCoreInterfaceHelper.InitializeChildSQLCore(dlg, this);

                    var itb = (ItmTextBox)sender;
                    dlg.DataSource    = itb.DataSource;
                    dlg.SelectedValue = itb.SelectedValue;
                    if (dlg.ShowDialog(this) == DialogResult.OK)
                    {
                        itb.SelectedValue = dlg.SelectedValue;
                    }
                }
            }
            catch (Exception ex)
            {
                // public class MessageBoxes from Itm.WClient.Com;
                MessageBoxes.Error(this, ex, "Ошибка выбора площадки!");
                return;
            }
        }
Exemple #2
0
        //...

        /// <summary>
        /// Объединение терриконов.
        /// Метод производит открытие одноимённого окна и при положительном исходе
        ///	осуществляет вызов соответствующей хранимой процедуры.
        /// </summary>
        /// <remarks>
        /// Автор: Пантелеев М.Ю.
        /// Дата:  28.05.2015г.
        /// </remarks>
        private void UnionHeap()
        {
            try
            {
                using (var dlg = new ProductHeapUnionDialog())         // Создание экземпляра окна "Объединение терриконов".
                {
                    var row = igMain.SelectedDataRow;

                    // Если террикон для объединения выбран
                    if (row != null)
                    {
                        SQLCoreInterfaceHelper.InitializeChildSQLCoreNonControl(dlg, this);
                        // задаются входные параметры окна "Объединение терриконов".
                        dlg.HeapId       = row.Field <int>("nHeapId");                        // Идентификатор террикона.
                        dlg.MaterialId   = row.Field <int>("nMaterialId");                    // ID материала террикона.
                        dlg.FractionId   = row.Field <int>("nFractionId");                    // ID фракции террикона.
                        dlg.AllowUnits   = UseUnitsList ? dtUnitsForWorkshop : null;          // Список разрешённых подраздлений.
                        dlg.DisableOwner = UseUnitsList;                                      // Собственника можно менять только диспетчеру.
                        dlg.Units        = dtUnits;                                           // Все подразделения
                        dlg.OwnerId      = UseOwnerId ? nUnitId : null;                       // Подразделение-владелец.
                        dlg.PlaceId      = GetSelectedUnitId() ?? row.Field <int>("nUnitId"); // ID склада из дерева либо ID склада выбранного террикона.
                        dlg.UnitId       = GetSelectedUnitId();                               // ID склада из дерева подразделений.

                        // Настраиваются размеры окна "Объединение терриконов" относительно родительского.
                        if (Width > 1185)
                        {
                            dlg.Width = 1180;
                        }
                        else
                        {
                            dlg.Width = Width - 20;
                        }

                        // Проверка веса на null (терриконы с весом null или 0 допустимы для объединения).
                        if (!row.Field <decimal?>("nWeight").Equals(null))
                        {
                            // Выбранный террикон проверяется на отрицательную массу.
                            if (row.Field <decimal>("nWeight") < 0)
                            {
                                MessageBox.Show("Выбран террикон с отрицательной массой. \nОперация объединения недопустима.",
                                                "Объединение терриконов", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                return;
                            }
                        }
                        // Открытие окна "Объединение терриконов" с ожиданием операции закрытия.
                        // Если в результате окно было закрыто нажатием кнопки "Применить"
                        // (все необходимые проверки прошли успешно)- осуществляется
                        // вызов ХП объединения терриконов с передачей входных параметров.
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            // Вызов ХП объединения терриконов с передачей входных параметров.
                            ExceptionWrapper.ProcessNoResult(
                                () =>
                            {
                                spc.ExecuteNonQuery("UnionHeap",
                                                    "cNameHeapIn", dlg.NameHeap, SqlDbType.NVarChar,       // Название террикона(результата объединения).
                                                    "nMaterialIdIn", dlg.MaterialId, SqlDbType.Int,        // ID материала террикона(результата объединения).
                                                    "nFractionIdIn", dlg.FractionId, SqlDbType.Int,        // ID фракции террикона(результата объединения).
                                                    "nUnitIdIn", dlg.PlaceId, SqlDbType.Int,               // ID площадки на которой будет находится результирующий террикон.
                                                    "nOwnerIdIn", dlg.OwnerId, SqlDbType.Int,              // Цех-владелец террикона.
                                                    "cNoteIn", dlg.Note, SqlDbType.NVarChar,               // Текст примечания к террикону.
                                                    "cHeapListIn", dlg.cHeapGUIDList, SqlDbType.NVarChar); // Список GUID'ов объединяемых терриконов (текстом, через запятую).
                            },
                                "Ошибка объединения терриконов.",
                                this);

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