Как устранить ошибки уникальности значений и незаполненных полей при работе с документами в 1С
Для устранения ошибок уникальности значений и незаполненных полей при работе с документами в 1С выполните перенумерацию, проверьте базу в конфигураторе и настройте свойство «Проверка заполнения».
Оглавление
Устранение ошибок уникальности значений
Ошибки вида «Значение поля "Код" не уникально» или нарушение уникальности номеров документов обычно возникают при сбоях нумерации, обмене данными или повреждении базы.
- Перенумерация объектов. Если ошибка касается кодов справочников или номеров документов, вызовите функцию
ОбновитьНумерациюОбъектов(). Также можно высвободить свободные коды, удалив объекты, помеченные на удаление, с последующей перенумерацией. - Тестирование и исправление базы. В режиме конфигуратора запустите инструмент «Администрирование» → «Проверка и исправление базы данных». Это помогает устранить структурные повреждения и дубликаты. Для регистров сведений важно помнить: запись нового значения должна сопровождаться замещением предыдущего, так как два одинаковых ключа храниться не могут.
- Анализ настроек обмена и длины полей. При ошибках после обмена данными сравните длину кода в базах-источнике и приемнике: в принимающей базе длина должна быть не меньше, иначе происходит обрезание символов и нарушение уникальности. Анализируйте журнал регистрации в обеих базах для выявления дубликатов, созданных вручную.
В исключительных случаях можно отключить контроль уникальности номеров документа через форму редактирования документа в конфигураторе на вкладке «Нумерация», но предварительно обязательно сделайте архивную копию базы.
Устранение ошибок незаполненных полей
Ошибки «Поле не заполнено» блокируют запись или проведение документа и регулируются свойствами метаданных или программными проверками.
- Настройка свойства «Проверка заполнения». В конфигураторе у нужного реквизита установите свойство «Проверка заполнения» в значение «Выдавать ошибку». Платформа автоматически запретит сохранение объекта без этого реквизита при интерактивном вводе.
- Программная проверка. Для гибкой логики используйте обработчик
ОбработкаПроверкиЗаполнения()в модуле объекта, чтобы задать условия проверки и вывести пользовательское сообщение об ошибке. В формах можно вызывать методПроверитьЗаполнение()для принудительной валидации перед выполнением действий. - Групповое исправление данных. Если ошибка возникает в уже существующих документах (например, «Вид договора не заполнено»), воспользуйтесь обработкой «Групповое изменение реквизитов» для массового заполнения недостающих значений. Иногда проблема решается обновлением релиза конфигурации до актуальной версии.
- Особенности программной записи. Если документ формируется или проводится программно, свойство «Запрет незаполненных значений» может не анализироваться платформой автоматически. Проверку нужно реализовать кодом.
Частые ошибки
- Обрезание кода при обмене. Самая частая причина нарушения уникальности после синхронизации — длина поля кода в базе-приемнике меньше, чем в базе-источнике.
- Игнорирование проверок при записи кодом. Разработчики часто забывают, что платформенный запрет незаполненных значений не срабатывает при программном проведении, что приводит к появлению «битых» документов.
FAQ
Что делать, если ошибка «Значение поля "Код" не уникально» появляется после обмена данными?
Сравните длину поля кода в базах-источнике и приемнике. В принимающей базе длина должна быть не меньше, иначе происходит обрезание символов и нарушение уникальности. Проанализируйте журнал регистрации в обеих базах.
Почему документ не проводится, если поле заполнено, но выдается ошибка «Поле не заполнено»?
При программном формировании или проведении документа свойство «Запрет незаполненных значений» может не анализироваться платформой автоматически. Проверку необходимо реализовать в коде через обработчик ОбработкаПроверкиЗаполнения().
Как массово исправить ошибку «Вид договора не заполнено» в старых документах?
Используйте стандартную обработку «Групповое изменение реквизитов» для массового заполнения недостающих значений в уже существующих документах.