Рассмотрим частую проблему, с которой сталкиваются пользователи 1С:Управление торговлей (а также других конфигураций). При попытке вручную изменить номер документа (например, счета-фактуры) за прошлый период, система начинает присваивать всем новым документам номера, отталкиваясь от этого исправленного значения. В результате хронология сбивается, и вместо ожидаемого номера (например, 000076) программа выдает совершенно другой (например, 007569). Проанализируем ситуацию и выясним причину такого поведения, а затем разберем по шагам несколько эффективных способов решения.
Для начала давайте разберемся, как платформа 1С работает с номерами документов. Платформа воспринимает номера не как математические числа, а как строки, и применяет к ним строковую сортировку. Система запоминает (кэширует) последний выданный номер в рамках года и префикса организации.
Если пользователь вручную вводит номер и нарушает стандартную маску (например, удаляет ведущие нули, вписывая «76» вместо «000076», или случайно меняет русскую букву префикса на аналогичную английскую), 1С фиксирует этот введенный номер как максимальный. В дальнейшем система пытается продолжать отсчет именно от него, что и приводит к ошибкам неуникальности номеров или нарушению правильной хронологии. Чтобы вернуть все в норму, нам потребуется обнулить кэш нумераторов.
Рассмотрим подробнее самый надежный технический метод. В платформе существует специальная процедура ОбновитьНумерациюОбъектов, которая заново считывает максимальные номера из базы данных и обновляет внутренний кэш платформы.
Важно: если вызвать этот метод без параметров (с пустыми скобками), кэш нумераторов будет сброшен абсолютно для всех справочников и документов в базе, что может занять время и затронуть лишние объекты. Правильнее передать конкретный объект метаданных.
Посмотрим на пример правильного кода для счетов-фактур:
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетФактураВыданный);
Так как в режиме «1С:Предприятие» нет командной строки для прямого выполнения кода, разберем по шагам, как применить эту команду:
Если вы не хотите прибегать к программированию, рассмотрим штатные способы решения для современных конфигураций (таких как УТ 11.4). Сначала нам нужно очистить ошибочные номера. В этом нам поможет встроенная обработка группового изменения.
Этот инструмент чаще применяется в 1С:Бухгалтерии предприятия, но проанализируем его, так как базы УТ и БП часто работают совместно. Если номера сбились в бухгалтерской базе, можно использовать встроенный помощник.
Применяя данные подходы, мы можем быстро и эффективно восстановить правильную хронологию нумерации любых документов в 1С. Главное правило — всегда соблюдайте маску номера (сохраняйте префиксы и количество нулей), если вам действительно необходимо задать номер вручную! Для упорядочивания хронологии и пакетного исправления сбоев можно использовать обработку для массовой перенумерации документов.