// Заполнение главного окна private void InitMainForm() { // Очистка данных из прошлого сеанса AdditionalToolParameters.gostReportToolsArray.Clear(); // Загружаем параметры инструмента из файла AdditionalToolParameters.LoadToolsParameters(); // Собираем инструмент из текущего документа Esprit.Document curDocument = Connect.sEspApp.Document; if (curDocument == null) { Connect.logger.Error("Инициализация формы: пустая ссылка на документ"); } Connect.sEspDocument = curDocument; // Идем по списку инструментов в документе //currentTool = curDocument.Tools; // Идем по списку инструментов в операциях currentTool = getOperationTools(); // Пытаться загрузить пользовательские параметры bool bLoadUserParams = true; foreach (Tool Tool in currentTool) { // Добавляем инструмент в массив отчета Connect.logger.Info("Инициализация главного окна. Добавление инструмента в список для отчета"); if (!addReportTool(Tool, bLoadUserParams) && bLoadUserParams) { MessageBox.Show("Превышено время ожидания подключения в Базе данных.\nЗначения дополнительных параметров не будут загружены.", "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error); bLoadUserParams = false; } Connect.logger.Info("Инициализация главного окна. Инструмент обавлен в список для отчета"); Technology toolTech = (Technology)Tool; string[] reportTool = new string[2]; reportTool[0] = toolTech.Caption; reportTool[1] = toolTech.Name; ListViewItem newReportTool = new ListViewItem(reportTool); Connect.logger.Info("Инициализация главного окна. Добавление инструмента на форму"); listDocumentTools.Items.Add(newReportTool); } // Заполнить таблицу параметров первого инструмента Connect.logger.Info("Инициализация главного окна. Заполнение параметров первого инструмента"); fillFormReportToolParameters(0); }
/// <summary> /// Получить список инструментов из операций в документе /// </summary> /// <returns></returns> private EspritTools.Tools getOperationTools() { EspritTools.Tools reportTools = new EspritTools.Tools(); HashSet <string> operationToolSet = new HashSet <string>(); foreach (Esprit.Operation operation in Connect.sEspDocument.Operations) { if (!operation.Suppress) // Только не подавленные операции { Technology operationTech = operation.Technology; Parameter toolId = null; //TODO - в некоторых операциях нет инструмента try { toolId = operationTech["ToolId"]; } catch { continue; } // Пропускаем повторно используемый инструмент if (operationToolSet.Contains(toolId.Value)) { continue; } foreach (Tool docTool in Connect.sEspDocument.Tools) { if (string.Equals(docTool.ToolID, toolId.Value)) { reportTools.Add(docTool); operationToolSet.Add(toolId.Value); } } } } return(reportTools); }