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

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

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

Механизм формирования итогового префикса в УТ 10.3

Прежде всего, нам необходимо понять, как платформа 1С собирает текстовую часть номера. Проанализируем структуру номера. В УТ 10.3 итоговый префикс — это составная строка, которая обычно формируется из двух или трех частей:

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

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

Почему система «помнит» удаленный номер?

Часто пользователи задаются вопросом: «Я удалил документ с плохим номером, но следующий создается с еще большим номером. Где он хранится?». Разберем этот технический нюанс. Платформа 1С не хранит «последний использованный номер» в отдельной таблице базы данных. Алгоритм работы функции УстановитьНовыйНомер() следующий:

  1. Система анализирует существующие записи в таблице конкретного вида документа (например, ЗаказПокупателя).
  2. Выполняется запрос, выбирающий максимальный номер с учетом текущего префикса и периодичности (обычно год).
  3. К найденному максимальному числовому значению прибавляется единица.

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

Поиск «виновника» и диагностика проблемы

Выясним причину, почему это происходит только в заказах. Проанализируем ситуацию по шагам:

Шаг 1: Поиск документов с некорректным номером

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


ВЫБРАТЬ
    ЗаказПокупателя.Ссылка,
    ЗаказПокупателя.Номер,
    ЗаказПокупателя.Дата
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Номер ПОДОБНО "ТДЧ%"
УПОРЯДОЧИТЬ ПО
    ЗаказПокупателя.Дата

Если запрос вернул документы, значит, они физически присутствуют в базе. Их нужно либо перенумеровать, либо полностью удалить (Shift+Delete), так как пометка на удаление не исключает номер из анализа платформой.

Шаг 2: Проверка настроек префиксов узлов

Проверим настройки обмена. Перейдем в Операции — Планы обмена. Рассмотрим узел «По этой базе» (предопределенный узел). Если в поле Префикс там стоит значение «Ч» или «ТД», это и есть корень проблемы. При создании нового документа 1С берет префикс организации и добавляет к нему префикс узла.

Шаг 3: Использование обработки «Перенумерация объектов»

Для исправления ситуации воспользуемся стандартной обработкой Перенумерация объектов (она обычно входит в состав ИТС или консоли администратора). Пошагово выполним следующие действия:

  1. Обязательно создадим резервную копию базы данных.
  2. Попросим всех пользователей выйти из системы (это критично для стабильной работы механизмов автонумерации).
  3. В обработке выберем тип объекта ДокументСсылка.ЗаказПокупателя.
  4. Укажем правильный префикс (например, «ТД») и начальный номер.
  5. Запустим процесс. Обработка пересчитает номера и, что самое главное, обновит внутренние индексы платформы.

Шаг 4: Очистка кэша и серверных данных

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

  1. Перезапустим службу 1С:Предприятия (для клиент-серверного варианта).
  2. Удалим локальный кэш пользователя на компьютере, где создаются документы (папки в %AppData%\1C\1Cv8).
  3. В конфигураторе можно выполнить Тестирование и исправление с галочкой Пересчет итогов, хотя это редко влияет именно на нумерацию, но помогает обновить состояние таблиц.

Программный контроль префикса

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


Процедура ПриУстановкеНовогоНомераДокумента(Источник, СтандартнаяОбработка, Префикс) Экспорт
    // Если здесь жестко прописано условие
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда
        Префикс = Префикс + "Ч"; // Это может быть причиной!
    КонецЕсли;
КонецПроцедуры

Если такой код обнаружен, его нужно скорректировать. Также стоит проверить модуль самого документа ЗаказПокупателя, процедуру ПередЗаписью. Возможно, там реализована логика, которая анализирует реквизит Организация и подменяет префикс «на лету».

Заключение

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

← На главную