/// <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); }
/// <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); }