В конфигурации 1С:Управление торговлей 10.3 пользователи и разработчики нередко сталкиваются с ситуацией, когда при включении или отключении признака ОтражатьВБухгалтерскомУчете документу присваивается некорректный короткий номер (например, трехзначный вместо стандартного одиннадцатизначного формата с лидирующими нулями). Разберем механизм работы нумератора, выясним причины такого поведения и рассмотрим пошаговые способы восстановления корректной автонумерации.
Для понимания источника проблемы проанализируем, как платформа «1С:Предприятие» генерирует новые номера:
ОтражатьВБухгалтерскомУчетеПриИзменении(). В типовых конфигурациях при изменении режима учета пересчитывается префикс номера документа (или сбрасывается ранее назначенный номер), после чего вызывается процедура перенумерации.УстановитьНовыйНомер() срабатывает событие модуля объекта ПриУстановкеНовогоНомера, а также подписки на события, где формируется префикс (например, префикс организации, узла РИБ или префикс управленческого/бухгалтерского учета).999 вместо 00000000999), строка "999" при сравнении оказывается больше, чем "00000000999". В результате платформа продолжает нумеровать документы в коротком формате (1000, 1001 и т.д.).Нумератор, сбойный номер мог быть введен в совершенно другом виде документа, входящем в состав того же нумератора.Рассмотрим порядок действий для обнаружения документов, нарушивших нумерационный ряд:
100, 500, 999), зафиксируем эти документы.Организации и настройки программы на корректность заданных префиксов (отсутствие лишних пробелов и специальных символов).После выявления всех документов с нарушенным форматом необходимо привести их номера к стандартной длине, установленной в метаданных (дописать недостающие лидирующие нули с сохранением префикса). Разберем варианты исправления:
Универсальный подбор и обработка объектов либо обработкой Групповое изменение реквизитов с включенной возможностью изменения служебных полей, чтобы пакетно выровнять длину номеров.После того как все документы в базе приведены к корректному виду, необходимо принудительно обновить счетчик нумерации платформы с помощью глобального метода ОбновитьНумерациюОбъектов(). Выполнить данный вызов можно через внешнюю обработку или обработку «Групповая обработка справочников и документов» под учетной записью с полными административными правами.
Рассмотрим примеры кода для сброса нумерации в зависимости от ситуации:
Для сброса нумерации конкретного вида документа:
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
Если для группы документов используется объект метаданных Нумератор:
ОбновитьНумерациюОбъектов(Метаданные.Нумераторы.ОсновнойНумератор);
Для полного сброса счетчиков автонумерации по всей информационной базе:
ОбновитьНумерациюОбъектов();
Проанализируем правильность выполненных действий:
ОтражатьВБухгалтерскомУчете и убедимся, что номер переформировывается с корректной длиной и сохранением префикса.УТ000001001), после чего удалим его или продолжим нормальную работу — следующий документ получит номер УТ000001002 автоматически.