Как восстановить сбившуюся автонумерацию счетов-фактур в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Налоговый учет Торговля и дистрибуция
← На главную

Рассмотрим частую проблему, с которой сталкиваются пользователи 1С:Управление торговлей (а также других конфигураций). При попытке вручную изменить номер документа (например, счета-фактуры) за прошлый период, система начинает присваивать всем новым документам номера, отталкиваясь от этого исправленного значения. В результате хронология сбивается, и вместо ожидаемого номера (например, 000076) программа выдает совершенно другой (например, 007569). Проанализируем ситуацию и выясним причину такого поведения, а затем разберем по шагам несколько эффективных способов решения.

Почему происходит сбой автонумерации в 1С?

Для начала давайте разберемся, как платформа 1С работает с номерами документов. Платформа воспринимает номера не как математические числа, а как строки, и применяет к ним строковую сортировку. Система запоминает (кэширует) последний выданный номер в рамках года и префикса организации.

Если пользователь вручную вводит номер и нарушает стандартную маску (например, удаляет ведущие нули, вписывая «76» вместо «000076», или случайно меняет русскую букву префикса на аналогичную английскую), 1С фиксирует этот введенный номер как максимальный. В дальнейшем система пытается продолжать отсчет именно от него, что и приводит к ошибкам неуникальности номеров или нарушению правильной хронологии. Чтобы вернуть все в норму, нам потребуется обнулить кэш нумераторов.

Способ 1. Программное восстановление с помощью метода ОбновитьНумерациюОбъектов

Рассмотрим подробнее самый надежный технический метод. В платформе существует специальная процедура ОбновитьНумерациюОбъектов, которая заново считывает максимальные номера из базы данных и обновляет внутренний кэш платформы.

Важно: если вызвать этот метод без параметров (с пустыми скобками), кэш нумераторов будет сброшен абсолютно для всех справочников и документов в базе, что может занять время и затронуть лишние объекты. Правильнее передать конкретный объект метаданных.

Посмотрим на пример правильного кода для счетов-фактур:

ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетФактураВыданный);

Так как в режиме «1С:Предприятие» нет командной строки для прямого выполнения кода, разберем по шагам, как применить эту команду:

  1. Сначала обязательно сделайте резервную копию вашей базы данных.
  2. Исправьте все неправильные номера на правильные (вручную или с помощью групповых обработок, о которых поговорим ниже), либо удалите документы с неправильными номерами.
  3. Зайдите в базу в режиме «Конфигуратор».
  4. В главном меню выберите Файл -> Новый -> Внешняя обработка.
  5. Добавьте форму обработки и разместите на ней новую команду (кнопку).
  6. Щелкните по кнопке правой кнопкой мыши, выберите создание обработчика действия (на сервере) и впишите туда строку кода, указанную выше.
  7. Сохраните обработку в файл (с расширением .epf).
  8. Запустите 1С в обычном режиме Предприятия, откройте этот файл через Файл -> Открыть и нажмите вашу кнопку. Метод выполнится на сервере, и нумерация восстановится.

Способ 2. Использование штатной обработки «Групповое изменение реквизитов»

Если вы не хотите прибегать к программированию, рассмотрим штатные способы решения для современных конфигураций (таких как УТ 11.4). Сначала нам нужно очистить ошибочные номера. В этом нам поможет встроенная обработка группового изменения.

  1. Перейдите в раздел НСИ и администрирование -> Обслуживание -> Корректировка данных и откройте Групповое изменение реквизитов.
  2. Выберите тип документа (Счет-фактура выданный) и настройте отбор, чтобы в список попали только те документы, номера которых сбились.
  3. По умолчанию номер недоступен для изменения. Нажмите кнопку Дополнительные параметры в форме обработки.
  4. Установите флажки Показывать служебные реквизиты и Режим разработчика. После этого реквизит «Номер» появится в списке.
  5. Установите для выбранных документов действие очистки номера (можно присвоить значение «0» или оставить пустым, в зависимости от настроек конфигурации).
  6. Выполните изменение. При последующем перепроведении или записи программа автоматически присвоит им корректные порядковые номера, отталкиваясь от последнего правильного.

Способ 3. Экспресс-проверка ведения учета

Этот инструмент чаще применяется в 1С:Бухгалтерии предприятия, но проанализируем его, так как базы УТ и БП часто работают совместно. Если номера сбились в бухгалтерской базе, можно использовать встроенный помощник.

  1. Перейдите в раздел Отчеты -> Анализ учета -> Экспресс-проверка.
  2. В настройках отчета (кнопка Показать настройки) раскройте раздел проверок и отметьте пункт, отвечающий за проверку хронологии нумерации счетов-фактур.
  3. Выполните проверку. Если программа обнаружит сбой, она выведет ошибку и предложит встроенную функцию Автоматическая перенумерация документов.
  4. В открывшемся окне помощника укажите конкретный номер (со всеми ведущими нулями и префиксами!), с которого следует продолжить правильный отсчет.
  5. Программа сама перенумерует все последующие документы в правильной последовательности.

Применяя данные подходы, мы можем быстро и эффективно восстановить правильную хронологию нумерации любых документов в 1С. Главное правило — всегда соблюдайте маску номера (сохраняйте префиксы и количество нулей), если вам действительно необходимо задать номер вручную! Для упорядочивания хронологии и пакетного исправления сбоев можно использовать обработку для массовой перенумерации документов.

← На главную