Как перенести номенклатуру в 1С:УНФ с сохранением иерархии групп и связанных данных

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

Перенос данных между базами 1С — задача, с которой сталкивается практически каждый технический специалист или опытный пользователь. Казалось бы, использование стандартной обработки ВыгрузкаЗагрузкаДанныхXML должно решать проблему в пару кликов, особенно если конфигурации баз идентичны. Однако при работе с 1С:Управление нашей фирмой (УНФ) многие сталкиваются с неприятным сюрпризом: после загрузки в новую базу вся номенклатура оказывается «в куче», а привычное дерево папок (иерархия) бесследно исчезает.

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

Почему обычная выгрузка справочника не сохраняет иерархию

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

В 1С:УНФ (начиная с версий 1.6 и в актуальной 3.0) реализован более гибкий механизм. Иерархия здесь может строиться не только через «родителя», но и через специальный объект — Регистр сведений «Иерархия номенклатуры». Это позволяет одному и тому же товару физически находиться в одной группе, но отображаться в разных логических разделах (например, для разных прайс-листов или каталогов сайта).

Если при выгрузке через XML вы помечаете только справочник Номенклатура, система переносит карточки товаров, но «забывает» связи, хранящиеся в независимом регистре. В итоге в целевой базе данные есть, а структуры — нет.

Пошаговое решение проблемы через XML-выгрузку

Рассмотрим правильный алгоритм переноса данных с помощью универсальной обработки. Нам необходимо выполнить следующие действия:

  1. Откроем обработку ВыгрузкаЗагрузкаДанныхXML в исходной базе.
  2. В списке объектов для выгрузки найдем и отметим Справочник.Номенклатура.
  3. Критически важный шаг: пролистаем список до раздела регистров и отметим РегистрСведений.ИерархияНоменклатуры. Именно этот объект отвечает за то, как папки и товары соотносятся друг с другом.
  4. Для корректной работы товаров в новой базе нам также потребуется отметить Справочник.КатегорииНоменклатуры. В УНФ категория — это фундамент карточки, определяющий настройки учета, характеристики и дополнительные реквизиты.
  5. Нажмем кнопку «Выгрузить данные» и сохраним файл.
  6. В целевой базе запустим ту же обработку на вкладке «Загрузка» и выберем наш файл.

После завершения загрузки структура групп должна восстановиться. Если вы все же не видите папок, перейдем к проверке режимов просмотра.

Проверка режима отображения в интерфейсе

Иногда проблема кроется не в отсутствии данных, а в настройках интерфейса пользователя. Разберем, как проверить режим просмотра в списке номенклатуры:

В окне справочника Номенклатура обратим внимание на правую верхнюю часть формы или кнопку «Еще». Нам нужно найти пункт «Режим просмотра». Возможны три варианта:

Убедимся, что выбран вариант «Иерархический список» или «Дерево». Если после этого группы появились, значит, данные перенесены успешно, а для удобства работы можно внедрить отображение по всей иерархии группы в списках.

Что еще необходимо перенести для полноценной работы

Выясним, какие сопутствующие объекты часто забывают при переносе, что приводит к ошибкам в документах. Номенклатура в 1С:УНФ — это сложный узел связей. Для полноценной миграции рекомендуем также включать в выгрузку следующие объекты:

  1. Единицы измерения: Проанализируем справочник ЕдиницыИзмерения. Если его не перенести, поле «Ед. изм.» в карточке будет пустым, и вы не сможете провести ни одну накладную.
  2. Штрихкоды: Это данные РегистраСведений.ШтрихкодыНоменклатуры. Без них складское оборудование и сканеры не опознают товар. Для их подготовки часто используют групповое создание штрихкодов EAN13.
  3. Характеристики: Если вы ведете учет по цветам, размерам или материалам, обязательно пометьте Справочник.ХарактеристикиНоменклатуры.
  4. Цены: Информация о ценах хранится в РегистреСведений.ЦеныНоменклатуры. Без него справочник будет информативным, но «пустым» с точки зрения коммерции.
  5. Изображения: Если к товарам прикреплены фото, они хранятся в Справочнике.НоменклатураПрисоединенныеФайлы. Также потребуется выгрузить связанные регистры, отвечающие за хранение двоичных данных (файловые тома или хранилище в БД).

Программный способ исправления иерархии

Если вы уже перенесли справочник без регистра иерархии и не хотите повторять процедуру выгрузки, можно попробовать перезаписать элементы программно (через консоль кода), чтобы система попыталась восстановить стандартные связи (если заполнен реквизит Родитель). Посмотрим на пример простого кода для переобхода справочника:


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

Однако помните, что в УНФ программная запись объекта справочника не всегда автоматически создает запись в регистре ИерархияНоменклатуры, если логика распределения по группам сложная. Лучшим вариантом остается повторная выгрузка с включением нужного регистра.

Альтернатива: Загрузка из Excel

Если работа с XML кажется слишком трудоемкой, проанализируем встроенный помощник «Загрузка данных из файла». В УНФ он реализован крайне удачно. Вы можете выгрузить номенклатуру из старой базы в таблицу Excel, создав колонки «Группа» (полный путь, например: Продукты/Выпечка/Хлеб) и «Наименование».

При загрузке такого файла в новую базу система сама:

Резюме

Для успешного переноса номенклатуры в 1С:УНФ с сохранением дерева папок всегда помните о "золотой троице" объектов: Справочник.Номенклатура + Справочник.КатегорииНоменклатуры + РегистрСведений.ИерархияНоменклатуры. Соблюдение этого правила убережет вас от ручного перераспределения тысяч товаров по папкам в новой информационной базе.

← На главную