Почему в 1С:Управление торговлей меняется префикс документов и как восстановить автонумерацию?

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

При работе в конфигурации «1С:Управление торговлей 10.3» пользователи и администраторы нередко сталкиваются с ситуацией, когда к привычному префиксу организации в номерах документов или кодах справочников внезапно добавляются лишние буквы (например, вместо СТ000001 формируется УТСТ000001). Выясним причину такого поведения платформы и пошагово разберем, как отключить ненужный префикс и восстановить корректную автонумерацию объектов.

Причины появления двойного префикса

Формирование номера документа в типовых конфигурациях 1С строится из сложения нескольких составляющих: префикса информационной базы (или узла распределенной базы данных), префикса организации и самого числового порядкового номера с лидирующими нулями.

Рассмотрим, почему к номерам начинает добавляться префикс информационной базы:

  1. Настройка синхронизации данных: При создании обмена (например, с «1С:Бухгалтерия предприятия» или настройке РИБ) мастер настройки обмена автоматически прописывает префикс базы (по умолчанию для УТ это УТ) в константах и свойствах узла плана обмена. Это необходимо для исключения коллизий номеров при встречной загрузке документов.
  2. Срабатывание подписок на события: В момент записи новых документов срабатывает обработчик подписки на событие (например, ПередЗаписью), который считывает установленный префикс информационной базы и автоматически добавляет его перед префиксом организации.

Как отключить префикс информационной базы в УТ 10.3

Если обмен данными больше не используется или не предполагает сквозную нумерацию, префикс информационной базы можно отключить. Разберем по шагам, как это сделать:

  1. Перейдем в меню Сервис → Настройка учета → Настройка параметров учета.
  2. Найдем поле Префикс ведения учета (или Префикс информационной базы) и очистим его значение.
  3. Проверим код узла ЭтотУзел в используемых планах обмена (меню Операции → Планы обмена), так как некоторые алгоритмы берут значение непосредственно из предопределенного узла обмена.

После очистки префикса новые создаваемые документы сразу начнут получать номера стандартного вида (например, СТ000001).

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

Часто после отключения префикса в настройках документы начинают нумероваться корректно, а элементы справочников (например, «Контрагенты») продолжают создаваться с кодом УТ.... Проанализируем причину этой проблемы:

  1. Отсутствие периодичности у справочников: В отличие от документов, нумерация которых чаще всего ведется в пределах одного календарного года, справочники имеют сквозную нумерацию за все время существования базы.
  2. Принцип лексикографического сравнения: Механизм автонумерации платформы 1С находит максимальный существующий код в таблице базы данных и прибавляет к нему единицу. Так как строковое значение УТ000001 лексикографически «старше», чем 000001 или СТ000001, автонумератор считает строку с префиксом УТ новым диапазоном и продолжает нумеровать от нее.

Способы исправления автонумерации справочников

Чтобы вернуть стандартную нумерацию справочника, необходимо убрать ошибочные коды и принудительно обновить нумератор платформы.

1. Ручное или программное изменение ошибочных кодов

Код справочника имеет фиксированную длину и строковый тип данных. При программном изменении кода важно всегда передавать строковый тип с сохранением лидирующих нулей, иначе нумерация будет нарушена.

Посмотрим на пример правильной корректировки кода элемента через встроенный язык:


Технорешение = Справочники.Контрагенты.НайтиПоНаименованию("Калистратов Валерий Александрович");
Если Не Технорешение.Пустая() Тогда
    ТехнорешениеОбъект = Технорешение.ПолучитьОбъект();
    // Формируем строковый код с заполнением лидирующими нулями до длины поля
    ЧисловойНомер = 999;
    Длина = Метаданные.Справочники.Контрагенты.ДлинаКода;
    ТехнорешениеОбъект.Код = Формат(ЧисловойНомер, "ЧЦ=" + Длина + "; ЧВН=; ЧГ=0");
    ТехнорешениеОбъект.Записать();
КонецЕсли;

Если ошибочных элементов немного, изменить поле Код можно непосредственно в форме элемента справочника. Если поле скрыто или недоступно для редактирования, его можно скорректировать через меню Действия → Редактировать код.

2. Программный сброс кэша автонумератора

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


// Сброс кэша нумерации для справочника "Контрагенты"
ОбновитьНумерациюОбъектов(Метаданные.Справочники.Контрагенты);

// При необходимости сброса кэша для документов:
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);

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

← На главную