/// <summary>МЕТОД Фабрика Массовая загрузка всех объектов Protokol одного посещения/стационара</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCodApstacKL">Код посещения/пациента</param> /// <param name="pTipFind">Ищем по CodApstac или по KL</param> public static bool MET_FactoryProtokolArray(eTipDocum pTip, decimal pCodApstacKL, string pTipFind = "CodApstac") { // Коллекция Protokol List <UserProtokol> _Protokol = ((VirtualModul)MyGlo.Modul).PUB_Protokol; try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Protokol_Select_12(pCodApstacKL, _TipProtokol.PROP_Prefix, pTipFind)); // Перебираем весь поток и дабавляем все Protokolы while (_SqlDataReader.Read()) { UserProtokol _Value = new UserProtokol(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _Protokol.Add(_Value); } _SqlDataReader.Close(); // Загружаем все заголовки шаблонов ListShablon по загруженным протоколам UserListShablon.MET_FactoryListShablonArray(pTip); // Загружаем все заголовки шаблонов Shablon по загруженным протоколам UserShablon.MET_FactoryShablonArray(pTip); return(true); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Массовой Загрузки данных Protokol из SQL"); MyGlo.Event_Error(ex); return(false); } }
/// <summary>МЕТОД Фабрика Массовая загрузка всех объектов ListShablon для загруженной коллекции Protokol</summary> /// <param name="pTip">Тип протокола</param> /// <remarks>Делается как правило разово из MET_FactoryProtokolArray</remarks> public static bool MET_FactoryListShablonArray(eTipDocum pTip) { // Коллекция ListShablons List <UserListShablon> _ListShablons = ((VirtualModul)MyGlo.Modul).PUB_ListShablons; // Находим список кодов шаблонов (пример: 101, 110, 120, 0), в конце добавляем ноль, что бы перекрыть последнюю запятую или в пустом списке был просто ноль string _NomShablons = ((VirtualModul)MyGlo.Modul).PUB_Protokol.Select(i => i.PROP_NumShablon).Distinct().Aggregate("", (s, i) => s + i + ", ") + "0"; try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_ListShablon_Select_4(_TipProtokol.PROP_Prefix, _NomShablons)); // Перебираем весь поток и дабавляем все строки ListShablon while (_SqlDataReader.Read()) { UserListShablon _Value = new UserListShablon(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _ListShablons.Add(_Value); } _SqlDataReader.Close(); return(true); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Массовой Загрузки данных ListShablon из SQL"); MyGlo.Event_Error(ex); return(false); } }
/// <summary>МЕТОД Фабрика объекта Protokol</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCod">Код протокола</param> public static UserProtokol MET_FactoryProtokol(eTipDocum pTip, int pCod) { // Коллекция Protokol List <UserProtokol> _Protokol = ((VirtualModul)MyGlo.Modul).PUB_Protokol; // Ищем в коллекции Protokol по типу и коду протокола UserProtokol _Value = _Protokol.FirstOrDefault(p => p.PROP_TipProtokol.PROP_TipDocum == pTip && p.PROP_Cod == pCod); // Если не нашли, то пытаемся Protokol создать if (_Value == null) { _Value = new UserProtokol(); // Загружаем данные из SQL try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Protokol_Select_9(pCod, _TipProtokol.PROP_Prefix)); _SqlDataReader.Read(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _SqlDataReader.Close(); _Protokol.Add(_Value); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных Protokol из SQL"); MyGlo.Event_Error(ex); _Value = null; } } return(_Value); }
///<summary>МЕТОД Фабрика объекта ListShablon</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCodShablon">Код шаблона</param> public static UserListShablon MET_FactoryListShablon(eTipDocum pTip, int pCodShablon) { // Коллекция ListShablons List <UserListShablon> _ListShablons = ((VirtualModul)MyGlo.Modul).PUB_ListShablons; // Ищем в коллекции ListShablon по типу и номеру шаблона UserListShablon _Value = _ListShablons.FirstOrDefault(p => p.PROP_Cod == pCodShablon && p.PROP_TipProtokol.PROP_TipDocum == pTip); // Если не нашли, то пытаемся ListShablon создать if (_Value == null) { _Value = new UserListShablon(); // Загружаем данные из SQL try { var _TipProtokol = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_ListShablon_Select_3(pCodShablon, _TipProtokol.PROP_Prefix)); _SqlDataReader.Read(); _Value.MET_LoadDataReader(_SqlDataReader); _Value.PROP_TipProtokol = _TipProtokol; _SqlDataReader.Close(); _ListShablons.Add(_Value); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных ListShablon из SQL"); MyGlo.Event_Error(ex); _Value = null; } } return(_Value); }
/// <summary>СОБЫТИЕ Фильтруем историю</summary> private void PART_RadioButton_Checked(object sender, RoutedEventArgs e) { RadioButton _Radio = (RadioButton)sender; string _String = _Radio.Content.ToString(); eTipDocum _Tip = eTipDocum.Null; switch (_String) { case "Параклиника": _Tip = eTipDocum.Paracl; break; case "Стационар": _Tip = eTipDocum.Stac; break; case "Поликлиника": _Tip = eTipDocum.Pol; break; case "Диагностика": _Tip = eTipDocum.Kdl; break; } // Перебираем всю историю foreach (UserPole_History _Pole in PRO_PoleHistory) { if (_Tip != eTipDocum.Null && _Pole.PROP_Type != _Tip) { _Pole.Visibility = Visibility.Collapsed; } else { if (!_Pole.PROP_IsDelete || MyGlo.ShowDeletedProtokol) { _Pole.Visibility = Visibility.Visible; } } // Только для КДЛ if ((_Tip == eTipDocum.Null || _Tip == eTipDocum.Kdl) && _Pole.PROP_Kdl != "") { _Pole.Visibility = Visibility.Visible; } } }
/// <summary>МЕТОД Открытие новой копии программы, для редактирования протоколов</summary> /// <param name="pTipProtokol">Тип протокола</param> /// <param name="pIND">Код посещения</param> /// <param name="pKL">Код пациента</param> /// <param name="pStartFile">Путь к wpfBazis, по умолчанию пусто и берется из MyGlo.PathExe</param> /// <returns>true - открыли новое окно, false - несмогли</returns> /// <remarks>ВНИМАНИЕ!!! В режиме Debug показывает НЕ то что вы указали тут в парамметрах, а то что указано в стартовых параметрах модуля!</remarks> public static bool MET_EditWindows(eTipDocum pTipProtokol, decimal pIND, decimal pKL, string pStartFile = "") { int[] _Modul = { 22, 4, 16, 15, 22 }; Process _Process = new Process(); ProcessStartInfo _StartInfo = new ProcessStartInfo(); _StartInfo.FileName = pStartFile == "" ? MyGlo.PathExe : pStartFile; // Отделение string _Otd = ""; if (!(pTipProtokol == eTipDocum.Null || pTipProtokol == eTipDocum.Kdl || pIND == 0)) { _Otd = MySql.MET_QueryInt(MyQuery.MET_varOtd_Select_1(pTipProtokol, pIND)).ToString(); } _StartInfo.Arguments = $"{MyGlo.Server} {MyGlo.User} {_Modul[(int)pTipProtokol]} {pKL} {pIND} {_Otd}"; _Process.StartInfo = _StartInfo; _Process.Start(); return(true); }
///<summary>МЕТОД Замена шаблона в SQL (при импорте из Excel)</summary> public static void MET_SaveExcelToSQL(eTipDocum pTip, int pCodShablon) { // Коллекция Shablon List <UserShablon> _Shablon = ((VirtualModul)MyGlo.Modul).PUB_Shablon; // Ищем в коллекции <Shablon> по типу и номеру шаблона все вопросы данного шаблона List <UserShablon> _Value = _Shablon.Where(p => p.PROP_ID == pCodShablon && p.PROP_TipProtokol.PROP_TipDocum == pTip).ToList(); // Удаляем шаблон из SQL MyTipProtokol _Tip = new MyTipProtokol(pTip); MySql.MET_QueryNo(MyQuery.MET_Shablon_Delete_1(pCodShablon, _Tip.PROP_Prefix)); // Добавляем элементы шаблона в SQL foreach (var _i in _Value) { MySql.MET_QueryNo(MyQuery.MET_Shablon_Insert_1(_i.PROP_TipProtokol.PROP_Shablon, _i.PROP_Cod, _i.PROP_ID, _i.PROP_Nomer, _i.PRI_VarId, _i.PROP_Maska, _i.PROP_Type, _i.PROP_Razdel, _i.PROP_Name, _i.PROP_ValueStart, _i.PROP_OutText, _i.PROP_InText, _i.PROP_xFormat, _i.PROP_xLua, _i.PROP_xInfo)); // Сбрасываем флаг редактирования _i.PROP_FlagEdit = false; } }
/// <summary>СОБЫТИЕ Нажали на кнопку "Загрузки шаблона в SQL филиала"</summary> protected virtual void PRI_ButtonFromToFilialSQL_1_Click(object sender, RoutedEventArgs e) { DataRowView _DataRowView = (DataRowView)PART_DataGrid.SelectedItem; int _CodShablon = Convert.ToInt16(_DataRowView.Row["Cod"]); string _TipDoc = PRI_ComboBox_1.SelectedValue.ToString(); eTipDocum _eTip = eTipDocum.Null; switch (_TipDoc) { case "apaN": _eTip = eTipDocum.Pol; break; case "ast": _eTip = eTipDocum.Stac; break; case "par": _eTip = eTipDocum.Paracl; break; case "kdl": _eTip = eTipDocum.Kdl; break; } var _TipProtokol = new MyTipProtokol(_eTip); // Вопрос на загрузку if (MessageBox.Show($"Вы точно хотите загрузить {_CodShablon} шаблон на филиал?", "Вот это вопрос", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (MySql.MET_QueryNo(MyQuery.MET_Shablon_InsertToFilial_1(_CodShablon, _TipProtokol.PROP_Prefix))) { MessageBox.Show($"Успех!", "Загружено в SQL", MessageBoxButton.OK, MessageBoxImage.Asterisk); } else { MessageBox.Show($"Что то пошло не так!", "Загружено в SQL", MessageBoxButton.OK, MessageBoxImage.Error); } } }
/// <summary>КОНСТРУКТОР</summary> /// <param name="pTipProtokol">Тип протокола</param> public MyTipProtokol(eTipDocum pTipProtokol) { // Тип PROP_TipDocum = pTipProtokol; // Префикс switch (pTipProtokol) { case eTipDocum.Stac: PROP_Prefix = "ast"; PROP_KbolInfo = "stac"; PROP_NextRef = 24; break; case eTipDocum.Pol: PROP_Prefix = "apaN"; PROP_KbolInfo = "pol"; PROP_NextRef = 21; break; case eTipDocum.Paracl: PROP_Prefix = "par"; PROP_KbolInfo = "par"; PROP_NextRef = 29; break; case eTipDocum.Kdl: PROP_Prefix = "kdl"; PROP_KbolInfo = "kdl"; PROP_NextRef = 41; break; default: PROP_Prefix = ""; PROP_KbolInfo = ""; PROP_NextRef = 0; break; } }
///<summary>МЕТОД Фабрика объектов Shablon</summary> /// <param name="pTip">Тип протокола</param> /// <param name="pCodShablon">Код шаблона</param> public static List <UserShablon> MET_FactoryListShablon(eTipDocum pTip, int pCodShablon) { // Коллекция Shablon List <UserShablon> _Shablons = ((VirtualModul)MyGlo.Modul).PUB_Shablon; // Ищем в коллекции <Shablon> по типу и номеру шаблона List <UserShablon> _Value = _Shablons.Where(p => p.PROP_ID == pCodShablon && p.PROP_TipProtokol.PROP_TipDocum == pTip).ToList(); // Если не нашли, то пытаемся <Shablon> загрузить из SQL if (!_Value.Any()) { try { MyTipProtokol _Tip = new MyTipProtokol(pTip); SqlDataReader _SqlDataReader = MySql.MET_QuerySqlDataReader(MyQuery.MET_Shablon_Select_3(pCodShablon, _Tip.PROP_Prefix)); while (_SqlDataReader.Read()) { UserShablon _Shablon = new UserShablon(); _Shablon.MET_LoadDataReader(_SqlDataReader); _Shablon.PROP_TipProtokol = _Tip; // После загрузки, сбрасываем флаг редактирования _Shablon.PROP_FlagEdit = false; _Value.Add(_Shablon); } _SqlDataReader.Close(); } catch (Exception ex) { MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных Shablon из SQL"); MyGlo.Event_Error(ex); _Value = null; } // Добавляем наши вопросы в библиотеку if (_Value != null) { _Shablons?.AddRange(_Value); } } return(_Value); }
/// <summary>МЕТОД Выбор данных</summary> protected override void MET_Select() { if (!PROP_FlagButtonSelect || PART_DataGrid.SelectedItem == null) { return; } DataRowView _DataRowView = (DataRowView)PART_DataGrid.SelectedItem; int _CodShablon = Convert.ToInt16(_DataRowView.Row["Cod"]); string _NameSha = Convert.ToString(_DataRowView.Row["Name"]); string _ImageSha = Convert.ToString(_DataRowView.Row["Icon"]); string _TipDoc = PRI_ComboBox_1.SelectedValue.ToString(); eTipDocum _eTip = eTipDocum.Null; switch (_TipDoc) { case "apaN": _eTip = eTipDocum.Pol; break; case "ast": _eTip = eTipDocum.Stac; break; case "par": _eTip = eTipDocum.Paracl; break; case "kdl": _eTip = eTipDocum.Kdl; break; } var _TipProtokol = new MyTipProtokol(_eTip); UserWindow_EditProtokol _WinSpr = new UserWindow_EditProtokol(_TipProtokol, _CodShablon, _NameSha, _ImageSha, PRI_DatePicker_1.DisplayDate, PRI_DatePicker_2.DisplayDate, PRI_UserCod.PROP_Text); _WinSpr.Show(); }
/// <summary>КОНСТРУКТОР</summary> /// <param name="pNodes">Ссылка на ветку</param> /// <param name="pTipDocum">Тип документа (по умолчанию NULL=0, нет документа)</param> public UserDocument(VirtualNodes pNodes, eTipDocum pTipDocum = eTipDocum.Null) { PROP_Nodes = pNodes; PROP_TipDocum = pTipDocum; }
/// <summary>КОНСТРУКТОР</summary> /// <param name="pTipDocum">Тип документа (по умолчанию NULL=0, нет документа)</param> public UserDocument(eTipDocum pTipDocum = eTipDocum.Null) { PROP_TipDocum = pTipDocum; }
/// <summary>СОБЫТИЕ Нажали на кнопку "Загрузка шаблона из Excel"</summary> protected virtual void PRI_ButtonFromExcel_1_Click(object sender, RoutedEventArgs e) { DataRowView _DataRowView = (DataRowView)PART_DataGrid.SelectedItem; int _CodShablon = Convert.ToInt16(_DataRowView.Row["Cod"]); string _TipDoc = PRI_ComboBox_1.SelectedValue.ToString(); eTipDocum _eTip = eTipDocum.Null; switch (_TipDoc) { case "apaN": _eTip = eTipDocum.Pol; break; case "ast": _eTip = eTipDocum.Stac; break; case "par": _eTip = eTipDocum.Paracl; break; case "kdl": _eTip = eTipDocum.Kdl; break; } var _TipProtokol = new MyTipProtokol(_eTip); string _NameFile = $"{_TipDoc}_{_CodShablon}"; string _PathFile = $@"C:\Shablons\{_NameFile}.xlsx"; Excel.Workbook _WorkBook; Excel.Application _ExcelApp; _ExcelApp = new Excel.Application(); FileInfo _FileInfo = new FileInfo(_PathFile); // Если нашли файл с текущим шаблоном if (!_FileInfo.Exists) { MessageBox.Show($"Не найден файл: {_PathFile}", "Алё, чо грузить то?!"); return; } _WorkBook = _ExcelApp.Workbooks.Open(_PathFile); Excel.Worksheet _Sheet = (Excel.Worksheet)_WorkBook.Worksheets.Item[1]; // Заполняем данные List <UserShablon> _ListShablons = new List <UserShablon>(); int _y = 2; int _x = 1; try { while (_Sheet.Cells[_y, 1].Value2 is double) { _x = 1; UserShablon _Shablon = new UserShablon(); _Shablon.PROP_Cod = (int)_Sheet.Cells[_y, _x++].Value2; _Shablon.PROP_ID = (int)_Sheet.Cells[_y, _x++].Value2; _Shablon.PROP_Nomer = (byte)_Sheet.Cells[_y, _x++].Value2; _Shablon.PROP_VarId = (int)_Sheet.Cells[_y, _x++].Value2; _Shablon.PROP_Maska = _Sheet.Cells[_y, _x++].Text ?? ""; _Shablon.PROP_Type = (byte)_Sheet.Cells[_y, _x++].Value2; _Shablon.PROP_Razdel = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_Name = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_ValueStart = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_OutText = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_InText = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_xFormat = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_xLua = _Sheet.Cells[_y, _x++].Value2 ?? ""; _Shablon.PROP_xInfo = _Sheet.Cells[_y, _x].Value2 ?? ""; _Shablon.PROP_TipProtokol = _TipProtokol; _Shablon.PROP_FlagEdit = false; _y++; _ListShablons.Add(_Shablon); } } catch (Exception) { _WorkBook.Close(); _ExcelApp.Quit(); MessageBox.Show($"Ошибка загрузки в строке: {_y}, в столбце: {--_x}", "Ошибка"); return; } UserShablon.MET_FactoryListShablon(_eTip, _CodShablon); int _Remov = ((VirtualModul)MyGlo.Modul).PUB_Shablon.RemoveAll(p => p.PROP_ID == _CodShablon); ((VirtualModul)MyGlo.Modul).PUB_Shablon.AddRange(_ListShablons); _WorkBook.Close(); _ExcelApp.Quit(); // Если загружаем в SQL if (PRI_CheckBox_1.IsChecked == true) { UserShablon.MET_SaveExcelToSQL(_eTip, _CodShablon); MessageBox.Show($"Удалено: {_Remov} строк. Загружено {_ListShablons.Count} строк!", "Загружено в SQL"); } else { MessageBox.Show($"Удалено: {_Remov} строк. Загружено {_ListShablons.Count} строк!", "Загружено в Память"); } }
/// <summary>СОБЫТИЕ Нажали на кнопку "Выгрузка шаблона в Excel"</summary> protected virtual void PRI_ButtonToExcel_1_Click(object sender, RoutedEventArgs e) { DataRowView _DataRowView = (DataRowView)PART_DataGrid.SelectedItem; int _CodShablon = Convert.ToInt16(_DataRowView.Row["Cod"]); string _TipDoc = PRI_ComboBox_1.SelectedValue.ToString(); eTipDocum _eTip = eTipDocum.Null; switch (_TipDoc) { case "apaN": _eTip = eTipDocum.Pol; break; case "ast": _eTip = eTipDocum.Stac; break; case "par": _eTip = eTipDocum.Paracl; break; case "kdl": _eTip = eTipDocum.Kdl; break; } string _NameFile = $"{_TipDoc}_{_CodShablon}"; string _PathFile = $@"C:\Shablons\{_NameFile}.xlsx"; Excel.Workbook _WorkBook; Excel.Application _ExcelApp; Process[] _Processes = Process.GetProcesses(); // Выбираем только наши IEnumerable <Process> _ProcsBazis = _Processes.Where(p => p.ProcessName == "EXCEL" && p.MainWindowTitle == $"{_NameFile}.xlsx - Excel"); foreach (var _Process in _ProcsBazis) { // Активирует окно процесса SetForegroundWindow(_Process.MainWindowHandle); // Отображает данное окно на перед, даже если было свернуто ShowWindow(_Process.MainWindowHandle, 1); return; } _ExcelApp = new Excel.Application(); bool _FileNew; FileInfo _FileInfo = new FileInfo(_PathFile); // Если нашли файл с текущим шаблоном if (_FileInfo.Exists) { _ExcelApp.Workbooks.Open(_PathFile); _FileNew = false; } else { _ExcelApp.SheetsInNewWorkbook = 1; _ExcelApp.Workbooks.Add(Type.Missing); _FileNew = true; } PRI_Shablons = UserShablon.MET_FactoryListShablon(_eTip, _CodShablon); _WorkBook = _ExcelApp.Workbooks[1]; _WorkBook.Saved = true; Excel.Worksheet _Sheet = (Excel.Worksheet)_WorkBook.Worksheets.Item[1]; // Рисуем заголовки int _y = 1; int _x = 1; _Sheet.Cells[_y, _x++].Value = "Cod"; _Sheet.Columns[_x].ColumnWidth = 6; _Sheet.Cells[_y, _x++].Value = "ID"; _Sheet.Columns[_x].ColumnWidth = 7; _Sheet.Cells[_y, _x++].Value = "Nomer"; _Sheet.Columns[_x].ColumnWidth = 5; _Sheet.Cells[_y, _x++].Value = "VarId"; _Sheet.Columns[_x].ColumnWidth = 6; _Sheet.Cells[_y, _x++].Value = "Maska"; _Sheet.Columns[_x].ColumnWidth = 5; _Sheet.Cells[_y, _x++].Value = "Type"; _Sheet.Columns[_x].ColumnWidth = 20; _Sheet.Cells[_y, _x++].Value = "Razdel"; _Sheet.Columns[_x].ColumnWidth = 24; _Sheet.Cells[_y, _x++].Value = "Name"; _Sheet.Columns[_x].ColumnWidth = 28; _Sheet.Cells[_y, _x++].Value = "ValueStart"; _Sheet.Columns[_x].ColumnWidth = 19; _Sheet.Cells[_y, _x++].Value = "OutText"; _Sheet.Cells[_y, _x++].Value = "InText"; _Sheet.Columns[_x].ColumnWidth = 27; _Sheet.Cells[_y, _x++].Value = "xFormat"; _Sheet.Columns[_x].ColumnWidth = 45; _Sheet.Cells[_y, _x++].Value = "xLua"; _Sheet.Columns[_x].ColumnWidth = 22; _Sheet.Cells[_y, _x].Value = "xInfo"; // Заполняем данные _y = 2; foreach (var _Shablon in PRI_Shablons) { _x = 1; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Cod; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_ID; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Nomer; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_VarId; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Maska; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Type; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Razdel; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_Name; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_ValueStart; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_OutText; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_InText; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_xFormat; _Sheet.Cells[_y, _x++].Value = _Shablon.PROP_xLua; _Sheet.Cells[_y, _x].Value = _Shablon.PROP_xInfo; if (_Shablon.PROP_xLua != "") { _Sheet.Cells[_y, _x].Rows.RowHeight = 100; } _y++; } _Sheet.Name = DateTime.Now.ToString().Replace(':', '.'); _Sheet.Copy(Before: _WorkBook.Worksheets[1]); _Sheet = (Excel.Worksheet)_WorkBook.Worksheets.Item[1]; _Sheet.Name = "Текущий"; _ExcelApp.DisplayAlerts = true; if (_FileNew) { _WorkBook.SaveAs(_PathFile); } else { _WorkBook.Save(); } _WorkBook.Activate(); IntPtr _Handler1 = FindWindow(null, _ExcelApp.Caption); SetForegroundWindow(_Handler1); _ExcelApp.Visible = true; }