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

В этой статье разберём все актуальные способы удаления проверки заполнения: от ручных настроек в конфигураторе до программного кода на встроенном языке. Особое внимание уделим нюансам для разных версий платформы (1С 8.3, 1С 8.2) и типичным ошибкам, которые возникают при изменении этих параметров. Если вы не разработчик, но столкнулись с проблемой — в конце статьи есть раздел с решениями без программирования.

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

1. Почему 1С требует заполнения полей: механизм проверки

Проверка заполнения в работает на двух уровнях:

  • 🔹 Уровень платформы — встроенные механизмы, которые срабатывают при записи объекта (документа, справочника и т.д.). Они проверяют свойство Заполнено() для реквизитов, помеченных как обязательные.
  • 🔹 Уровень конфигурации — дополнительные проверки, прописанные разработчиком в модулях объектов (например, в процедуре ПередЗаписью()).

Если поле помечено как обязательное в конфигураторе (в свойствах реквизита стоит флажок Заполнение обязательно), платформа автоматически блокирует запись объекта с пустым значением. При этом выдаётся стандартное сообщение: "Поле 'Наименование' должно быть заполнено!".

Важно понимать, что отключение проверки может привести к:

  • 📌 Потере данных (если поле критично для бизнес-логики).
  • 📌 Ошибкам в отчётах, где используются эти реквизиты.
  • 📌 Проблемам при обмене данными с другими системами (например, при выгрузке в ЕГАИС или Диадок).
⚠️ Внимание: В типовых конфигурациях (например, 1С:Бухгалтерия 3.0 или 1С:УТ 11) многие реквизиты помечены как обязательные не случайно — это требования законодательства или внутренней логики учёта. Их отключение может привести к нарушению регламентов.
📊 С какой целью вы хотите отключить проверку заполнения?
Для тестирования
Для упрощения работы пользователей
Из-за ошибки в конфигурации
Другое

2. Способ 1: Отключение обязательности через конфигуратор

Самый простой метод — снять флажок Заполнение обязательно в свойствах реквизита. Это работает, если у вас есть права на изменение конфигурации (режим Конфигуратор).

Пошаговая инструкция:

  1. Откройте базу в режиме Конфигуратор (для этого при запуске удерживайте клавишу Shift).
  2. В дереве объектов найдите нужный справочник, документ или другой объект, где требуется убрать проверку.
  3. Раскройте ветку Реквизиты и выделите нужное поле.
  4. В палитре свойств (справа) снимите флажок Заполнение обязательно.
  5. Сохраните конфигурацию (Ctrl + S) и обновите базу данных (Конфигурация → Обновить конфигурацию базы данных).

Если флажок Заполнение обязательно неактивен (затенён), значит обязательность задаётся программно — через модуль объекта. В этом случае нужно искать код, который вызывает проверку (об этом — в следующем разделе).

☑️ Подготовка к изменению конфигурации

Выполнено: 0 / 4

Этот способ подходит для управляемых форм (все современные конфигурации на 1С 8.3) и для обычных форм (устаревшие решения на 1С 8.2). Однако в управляемых формах иногда требуется дополнительная настройка — проверка свойства ОбязательноеЗаполнение в элементе формы.

⚠️ Внимание: После обновления типовой конфигурации ваши изменения могут сброситься! Чтобы этого избежать, используйте расширения конфигурации (см. раздел 5).

3. Способ 2: Программное отключение проверки (код 1С)

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

Где искать код проверки:

  • 🔍 В модуле объекта (документа, справочника) — процедура ПередЗаписью().
  • 🔍 В модуле формы — процедура ПередЗаписьюНаСервере() или ОбработкаПроверкиЗаполнения().
  • 🔍 В общих модулях — если проверка вынесена в отдельную функцию (например, ПроверитьОбязательныеРеквизиты()).

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

Процедура ПередЗаписью(Отказ, РежимЗаписи)

// Отключаем стандартную проверку заполнения для поля "Комментарий"

Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

ПроверитьЗаполнениеРеквизитов(Истина); // Включаем проверку при проведении

Иначе

ПроверитьЗаполнениеРеквизитов(Ложь); // Отключаем при обычной записи

КонецЕсли;

КонецПроцедуры

Если нужно отключить проверку для конкретного поля, можно использовать такой подход:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

// Убираем поле "Примечание" из списка обязательных

ПроверяемыеРеквизиты.Удалить("Примечание");

КонецПроцедуры

Для управляемых форм иногда требуется правка клиентского кода. Например, чтобы убрать подсветку обязательных полей:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ЭлементыФормы.Комментарий.ОбязательноеЗаполнение = Ложь;

КонецПроцедуры

💡

Перед изменением кода найдите все упоминания функции ПроверитьЗаполнение() в модуле — иногда проверка дублируется в нескольких местах.

4. Способ 3: Использование расширений конфигурации

Если вы работаете с типовыми конфигурациями (например, 1С:ERP или 1С:КА 2), прямое изменение конфигурации чревато проблемами при обновлении. В этом случае лучше использовать расширения — они позволяют модифицировать поведение системы, не затрагивая исходный код.

Как создать расширение для отключения проверки:

  1. В конфигураторе выберите Файл → Открыть расширение конфигурации (или создайте новое через Конфигурация → Расширения).
  2. Добавьте в расширение объект, для которого нужно убрать проверку (например, документ ЗаказПокупателя).
  3. В модуле расширения переопределите процедуру ПередЗаписью():
#Область ПрограммныйИнтерфейс

Процедура ПередЗаписью(Отказ, РежимЗаписи) Экспорт

// Отключаем проверку для поля "ДополнительнаяИнформация"

Если НЕ ЗначениеЗаполнено(ДополнительнаяИнформация) Тогда

Отказ = Ложь; // Разрешаем запись даже если поле пустое

КонецЕсли;

КонецПроцедуры

#КонецОбласти

Преимущества этого метода:

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

В 1С 8.3.18+ появилась возможность создавать расширения прямо из предприятия (без конфигуратора). Для этого нужно:

  1. Перейти в Администрирование → Печатные формы, отчёты и обработки → Расширения конфигурации.
  2. Создать новое расширение и добавить в него нужные объекты.
⚠️ Внимание: В некоторых типовых конфигурациях (например, 1С:ЗУП 3.1) проверка заполнения может быть жёстко прописана в модулях менеджера. В этом случае расширение не поможет — придётся править исходный код или использовать внешние обработки.

5. Способ 4: Внешние обработки для обхода проверки

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

Пример обработки для обхода проверки:

Процедура ЗаписатьБезПроверки(Документ)

// Сохраняем текущее состояние проверки

СостояниеПроверки = Документ.ПроверитьЗаполнение();

// Отключаем проверку

Документ.ПроверитьЗаполнение(Ложь);

// Записываем документ

Документ.Записать();

// Восстанавливаем состояние

Документ.ПроверитьЗаполнение(СостояниеПроверки);

КонецПроцедуры

Как использовать:

  1. Создайте новую обработку в конфигураторе (Файл → Новый → Обработка).
  2. Вставьте код выше в модуль обработки.
  3. Добавьте на форму кнопку, которая будет вызывать процедуру ЗаписатьБезПроверки().
  4. При запуске обработки передавайте в неё нужный документ.

Для управляемых форм можно использовать такой вариант:

Процедура КомандаВыполнить(ПараметрКоманды)

ДокументОбъект = ПараметрКоманды.Документ;

ДокументОбъект.ОбменДанными.Загрузка = Истина; // Отключает часть проверок

ДокументОбъект.Записать();

КонецПроцедуры

Ограничения метода:

  • 🚫 Не работает для полей, обязательность которых задана на уровне СУБД (например, NOT NULL в SQL).
  • 🚫 Может конфликтовать с бизнес-логикой (например, если поле используется в расчётах).
  • 🚫 Требует прав на изменение данных.
Что делать, если обработка не работает?

Если внешняя обработка не отключает проверку, проверьте:

1. Не блокирует ли проверку триггер на уровне СУБД (для SQL-версий 1С).

2. Нет ли дополнительных проверок в модуле менеджера документа (процедура ПриЗаписи()).

3. Не используется ли механизм КонтрольОбязательностиЗаполнения (в новых версиях платформы).

6. Способ 5: Настройка прав пользователей

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

Как настроить:

  1. В конфигураторе откройте Администрирование → Пользователи.
  2. Выберите роль, для которой нужно ослабить проверку (например, Администратор или Менеджер).
  3. В настройках прав найдите раздел Интерактивное удаление и запись.
  4. Установите флажок Разрешить запись без проверки заполнения (если такой параметр есть в вашей конфигурации).

В типовых конфигурациях (например, 1С:УТ 11) это делается через:

Администрирование → Настройка прав пользователей → Роли → [Выбрать роль] → Права на объекты

Для гибкой настройки можно создать новую роль с особыми правами:

Параметр Значение для отключения проверки Последствия
ИнтерактивнаяЗапись Разрешить без проверки Пользователь сможет сохранять пустые поля, но бизнес-логика может дать сбой
ПрограммнаяЗапись Разрешить Позволит записывать объекты через код, минуя проверки
КонтрольОбязательности Игнорировать Отключит все проверки заполнения для данной роли

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

⚠️ Внимание: Изменение прав может нарушить разграничение доступа. Например, если менеджер получит право записывать документы без проверки, он сможет создавать некорректные заказы, которые потом не пройдут выгрузку в ЕГАИС или 1С:ЭДО.

7. Типичные ошибки и как их избежать

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

1. Ошибка "Поле не может быть пустым" остаётся

Причина: проверка задана не только на уровне платформы, но и в триггере СУБД (для SQL-версий). Решение — править структуру таблицы через SQL Management Studio или pgAdmin (для PostgreSQL).

2. После обновления конфигурации проверка вернулась

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

3. Документы записываются, но не проводятся

Причина: в процедуре ОбработкаПроведения() есть дополнительная проверка. Решение — править модуль документа или использовать ПровестиБезКонтроля().

4. В отчётах появляются ошибки

Причина: отчёт использует поле, которое теперь может быть пустым. Решение — добавить в запрос отчёта проверку на ЗначениеЗаполнено().

5. Проблемы с обменом данными

Причина: партнёрская система (например, Диадок или СБИС) требует заполнения поля. Решение — заполнять поле "заглушкой" перед выгрузкой.

💡

Перед отключением проверки всегда проверяйте, не используется ли поле в интеграциях (ЕГАИС, ЭДО, CRM).

8. Альтернативные решения: когда отключать проверку не нужно

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

  • 🔄 Заполнить поле значением по умолчанию (например, прочерком или текстовым шаблоном).
  • 🔄 Сделать поле невидимым, но заполнять его автоматически в модуле.
  • 🔄 Использовать подстановку — например, подтягивать значение из связанного справочника.
  • 🔄 Настроить условное оформление — поле будет обязательным только при определённых условиях.

Пример автозаполнения:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если НЕ ЗначениеЗаполнено(Комментарий) Тогда

Комментарий = "Без комментариев"; // Заполняем автоматически

КонецЕсли;

КонецПроцедуры

Пример условной обязательности:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

Если ТипЗначения(Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда

// Для заказов клиентов поле "ДатаОтгрузки" обязательно

ПроверяемыеРеквизиты.Добавить("ДатаОтгрузки");

КонецЕсли;

КонецПроцедуры

Эти подходы позволяют сохранить контроль над данными, не отключая проверку полностью.

💡

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

FAQ: Частые вопросы по отключению проверки заполнения

Можно ли отключить проверку заполнения только для одного пользователя?

Да, для этого нужно:

  1. Создать новую роль с правом Запись без проверки.
  2. Назначить эту роль нужному пользователю.
  3. В модуле объекта добавить проверку на роль:
    Если НЕ Пользователь.РольВГруппе("Администраторы") Тогда
    

    ПроверитьЗаполнение(Истина);

    Иначе

    ПроверитьЗаполнение(Ложь);

    КонецЕсли;

Почему после отключения проверки в конфигураторе ошибка всё равно появляется?

Вероятные причины:

  • Проверка задана в модуле менеджера (а не в модуле объекта).
  • Используется триггер на уровне СУБД (для SQL-версий).
  • Поле помечено как NOT NULL в структуре таблицы базы данных.
  • В конфигурации используется механизм КонтрольОбязательностиЗаполнения (в новых версиях 1С).

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

Как отключить проверку заполнения в мобильном приложении 1С?

В мобильной платформе 1С:Предприятие проверка заполнения работает аналогично десктопной версии. Чтобы её отключить:

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

Обратите внимание: в мобильном клиенте некоторые проверки могут быть жёстко прописаны в модуле мобильного приложения.

Возможно ли отключить проверку только для новых документов, а для старых оставить?

Да, это можно сделать через программный код. Пример:

Процедура ПередЗаписью(Отказ, РежимЗаписи)

Если ЭтотОбъект.ЭтоНовый() Тогда

ПроверитьЗаполнение(Ложь); // Для новых документов

Иначе

ПроверитьЗаполнение(Истина); // Для существующих

КонецЕсли;

КонецПроцедуры

Или через условное оформление в модуле:

Если ДатаВремя(ЭтотОбъект.Дата) > ТекущаяДата() Тогда

ЭлементыФормы.Комментарий.ОбязательноеЗаполнение = Ложь;

КонецЕсли;

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

Способы восстановления:

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

Если не помните, что именно меняли, восстановите базу из резервной копии.