Проверка заполнения полей в 1С:Предприятие — полезный механизм, предотвращающий ошибки при вводе данных. Но иногда он становится помехой: например, когда нужно временно сохранить документ с незаполненными реквизитами или когда логика бизнес-процессов допускает пустые значения. В таких случаях требуется отключить обязательную проверку — полностью или выборочно.
В этой статье разберём все актуальные способы удаления проверки заполнения: от ручных настроек в конфигураторе до программного кода на встроенном языке. Особое внимание уделим нюансам для разных версий платформы (1С 8.3, 1С 8.2) и типичным ошибкам, которые возникают при изменении этих параметров. Если вы не разработчик, но столкнулись с проблемой — в конце статьи есть раздел с решениями без программирования.
Прежде чем приступать к изменениям, обязательно сделайте резервную копию базы данных. Некоторые методы (особенно правка конфигурации) могут привести к нестабильной работе системы, если выполнены некорректно.
1. Почему 1С требует заполнения полей: механизм проверки
Проверка заполнения в 1С работает на двух уровнях:
- 🔹 Уровень платформы — встроенные механизмы, которые срабатывают при записи объекта (документа, справочника и т.д.). Они проверяют свойство
Заполнено()для реквизитов, помеченных как обязательные. - 🔹 Уровень конфигурации — дополнительные проверки, прописанные разработчиком в модулях объектов (например, в процедуре
ПередЗаписью()).
Если поле помечено как обязательное в конфигураторе (в свойствах реквизита стоит флажок Заполнение обязательно), платформа автоматически блокирует запись объекта с пустым значением. При этом выдаётся стандартное сообщение: "Поле 'Наименование' должно быть заполнено!".
Важно понимать, что отключение проверки может привести к:
- 📌 Потере данных (если поле критично для бизнес-логики).
- 📌 Ошибкам в отчётах, где используются эти реквизиты.
- 📌 Проблемам при обмене данными с другими системами (например, при выгрузке в ЕГАИС или Диадок).
⚠️ Внимание: В типовых конфигурациях (например, 1С:Бухгалтерия 3.0 или 1С:УТ 11) многие реквизиты помечены как обязательные не случайно — это требования законодательства или внутренней логики учёта. Их отключение может привести к нарушению регламентов.
2. Способ 1: Отключение обязательности через конфигуратор
Самый простой метод — снять флажок Заполнение обязательно в свойствах реквизита. Это работает, если у вас есть права на изменение конфигурации (режим Конфигуратор).
Пошаговая инструкция:
- Откройте базу в режиме
Конфигуратор(для этого при запуске 1С удерживайте клавишуShift). - В дереве объектов найдите нужный справочник, документ или другой объект, где требуется убрать проверку.
- Раскройте ветку
Реквизитыи выделите нужное поле. - В палитре свойств (справа) снимите флажок
Заполнение обязательно. - Сохраните конфигурацию (
Ctrl + S) и обновите базу данных (Конфигурация → Обновить конфигурацию базы данных).
Если флажок Заполнение обязательно неактивен (затенён), значит обязательность задаётся программно — через модуль объекта. В этом случае нужно искать код, который вызывает проверку (об этом — в следующем разделе).
☑️ Подготовка к изменению конфигурации
Этот способ подходит для управляемых форм (все современные конфигурации на 1С 8.3) и для обычных форм (устаревшие решения на 1С 8.2). Однако в управляемых формах иногда требуется дополнительная настройка — проверка свойства ОбязательноеЗаполнение в элементе формы.
⚠️ Внимание: После обновления типовой конфигурации ваши изменения могут сброситься! Чтобы этого избежать, используйте расширения конфигурации (см. раздел 5).
3. Способ 2: Программное отключение проверки (код 1С)
Если обязательность задана не через флажок в конфигураторе, а через программный код (например, в процедуре ПередЗаписью()), придётся править модули. Это более сложный метод, требующий знания языка 1С.
Где искать код проверки:
- 🔍 В модуле объекта (документа, справочника) — процедура
ПередЗаписью(). - 🔍 В модуле формы — процедура
ПередЗаписьюНаСервере()илиОбработкаПроверкиЗаполнения(). - 🔍 В общих модулях — если проверка вынесена в отдельную функцию (например,
ПроверитьОбязательныеРеквизиты()).
Пример кода для отключения проверки:
Процедура ПередЗаписью(Отказ, РежимЗаписи)
// Отключаем стандартную проверку заполнения для поля "Комментарий"
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ПроверитьЗаполнениеРеквизитов(Истина); // Включаем проверку при проведении
Иначе
ПроверитьЗаполнениеРеквизитов(Ложь); // Отключаем при обычной записи
КонецЕсли;
КонецПроцедуры
Если нужно отключить проверку для конкретного поля, можно использовать такой подход:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Убираем поле "Примечание" из списка обязательных
ПроверяемыеРеквизиты.Удалить("Примечание");
КонецПроцедуры
Для управляемых форм иногда требуется правка клиентского кода. Например, чтобы убрать подсветку обязательных полей:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементыФормы.Комментарий.ОбязательноеЗаполнение = Ложь;
КонецПроцедуры
Перед изменением кода найдите все упоминания функции ПроверитьЗаполнение() в модуле — иногда проверка дублируется в нескольких местах.
4. Способ 3: Использование расширений конфигурации
Если вы работаете с типовыми конфигурациями (например, 1С:ERP или 1С:КА 2), прямое изменение конфигурации чревато проблемами при обновлении. В этом случае лучше использовать расширения — они позволяют модифицировать поведение системы, не затрагивая исходный код.
Как создать расширение для отключения проверки:
- В конфигураторе выберите
Файл → Открыть расширение конфигурации(или создайте новое черезКонфигурация → Расширения). - Добавьте в расширение объект, для которого нужно убрать проверку (например, документ
ЗаказПокупателя). - В модуле расширения переопределите процедуру
ПередЗаписью():
#Область ПрограммныйИнтерфейс
Процедура ПередЗаписью(Отказ, РежимЗаписи) Экспорт
// Отключаем проверку для поля "ДополнительнаяИнформация"
Если НЕ ЗначениеЗаполнено(ДополнительнаяИнформация) Тогда
Отказ = Ложь; // Разрешаем запись даже если поле пустое
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Преимущества этого метода:
- ✅ Сохраняется поддержка типовой конфигурации (обновления не ломают ваши правки).
- ✅ Можно гибко настраивать логику — например, отключать проверку только для определённых ролей.
- ✅ Легко откатиться к исходному состоянию, просто отключив расширение.
В 1С 8.3.18+ появилась возможность создавать расширения прямо из предприятия (без конфигуратора). Для этого нужно:
- Перейти в
Администрирование → Печатные формы, отчёты и обработки → Расширения конфигурации. - Создать новое расширение и добавить в него нужные объекты.
⚠️ Внимание: В некоторых типовых конфигурациях (например, 1С:ЗУП 3.1) проверка заполнения может быть жёстко прописана в модулях менеджера. В этом случае расширение не поможет — придётся править исходный код или использовать внешние обработки.
5. Способ 4: Внешние обработки для обхода проверки
Если у вас нет доступа к конфигуратору или расширениям, можно использовать внешние обработки. Это временное решение, которое подходит для разовых задач.
Пример обработки для обхода проверки:
Процедура ЗаписатьБезПроверки(Документ)
// Сохраняем текущее состояние проверки
СостояниеПроверки = Документ.ПроверитьЗаполнение();
// Отключаем проверку
Документ.ПроверитьЗаполнение(Ложь);
// Записываем документ
Документ.Записать();
// Восстанавливаем состояние
Документ.ПроверитьЗаполнение(СостояниеПроверки);
КонецПроцедуры
Как использовать:
- Создайте новую обработку в конфигураторе (
Файл → Новый → Обработка). - Вставьте код выше в модуль обработки.
- Добавьте на форму кнопку, которая будет вызывать процедуру
ЗаписатьБезПроверки(). - При запуске обработки передавайте в неё нужный документ.
Для управляемых форм можно использовать такой вариант:
Процедура КомандаВыполнить(ПараметрКоманды)
ДокументОбъект = ПараметрКоманды.Документ;
ДокументОбъект.ОбменДанными.Загрузка = Истина; // Отключает часть проверок
ДокументОбъект.Записать();
КонецПроцедуры
Ограничения метода:
- 🚫 Не работает для полей, обязательность которых задана на уровне СУБД (например,
NOT NULLв SQL). - 🚫 Может конфликтовать с бизнес-логикой (например, если поле используется в расчётах).
- 🚫 Требует прав на изменение данных.
Что делать, если обработка не работает?
Если внешняя обработка не отключает проверку, проверьте:
1. Не блокирует ли проверку триггер на уровне СУБД (для SQL-версий 1С).
2. Нет ли дополнительных проверок в модуле менеджера документа (процедура ПриЗаписи()).
3. Не используется ли механизм КонтрольОбязательностиЗаполнения (в новых версиях платформы).
6. Способ 5: Настройка прав пользователей
Иногда проверку заполнения можно обойти, изменив права доступа. Этот метод не отключает саму проверку, но позволяет некоторым пользователям записывать объекты с пустыми полями.
Как настроить:
- В конфигураторе откройте
Администрирование → Пользователи. - Выберите роль, для которой нужно ослабить проверку (например,
АдминистраторилиМенеджер). - В настройках прав найдите раздел
Интерактивное удаление и запись. - Установите флажок
Разрешить запись без проверки заполнения(если такой параметр есть в вашей конфигурации).
В типовых конфигурациях (например, 1С:УТ 11) это делается через:
Администрирование → Настройка прав пользователей → Роли → [Выбрать роль] → Права на объекты
Для гибкой настройки можно создать новую роль с особыми правами:
| Параметр | Значение для отключения проверки | Последствия |
|---|---|---|
ИнтерактивнаяЗапись |
Разрешить без проверки |
Пользователь сможет сохранять пустые поля, но бизнес-логика может дать сбой |
ПрограммнаяЗапись |
Разрешить |
Позволит записывать объекты через код, минуя проверки |
КонтрольОбязательности |
Игнорировать |
Отключит все проверки заполнения для данной роли |
Этот способ подходит для администраторов, которые хотят дать определённой группе пользователей больше свободы, не меняя конфигурацию.
⚠️ Внимание: Изменение прав может нарушить разграничение доступа. Например, если менеджер получит право записывать документы без проверки, он сможет создавать некорректные заказы, которые потом не пройдут выгрузку в ЕГАИС или 1С:ЭДО.
7. Типичные ошибки и как их избежать
При отключении проверки заполнения часто возникают следующие проблемы:
1. Ошибка "Поле не может быть пустым" остаётся
Причина: проверка задана не только на уровне платформы, но и в триггере СУБД (для SQL-версий). Решение — править структуру таблицы через SQL Management Studio или pgAdmin (для PostgreSQL).
2. После обновления конфигурации проверка вернулась
Причина: изменения были сделаны напрямую в типовой конфигурации. Решение — использовать расширения или внешние обработки.
3. Документы записываются, но не проводятся
Причина: в процедуре ОбработкаПроведения() есть дополнительная проверка. Решение — править модуль документа или использовать ПровестиБезКонтроля().
4. В отчётах появляются ошибки
Причина: отчёт использует поле, которое теперь может быть пустым. Решение — добавить в запрос отчёта проверку на ЗначениеЗаполнено().
5. Проблемы с обменом данными
Причина: партнёрская система (например, Диадок или СБИС) требует заполнения поля. Решение — заполнять поле "заглушкой" перед выгрузкой.
Перед отключением проверки всегда проверяйте, не используется ли поле в интеграциях (ЕГАИС, ЭДО, CRM).
8. Альтернативные решения: когда отключать проверку не нужно
В некоторых случаях вместо отключения проверки лучше:
- 🔄 Заполнить поле значением по умолчанию (например, прочерком или текстовым шаблоном).
- 🔄 Сделать поле невидимым, но заполнять его автоматически в модуле.
- 🔄 Использовать подстановку — например, подтягивать значение из связанного справочника.
- 🔄 Настроить условное оформление — поле будет обязательным только при определённых условиях.
Пример автозаполнения:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Комментарий) Тогда
Комментарий = "Без комментариев"; // Заполняем автоматически
КонецЕсли;
КонецПроцедуры
Пример условной обязательности:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ТипЗначения(Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
// Для заказов клиентов поле "ДатаОтгрузки" обязательно
ПроверяемыеРеквизиты.Добавить("ДатаОтгрузки");
КонецЕсли;
КонецПроцедуры
Эти подходы позволяют сохранить контроль над данными, не отключая проверку полностью.
Если поле нужно только для отчётности, рассмотрите возможность вынесения его в отдельный регистр сведений вместо реквизита документа.
FAQ: Частые вопросы по отключению проверки заполнения
Можно ли отключить проверку заполнения только для одного пользователя?
Да, для этого нужно:
- Создать новую роль с правом
Запись без проверки. - Назначить эту роль нужному пользователю.
- В модуле объекта добавить проверку на роль:
Если НЕ Пользователь.РольВГруппе("Администраторы") ТогдаПроверитьЗаполнение(Истина);
Иначе
ПроверитьЗаполнение(Ложь);
КонецЕсли;
Почему после отключения проверки в конфигураторе ошибка всё равно появляется?
Вероятные причины:
- Проверка задана в
модуле менеджера(а не в модуле объекта). - Используется
триггер на уровне СУБД(для SQL-версий). - Поле помечено как
NOT NULLв структуре таблицы базы данных. - В конфигурации используется механизм
КонтрольОбязательностиЗаполнения(в новых версиях 1С).
Решение: проверьте все перечисленные места или используйте отладчик 1С, чтобы найти, где именно срабатывает ошибка.
Как отключить проверку заполнения в мобильном приложении 1С?
В мобильной платформе 1С:Предприятие проверка заполнения работает аналогично десктопной версии. Чтобы её отключить:
- Правьте конфигурацию на сервере (изменения синхронизируются с мобильным клиентом).
- Используйте расширения — они поддерживаются в мобильной версии.
- Для временного обхода можно использовать внешнюю обработку, которая будет запускаться перед записью.
Обратите внимание: в мобильном клиенте некоторые проверки могут быть жёстко прописаны в модуле мобильного приложения.
Возможно ли отключить проверку только для новых документов, а для старых оставить?
Да, это можно сделать через программный код. Пример:
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Если ЭтотОбъект.ЭтоНовый() Тогда
ПроверитьЗаполнение(Ложь); // Для новых документов
Иначе
ПроверитьЗаполнение(Истина); // Для существующих
КонецЕсли;
КонецПроцедуры
Или через условное оформление в модуле:
Если ДатаВремя(ЭтотОбъект.Дата) > ТекущаяДата() Тогда
ЭлементыФормы.Комментарий.ОбязательноеЗаполнение = Ложь;
КонецЕсли;
Как вернуть проверку заполнения обратно?
Способы восстановления:
- Если меняли флажок в конфигураторе — просто верните его обратно и обновите базу.
- Если правили код — откат через систему версий (
Конфигурация → Поддержка → Настройка системы версий). - Если использовали расширение — отключите или удалите его.
- Если меняли права — верните исходные настройки роли.
Если не помните, что именно меняли, восстановите базу из резервной копии.