Разработка и Конфигурация · 11 мин
Как сделать поле обязательным для заполнения в 1С Документооборот
Как сделать поле обязательным для заполнения в 1С Документооборот: настройка видов документов, обработчики проверки, программные способы и типичные ошибки.
Обязательность заполнения полей — один из самых частых запросов при настройке 1С:Документооборот. Пользователи забывают указать сумму, контрагента, срок исполнения или вид документа, и в результате документы «повисают» в процессах, а поиск по базе становится неточным. Система предлагает несколько уровней решения задачи: от простой настройки в пользовательском режиме до программной проверки в конфигураторе.
Выбор способа зависит от того, какое именно поле нужно сделать обязательным. Стандартные реквизиты документов и справочников часто можно настроить без изменения конфигурации — через права, настройки видов документов или механизм дополнительных реквизитов. Нестандартные требования (например, поле обязательно только при определённом виде документа или этапе обработки) потребуют встроенного языка 1С.
Важно понимать разницу между «жёсткой» и «мягкой» обязательностью. Жёсткая проверка не даст сохранить объект без заполнения поля, мягкая — выведет предупреждение, но позволит продолжить. Для рабочих процессов, где документ участвует в согласовании, обычно выбирают жёсткий вариант, чтобы неполные данные не уходили дальше по маршруту.
Какие способы сделать поле обязательным существуют
В 1С:Документооборот есть четыре рабочих подхода. Первый — настройка обязательности дополнительных реквизитов в пользовательском режиме, доступна администратору без программирования. Второй — использование механизма проверки заполнения, встроенного в типовые объекты конфигурации. Третий — доработка в конфигураторе через обработчик ОбработкаПроверкиЗаполнения. Четвёртый — проверка заполнения на уровне бизнес-процессов, когда поле требуется не при записи документа, а при старте или завершении задачи.
Сравнение вариантов
Подходит для новых полей, настраивается пользователем без конфигуратора. Ограничение: не работает для стандартных реквизитов объекта.
Универсальный способ для любых реквизитов и условий. Требует доработки конфигурации и снятия объекта с полной поддержки.
Подходит, когда поле нужно только на определённом этапе. Не блокирует запись самого документа.
Позволяют добавить проверку без изменения типового модуля объекта. Требуют аккуратности при обновлении.
Для большинства задач достаточно первого или второго способа. Программные доработки оправданы, когда обязательность зависит от условий: вида документа, состояния согласования, значения другого поля. Например, «Сумма» обязательна только для договоров, а для служебных записок — нет.
Обязательные дополнительные реквизиты без программирования
Если нужного поля нет в типовой форме документа, его создают как дополнительный реквизит, и обязательность настраивается прямо в карточке реквизита. Это самый безопасный способ: конфигурация не меняется, обновления проходят штатно.
- 1Откройте раздел «Настройка и администрирование» — «Дополнительные реквизиты» (в некоторых версиях: «Администрирование» — «Общие настройки» — «Дополнительные реквизиты и сведения»).
- 2Убедитесь, что включён функциональный опцион «Дополнительные реквизиты и сведения».
- 3Выберите набор реквизитов нужного объекта, например «Документы — Внутренние документы».
- 4Создайте новый реквизит или откройте существующий.
- 5Установите флажок «Заполнять обязательно» и сохраните.
- 6Откройте документ и проверьте: при попытке записи без заполнения поля система выдаст сообщение и подсветит реквизит.
Обязательный дополнительный реквизит проверяется при записи объекта. Если поле не заполнено, документ не сохранится, а пользователь увидит сообщение вида «Поле "..." не заполнено». Проверка срабатывает и в тонком клиенте, и в веб-клиенте, и при программной записи объекта.
Ограничение способа: обязательность действует для всех видов документов, использующих этот набор реквизитов. Если флажок нужен только для договоров, но не для актов, придётся либо разводить реквизиты по наборам, либо переходить к программной проверке.
Настройка обязательности через виды документов
В 1С:Документооборот виды документов (внутренних, входящих, исходящих) определяют состав доступных реквизитов и часть правил их заполнения. В настройках вида документа можно управлять обязательностью отдельных полей — состав доступных настроек зависит от версии конфигурации.
Откройте справочник «Виды документов» (раздел «Настройка» — соответствующий вид документов), выберите нужный вид и изучите закладки настроек. Для ряда реквизитов там предусмотрены признаки обязательности либо запрет изменения. Если нужного поля в настройках нет — значит, для него типовая настройка обязательности не предусмотрена, и потребуется доработка.
Дополнительно проверьте настройки нумерации и учёта: некоторые поля (например, «Организация» или «Подразделение») могут подставляться автоматически из настроек пользователя, и тогда вопрос обязательности снимается сам собой — поле просто всегда заполнено.
Программная проверка через ОбработкаПроверкиЗаполнения
Когда обязательность зависит от условий или касается стандартного реквизита, которым нельзя управлять из пользовательского режима, используют встроенный язык. Стандартное место для такой логики — процедура ОбработкаПроверкиЗаполнения в модуле объекта документа или справочника.
Процедура вызывается платформой при каждой записи объекта с проверкой заполнения. Внутри неё можно отказать в записи и вывести понятное сообщение пользователю. Типичный пример: сделать поле «СуммаДокумента» обязательным только для определённого вида документа.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ВидДокумента = Справочники.ВидыВнутреннихДокументов.Договор
И Не ЗначениеЗаполнено(СуммаДокумента) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Для договора необходимо указать сумму документа.'"),
ЭтотОбъект, "СуммаДокумента", , Отказ);
КонецЕсли;
КонецПроцедурыКлючевые моменты кода: параметр Отказ, установленный в Истина, блокирует запись; привязка сообщения к имени реквизита («СуммаДокумента») подсвечивает поле на форме; проверка ЗначениеЗаполнено корректно работает для чисел, строк, дат и ссылок. Добавляйте свою логику в конец типовой процедуры, не удаляя существующие проверки.
Проверка заполнения на этапах бизнес-процесса
Не всегда поле должно быть заполнено в момент создания документа. Часто требование возникает позже: например, регистрационный номер появляется только при регистрации, а резолюция руководителя — при согласовании. Жёсткая проверка при записи в таких случаях мешает работе.
Решение — перенести контроль в бизнес-процесс. В 1С:Документооборот обработку документов (согласование, регистрацию, рассмотрение) можно настраивать, и на уровне настроек обработки или в коде точек маршрута проверять заполнение нужных полей перед стартом процесса или перед завершением конкретной задачи. Тогда документ можно сохранять черновиком, но отправить дальше по маршруту без заполненного поля не получится.
Как выбрать действие
Проверка результата и типичные ошибки
После настройки обязательно проверьте поведение системы в нескольких сценариях: создание нового документа, копирование существующего, запись через обмен или загрузку из файла, работа в веб-клиенте. Проверка, которая срабатывает в толстом клиенте, может обходиться при программной записи, если разработчик внешней обработки не вызывает проверку заполнения.
Как проверить результат
Система отказывает в записи и подсвечивает незаполненное поле
Документ сохраняется без сообщений
Документ записывается штатно, лишних сообщений нет
Сообщение об ошибке появляется даже при заполненном поле
Объект без поля не записывается, в журнале регистрации есть ошибка
Объекты записываются в обход проверки
Условная обязательность срабатывает только для заданного вида
Проверка блокирует запись документов, для которых она не планировалась
Отдельная ловушка — существующие данные. Если поле стало обязательным, старые документы с пустым значением перестанут перезаписываться: любая попытка изменить такой документ потребует сначала заполнить поле. Перед включением жёсткой проверки имеет смысл выполнить массовое заполнение реквизита в существующих объектах групповой обработкой.
На практике удобнее начинать с «мягкого» варианта: выводить предупреждение без отказа в записи на первые недели после внедрения. Это позволяет собрать статистику незаполненных полей и заполнить исторические данные, а затем включить жёсткий отказ без блокировки текущей работы пользователей.
FAQ
Можно ли сделать обязательным стандартное поле без доработки конфигурации?
Частично. Дополнительные реквизиты настраиваются без программирования, а часть стандартных полей управляется через настройки вида документа. Если нужного поля нет ни там, ни там, без доработки (модуль объекта, расширение или подписка на событие) не обойтись.
Почему проверка срабатывает вручную, но не срабатывает при обмене данными?
Потому что проверка реализована в модуле формы, а не в модуле объекта. При обмене форма не открывается. Перенесите логику в ОбработкаПроверкиЗаполнения модуля объекта — тогда она будет работать при любой записи, включая программную.
Как сделать поле обязательным только для одного вида документа?
Сначала проверьте настройки самого вида документа — часть реквизитов управляется там. Если настройки нет, добавьте в ОбработкаПроверкиЗаполнения условие по виду документа, как в примере кода выше.
Что будет со старыми документами после включения обязательности?
Они останутся в базе с пустым полем, но любая перезапись потребует его заполнения. Чтобы избежать блокировок, заранее заполните реквизит в существующих объектах групповой обработкой или внешней обработкой.
Можно ли вместо запрета записи выводить только предупреждение?
Да. Вызовите сообщение пользователю без установки параметра Отказ в Истина — запись пройдёт, но пользователь увидит предупреждение. Это удобно как переходный этап перед включением жёсткой проверки.
Что важно запомнить
Простые случаи решаются обязательными дополнительными реквизитами и настройками видов документов без программирования. Условная обязательность и стандартные реквизиты требуют ОбработкаПроверкиЗаполнения в модуле объекта — только так проверка будет работать при любом способе записи. Перед включением жёсткой проверки заполните поле в существующих документах и протестируйте все сценарии записи.