Как выгрузить выбранную номенклатуру вместе со штрихкодами с помощью обработки выгрузки и загрузки данных XML в 1С

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

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

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

Выясним причину: особенности хранения данных и ссылочной целостности

Проанализируем механизм работы обработки Выгрузка и загрузка данных XML. При включенной опции выгрузки объектов по ссылкам механизм платформы выгружает зависимости «вглубь» — то есть те объекты метаданных, на которые непосредственно ссылается выгружаемый элемент справочника Номенклатура (например, СправочникСсылка.ВидыНоменклатуры, СправочникСсылка.ЕдиницыИзмерения, СправочникСсылка.СтавкиНДС).

Штрихкоды в типовых конфигурациях 1С хранятся не внутри самого справочника, а в независимом регистре сведений (ШтрихкодыНоменклатуры или Штрихкоды). В этом регистре измерение Номенклатура (или Владелец) ссылается на товар, но сам товар не содержит ссылок на записи регистра. В результате при установке отбора только по справочнику Номенклатура обработка не может автоматически определить наличие подчиненных записей в регистрах и не включает их в выгружаемый файл XML.

Способ 1. Выгрузка от регистра сведений со штрихкодами

Рассмотрим основной способ решения задачи: настройку выгрузки от зависимого регистра сведений с автоматическим подтягиванием самих элементов номенклатуры по ссылкам.

Разберем последовательность действий по шагам:

  1. Откроем обработку Выгрузка и загрузка данных XML в исходной информационной базе.
  2. В дереве метаданных находим регистр сведений (в конфигурации 1С:Розница 2.2 он называется ШтрихкодыНоменклатуры).
  3. Отмечаем данный регистр флагом для выгрузки.
  4. В панели настройки отборов для выбранного регистра добавляем условие по полю Номенклатура:
    — Если необходимо выгрузить конкретную группу: вид сравнения В иерархии, значение — нужная папка (например, «Чипсы»);
    — Если требуется выгрузить произвольный список: вид сравнения В списке со списком требуемых позиций.
  5. Убедимся, что включен флаг Выгружать объекты по ссылкам (или При необходимости выгружать данные, на которые есть ссылки). В таком случае обработка выгрузит записи регистра штрихкодов и автоматически подтянет все связанные элементы справочника Номенклатура со всеми их реквизитами.
  6. Выполняем выгрузку в XML-файл и загружаем его в целевой базе.

Способ 2. Одновременная выгрузка справочника и регистра с отборами

Если в выгружаемой группе есть позиции номенклатуры, у которых еще нет штрихкодов (но их также обязательно требуется перенести), первый способ перенесет только те товары, у которых штрихкод уже заведен. Чтобы гарантированно выгрузить все товары группы и все существующие к ним штрихкоды, настроим выгрузку обоих объектов метаданных.

Разберем порядок настройки:

  1. В списке метаданных отмечаем справочник Номенклатура и устанавливаем отбор по родителю (например, Родитель В иерархии <Нужная группа>).
  2. Отмечаем регистр сведений ШтрихкодыНоменклатуры и устанавливаем аналогичный отбор: Номенклатура В иерархии <Нужная группа>.
  3. Запускаем процесс выгрузки данных. В результирующий файл попадут как сами карточки номенклатуры (включая позиции без штрихкодов), так и все соответствующие записи регистра сведений.

Способ 3. Выгрузка с помощью произвольного запроса

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

Посмотрим на корректный пример запроса к регистру сведений ШтрихкодыНоменклатуры для 1С:Розница 2.2:


ВЫБРАТЬ
	РегистрШтрихкодов.Штрихкод КАК Штрихкод,
	РегистрШтрихкодов.Номенклатура КАК Номенклатура,
	РегистрШтрихкодов.Характеристика КАК Характеристика,
	РегистрШтрихкодов.Упаковка КАК Упаковка
ИЗ
	РегистрСведений.ШтрихкодыНоменклатуры КАК РегистрШтрихкодов
ГДЕ
	РегистрШтрихкодов.Номенклатура В ИЕРАРХИИ(&ВыбраннаяГруппа)

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

Альтернативные варианты переноса данных

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

  1. Универсальный обмен данными в формате XML: позволяет использовать правила обмена (созданные в конфигурации «Конвертация данных 2.1»), где в правилах выгрузки данных (ПВД) можно гибко описать отборы компоновки как для справочника, так и для регистра сведений.
  2. Загрузка данных из внешнего источника: в 1С:Розница 2.2 встроен штатный помощник загрузки из файлов Excel/CSV. Можно сформировать список нужных товаров со штрихкодами через отчет в исходной базе, сохранить его в табличный документ и загрузить в приемник без необходимости работы с метаданными.
← На главную