Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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);
        }
Example #4
0
        ///<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);
        }
Example #5
0
        /// <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;
                }
            }
        }
Example #6
0
        /// <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);
        }
Example #7
0
        ///<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);
                }
            }
        }
Example #9
0
        /// <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;
            }
        }
Example #10
0
        ///<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();
        }
Example #12
0
 /// <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;
 }
Example #13
0
 /// <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;
        }