Торговля и Склад · 10 мин
Как выгрузить товары из 1С в XML
Способы выгрузки товаров из 1С в XML: типовые обработки, обмен данными, произвольный запрос. Проверка файла, ошибки и ограничения разных конфигураций.
Выгрузка товаров из 1С в XML нужна для обмена с интернет-магазином, маркетплейсом, прайс-агрегатором или другой учётной системой. XML — универсальный текстовый формат, который понимают практически все платформы, поэтому именно он стал стандартом обмена каталогами номенклатуры.
Конкретный способ зависит от конфигурации: в «Управлении торговлей» и «1С:Комплексной автоматизации» есть встроенные механизмы обмена с сайтом, в «Бухгалтерии» типовой выгрузки каталога нет, а в самописных решениях часто приходится использовать универсальные обработки. Ниже разобраны все рабочие сценарии — от типового обмена до выгрузки произвольным запросом.
Определяем, какой формат XML нужен приёмнику
Прежде чем настраивать выгрузку, уточните требования системы, которая будет принимать файл. «Просто XML» не существует: у каждой платформы своя схема. Интернет-магазины на 1С-Битрикс и большинство CMS работают с форматом CommerceML (CML) — это стандарт обмена, разработанный 1С. Маркетплейсы и агрегаторы часто требуют YML (Yandex Market Language) — тоже XML, но с другой структурой тегов.
Если файл нужен для переноса данных между двумя базами 1С, используется формат EnterpriseData или универсальный формат обмена. Ошибка на этом этапе самая дорогая: вы можете потратить время на настройку выгрузки, которую приёмник в принципе не сможет прочитать.
Как выбрать способ выгрузки
Выгрузка через типовой обмен с сайтом (CommerceML)
В конфигурациях «Управление торговлей», «Управление нашей фирмой» и «Комплексная автоматизация» есть готовый узел обмена с сайтом. Он формирует файлы import.xml (каталог товаров) и offers.xml (цены и остатки) в формате CommerceML.
Настройка выполняется в разделе администрирования, пункт «Обмен с сайтами» или «Синхронизация данных». Создайте новый узел обмена, укажите режим «Выгрузка в каталог на диске» вместо выгрузки на сайт, если вам нужен именно файл, а не прямая отправка. Затем задайте отбор: какие группы товаров, типы цен и склады попадут в выгрузку.
- 1Откройте Администрирование → Синхронизация данных → Обмен с сайтом
- 2Создайте узел обмена и выберите режим выгрузки в каталог на диске
- 3Укажите папку для файлов XML
- 4Настройте отбор по группам номенклатуры, типам цен и складам
- 5Выполните обмен и проверьте созданные файлы import.xml и offers.xml
После выполнения обмена в указанной папке появятся файлы XML и, при необходимости, подкаталог с картинками товаров. Откройте import.xml в текстовом редакторе и убедитесь, что товары содержат наименования, артикулы и идентификаторы.
Универсальная выгрузка через обработку «Выгрузка и загрузка данных XML»
Когда нужно перенести номенклатуру между базами 1С или выгрузить данные в том виде, в каком они хранятся в конфигурации, используется обработка «Выгрузка и загрузка данных XML». Она входит в состав дистрибутивов многих конфигураций и доступна на диске ИТС.
Обработка выгружает объекты метаданных целиком: справочник «Номенклатура» со всеми реквизитами, табличными частями и связанными объектами. Важно понимать: такой файл предназначен для загрузки в другую базу 1С с совместимой конфигурацией, а не для сторонних систем — структура файла отражает внутреннее устройство объектов 1С.
Откройте обработку через меню «Файл → Открыть», отметьте нужные объекты (справочник «Номенклатура» и связанные: «Единицы измерения», «Виды цен»), укажите имя файла и выполните выгрузку. Для больших справочников выгрузка может занять заметное время.
Выгрузка произвольного набора данных через запрос
Если приёмнику нужна особая структура XML — например, фид для маркетплейса с конкретными тегами — типовые механизмы не помогут. В этом случае данные извлекают запросом и формируют XML программно или через промежуточную таблицу.
Простой путь без программирования: сформировать нужный отчёт или список через консоль запросов, выгрузить результат в табличный документ, а затем сохранить в формате, который приёмник сможет обработать. Для регулярной выгрузки в фиксированной схеме XML обычно пишут небольшую внешнюю обработку с использованием объекта «ЗаписьXML».
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Export\goods.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("goods");
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("item");
Запись.ЗаписатьАтрибут("id", Строка(Выборка.Артикул));
Запись.ЗаписатьЭлемент("name", Выборка.Наименование);
Запись.ЗаписатьЭлемент("price", Формат(Выборка.Цена, "ЧГ="));
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Такой подход требует навыков встроенного языка 1С, но даёт полный контроль над структурой файла: какие поля выгружать, как их именовать и как форматировать значения.
Особенности для разных конфигураций
Возможности выгрузки заметно различаются между конфигурациями, и это нужно учитывать при планировании.
| Конфигурация | Типовой обмен с сайтом (CML) | Что использовать |
|---|---|---|
| Управление торговлей 11 | Есть, полноценный | Узел обмена с сайтом |
| Управление нашей фирмой | Есть | Узел обмена с сайтом |
| Комплексная автоматизация 2 | Есть | Узел обмена с сайтом |
| Бухгалтерия предприятия 3 | Нет | Универсальная обработка или сторонние решения |
| Розница | Ограничен | Обмен с сайтом или планы обмена |
В «Бухгалтерии предприятия» типового механизма выгрузки каталога на сайт нет, поэтому для обмена с магазином применяют платные модули интеграции или переносят номенклатуру универсальными средствами. Учитывайте это при выборе архитектуры обмена.
Проверка результата и типичные ошибки
После выгрузки файл нужно проверить до передачи в приёмник. Откройте XML в браузере или текстовом редакторе: браузер сразу покажет синтаксическую ошибку, если файл повреждён. Убедитесь, что количество товаров соответствует ожиданиям, кодировка — UTF-8, а спецсимволы в наименованиях корректно экранированы.
Контрольная проверка: загрузите файл в тестовую среду приёмника или воспользуйтесь валидатором схемы, если платформа его предоставляет. Многие маркетплейсы имеют веб-интерфейс проверки фида перед публикацией.
Как проверить результат
Дерево XML отображается без сообщений об ошибке
Браузер показывает ошибку разбора с указанием строки
Русские названия читаются, в объявлении указан UTF-8
Крякозябры вместо кириллицы
Совпадает с числом позиций по отбору в 1С
Товаров заметно больше или меньше ожидаемого
ID стабильны между повторными выгрузками
При каждой выгрузке идентификаторы новые
Регулярная выгрузка по расписанию
Разовая выгрузка решает задачу миграции, но для работающего магазина каталог должен обновляться регулярно. В типовых конфигурациях обмен с сайтом можно выполнять по расписанию через регламентное задание: в настройках узла обмена укажите периодичность, и файлы будут формироваться автоматически.
Для файлового режима работы базы регламентные задания выполняются только при запущенном сеансе с соответствующими настройками — в клиент-серверном варианте они работают на сервере автономно. Учитывайте это, если выгрузка «молча» перестала обновляться.
Приёмник обычно забирает файл по ссылке или из каталога. Проверьте, что путь к файлу стабилен, а сам файл успевает полностью записаться до момента забора: при больших объёмах полезно выгружать во временный файл и переименовывать его по готовности.
Для регулярного обмена выгружайте только изменения, а не весь каталог: типовой узел обмена с сайтом умеет регистрировать изменённые объекты. Это сокращает размер файла и время обмена в разы, особенно при номенклатуре в десятки тысяч позиций.
FAQ
Можно ли выгрузить товары в XML из 1С:Бухгалтерии?
Типового обмена с сайтом в «Бухгалтерии» нет. Используйте универсальную обработку «Выгрузка и загрузка данных XML» для переноса в другую базу 1С, либо сторонние модули интеграции, если нужен формат CommerceML для магазина.
Чем отличается CommerceML от YML?
Оба формата основаны на XML, но имеют разные схемы. CommerceML — стандарт обмена 1С с сайтами, YML — формат фидов для Яндекс.Маркета и ряда маркетплейсов. Файл одного формата нельзя подать в систему, ожидающую другой, без преобразования.
Почему в выгрузке нет цен или остатков?
В типовом обмене каталог и предложения выгружаются в разные файлы: import.xml содержит товары, offers.xml — цены и остатки. Также проверьте, что в настройках узла указан тип цен и склад, и что по ним есть данные.
Файл получился очень большим, приёмник его не принимает. Что делать?
Разбейте выгрузку по группам товаров, включите режим выгрузки только изменений или упакуйте файл в ZIP — многие платформы принимают архивы. Также уберите из выгрузки неиспользуемые картинки и лишние реквизиты.
Безопасно ли загружать XML из чужой базы в свою?
Только после проверки на копии базы. При несовпадении конфигураций или версий возможны дубли элементов и повреждение ссылочной целостности. Перед загрузкой в рабочую базу всегда делайте резервную копию.
Что важно запомнить
Сначала выясните требуемую схему XML у приёмника, затем выбирайте инструмент: типовой обмен с сайтом для CommerceML, универсальную обработку для переноса между базами, запрос и ЗаписьXML для нестандартных схем. Проверяйте файл на кодировку, структуру и стабильность идентификаторов, а загрузку в рабочую базу выполняйте только после теста на копии.