К статье
Практический материал

Справочники и Данные · 11 мин

Как загрузить товары в 1С из XML

Как загрузить товары в 1С из XML-файла: подготовка данных, универсальная загрузка, CommerceML, сопоставление номенклатуры, типичные ошибки и проверка результата.

Загрузка товаров в 1С из XML-файла — типовая задача при переходе на новую конфигурацию, получении каталога от поставщика или обмене с интернет-магазином. В большинстве конфигураций (Управление торговлей, ERP, Комплексная автоматизация, Розница) для этого есть штатные механизмы, которые не требуют программирования.

Ключевой вопрос — в каком формате подготовлен XML-файл. Если это CommerceML (стандарт обмена 1С с сайтами), загрузка выполняется встроенными средствами за несколько минут. Если файл произвольной структуры, потребуется обработка «Универсальный обмен данными в формате XML» с правилами конвертации или специализированная загрузка, которую пишет разработчик.

Перед любыми действиями сделайте резервную копию информационной базы. Загрузка товаров массово создаёт и изменяет элементы справочника «Номенклатура», и откатить некорректную операцию вручную бывает сложно: придётся искать и удалять сотни лишних позиций, дублей и некорректных цен.

Определите формат вашего XML-файла

Откройте файл в любом текстовом редакторе и посмотрите на корневые элементы. Если внутри встречаются теги <КоммерческаяИнформация>, <Каталог>, <Товар> — это CommerceML, и задача решается штатными средствами. Такие файлы выгружают интернет-магазины на «1С-Битрикс», многие поставщики и сама 1С при обмене между базами.

Если структура произвольная — например, <products><item> с собственными названиями полей — штатный обмен файл не поймёт. Потребуется либо просить поставщика выгрузку в CommerceML, либо использовать универсальную загрузку с правилами, либо конвертировать файл в Excel/CSV и загружать через «Загрузку данных из табличного документа».

Маршрут решения

Как выбрать способ загрузки

В файле теги КоммерческаяИнформация, Каталог, ТоварИспользуйте штатный обмен CommerceML в разделе обмена с сайтом или загрузку каталога
Файл произвольной структуры и есть правила конвертацииЗагружайте через «Универсальный обмен данными в формате XML»
Файл произвольный, правил нет, объём небольшойКонвертируйте XML в Excel и загрузите через «Загрузку данных из табличного документа»
Загрузка нужна регулярно из одного источникаЗакажите разработчику специализированную обработку с расписанием

Подготовьте базу и файл к загрузке

Проверьте, что файл открывается и не содержит синтаксических ошибок: битый XML загрузчик отклонит сразу, но ошибка может появиться в середине длинного протокола. Убедитесь, что кодировка файла соответствует заявленной в его заголовке — чаще всего это UTF-8. Кириллица в неправильной кодировке превратится в «кракозябры» уже в базе.

В самой базе заранее создайте структуру, в которую лягут данные: группы номенклатуры, единицы измерения, виды цен, ставки НДС. Если в файле есть цены, проверьте, что нужный тип цен существует, иначе цены либо не загрузятся, либо создадут новый тип с неочевидным названием.

Загрузка через штатный обмен CommerceML

В конфигурациях линейки «Управление торговлей» и ERP перейдите в раздел интеграции и обмена данными — обычно это «CRM и продажи» → «Обмен с сайтом» или «Администрирование» → «Обмен электронными документами». Создайте новый узел обмена с сайтом, но вместо настройки постоянного обмена используйте ручную загрузку каталога из файла.

Укажите путь к XML-файлу каталога (обычно называется import.xml) и, если есть, к файлу предложений с ценами и остатками (offers.xml). Запустите загрузку. Система создаст номенклатуру, свойства, значения характеристик и установит цены по данным файла. Ход выполнения и ошибки смотрите в журнале регистрации и в протоколе обмена.

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

Порядок загрузки каталога CommerceML
  1. 1
    Сделайте резервную копию базы
  2. 2
    Проверьте файл: кодировка UTF-8, корректная структура XML
  3. 3
    Создайте в базе виды цен, группы номенклатуры, единицы измерения
  4. 4
    Откройте обмен с сайтом и укажите файл каталога import.xml
  5. 5
    Запустите загрузку и дождитесь завершения
  6. 6
    Проверьте протокол: количество созданных и обновлённых элементов
  7. 7
    Сверьте несколько товаров вручную: наименование, цена, остаток, единица измерения

Универсальная загрузка через обмен данными XML

Обработка «Универсальный обмен данными в формате XML» (UniversalExchangeDataXML) входит в поставку большинства типовых конфигураций и доступна на диске ИТС. Она работает в паре с правилами конвертации — XML-файлом, который описывает, какие поля источника в какие реквизиты 1С записывать.

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

Сама загрузка проста: откройте обработку через «Файл» → «Открыть», на закладке «Загрузка данных» укажите файл с данными, при необходимости включите режим отладки и запустите. Обработка покажет количество загруженных объектов и ошибки по каждому.

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

Если XML нестандартный, а разовая загрузка нужна срочно, часто быстрее преобразовать файл в табличный вид. Excel открывает простые XML-файлы напрямую, для сложных можно использовать Power Query («Данные» → «Получить данные» → «Из файла» → «Из XML»), который превратит вложенную структуру в плоскую таблицу.

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

Этот способ прощает мелкие несоответствия формата и позволяет глазами проверить данные до записи в базу. Минус — ручная работа при каждой загрузке, поэтому для регулярного обмена он не подходит.

Сопоставление номенклатуры и цен

Главная сложность загрузки — не записать данные, а правильно связать их с уже существующими товарами. Если каталог поставщика загружается поверх вашей номенклатуры, настройте поиск по артикулу поставщика или штрихкоду. В типовых конфигурациях для этого есть регистр «Номенклатура поставщиков», где хранится связь вашего товара с товаром контрагента.

Цены из XML обычно записываются документом «Установка цен номенклатуры». Проверьте, каким типом цен они загружаются и в какой валюте. Частая ошибка — цены из файла в рублях записываются в тип цен, настроенный на доллары, или наоборот, после чего в документах продажи появляются неверные суммы.

Контрольные точки

Как проверить результат загрузки

Количество элементов
Норма

Число созданных позиций совпадает с числом товаров в файле

Тревожный признак

Элементов заметно больше — вероятны дубли из-за отсутствия поиска

Наименования и артикулы
Норма

Кириллица читается, артикулы без лишних пробелов и символов

Тревожный признак

Кракозябры (кодировка) или обрезанные наименования

Цены
Норма

Цена стоит в нужном типе цен, валюта и единица измерения верны

Тревожный признак

Цены в нуле, в чужой валюте или в другом типе цен

Единицы измерения
Норма

Штуки, упаковки соответствуют данным поставщика

Тревожный признак

Всё загружено в штуках, хотя в файле были упаковки

Типичные ошибки и их устранение

Самая частая проблема — дубли номенклатуры после повторной загрузки. Причина всегда одна: не настроен или не сработал поиск существующих элементов. Лечится настройкой полей поиска в правилах или включением контроля уникальности артикула в базе.

Вторая группа ошибок — кодировка и спецсимволы. Символы &, <, > в названиях товаров должны быть экранированы в XML; если поставщик формирует файл криво, загрузчик упадёт с ошибкой разбора. Откройте файл в редакторе и проверьте строку, указанную в сообщении об ошибке.

Третья — «зависание» загрузки на больших файлах. Каталоги на десятки тысяч позиций в файловой базе могут грузиться часами. Разбейте файл на части, отключите на время загрузки отложенное проведение и полнотекстовый поиск, а лучше выполняйте операцию в клиент-серверном режиме или в тестовой копии.

Типичные ошибки при загрузке
01
Загрузка без резервной копии — при ошибке данные приходится восстанавливать вручную
02
Отсутствие поиска по артикулу — каждая повторная загрузка плодит дубли номенклатуры
03
Игнорирование протокола обмена — часть товаров молча не загружается, и это замечают только при продаже
04
Загрузка цен в несуществующий тип цен — создаётся лишний тип цен или цены теряются
05
Загрузка всего файла сразу в рабочую базу без теста на фрагменте

Когда нужен разработчик

Штатных средств достаточно, если файл в формате CommerceML или вы готовы разово конвертировать его в Excel. Обращаться к специалисту стоит, когда обмен регулярный, структура файла нестандартная, нужна сложная логика: объединение товаров из нескольких источников, расчёт цен с наценкой, обновление только изменившихся позиций.

Разработчик напишет обработку прямого чтения XML средствами встроенного языка 1С (через ЧтениеXML или XDTO-пакеты) и поставит её на регламентное задание — загрузка будет выполняться автоматически по расписанию из папки или почты. Это окупается уже при загрузках чаще пары раз в месяц.

Итог

Что важно запомнить

Определите формат файла: CommerceML грузится штатно, произвольный XML — через правила конвертации или конвертацию в Excel. Всегда делайте копию базы, настраивайте поиск дублей по артикулу и проверяйте результат по протоколу и ручной выборке товаров.

Частые вопросы

Можно ли загрузить товары из XML в 1С:Бухгалтерию?

Да, но штатного обмена CommerceML в Бухгалтерии нет. Используйте «Универсальный обмен данными в формате XML» с правилами или конвертируйте файл в Excel и загрузите через «Загрузку данных из табличного документа». Для регулярного обмена потребуется доработка.

Файл от поставщика не открывается в обмене с сайтом. Что делать?

Скорее всего, файл не соответствует стандарту CommerceML, даже если поставщик называет его «выгрузкой для 1С». Откройте его в текстовом редакторе и проверьте корневые теги. Если структура произвольная — попросите выгрузку в формате CommerceML или в Excel.

Как загрузить только цены и остатки, не создавая новые товары?

В правилах конвертации или настройках обмена отключите создание новых элементов номенклатуры и оставьте только обновление цен и остатков по найденным товарам. В обмене CommerceML файл offers.xml как раз отвечает за цены и остатки, а каталог товаров можно не загружать повторно.

После загрузки появились дубли товаров. Как их убрать?

Используйте штатную обработку «Поиск и удаление дублей» (раздел «Администрирование» → «Обслуживание»). Она найдёт элементы с совпадающими наименованиями или артикулами и заменит ссылки в документах на один выбранный элемент. Перед запуском сделайте копию базы.

Как автоматизировать регулярную загрузку из XML?

Нужна доработка: обработка чтения XML, подключённая к регламентному заданию. Она забирает файл из указанной папки, FTP или почты и загружает по расписанию без участия пользователя. Для CommerceML-обмена с сайтом автоматический режим уже встроен в типовые конфигурации.

Почему загрузка большого файла идёт очень медленно?

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