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