Справочники и Данные · 11 мин
Как загрузить товары в 1С из XML
Как загрузить товары в 1С из XML-файла: подготовка данных, универсальная загрузка, CommerceML, сопоставление номенклатуры, типичные ошибки и проверка результата.
Загрузка товаров в 1С из XML-файла — типовая задача при переходе на новую конфигурацию, получении каталога от поставщика или обмене с интернет-магазином. В большинстве конфигураций (Управление торговлей, ERP, Комплексная автоматизация, Розница) для этого есть штатные механизмы, которые не требуют программирования.
Ключевой вопрос — в каком формате подготовлен XML-файл. Если это CommerceML (стандарт обмена 1С с сайтами), загрузка выполняется встроенными средствами за несколько минут. Если файл произвольной структуры, потребуется обработка «Универсальный обмен данными в формате XML» с правилами конвертации или специализированная загрузка, которую пишет разработчик.
Перед любыми действиями сделайте резервную копию информационной базы. Загрузка товаров массово создаёт и изменяет элементы справочника «Номенклатура», и откатить некорректную операцию вручную бывает сложно: придётся искать и удалять сотни лишних позиций, дублей и некорректных цен.
Определите формат вашего XML-файла
Откройте файл в любом текстовом редакторе и посмотрите на корневые элементы. Если внутри встречаются теги <КоммерческаяИнформация>, <Каталог>, <Товар> — это CommerceML, и задача решается штатными средствами. Такие файлы выгружают интернет-магазины на «1С-Битрикс», многие поставщики и сама 1С при обмене между базами.
Если структура произвольная — например, <products><item> с собственными названиями полей — штатный обмен файл не поймёт. Потребуется либо просить поставщика выгрузку в CommerceML, либо использовать универсальную загрузку с правилами, либо конвертировать файл в Excel/CSV и загружать через «Загрузку данных из табличного документа».
Как выбрать способ загрузки
Подготовьте базу и файл к загрузке
Проверьте, что файл открывается и не содержит синтаксических ошибок: битый XML загрузчик отклонит сразу, но ошибка может появиться в середине длинного протокола. Убедитесь, что кодировка файла соответствует заявленной в его заголовке — чаще всего это UTF-8. Кириллица в неправильной кодировке превратится в «кракозябры» уже в базе.
В самой базе заранее создайте структуру, в которую лягут данные: группы номенклатуры, единицы измерения, виды цен, ставки НДС. Если в файле есть цены, проверьте, что нужный тип цен существует, иначе цены либо не загрузятся, либо создадут новый тип с неочевидным названием.
Загрузка через штатный обмен CommerceML
В конфигурациях линейки «Управление торговлей» и ERP перейдите в раздел интеграции и обмена данными — обычно это «CRM и продажи» → «Обмен с сайтом» или «Администрирование» → «Обмен электронными документами». Создайте новый узел обмена с сайтом, но вместо настройки постоянного обмена используйте ручную загрузку каталога из файла.
Укажите путь к XML-файлу каталога (обычно называется import.xml) и, если есть, к файлу предложений с ценами и остатками (offers.xml). Запустите загрузку. Система создаст номенклатуру, свойства, значения характеристик и установит цены по данным файла. Ход выполнения и ошибки смотрите в журнале регистрации и в протоколе обмена.
В «1С:Рознице» и «Управлении нашей фирмой» механизм аналогичен, но пункт меню может называться «Загрузка данных из файла» или находиться в разделе закупок у карточки поставщика.
- 1Сделайте резервную копию базы
- 2Проверьте файл: кодировка UTF-8, корректная структура XML
- 3Создайте в базе виды цен, группы номенклатуры, единицы измерения
- 4Откройте обмен с сайтом и укажите файл каталога import.xml
- 5Запустите загрузку и дождитесь завершения
- 6Проверьте протокол: количество созданных и обновлённых элементов
- 7Сверьте несколько товаров вручную: наименование, цена, остаток, единица измерения
Универсальная загрузка через обмен данными XML
Обработка «Универсальный обмен данными в формате XML» (UniversalExchangeDataXML) входит в поставку большинства типовых конфигураций и доступна на диске ИТС. Она работает в паре с правилами конвертации — XML-файлом, который описывает, какие поля источника в какие реквизиты 1С записывать.
Правила создаются в конфигурации «Конвертация данных» — это отдельный продукт 1С. Написание правил требует навыков: нужно описать объекты, соответствие полей, алгоритмы поиска существующей номенклатуры (по коду, артикулу, наименованию). Без опыта эту часть лучше поручить специалисту.
Сама загрузка проста: откройте обработку через «Файл» → «Открыть», на закладке «Загрузка данных» укажите файл с данными, при необходимости включите режим отладки и запустите. Обработка покажет количество загруженных объектов и ошибки по каждому.
Загрузка через Excel как альтернатива
Если XML нестандартный, а разовая загрузка нужна срочно, часто быстрее преобразовать файл в табличный вид. Excel открывает простые XML-файлы напрямую, для сложных можно использовать Power Query («Данные» → «Получить данные» → «Из файла» → «Из XML»), который превратит вложенную структуру в плоскую таблицу.
Полученный файл загружается обработкой «Загрузка данных из табличного документа» (есть на диске ИТС и во многих конфигурациях встроена в раздел «Покупки» или «Номенклатура»). В ней вы визуально сопоставляете колонки таблицы реквизитам справочника: наименование, артикул, цена, единица измерения, ставка НДС.
Этот способ прощает мелкие несоответствия формата и позволяет глазами проверить данные до записи в базу. Минус — ручная работа при каждой загрузке, поэтому для регулярного обмена он не подходит.
Сопоставление номенклатуры и цен
Главная сложность загрузки — не записать данные, а правильно связать их с уже существующими товарами. Если каталог поставщика загружается поверх вашей номенклатуры, настройте поиск по артикулу поставщика или штрихкоду. В типовых конфигурациях для этого есть регистр «Номенклатура поставщиков», где хранится связь вашего товара с товаром контрагента.
Цены из XML обычно записываются документом «Установка цен номенклатуры». Проверьте, каким типом цен они загружаются и в какой валюте. Частая ошибка — цены из файла в рублях записываются в тип цен, настроенный на доллары, или наоборот, после чего в документах продажи появляются неверные суммы.
Как проверить результат загрузки
Число созданных позиций совпадает с числом товаров в файле
Элементов заметно больше — вероятны дубли из-за отсутствия поиска
Кириллица читается, артикулы без лишних пробелов и символов
Кракозябры (кодировка) или обрезанные наименования
Цена стоит в нужном типе цен, валюта и единица измерения верны
Цены в нуле, в чужой валюте или в другом типе цен
Штуки, упаковки соответствуют данным поставщика
Всё загружено в штуках, хотя в файле были упаковки
Типичные ошибки и их устранение
Самая частая проблема — дубли номенклатуры после повторной загрузки. Причина всегда одна: не настроен или не сработал поиск существующих элементов. Лечится настройкой полей поиска в правилах или включением контроля уникальности артикула в базе.
Вторая группа ошибок — кодировка и спецсимволы. Символы &, <, > в названиях товаров должны быть экранированы в XML; если поставщик формирует файл криво, загрузчик упадёт с ошибкой разбора. Откройте файл в редакторе и проверьте строку, указанную в сообщении об ошибке.
Третья — «зависание» загрузки на больших файлах. Каталоги на десятки тысяч позиций в файловой базе могут грузиться часами. Разбейте файл на части, отключите на время загрузки отложенное проведение и полнотекстовый поиск, а лучше выполняйте операцию в клиент-серверном режиме или в тестовой копии.
Когда нужен разработчик
Штатных средств достаточно, если файл в формате 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-обмена с сайтом автоматический режим уже встроен в типовые конфигурации.
Почему загрузка большого файла идёт очень медленно?
В файловом режиме запись десятков тысяч элементов занимает часы. Ускорить можно разбиением файла на части, загрузкой в клиент-серверной базе, отключением полнотекстового поиска на время обмена и выполнением загрузки в нерабочее время.