Exemple #1
0
        /// <summary>МЕТОД Сохраняем данные</summary>
        public override bool MET_Save()
        {
            // Срабатываю фокус поля, что бы выполнилась Lua функция OnChange
            UIElement _ElementWithFocus = Keyboard.FocusedElement as UIElement;                             // элемент фокуса

            if (_ElementWithFocus?.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)) ?? false) // сдвигаю фокус на следующее поле
            {
                _ElementWithFocus.Focus();
            }
            // возвращаю фокус на место
            string      _Rezult = "";                                           // результат ответа
            VirtualPole _Pole;                                                  // элементы поля
            DateTime    _Date = DateTime.Today;                                 // дата осмотра

            // Формируем строку ответов
            foreach (DictionaryEntry _DiEnt in PUB_HashPole)
            {
                _Pole = (VirtualPole)_DiEnt.Value;                              // наше поле с ответом

                if (_Pole.PROP_Type == eVopros.Label)
                {
                    continue;                                                            // не берем поля с меткой
                }
                if (_Pole.PROP_VarId > 0 && !string.IsNullOrWhiteSpace(_Pole.PROP_Text)) // если есть ответ, то вставляем его в строку ответов
                {
                    _Rezult += "\\" + _Pole.PROP_VarId + "#" + _Pole.PROP_Text;
                }
                if (_Pole.Name == "DateOsmotr")
                {
                    _Date = Convert.ToDateTime(_Pole.PROP_Text);
                }
                // Запускаем Lua функцию, перед сохранием, если есть.
                if (!(_Pole.PROP_Lua?.MET_OnBeforeSave() ?? true))
                {
                    return(false);
                }
            }
            // Сохраняем ответы
            if (_Rezult.Length > 0)
            {
                // Если данные уже сохроняли, то просто обновляем, иначе добавляем
                string _StrSql;                                                     // строка SQL запроса
                int    _User     = MyGlo.User;
                string _UserName = MyGlo.UserName;
                if (PROP_Cod > 0)
                {
                    // Если установлен админ - то обновляем протокол с пользователем, создавшем данный протокол
                    if (MyGlo.PROP_Admin || MyGlo.FlagEdit)
                    {
                        _User     = PROP_Docum.PROP_Protokol.PROP_xUserUp;
                        _UserName = MyMet.MET_UserName(_User);
                    }
                    // Обновим логи
                    PROP_Docum.PROP_Protokol.MET_ChangeLogs(MyGlo.User, "Изменён");
                    _StrSql = MyQuery.MET_Protokol_Update_1(PROP_Cod, _Rezult, DateTime.Today, _User, _Date,
                                                            PROP_TipProtokol.PROP_Prefix, PROP_Docum.PROP_Protokol.PROP_xLog);
                    // Обновим протокол в SQL
                    MySql.MET_QueryNo(_StrSql);
                    // Обновим Protokol
                    PROP_Docum.PROP_Protokol.MET_Save(_Rezult, DateTime.Today, _User, _Date);
                }
                else
                {
                    string _xLog = UserLog.MET_CreateLogs();
                    PROP_Cod = MySql.MET_GetNextRef(PROP_TipProtokol.PROP_NextRef);
                    _StrSql  = MyQuery.MET_Protokol_Insert_1(PROP_Cod, MyGlo.IND, PRO_NomerShablon, _Rezult,
                                                             MyGlo.KL, DateTime.Today, _User, PUB_VirtualNodes.PROP_shaIndex, _Date, PROP_TipProtokol.PROP_Prefix, _xLog);
                    // Сохраним протокол в SQL
                    MySql.MET_QueryNo(_StrSql);
                    // Создадим Protokol
                    PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PUB_VirtualNodes.PROP_shaTipProtokol.PROP_TipDocum, PROP_Cod);
                }
                if (!PUB_VirtualNodes.PROP_shaPresenceProtokol)
                {
                    PUB_VirtualNodes.PROP_shaPresenceProtokol = true;           // пометили, что сохранили шаблон
                }
                // Дата протокола
                PUB_VirtualNodes.PROP_Data = _Date;
                // Нижний текст вкладок
                PUB_VirtualNodes.PROP_TextDown = _Date.ToString().Substring(0, 10) + " " + _UserName;
                // Только для добавляемых веток
                PUB_VirtualNodes.PROP_Text = PUB_VirtualNodes.PROP_TextDefault;
                PROP_EditShablon           = false;                             // сохранили шаблон
                PUB_VirtualNodes.PROP_Docum.PROP_Otchet.PROP_NewCreate = true;  // отчет необходимо переформировать
                // Выполняем сохранение определенных полей
                foreach (DictionaryEntry _DiEnt in PUB_HashPole)
                {
                    _Pole = (VirtualPole)_DiEnt.Value;                          // наше поле с ответом
                    // Запускаем Lua функцию, после сохрания, если есть.
                    _Pole?.PROP_Lua?.MET_OnSave();
                    // Запускаем сохранение полей
                    if (!_Pole.MET_Save())
                    {
                        MessageBox.Show("Ошибка сохранения");
                        return(false);
                    }
                }
                UserKbolInfo.MET_SaveKbolInfo();
                return(true);
            }
            return(false);
        }
Exemple #2
0
        /// <summary>МЕТОД Сохраняем данные</summary>
        public override bool MET_Save()
        {
            // Сохраняем Pdf файл на сервер
            if (!PRI_Page.MET_Save())
            {
                return(false);
            }

            // возвращаю фокус на место
            string      _Rezult = "";                                                                         // результат ответа
            VirtualPole _Pole;                                                                                // элементы поля
            DateTime    _Date      = PROP_NewProtokol ? DateTime.Today : PROP_Docum.PROP_Protokol.PROP_pDate; // дата создания протокола
            string      _textDocum = "";

            // Формируем строку ответов
            foreach (DictionaryEntry _DiEnt in PUB_HashPole)
            {
                _Pole = (VirtualPole)_DiEnt.Value;                                       // наше поле с ответом
                if (_Pole.PROP_VarId > 0 && !string.IsNullOrWhiteSpace(_Pole.PROP_Text)) // если есть ответ, то вставляем его в строку ответов
                {
                    _Rezult += "\\" + _Pole.PROP_VarId + "#" + _Pole.PROP_Text;
                }

                if (_Pole.PROP_VarId == 1)
                {
                    _textDocum = _Pole.PROP_Text;
                }
                ;
            }

            // Если данные уже сохроняли, то просто обновляем, иначе добавляем
            string _StrSql;                                                     // строка SQL запроса
            int    _User     = MyGlo.User;
            string _UserName = MyGlo.UserName;

            if (PROP_Cod > 0)
            {
                // Если установлен админ - то обновляем протокол с пользователем, создавшем данный протокол
                if (MyGlo.PROP_Admin || MyGlo.FlagEdit)
                {
                    _User     = PROP_Docum.PROP_Protokol.PROP_xUserUp;
                    _UserName = MyMet.MET_UserName(_User);
                }
                // Обновим логи
                PROP_Docum.PROP_Protokol.MET_ChangeLogs(MyGlo.User, "Изменён");
                _StrSql = MyQuery.MET_Protokol_Update_1(PROP_Cod, _Rezult, DateTime.Today, _User, _Date,
                                                        PROP_TipProtokol.PROP_Prefix, PROP_Docum.PROP_Protokol.PROP_xLog);
                // Обновим протокол в SQL
                MySql.MET_QueryNo(_StrSql);
                // Обновим Protokol
                PROP_Docum.PROP_Protokol.MET_Save(_Rezult, DateTime.Today, _User, _Date);
            }
            else
            {  // Новый протокол
                string _xLog = UserLog.MET_CreateLogs();
                PROP_Cod = MySql.MET_GetNextRef(PROP_TipProtokol.PROP_NextRef);
                _StrSql  = MyQuery.MET_Protokol_Insert_1(PROP_Cod, MyGlo.IND, PRO_NomerShablon, _Rezult,
                                                         MyGlo.KL, DateTime.Today, _User, PUB_VirtualNodes.PROP_shaIndex, _Date, PROP_TipProtokol.PROP_Prefix, _xLog);
                // Сохраним протокол в SQL
                MySql.MET_QueryNo(_StrSql);
                // Создадим Protokol
                PROP_Docum.PROP_Protokol = UserProtokol.MET_FactoryProtokol(PUB_VirtualNodes.PROP_shaTipProtokol.PROP_TipDocum, PROP_Cod);
            }
            if (!PUB_VirtualNodes.PROP_shaPresenceProtokol)
            {
                PUB_VirtualNodes.PROP_shaPresenceProtokol = true;           // пометили, что сохранили шаблон
            }
            // Дата протокола
            PUB_VirtualNodes.PROP_Data = _Date;
            // Нижний текст вкладок
            PUB_VirtualNodes.PROP_TextDown = _Date.ToString().Substring(0, 10) + " " + _UserName;
            // Наименование ветки
            PUB_VirtualNodes.PROP_Text        = _textDocum;
            PUB_VirtualNodes.PROP_TextDefault = _textDocum;

            PROP_EditShablon = false;                                       // сохранили шаблон
            PUB_VirtualNodes.PROP_Docum.PROP_Otchet.PROP_NewCreate = true;  // отчет необходимо переформировать
            return(true);
        }