При работе со справочниками в платформе 1С 7.7 (в частности, в конфигурации «Торговля и Склад 7.7») пользователи часто сталкиваются с ситуацией, когда при создании новой группы справочника Номенклатура система неожиданно присваивает ей буквенно-цифровой код с префиксом (например, РМ-00004 или РК-00001), хотя предыдущие элементы нумеровались стандартными числами (00001). Разберем причины такого поведения платформы и пошаговый алгоритм исправления нумерации.
Как работает автонумератор справочников в 1С 7.7
Чтобы понять причину сбоя, проанализируем внутреннюю логику работы платформы 1С 7.7 при генерации нового кода элемента или группы:
Сквозная нумерация для элементов и групп: В типовой конфигурации «Торговля и Склад» свойство справочника «Серии кодов» установлено в значение «Во всем справочнике». Это означает, что автонумератор не разделяет группы и элементы — для них используется единая сквозная последовательность кодов.
Лексикографический поиск максимума: При создании нового объекта платформа ищет лексикографически (по алфавиту) максимальный существующий код в базе. Если в справочнике присутствует хотя бы одна позиция с буквенным префиксом (например, загруженная из Excel или созданная вручную), автонумератор берет эту строку за основу и генерирует следующий код с тем же префиксом.
Влияние глобального префикса базы: При вызове события ВводНового() в модуле формы или объекта может выполняться метод УстановитьНовыйКод() с учетом значения переменной глПрефиксАвтонумерации или константы префикса базы данных.
Помеченные на удаление объекты: Платформа учитывает коды абсолютно всех записей таблицы справочника, включая помеченные на удаление элементы. Если помеченный объект не был физически удален через операцию «Удаление помеченных объектов», его код продолжает участвовать в определении следующего номера.
Поиск причин и локализация ошибочных кодов
Выясним причину, почему система подставляет префикс. Если при создании группы сформировался код РМ-0003, это означает, что в базе гарантированно присутствует элемент или группа с кодом РМ-0002.
Выполним поиск таких элементов по шагам:
Отключение иерархического просмотра: В форме списка справочника Номенклатура нажмите кнопку «Иерархический просмотр» (или используйте соответствующий пункт меню), чтобы отобразить все позиции сплошным списком. В таком режиме группы и элементы отображаются на одном уровне.
Сортировка по коду: Кликните по заголовку колонки «Код», чтобы отсортировать справочник по возрастанию или убыванию. Это позволит сразу увидеть элементы с префиксами в начале или в конце списка.
Проверка помеченных на удаление: Убедитесь, что среди найденных позиций нет объектов со значком удаления. Если они есть, выполните операцию «Операции — Удаление помеченных объектов» или переименуйте их вручную.
Пошаговое восстановление корректной нумерации
Рассмотрим, как вернуть стандартный числовой порядок присвоения кодов:
Ручное исправление или очистка префиксов: Отредактируйте коды всех найденных элементов и групп, содержащих префиксы (например, РМ- или РК-), заменив их на правильные числовые значения с лидирующими нулями (например, 00002, 00003). Важно соблюдать одинаковую длину кода, иначе лексикографическое сравнение строк в 1С 7.7 приведет к новым сбоям автонумерации.
Программная перенумерация: Если элементов с префиксами много (например, после некорректного импорта из УТ 10.3 или файлов Excel), воспользуйтесь внешней обработкой для пакетной установки кодов. Посмотрим на пример кода пакетной нормализации:
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы(0);
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
ТекущийКод = СокрЛП(СпрНом.Код);
Если Лев(ТекущийКод, 3) = "РМ-" Тогда
СпрНом.УстановитьНовыйКод("");
СпрНом.Записать();
КонецЕсли;
КонецЦикла;
Тестирование и исправление ИБ: В случае если визуально все некорректные коды устранены, но нумератор продолжает генерировать старый префикс, запустите базу в режиме «Конфигуратор» и выполните пункт меню «Администрирование — Тестирование и исправление ИБ» с включенным флажком «Реиндексация». Это обновит индексные файлы таблиц базы данных.
Особенности импорта номенклатуры из других систем
Разберем типичные ошибки, возникающие при переносе справочника из 1С 8 (например, УТ 10.3) в 1С 7.7:
Разница в длине кодов: В 1С 8 длина кода по умолчанию составляет 9 или 11 символов, а в типовой 1С 7.7 — 5 символов. При загрузке длинный код обрезается, что приводит к возникновению дублей и ошибкам уникальности.
Сопоставление элементов: При импорте из сторонних источников не рекомендуется использовать системный код в качестве ключевого поля для синхронизации. Сопоставление надежнее производить по реквизитам Артикул, Штрихкод или точному наименованию, оставляя генерацию внутреннего кода на усмотрение метода УстановитьНовыйКод() конфигурации 1С 7.7.
Ошибки незаполненных реквизитов: Если при импорте появляется сообщение «Не задано наименование», проверьте типы данных во входящем файле: пустые строки, формулы Excel или сдвиги колонок приводят к попытке записать пустой объект, что блокируется встроенным контролем транзакции.