Ошибка механизма автонумерации объектов. Обработка «Максимальный код (номер) объекта» (БСП 3.1.7.61)
Сбой механизма автонумерации документов и справочников 1С:Предприятие 8.3. Методика исправления проблемы. Вспомогательная обработка.
- Описание
- Подробнее
Описание
Иногда случается, когда пользователь записывает новый документ появляется ошибка подобно «Значение "ТД000007063" поля "Номер" не уникально». Также и при программном создании документов разработчик может столкнуться с той же проблемой.
Это значит, что сбилась автонумерация документов и документ с данным служебным номером уже существует в базе данных за данный отчетный период (периодичность может быть месяц, квартал, год). Новый номер при записи объекта генерируется неверно! Результат — документ не записывается!
Между тем отмечу, что механизм автонумерации в 1С:Предприятие 8.3 работает довольно стабильно и с подобными проблемами я сталкиваюсь весьма редко. Предполагаю, что многие пользователи никогда не испытывали подобных сложностей, работая с современными типовыми продуктами фирмы «1С».
Для исправления данной ошибки я вручную создаю новый документ и сам указываю подходящий номер для документа (по формуле: Префикс + (МаксимальныйНомер + 1)), а также указываю дату документа, если документ нужно ввести в прошлый отчетный период. Для надежности создаю сразу же второй документ со следующим номером. После сразу помечаю тестовые документы на удаление! Введенные ранее документы с неверными номерами, отраженные в учете, на данном этапе я не трогаю, перенумеровать документы за отчетный период не пытаюсь. Меня неверные номера совершенно не смущают!
Если автонумерация восстановилась, то тогда задача решена и тестовые документы в конце месяца можно удалить из базы данных. Документы с неверными номерами я снова не трогаю!
Если не помогло, то стоит вручную или программно исправить ошибочные номера, перезапустить «Сервер приложений 1С» или вручную вызвать функцию ОбновитьНумерациюОбъектов платформы, которая выполняет обновление номеров в соответствии с номерами, записанными в базе данных. Возможно, стоит еще создать тестовые документы с новым номером по шаблону Префикс + (МаксимальныйНомер + 50..100). Мне такого делать не приходилось на рабочих базах. У меня получалось исправить проблему до этого этапа.
В последний раз, решая данную задачу, оказалось сложнее, так как механизм автонумерации для документа был реализован через объект платформы «Нумератор». Теперь появилась промежуточная задача — найти максимальный номер для нескольких видов документов за период. Сортировкой в форме списка документов я воспользоваться уже не мог, так как нумератор для данного документа был задействован дополнительно еще в 4 документах. Журнала, включающего эти 5 документов, я не нашел. Можно было бы визуально найти максимальный код или придумать быстрый запрос для 5 документов, но хотелось бы иметь возможность получать максимальный номер более быстрым и удобным способом.
Постановка задачи: создать внешнюю обработку 1С:Предприятие для получения максимального номера для одного вида документа за период или для нескольких видов документов (выбрав нужный нумератор). У справочников также может возникнуть аналогичная ошибка автонумерации кода, поэтому возможность получить максимальный код для справочника также будет полезной. Разработать команду, которая позволит быстро перенумеровать элементы справочника или документы за период. Создать команду, которая будет корректировать механизм поиска новых кодов или номеров для выбранных объектов функцией ОбновитьНумерациюОбъектов платформы.
В итоге получилась внешняя обработка (скорее шаблон) для нахождения максимального номера документа или максимального кода справочника, указав префикс или без него. Предполагаю, что обработка не подойдет обычному пользователю. Скорее всего она подойдет опытному разработчику, который сможет ее адаптировать для конкретного случая и применить в подходящий момент. Возможно, начинающим разработчикам программный код обработки окажется полезным в каких-либо других задачах по программированию.

