// Выбор площадки из справочника. // (! будет время - выполнить рефакторинг загрузки справочников). 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; } }
//... /// <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; } }