Многие пользователи и администраторы системы 1С:Управление торговлей 11 сталкиваются с ситуацией, когда наступает новый календарный год, а порядковые номера документов (например, реализаций или заказов) продолжают увеличиваться, не сбрасываясь на единицу. В этой статье мы подробно разберем, почему это происходит, как устроена логика платформы 1С и какие существуют способы решения этой задачи — от простых до продвинутых технических методов.
Для начала проанализируем ситуацию: почему платформа продолжает старую нумерацию? В системе 1С за автоматическое присвоение номера отвечает механизм платформы, который опирается на свойство объекта Периодичность. Это свойство задается в Конфигураторе для каждого вида документа отдельно. Если для документа установлена периодичность В пределах года, то при наступлении 1 января 1С автоматически начнет искать максимальный номер именно в новом году. Если же номеров за этот год еще нет, она должна предложить «000000001».
Однако в УТ 11 и других современных конфигурациях иногда возникают сбои или настройки установлены таким образом, что «обнуления» не происходит. Рассмотрим, как мы можем на это повлиять.
Как совершенно верно отметили участники форума, основной механизм управления нумерацией находится в свойствах метаданных. Если вы обнаружили, что нумерация за несколько лет идет сквозным списком, значит, в конфигурации для данного документа не установлена годовая периодичность.
Рассмотрим, как это проверить и изменить:
РеализацияТоваровУслуг).Периодичность.Непериодический, это означает, что номера будут уникальными в пределах всей таблицы за все годы. Чтобы нумерация сбрасывалась каждый год, необходимо установить значение В пределах года.Важно: Изменение этого свойства напрямую в основной конфигурации снимет объект с поддержки, что может усложнить дальнейшие обновления. Если вы хотите избежать этого, рекомендуем использовать механизм расширений, о котором мы поговорим ниже.
Часто бывает, что периодичность в Конфигураторе уже стоит «Годовая», но нумерация все равно «подхватывает» старые значения. Это происходит из-за того, что платформа 1С всегда ориентируется на максимальный существующий номер в текущем периоде.
Выясним причину: если в начале года кто-то из пользователей по ошибке перенес документ из прошлого года в текущий (сменил дату с 31.12 на 01.01), сохранив старый номер (например, УТ-001540), платформа увидит этот номер как максимальный для текущего года. Следующий документ получит номер УТ-001541.
Как мы можем это исправить без программирования:
000000001 (с учетом ваших префиксов, например, ФР-00000001).Иногда платформа «кэширует» последний выданный номер, и даже после удаления ошибочных документов продолжает предлагать некорректный следующий номер. В этом случае нам поможет встроенная функция платформы ОбновитьНумерациюОбъектов. Она заставляет систему заново просканировать базу данных и вычислить актуальный максимальный номер.
Посмотрим на пример кода, который можно запустить через внешнюю обработку или консоль кода:
// Обновим нумерацию для конкретных типов документов
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
ОбновитьНумерациюОбъектов(Метаданные.Документы.ЗаказПокупателя);
// Теперь платформа заново вычислит следующий свободный номер
Этот метод абсолютно безопасен и часто решает проблему «зависших» номеров без изменения логики системы.
Проанализируем ситуацию, когда нам нужно изменить периодичность с Непериодический на В пределах года, но мы не хотим менять типовую конфигурацию. В современных версиях 1С (8.3.x) для этого идеально подходят Расширения конфигурации.
Разберем по шагам:
Периодичность на В пределах года.Таким образом, основная конфигурация остается на замке (на поддержке), а логика нумерации меняется так, как нам нужно.
Выясним еще одну частую причину сбоя — нарушение структуры номера. Платформа 1С умеет автоматически увеличивать только ту часть номера, которая является числовой и находится в конце строки. Рассмотрим примеры:
000000001 — корректный, платформа сделает 000000002.0000001-А — проблемный. Платформа может «споткнуться» на букве в конце и перестать автоматически увеличивать номер, либо будет выдавать один и тот же номер постоянно.1 (без ведущих нулей) — также может привести к сбоям, когда количество разрядов закончится (после 9 программа может не понять, как сделать 10, если длина строки жестко ограничена).Проанализируем влияние префиксов. В УТ 11 активно используются префиксы организации и префиксы информационной базы (настраиваются в разделе «НСИ и администрирование»). Если вы измените префикс организации в середине года, нумерация для этой организации автоматически начнется с единицы, так как комбинация «Префикс + Номер» станет уникальной для системы.
Если пользователи уже успели наплодить сотни документов с неправильными номерами в новом году, ручная правка каждого документа будет слишком трудоемкой. В этом случае рекомендуем:
ОбновитьНумерациюОбъектов, чтобы сбросить внутренние счетчики платформы.Подводя итог, можно сказать: хотя в самом интерфейсе «1С:Предприятия» нет галочки «Сбрасывать номер каждый год», мы имеем полный арсенал инструментов для решения этой задачи — от административного воздействия на «шаловливые руки» пользователей до гибкой настройки метаданных через расширения.