К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как убрать обязательное поле в 1С

Как убрать обязательное поле в 1С: настройка проверки заполнения в конфигураторе, расширениях и коде. Риски, типовые ошибки и проверка результата.

Обязательное поле в 1С — это реквизит, для которого включена проверка заполнения: система не даёт записать объект, пока поле не заполнено. Такая проверка бывает полезной, но в ряде ситуаций мешает: например, при обмене данными, при работе через внешние обработки или когда бизнес-процесс изменился и часть реквизитов перестала быть обязательной.

Убрать обязательность можно несколькими способами: через изменение конфигурации в конфигураторе, через расширение без снятия конфигурации с поддержки или программно — отключив проверку в коде. Выбор зависит от того, есть ли у вас доступ к конфигуратору, стоит ли конфигурация на поддержке и нужно ли отключить проверку для всех пользователей или только в отдельных сценариях.

Прежде чем что-либо менять, важно понять, откуда взялась обязательность: она может быть задана свойством реквизита «Проверка заполнения», кодом в обработчике «ОбработкаПроверкиЗаполнения» или функциональной опцией. От этого зависит, какой именно механизм нужно отключать.

Откуда берётся обязательность поля

Первый и самый частый источник — свойство реквизита «Проверка заполнения» в конфигураторе. Если там установлено «Выдавать ошибку», платформа автоматически блокирует запись объекта с пустым значением. Это стандартный механизм, и отключается он проще всего.

Второй источник — программная проверка. В типовых конфигурациях многие проверки прописаны в обработчике «ОбработкаПроверкиЗаполнения» модуля объекта или в общих модулях. В этом случае изменение свойства реквизита ничего не даст: сообщение об ошибке генерирует код, и убирать обязательность придётся через расширение или доработку модуля.

Третий вариант — функциональные опции и настройки учёта. Например, реквизит может становиться обязательным только при включённой опции (ведении серий, характеристик, нескольких складов). Тогда достаточно пересмотреть настройки, а не трогать конфигурацию.

Свойство реквизитаПроверка заполнения = Выдавать ошибку

Откройте свойства реквизита в конфигураторе и посмотрите значение свойства

Код в модулеОшибка выводится из ОбработкаПроверкиЗаполнения

Выполните глобальный поиск текста сообщения об ошибке по модулям конфигурации

Функциональная опцияПоле обязательно только при определённых настройках

Проверьте, не зависит ли реквизит от включённых опций в разделе настроек учёта

Отключение проверки заполнения в конфигураторе

Базовый способ подходит, когда конфигурация не типовая или снята с поддержки, а обязательность задана свойством реквизита. Потребуется доступ к конфигуратору с правами на изменение конфигурации.

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

Если поле обязательно только на форме (свойство элемента формы «АвтоотметкаНезаполненного» и «ПроверкаЗаполнения»), изменения вносятся в форму объекта, а не в сам реквизит. Проверьте оба уровня: и реквизит, и элемент формы.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и найдите объект с нужным реквизитом
  2. 2
    В свойствах реквизита установите «Проверка заполнения» = «Не проверять»
  3. 3
    Проверьте аналогичное свойство у элемента формы
  4. 4
    Сохраните конфигурацию и обновите конфигурацию базы данных (F7)
  5. 5
    Запустите 1С в режиме предприятия и проверьте запись объекта с пустым полем

Как убрать обязательное поле через расширение

Если конфигурация типовая и стоит на поддержке, прямое изменение нежелательно: при обновлении доработка затрётся или обновление потребует ручного сопоставления. Правильный инструмент — расширение конфигурации.

Создайте новое расширение (Конфигурация → Расширения конфигурации), добавьте в него нужный объект и реквизит. В заимствованном реквизите измените свойство «Проверка заполнения» на «Не проверять». Расширение применяется поверх основной конфигурации, и при обновлении типовой доработка сохранится.

Если обязательность задана кодом, в расширении можно переопределить обработчик «ОбработкаПроверкиЗаполнения»: добавить аннотацию «&ИзменениеИКонтроль» или «&Вместо» и убрать из проверяемых нужный реквизит. Способ с аннотацией «&ИзменениеИКонтроль» предпочтительнее — он сохраняет типовую логику и требует только удалить лишнюю проверку.

Программное отключение проверки заполнения

Иногда обязательность нужно снять не глобально, а в конкретном сценарии: при загрузке из обмена, при проведении документа в фоновом задании, при вызове из внешней обработки. Для этого в коде используется параметр «ПроверятьЗаполнение» или отключение проверки на уровне записи объекта.

Для объектов, записываемых программно, можно использовать метод записи с обходом проверки через установку свойства «ОбменДанными.Загрузка = Истина» — тогда проверки заполнения не выполняются. Это работает, но применять приём нужно осторожно: вместе с проверкой заполнения отключаются и другие обработчики записи, что может нарушить логику учёта.

Более точечный вариант — в обработчике «ОбработкаПроверкиЗаполнения» удалить реквизит из массива проверяемых: ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("ИмяРеквизита"));. Такой код размещают в расширении или в модуле объекта, и он отключает проверку только для указанного поля.

bsl
&ИзменениеИКонтроль("ОбработкаПроверкиЗаполнения")
Процедура Расш_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	Индекс = ПроверяемыеРеквизиты.Найти("Комментарий");
	Если Индекс <> Неопределено Тогда
		ПроверяемыеРеквизиты.Удалить(Индекс);
	КонецЕсли;
	#Вставка
	// дополнительная логика при необходимости
	#КонецВставки
КонецПроцедуры

Риски и ограничения

Снятие обязательности меняет поведение системы для всех пользователей. Если поле участвует в отчётах, обменах или регламентных операциях, пустые значения могут привести к ошибкам дальше по цепочке: например, документ записывается, но не попадает в отчёт или выгружается с некорректными данными.

Перед изменением сделайте резервную копию информационной базы. При работе через конфигуратор с обновлением конфигурации БД убедитесь, что в базе нет активных пользователей — обновление в монопольном режиме завершится ошибкой, если сеансы открыты.

Отдельный риск — доработка типовой конфигурации напрямую. При следующем обновлении изменённые свойства могут конфликтовать с типовыми, и обновление потребует ручного разрешения. Поэтому для типовых решений всегда предпочтительнее расширение.

Проверка результата и типичные ошибки

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

Если ошибка сохраняется, значит, обязательность задана не там, где вы её отключили. Выполните глобальный поиск (Ctrl+Shift+F) по тексту сообщения об ошибке — так вы найдёте модуль, в котором формируется проверка. Также проверьте, не переопределяется ли проверка в подписке на событие: типовые конфигурации часто проверяют реквизиты через подписки, и их нужно отключать отдельно.

Типичные ошибки
01
Изменение свойства реквизита, когда проверка задана кодом — ошибка продолжает появляться, изменение не даёт эффекта
02
Прямая доработка типовой конфигурации вместо расширения — изменения теряются или конфликтуют при обновлении
03
Забытое обновление конфигурации базы данных (F7) — изменения сохранены, но в режиме предприятия ничего не поменялось
04
Отключение проверки у реквизита, но не у элемента формы — платформа продолжает подсвечивать поле как незаполненное
Контрольные точки

Как проверить результат

Запись объекта с пустым полем
Норма

Объект записывается без сообщений об ошибке

Тревожный признак

Ошибка сохраняется — проверка задана кодом или подпиской

Поведение отчётов и обменов
Норма

Пустое поле не ломает отчёты и выгрузки

Тревожный признак

В отчётах появляются пустые строки или ошибки обмена

Обновление конфигурации
Норма

Типовое обновление проходит без конфликтов

Тревожный признак

Обновление требует ручного сопоставления доработанных объектов

FAQ

Можно ли убрать обязательное поле без конфигуратора?

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

Что делать, если свойство «Проверка заполнения» недоступно в расширении?

Не все свойства реквизитов можно переопределить через расширение — набор зависит от версии платформы. В этом случае используйте программное удаление реквизита из массива проверяемых в обработчике «ОбработкаПроверкиЗаполнения» через расширение либо снимите конфигурацию с поддержки и измените объект напрямую.

Почему ошибка о незаполненном поле осталась после изменения свойства?

Скорее всего, проверка выполняется программно: в модуле объекта, модуле формы или подписке на событие. Найдите текст сообщения глобальным поиском по конфигурации и отключите проверку в найденном месте — через расширение с аннотацией «&ИзменениеИКонтроль» или правкой модуля.

Безопасно ли использовать «ОбменДанными.Загрузка = Истина» для обхода проверки?

Только для загрузки данных из внешних источников, когда проверки сознательно не нужны. При обычной записи документов этот приём отключит не только проверку заполнения, но и формирование движений, контроль остатков и другие обработчики, что приведёт к ошибкам в учёте.

Уберётся ли обязательность у всех пользователей сразу?

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

Что произойдёт при обновлении типовой конфигурации после доработки?

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

Итог

Что важно запомнить

Сначала определите источник обязательности: свойство реквизита, код или функциональная опция. Для типовых конфигураций используйте расширение, для разовых сценариев — программное удаление реквизита из проверяемых. Перед изменениями делайте резервную копию, после — проверяйте запись объекта и работу связанных отчётов и обменов.