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

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При работе со справочниками в платформе 1С 7.7 (в частности, в конфигурации «Торговля и Склад 7.7») пользователи часто сталкиваются с ситуацией, когда при создании новой группы справочника Номенклатура система неожиданно присваивает ей буквенно-цифровой код с префиксом (например, РМ-00004 или РК-00001), хотя предыдущие элементы нумеровались стандартными числами (00001). Разберем причины такого поведения платформы и пошаговый алгоритм исправления нумерации.

Как работает автонумератор справочников в 1С 7.7

Чтобы понять причину сбоя, проанализируем внутреннюю логику работы платформы 1С 7.7 при генерации нового кода элемента или группы:

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

Поиск причин и локализация ошибочных кодов

Выясним причину, почему система подставляет префикс. Если при создании группы сформировался код РМ-0003, это означает, что в базе гарантированно присутствует элемент или группа с кодом РМ-0002.

Выполним поиск таких элементов по шагам:

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

Пошаговое восстановление корректной нумерации

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

  1. Ручное исправление или очистка префиксов: Отредактируйте коды всех найденных элементов и групп, содержащих префиксы (например, РМ- или РК-), заменив их на правильные числовые значения с лидирующими нулями (например, 00002, 00003). Важно соблюдать одинаковую длину кода, иначе лексикографическое сравнение строк в 1С 7.7 приведет к новым сбоям автонумерации.
  2. Программная перенумерация: Если элементов с префиксами много (например, после некорректного импорта из УТ 10.3 или файлов Excel), воспользуйтесь внешней обработкой для пакетной установки кодов. Посмотрим на пример кода пакетной нормализации:

СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы(0);
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
    ТекущийКод = СокрЛП(СпрНом.Код);
    Если Лев(ТекущийКод, 3) = "РМ-" Тогда
        СпрНом.УстановитьНовыйКод("");
        СпрНом.Записать();
    КонецЕсли;
КонецЦикла;
  1. Тестирование и исправление ИБ: В случае если визуально все некорректные коды устранены, но нумератор продолжает генерировать старый префикс, запустите базу в режиме «Конфигуратор» и выполните пункт меню «Администрирование — Тестирование и исправление ИБ» с включенным флажком «Реиндексация». Это обновит индексные файлы таблиц базы данных.

Особенности импорта номенклатуры из других систем

Разберем типичные ошибки, возникающие при переносе справочника из 1С 8 (например, УТ 10.3) в 1С 7.7:

  1. Разница в длине кодов: В 1С 8 длина кода по умолчанию составляет 9 или 11 символов, а в типовой 1С 7.7 — 5 символов. При загрузке длинный код обрезается, что приводит к возникновению дублей и ошибкам уникальности.
  2. Сопоставление элементов: При импорте из сторонних источников не рекомендуется использовать системный код в качестве ключевого поля для синхронизации. Сопоставление надежнее производить по реквизитам Артикул, Штрихкод или точному наименованию, оставляя генерацию внутреннего кода на усмотрение метода УстановитьНовыйКод() конфигурации 1С 7.7.
  3. Ошибки незаполненных реквизитов: Если при импорте появляется сообщение «Не задано наименование», проверьте типы данных во входящем файле: пустые строки, формулы Excel или сдвиги колонок приводят к попытке записать пустой объект, что блокируется встроенным контролем транзакции.
← На главную