Процедура проверяет все реквизиты шапки и табличных частей формы, для которых стоит пометка «АвтоОтметкаНезаполненного» на факт заполнения. Результат выводит в дерево значений.
Процедуру добавить в любой модуль (если поддерживается передача параметра типа «Форма»), в параметрах передать контекст формы и, при необходимости, отключить вывод дерева предупреждений.
Возвращает Истина, если проверка прошла успешно и Ложь, если есть ошибки.
Функция ПроверкаНезаполненного(ФормаОбъекта,Показать=Истина)Экспорт
ЕстьОшибки = Ложь;
ЭлементыДерево = Новый ДеревоЗначений;
ЭлементыДерево.Колонки.Добавить(«Параметр»);
Для каждого Элемент из ФормаОбъекта.ЭлементыФормы Цикл
Если ТипЗнч(Элемент)= Тип(«ТабличноеПоле») Тогда
Для к=0 по Элемент.Значение.Количество()-1 Цикл
ОформлениеСтроки = Элемент.ОформлениеСтроки(Элемент.Значение[к]);
Для каждого Рекв из ОформлениеСтроки.Ячейки Цикл
Если Рекв.ОтметкаНезаполненного Тогда
ЕстьОшибки = Истина;
Если Показать Тогда
стр = ЭлементыДерево.Строки.Найти(Элемент.Имя);
Если стр = Неопределено Тогда
стр = ЭлементыДерево.Строки.Добавить();
стр.Параметр = Элемент.Имя;
КонецЕсли;
стр1 = стр.Строки.Найти(Рекв.Имя);
Если стр1 = Неопределено Тогда
стр1 = стр.Строки.Добавить();
стр1.Параметр = Рекв.Имя;
КонецЕсли;
стр2 = стр1.Строки.Добавить();
стр2.Параметр = «Строка «+(к+1);
Иначе
Возврат ЕстьОшибки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ИначеЕсли ТипЗнч(Элемент)=Тип(«ПолеВвода») и Элемент.ОтметкаНезаполненного Тогда
ЕстьОшибки = Истина;
Если Показать Тогда
стр = ЭлементыДерево.Строки.Найти(«Шапка»);
Если стр = Неопределено Тогда
стр = ЭлементыДерево.Строки.Добавить();
стр.Параметр = «Шапка»;
КонецЕсли;
стр1 = стр.Строки.Добавить();
стр1.Параметр = Элемент.Имя;
Иначе
Возврат ЕстьОшибки;
КонецЕсли;
КонецЦикла;
Если ЕстьОшибки и Показать тогда
ЭлементыДерево.ВыбратьСтроку(«Параметры не указаны»);
КонецЕсли;
Возврат ЕстьОшибки;
КонецФункции
Под платформу 8.2 данная разработка работать будет?