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