Как массово сделать реквизит документа обязательным для заполнения в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто в процессе эксплуатации системы возникает необходимость ужесточить контроль за вводимыми данными. Например, реквизит Ответственный в документах изначально был необязательным, но со временем бизнес-процессы потребовали сделать его заполнение строгим требованием. Давайте разберем, как решить эту задачу правильно, не нарушив логику работы системы.

Понимание разницы: Данные против Метаданных

Прежде чем приступать к настройкам, важно уяснить фундаментальное различие в платформе 1С:

  1. Данные — это значения, которые хранятся в базе (например, имя конкретного пользователя в поле Ответственный). Для изменения этих данных массово используются обработки типа Групповое изменение реквизитов.
  2. Метаданные — это структура вашей программы (свойства реквизита: «Проверка заполнения», «Тип», «Длина» и т.д.). Изменение этих свойств происходит в Конфигураторе и затрагивает логику работы всего приложения.

Ваш вопрос касался именно изменения свойства Проверка заполнения. Давайте рассмотрим доступные методы реализации этой задачи.

Способ 1: Изменение свойств реквизита в Конфигураторе

Это самый «чистый» и правильный способ с точки зрения архитектуры системы. Если вы хотите, чтобы реквизит стал обязательным для всех новых и редактируемых документов без исключений, выполните следующие действия:

  1. Откройте конфигурацию в режиме Конфигуратор.
  2. Найдите нужный документ в дереве метаданных.
  3. Разверните ветку Реквизиты и найдите реквизит Ответственный.
  4. Откройте палитру свойств этого реквизита.
  5. Найдите свойство Проверка заполнения и установите значение Выдавать ошибку.
  6. Обновите конфигурацию базы данных.

Важно: После применения этих настроек система не даст записать документ, если в нем не указан ответственный. Если в вашей базе уже есть старые документы с пустым полем, пользователи не смогут их даже перепровести, пока не заполнят этот реквизит. Поэтому сначала рекомендуется массово заполнить пустые поля Ответственный с помощью обработки Групповое изменение реквизитов.

Способ 2: Программное управление через процедуру ОбработкаПроверкиЗаполнения

Бывают ситуации, когда реквизит должен стать обязательным только при соблюдении определенных условий (например, для документов, созданных после определенной даты, или для документов с определенным видом операции). В таких случаях изменение метаданных в конфигураторе будет избыточным. Используйте процедуру ОбработкаПроверкиЗаполнения в модуле объекта:


Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    // Условие: проверяем только если документ проведен или для специфических случаев
    Если НужноеУсловие Тогда
        // Добавляем реквизит в список обязательных для проверки
        ПроверяемыеРеквизиты.Добавить(\"Ответственный\");
    КонецЕсли;
КонецПроцедуры

Этот метод дает вам максимальную гибкость. Вы можете анализировать любые данные текущего документа или даже запросом проверять состояние базы данных перед тем, как позволить пользователю сохранить объект.

Рекомендации по реализации

Подводя итог нашей совместной работы над задачей, рекомендуем придерживаться следующего алгоритма действий:

  1. Этап подготовки: Запустите обработку Групповое изменение реквизитов. Отберите все документы, где Ответственный не заполнен, и установите для них значение по умолчанию (например, текущего пользователя или администратора). Это предотвратит ошибки пользователей при попытке сохранить старые документы после внесения изменений в метаданные.
  2. Этап настройки: Если требование глобальное и постоянное — используйте изменение свойства в Конфигураторе. Если требование зависит от сложной логики — используйте ОбработкаПроверкиЗаполнения.
  3. Этап тестирования: Обязательно проверьте поведение системы в копии базы данных перед переносом изменений в рабочую среду, чтобы убедиться, что логика Проверка заполнения работает именно так, как вы задумали.

Помните, что использование Расширения конфигурации является современным стандартом разработки. Если вы работаете на типовой конфигурации, все изменения (как метаданных, так и кода в модуле объекта) лучше вносить через Расширение, чтобы не снимать основную конфигурацию с поддержки и облегчить будущие обновления.

← На главную