Справочники и Данные · 10 мин
Как выгрузить номенклатуру из 1С в XML
Способы выгрузки номенклатуры из 1С в XML: типовые обработки, универсальный обмен данными, выгрузка через код. Проверка результата, ошибки и ответы на вопросы.
Выгрузка номенклатуры из 1С в XML нужна при обмене с интернет-магазином, маркетплейсами, сайтом поставщика, другой базой 1С или внешними учётными системами. Формат XML удобен тем, что его понимают практически все программы, а структуру файла можно проверить вручную в обычном текстовом редакторе.
В зависимости от конфигурации и задачи есть несколько рабочих способов: типовая обработка «Универсальный обмен данными в формате XML», встроенные механизмы обмена с сайтом (CommerceML), выгрузка списка справочника через табличный документ и собственная обработка на встроенном языке. Ниже разобраны все варианты с условиями выбора.
Перед любой массовой выгрузкой сделайте резервную копию информационной базы. Сама выгрузка данные не меняет, но сопутствующие настройки обмена (регистрация изменений, планы обмена) могут повлиять на дальнейшую синхронизацию, если она уже настроена.
Определите, какой формат XML вам нужен
Под «выгрузкой в XML» скрываются разные задачи, и от требований принимающей стороны зависит выбор инструмента. Уточните у получателя файла: нужен ли формат CommerceML (стандарт обмена с сайтами), формат EnterpriseData, структура универсального обмена 1С или произвольная схема, описанная в техническом задании.
Если файл должен загрузиться в другую базу 1С той же конфигурации — подходит универсальный обмен. Если данные уходят на сайт или в каталог поставщика — чаще всего требуется CommerceML. Если принимающая система самописная — скорее всего, понадобится своя обработка с точным соответствием XSD-схеме заказчика.
Как выбрать способ выгрузки
Выгрузка через универсальный обмен данными XML
Обработка «Универсальный обмен данными в формате XML» входит в поставку большинства типовых конфигураций, а также доступна отдельно. В управляемых конфигурациях её можно открыть через раздел «НСИ и администрирование» либо запустить как внешнюю обработку через меню «Файл — Открыть».
Для выгрузки справочника «Номенклатура» потребуются правила обмена. Если база-приёмник имеет ту же конфигурацию, правила можно сформировать автоматически в конфигураторе через обработку конвертации данных или взять типовые правила из комплекта поставки. Без файла правил обработка не сможет сериализовать объекты.
- 1Сделайте резервную копию базы и откройте обработку «Универсальный обмен данными в формате XML»
- 2На закладке «Выгружаемые данные» укажите файл правил обмена и дождитесь загрузки дерева правил
- 3Отметьте галочкой правило выгрузки данных для справочника «Номенклатура»
- 4Задайте имя файла данных XML и при необходимости настройте отбор по папке, виду номенклатуры или другим условиям
- 5Нажмите «Выгрузить данные» и дождитесь сообщения об окончании
- 6Откройте полученный файл в текстовом редакторе и убедитесь, что в нём есть узлы с объектами справочника
Обратите внимание на отборы: по умолчанию выгружается весь справочник, включая помеченные на удаление элементы. Если приёмнику не нужны «мёртвые» позиции, добавьте отбор «ПометкаУдаления = Нет» или выгружайте только конкретную группу товаров.
Выгрузка для сайта через CommerceML
В конфигурациях «Управление торговлей», «Управление нашей фирмой», «Комплексная автоматизация» и ERP есть штатный узел обмена с сайтом. Он формирует файлы в формате CommerceML: каталог товаров (import.xml) и предложения с ценами и остатками (offers.xml). Путь к настройке обычно находится в разделе интеграции или администрирования, пункт «Обмен с сайтами».
Создайте новый узел обмена, укажите, что выгружать: товары, цены, остатки, свойства и картинки. Вместо выгрузки на сайт по сети можно выбрать выгрузку в каталог на диске — тогда 1С просто сформирует XML-файлы в указанной папке, что и требуется для ручной передачи файла.
Простая выгрузка списка без обмена данными
Если цель — передать коллегам или в смежную систему простой перечень товаров с парой реквизитов, полноценный обмен избыточен. Откройте список справочника «Номенклатура», настройте нужные колонки через «Ещё — Изменить форму» (или «Настроить список»), затем выведите список в табличный документ через «Ещё — Вывести список».
Табличный документ сохраняется через «Файл — Сохранить как» в форматы MXL, XLSX, CSV и другие. Напрямую в XML табличный документ не сохраняется, поэтому для получения именно XML этот способ подходит лишь как промежуточный: из Excel файл можно пересохранить или преобразовать сторонними средствами. Для строгого XML используйте варианты из предыдущих разделов.
Собственная обработка выгрузки на встроенном языке
Когда принимающая система задаёт собственную схему XML, пишут внешнюю обработку. Логика простая: запросом выбираются элементы справочника «Номенклатура», затем через объект ЗаписьXML последовательно формируются узлы файла с нужными именами тегов и атрибутами.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\nomenklatura.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Номенклатура");
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Код, Наименование, Артикул ИЗ Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
Запись.ЗаписатьНачалоЭлемента("Наименование");
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("Артикул");
Запись.ЗаписатьТекст(Выборка.Артикул);
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента(); // Товар
КонецЦикла;
Запись.ЗаписатьКонецЭлемента(); // Номенклатура
Запись.Закрыть();Критично соблюдать три правила: экранировать спецсимволы (объект ЗаписьXML делает это автоматически при записи текста), закрывать каждый открытый элемент и записывать файл в кодировке UTF-8 — большинство внешних систем ожидают именно её. Перед сдачей файла заказчику проверьте его валидатором по XSD-схеме, если схема предоставлена.
Проверка результата и типичные ошибки
После выгрузки откройте XML-файл в браузере или редакторе: корректный XML отображается в виде дерева без сообщений об ошибке разбора. Сверьте количество выгруженных позиций с количеством элементов в справочнике по отбору — расхождение укажет на сработавшие фильтры или пропуски из-за ошибок.
Обязательно сделайте контрольную загрузку файла в копию базы-приёмника или в тестовую среду принимающей системы. Только так можно убедиться, что идентификаторы, единицы измерения и ставки НДС сопоставляются корректно, а не просто «файл открылся».
Как проверить результат
Отображается дерево элементов без ошибок разбора
Сообщение об ошибке XML — незакрытый тег или недопустимый символ
Совпадает с числом элементов справочника по отбору
Позиций меньше — сработал отбор или есть ошибки выгрузки
UTF-8, русские наименования читаются
Кракозябры — неверная кодировка при записи
Товары создаются без дублей, реквизиты заполнены
Дубли элементов или пустые реквизиты — проблема синхронизации по идентификаторам
Ограничения и частные случаи
Объёмные каталоги выгружайте порциями: файл на сотни тысяч позиций может не открыться в приёмнике из-за ограничений памяти. В универсальном обмене есть разбивка по количеству объектов, в обмене с сайтом — настройка размера порции. Также учитывайте, что картинки товаров в XML не вкладываются — они выгружаются отдельными файлами со ссылками в узлах.
Если номенклатура содержит характеристики (размеры, цвета), убедитесь, что правила или обработка выгружают и справочник «Характеристики номенклатуры» вместе со связями. Иначе в приёмнике товары появятся, а варианты товаров потеряются.
Что важно запомнить
Сначала выясните требуемый формат XML у принимающей стороны, затем выбирайте инструмент: универсальный обмен — для переноса между базами 1С, CommerceML — для сайта, своя обработка — для нестандартной схемы. Перед выгрузкой сделайте копию базы, после — проверьте файл разбором в браузере и контрольной загрузкой в тестовую среду.
Частые вопросы
Можно ли выгрузить номенклатуру в XML без конфигуратора и программирования?
Да. Для переноса между одинаковыми конфигурациями достаточно типовой обработки «Универсальный обмен данными в формате XML» и готовых правил, а для сайта — штатного узла обмена с выгрузкой в каталог на диске. Программирование требуется только при нестандартной схеме файла.
Чем XML отличается от выгрузки в Excel для передачи номенклатуры?
XML — структурированный машиночитаемый формат с иерархией, типами данных и возможностью проверки по схеме; его напрямую загружают сайты и учётные системы. Excel удобен для просмотра человеком, но требует от принимающей стороны отдельной настройки импорта и хуже передаёт иерархию групп и связанные данные.
Почему после загрузки в другую базу появились дубли товаров?
Чаще всего синхронизация настроена по наименованию или коду, которые в базах различаются. Надёжный способ — синхронизация по внутреннему уникальному идентификатору (GUID), который сохраняется при обмене между связанными базами. Перед первой загрузкой выполните сопоставление объектов.
Как выгрузить только часть номенклатуры, например одну группу товаров?
В универсальном обмене откройте настройку отбора у правила выгрузки справочника и добавьте условие «Родитель = нужная группа» с учётом иерархии. В обмене с сайтом отбор по группам задаётся в настройках отбора товаров узла обмена.
Выгрузятся ли в XML штрихкоды и единицы измерения?
Зависит от правил или обработки. В типовых правилах конвертации штрихкоды (регистр сведений) и единицы измерения обычно выгружаются вместе с товаром, но это нужно проверить в дереве правил. В собственной обработке эти данные добавляют отдельными запросами к соответствующим регистрам и справочникам.
Файл получился очень большим и не загружается в приёмник. Что делать?
Разбейте выгрузку на порции: в универсальном обмене есть ограничение количества объектов в файле, в обмене с сайтом — настройка размера порции. Альтернатива — выгружать по группам товаров отдельными файлами либо сжать XML в архив ZIP, если приёмник это поддерживает.