При переносе нормативно-справочной информации между идентичными или типовыми конфигурациями (например, между двумя базами 1С:Розница 2.2) стандартной универсальной обработкой Выгрузка и загрузка данных XML часто возникает типичная сложность: при настройке отбора по номенклатуре выгружаются группы, элементы, единицы измерения и реквизиты, но штрихкоды товаров в целевую базу не попадают.
Разберем, почему возникает такое поведение платформы, и подробно рассмотрим способы правильной настройки выгрузки номенклатуры вместе со всеми привязанными к ней штрихкодами.
Проанализируем механизм работы обработки Выгрузка и загрузка данных XML. При включенной опции выгрузки объектов по ссылкам механизм платформы выгружает зависимости «вглубь» — то есть те объекты метаданных, на которые непосредственно ссылается выгружаемый элемент справочника Номенклатура (например, СправочникСсылка.ВидыНоменклатуры, СправочникСсылка.ЕдиницыИзмерения, СправочникСсылка.СтавкиНДС).
Штрихкоды в типовых конфигурациях 1С хранятся не внутри самого справочника, а в независимом регистре сведений (ШтрихкодыНоменклатуры или Штрихкоды). В этом регистре измерение Номенклатура (или Владелец) ссылается на товар, но сам товар не содержит ссылок на записи регистра. В результате при установке отбора только по справочнику Номенклатура обработка не может автоматически определить наличие подчиненных записей в регистрах и не включает их в выгружаемый файл XML.
Рассмотрим основной способ решения задачи: настройку выгрузки от зависимого регистра сведений с автоматическим подтягиванием самих элементов номенклатуры по ссылкам.
Разберем последовательность действий по шагам:
Выгрузка и загрузка данных XML в исходной информационной базе.ШтрихкодыНоменклатуры).Номенклатура:
Номенклатура со всеми их реквизитами.Если в выгружаемой группе есть позиции номенклатуры, у которых еще нет штрихкодов (но их также обязательно требуется перенести), первый способ перенесет только те товары, у которых штрихкод уже заведен. Чтобы гарантированно выгрузить все товары группы и все существующие к ним штрихкоды, настроим выгрузку обоих объектов метаданных.
Разберем порядок настройки:
Номенклатура и устанавливаем отбор по родителю (например, Родитель В иерархии <Нужная группа>).ШтрихкодыНоменклатуры и устанавливаем аналогичный отбор: Номенклатура В иерархии <Нужная группа>.Если используется вариант обработки с поддержкой произвольных запросов для выборки данных, важно учитывать структуру метаданных конкретной конфигурации. В конфигурации 1С:Розница 2.2 состав полей отличается от более старых версий (таких как УТ 10.3 или Розница 1.0), где использовались поля Владелец и ЕдиницаИзмерения. При обращении к несуществующим полям платформа выдаст синтаксическую ошибку.
Посмотрим на корректный пример запроса к регистру сведений ШтрихкодыНоменклатуры для 1С:Розница 2.2:
ВЫБРАТЬ
РегистрШтрихкодов.Штрихкод КАК Штрихкод,
РегистрШтрихкодов.Номенклатура КАК Номенклатура,
РегистрШтрихкодов.Характеристика КАК Характеристика,
РегистрШтрихкодов.Упаковка КАК Упаковка
ИЗ
РегистрСведений.ШтрихкодыНоменклатуры КАК РегистрШтрихкодов
ГДЕ
РегистрШтрихкодов.Номенклатура В ИЕРАРХИИ(&ВыбраннаяГруппа)
При выполнении этого запроса и включенной опции выгрузки по ссылкам будут выгружены не только строки регистра, но и сами элементы справочника Номенклатура, а также привязанные к ним ХарактеристикиНоменклатуры и УпаковкиНоменклатуры.
Проанализируем дополнительные штатные инструменты, если использование прямой выгрузки XML вызывает сложности: