Обработка проверки заполнения на сервере. Обработчик для события формы ОбработкаПроверкиЗаполненияНаСервере.
// Обработчик для события формы ОбработкаПроверкиЗаполненияНаСервере.
// Вызывается из модуля формы объекта-владельца КИ при внедрении подсистемы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма объекта-владельца, предназначенная для вывода контактной информации.
// Объект - Произвольный - Объект-владелец контактной информации.
// Отказ - Булево - Если Истина, то во время проверки были обнаружены ошибки.
//
Процедура ОбработкаПроверкиЗаполненияНаСервере(Форма, Объект, Отказ) Экспорт
ИмяОбъекта = Объект.Ссылка.Метаданные().Имя;
УровеньОшибок = 0;
ПредыдущийВид = Неопределено;
ИменаТабличныхЧастейПоВидамКИ = Неопределено;
Для Каждого СтрокаТаблицы Из Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов Цикл
ВидИнформации = СтрокаТаблицы.Вид;
ТипИнформации = СтрокаТаблицы.Тип;
Комментарий = СтрокаТаблицы.Комментарий;
ИмяРеквизита = СтрокаТаблицы.ИмяРеквизита;
СвойствоВидаИнформации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидИнформации, "ОбязательноеЗаполнение, РедактированиеТолькоВДиалоге");
ОбязательноеЗаполнение = СвойствоВидаИнформации.ОбязательноеЗаполнение;
Если СтрокаТаблицы.ЭтоРеквизитТабличнойЧасти Тогда
Если ИменаТабличныхЧастейПоВидамКИ = Неопределено Тогда
Отбор = Новый Структура("ЭтоРеквизитТабличнойЧасти", Истина);
ВидыКИТабличнойЧасти = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Выгрузить(Отбор , "Вид");
ИменаТабличныхЧастейПоВидамКИ = ИменаТабличныхЧастейПоВидамКИ(ВидыКИТабличнойЧасти, ИмяОбъекта);
КонецЕсли;
ИмяТабличнойЧасти = ИменаТабличныхЧастейПоВидамКИ[ВидИнформации];
ТабличнаяЧастьФормы = Форма.Объект[ИмяТабличнойЧасти];
Для Каждого СтрокаТабличнойЧастиФормы Из ТабличнаяЧастьФормы Цикл
Представление = СтрокаТабличнойЧастиФормы[ИмяРеквизита];
Поле = "Объект." + ИмяТабличнойЧасти + "[" + (СтрокаТабличнойЧастиФормы.НомерСтроки - 1) + "]." + ИмяРеквизита;
Если ОбязательноеЗаполнение И ПустаяСтрока(Представление) И Не ВидИнформации.ПометкаУдаления Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), ВидИнформации.Наименование),,Поле);
ТекущийУровеньОшибок = 2;
Иначе
Значение = СтрокаТабличнойЧастиФормы[ИмяРеквизита + "Значение"];
ТекущийУровеньОшибок = ПроверитьЗаполнениеКонтактнойИнформации(Представление, Значение, ВидИнформации,
ТипИнформации, ИмяРеквизита, , Поле);
СтрокаТабличнойЧастиФормы[ИмяРеквизита] = Представление;
СтрокаТабличнойЧастиФормы[ИмяРеквизита + "Значение"] = Значение;
КонецЕсли;
УровеньОшибок = ?(ТекущийУровеньОшибок > УровеньОшибок, ТекущийУровеньОшибок, УровеньОшибок);
КонецЦикла;
Иначе
ЭлементФормы = Форма.Элементы.Найти(ИмяРеквизита);
Если ЭлементФормы = Неопределено Или ВидИнформации.ПометкаУдаления Тогда
Продолжить; // Элемент не был создан. Не была вызвана отложенная инициализация.
КонецЕсли;
Если (СвойствоВидаИнформации.РедактированиеТолькоВДиалоге
Или ТипИнформации = Перечисления.ТипыКонтактнойИнформации.ВебСтраница)
И Не УправлениеКонтактнойИнформациейКлиентСервер.КонтактнаяИнформацияЗаполнена(Строка(Форма[ИмяРеквизита])) Тогда
Представление = "";
Иначе
Представление = Форма[ИмяРеквизита];
КонецЕсли;
Если ВидИнформации <> ПредыдущийВид И ОбязательноеЗаполнение И ПустаяСтрока(Представление)
И Не ЕстьДругиеЗаполненныеСтрокКИДанногоВида(Форма, СтрокаТаблицы, ВидИнформации) Тогда
// И нет других строк с данными для видов КИ с множественными значениями.
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), ВидИнформации.Наименование),,, ИмяРеквизита);
ТекущийУровеньОшибок = 2;
Иначе
ТекущийУровеньОшибок = ПроверитьЗаполнениеКонтактнойИнформации(Представление, СтрокаТаблицы.Значение,
ВидИнформации, ТипИнформации, ИмяРеквизита, Комментарий);
КонецЕсли;
УровеньОшибок = ?(ТекущийУровеньОшибок > УровеньОшибок, ТекущийУровеньОшибок, УровеньОшибок);
КонецЕсли;
ПредыдущийВид = ВидИнформации;
КонецЦикла;
Если УровеньОшибок <> 0 Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений (БСП)
ОбработкаПроверкиЗаполнения (БСП)
ОбработкаПроверкиЗаполненияПрисоединенногоФайла (БСП)
Проверка заполнения на клиенте
Проведение документа с проверкой заполнения
ПроверятьЭлектронныеПодписиНаСервере (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)