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