Как правильно перенумеровать справочник Номенклатура в 1С:УТ 10.3 и восстановить автоматическую нумерацию?

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

В процессе эксплуатации системы «1С:Предприятие 8.3» на базе конфигурации «Управление торговлей 10.3» часто возникает ситуация, когда справочник «Номенклатура» превращается в «зоопарк» кодов. Это происходит из-за объединения баз, ручного редактирования или ошибок импорта. В результате коды принимают вид вроде 00000000001, 700315, УТ000005566 или даже яях0037. Попытка привести всё к единому стандарту с помощью групповой перенумерации часто приводит к неожиданному эффекту: новые элементы начинают получать коды из совершенно других числовых диапазонов. Рассмотрим, почему это происходит и как навести порядок в базе раз и навсегда.

Анализ проблемы: почему сбивается автонумерация?

Когда мы используем стандартную обработку «Универсальные подбор и обработка объектов» с диска ИТС для перенумерации, мы фактически перезаписываем текстовое поле Код во всех элементах справочника. Казалось бы, если последний элемент получил код 00000023923, то следующий должен быть 00000023924. Однако система может внезапно выдать 10000000001.

Проанализируем причины такого поведения платформы 1С:

  1. Алгоритм поиска максимального кода: Платформа не просто ищет самое большое число. Она пытается выделить в строке префикс и числовую часть. Если в базе остается хотя бы один элемент с «кривым» кодом (например, содержащим буквы или имеющим другую длину), механизм автонумерации может ошибочно принять его за эталон.
  2. Кэширование номеров на стороне сервера: Начиная с версии платформы 8.2, сервер 1С в целях производительности «резервирует» блоки номеров. После ручной массовой правки кодов сервер может продолжать выдавать номера из старого закэшированного диапазона.
  3. Влияние префикса информационной базы: В УТ 10.3 префикс часто задается в настройках обмена или в константах. Если префикс установлен, например, как 10, то платформа всегда будет пытаться подставить его в начало кода.

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

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

Воспользуемся обработкой УниверсальныеПодборИОбработкаОбъектов.epf. В настройках метода «Перенумерация объектов» важно правильно указать начальный номер и длину. Помним, что в типовой УТ 10.3 длина кода номенклатуры обычно составляет 11 символов. Если мы хотим, чтобы номер был 00000000001, начальное значение должно содержать соответствующее количество нулей.

Шаг 2: Программный сброс кэша нумерации

Если после обработки новые элементы всё равно создаются с неправильными кодами, нам необходимо заставить платформу пересчитать последний номер в таблице базы данных. Для этого в 1С существует специальный метод ОбновитьНумерациюОбъектов(). Рассмотрим пример кода, который нужно выполнить во внешней обработке или через консоль кода:


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

Этот метод сбрасывает текущий счетчик, хранящийся в оперативной памяти сервера приложений, и при следующем создании объекта система выполнит прямой запрос SELECT MAX(Code) к SQL-таблице.

Шаг 3: Разбираемся с «цифровым префиксом»

Проанализируем ситуацию, описанную в сообщении №13 обсуждения. Часто в УТ 10.3 при настройке обмена данными (например, с Бухгалтерией) устанавливается Префикс информационной базы. Если этот префикс чисто цифровой (например, 10), то 1С воспринимает его как часть кода. В этом случае, даже если вы перенумеровали всё с 1, система прибавит префикс и получит 10000000001.

Чтобы проверить и изменить префикс, пройдем по следующему пути:

  1. Меню Сервис -> Настройка учета -> Настройка параметров учета.
  2. Перейдем на закладку Обмен данными.
  3. Проверим значение поля Префикс информационной базы.

Если там стоит 10, а вы хотите видеть коды вида 0000..., префикс следует либо очистить (если база не участвует в обмене), либо изменить на буквенный (например, УТ). После изменения префикса выполнение метода ОбновитьНумерациюОбъектов() является обязательным!

Шаг 4: Стратегия «Ход конём»

Если стандартная перенумерация с единицы не помогает из-за сложности структуры кодов, можно применить «ход конём». Мы перенумеровываем справочник, начиная не с 1, а с заведомо большего разряда, который перекроет все существующие «кривые» коды. Например, начнем нумерацию с 10000000000. Это создаст единую маску для всех элементов, и платформа начнет стабильно прибавлять единицу к этому числу. Главное — убедиться, что длины кода (11 символов) достаточно для последующего роста базы.

Важные риски при изменении кодов

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

1. Синхронизация с 1С:Бухгалтерией. Рассмотрим механизм обмена. Если в правилах обмена (XML) поиск номенклатуры настроен «по коду», а не по уникальному идентификатору (GUID), то после перенумерации в УТ при первой же выгрузке в Бухгалтерии создадутся дубликаты всех позиций. Проверьте настройки правил обмена перед началом работ.

2. Торговое оборудование и ценники. Если в вашем магазине используются ценники, на которых напечатан внутренний код товара, или весы с загрузкой по кодам (PLU), то после перенумерации все старые ценники станут неактуальными. Продавцы не смогут найти товар привычным способом.

3. Поиск по коду «с клавиатуры». В УТ 10.3 распространена практика поиска товара в подборе путем быстрого набора цифр кода. Если сотрудники привыкли к старым кодам, перенумерация парализует их работу на несколько дней. Рекомендация: Если префикс необходим для обмена, лучше использовать буквенный префикс. Это позволит системе четко отделять его от числовой последовательности и облегчит визуальное восприятие кода пользователями.

Итог работы

Для успешного наведения порядка в справочнике «Номенклатура» мы должны:

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

← На главную