Часто в процессе разработки конфигурации на платформе 1С:Предприятие разработчики сталкиваются с ситуацией, когда для реквизита справочника в свойствах установлено значение «Выдавать ошибку» в параметре «Проверка заполнения», но при сохранении пустого элемента система не выдает сообщение об ошибке и позволяет записать объект. Давайте разберемся, почему так происходит и как заставить проверку работать корректно.
Первым делом важно понять, что механизм автоматической проверки заполнения, встроенный в платформу, не всегда срабатывает «из коробки» по нескольким причинам. Давайте проанализируем основные факторы:
Рассмотрим пошагово, как обеспечить гарантированное срабатывание проверки заполнения для ваших объектов.
Самый надежный способ гарантировать проверку заполнения — это вызов метода ПроверитьЗаполнение() в модуле объекта. Это позволяет системе «пересчитать» состояние всех реквизитов перед непосредственной записью в базу данных. Внедрим вызов в событие ПередЗаписью:
Процедура ПередЗаписью(Отказ)
// Принудительный вызов проверки заполнения
Если Не ПроверитьЗаполнение() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
Этот код гарантирует, что если хотя бы один обязательный реквизит (у которого в свойствах стоит «Выдавать ошибку») не заполнен, запись будет прервана, а пользователю будет выведено стандартное сообщение об ошибке.
Если вам требуется реализовать более сложную логику, например, когда поле должно быть обязательным только при соблюдении определенного условия (например, если другой реквизит заполнен), используйте обработчик ОбработкаПроверкиЗаполнения. Рассмотрим пример:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Допустим, мы хотим проверять поле только если это не группа
Если Не ЭтотОбъект.ЭтоГруппа Тогда
// Добавляем реквизит в список проверяемых программно
ПроверяемыеРеквизиты.Добавить("Наименование");
КонецЕсли;
КонецПроцедуры
В этом случае вы управляете списком проверяемых полей динамически, что дает гибкость, недоступную при настройке свойств через окно метаданных.
Если код выглядит верно, а изменения в Конфигураторе всё равно не применяются при запуске в режиме «Предприятие», выполните очистку кэша. Это можно сделать двумя путями:
Подводя итог нашей совместной работы по поиску решения, запомним следующее:
ПроверитьЗаполнение() как универсальный инструмент защиты от записи «пустых» данных.Применяя эти методы, вы обезопасите свои справочники от накопления некорректных данных и обеспечите стабильную работу всей конфигурации.