Загрузка товарного каталога в 1С:Предприятие через XML-файлы — стандартная задача для автоматизации бизнеса, но на практике она часто вызывает сложности. От формата файла до настроек обмена — каждый этап требует внимания к деталям. Эта инструкция поможет разобраться, как правильно организовать импорт товаров из XML в различные конфигурации 1С: Управление Торговлей (УТ), УНФ, ERP и Комплексная Автоматизация (КА).

Мы рассмотрим не только базовые настройки, но и нюансы работы с разными версиями 1С, типичные ошибки при загрузке (например, дублирование номенклатуры или несовпадение реквизитов), а также способы автоматизации процесса через COM-соединение и REST API. Если вы ранее сталкивались с проблемами при импорте или только начинаете осваивать обмен данными — здесь найдёте ответы на ключевые вопросы.

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

1. Подготовка XML-файла: структура и обязательные теги

Перед загрузкой товаров в 1С необходимо убедиться, что XML-файл соответствует требованиям программы. Стандартный формат обмена для 1С описан в документации к CommerceML (используется в УТ 11, ERP 2 и других конфигурациях). Однако поставщики часто присылают файлы в произвольном формате, что требует предварительной обработки.

Минимальный набор тегов для успешного импорта:

  • 📌 <Каталог> — корневой элемент, содержащий всю информацию о товарах.
  • 📌 <Товары> — список товарных позиций.
  • 📌 <Товар> — описание одного товара (обязательные атрибуты: Ид, Наименование).
  • 📌 <Цены> — блок с ценовыми предложениями (если требуется загрузка цен).
  • 📌 <Остатки> — данные по остаткам на складах (опционально).

Пример минимальной структуры:

<?xml version="1.0" encoding="windows-1251"?>

<Каталог>

<Товары>

<Товар Ид="00001" Наименование="Ноутбук Acer Aspire 5">

<Артикул>AC-12345</Артикул>

<Цена>45000</Цена>

</Товар>

</Товары>

</Каталог>

Если файл содержит дополнительные свойства (например, Вес, Объем, Производитель), их нужно сопоставить с реквизитами номенклатуры в 1С. Для этого используется правило обмена, которое настраивается в конфигураторе.

📊 Какой формат XML вы чаще используете для обмена?
CommerceML
Произвольный от поставщика
YML (Яндекс.Маркет)
Свой формат

2. Настройка обмена данными в 1С

Для загрузки товаров из XML в 1С необходимо настроить узел обмена. Этот процесс отличается в зависимости от конфигурации, но общая схема следующая:

  1. Создание узла обмена:

    Перейдите в Администрирование → Обмен данными → Узлы обмена и добавьте новый узел. Укажите тип обмена — XML или CommerceML.

  2. Настройка правил обмена:

    В конфигураторе (Файл → Открыть конфигурацию) найдите объект ПланОбмена и настройте соответствие полей между XML и 1С.

  3. Указание пути к файлу:

    В настройках узла обмена specify путь к папке, где хранятся XML-файлы (например, \\Server\Exchange\import\).

В 1С:Управление Торговлей 11 путь к настройкам обмена может отличаться: НСИ и администрирование → Обмен данными → Настройка обмена с сайтом.

Создан узел обмена с правильным типом (XML/CommerceML)|

Проверена структура XML-файла на обязательные теги|

Настроены правила сопоставления полей в конфигураторе|

Указан корректный путь к папке с файлами обмена|

Сделан бэкап базы перед первым импортом-->

Если вы используете 1С:ERP, обратите внимание на настройку регламентных заданий для автоматического импорта. Это позволит загружать товары по расписанию (например, ежедневно в 3:00).

⚠️ Внимание: В некоторых версиях 1С (например, УТ 10.3) для обмена через XML требуется установка дополнительного расширения "Обмен данными в формате XML". Проверьте его наличие в Администрирование → Печатные формы, отчеты и обработки.

3. Загрузка товаров: пошаговая инструкция

Когда узел обмена настроен, можно приступать к загрузке. Рассмотрим процесс на примере 1С:Управление Торговлей 11.4:

  1. Поместите файл в папку обмена:

    Скопируйте XML-файл (например, import_goods.xml) в папку, указанную в настройках узла.

  2. Запустите обработку обмена:

    Перейдите в НСИ и администрирование → Обмен данными → Обмен с узлом [Название вашего узла] и нажмите Выполнить обмен.

  3. Проверьте журнал обмена:

    После завершения операции откройте Журнал обмена данными (раздел Администрирование) и убедитесь, что нет ошибок типа "Не найден элемент справочника" или "Ошибка чтения XML".

Если товары не загрузились, проверьте:

  • 🔍 Кодировку файла: 1С ожидает windows-1251 или UTF-8 (настраивается в правилах обмена).
  • 🔍 Права доступа: у пользователя, выполняющего обмен, должны быть права на изменение справочника Номенклатура.
  • 🔍 Дублирование Ид: если в файле есть товары с одинаковыми Ид, 1С может пропустить их или создать дубли.

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

💡

Если 1С "не видит" файл в папке обмена, проверьте права доступа к сетевой папке. Иногда помогает перезапуск службы 1C:Enterprise 8.3 Server Agent.

4. Обработка ошибок при импорте

Даже при корректной настройке обмена могут возникать ошибки. Рассмотрим самые распространённые и способы их решения:

Ошибка Возможная причина Решение
Ошибка чтения XML: неверный формат Файл повреждён или использует нестандартную кодировку. Откройте файл в Notepad++ и сохраните в UTF-8 без BOM или windows-1251.
Не найден элемент справочника "Номенклатура" В файле указан Ид товара, которого нет в 1С. Настройте правило обмена на создание новых элементов или проверьте соответствие Ид.
Ошибка при записи объекта: поле "Артикул" не заполнено В 1С установлена настройка обязательного заполнения артикула. Добавьте тег <Артикул> в XML или снимите флаг обязательности в справочнике.
Превышен лимит времени выполнения Файл слишком большой (более 10 000 товаров). Разбейте файл на части или увеличьте лимит в настройках сервера 1С.

Если ошибка не типичная, изучите журнал регистрации 1С (Администрирование → Поддержка и обслуживание → Журнал регистрации). Там можно найти расширенное описание проблемы, включая номер строки в XML, где произошёл сбой.

⚠️ Внимание: При импорте большого количества товаров (более 5000 позиций) рекомендуется использовать фоновую обработку. Это предотвратит зависание клиентского приложения. Включается в настройках узла обмена.

5. Автоматизация загрузки через COM и REST API

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

Способ 1: COM-соединение (для Windows)

Используется для интеграции 1С с другими программами (например, Excel или 1C:EDT). Пример кода на VBScript для загрузки файла:

Set v83 = CreateObject("V83.ComConnector")

Set connect = v83.Connect("File=path_to_your_base;Usr=Администратор;Pwd=password")

Set exchange = connect.NewObject("ОбменДанными.МенеджерОбмена")

exchange.ЗагрузитьДанныеИзФайла("C:\exchange\import.xml")

Способ 2: REST API (для 1С:Предприятие 8.3.20+)

Подходит для облачных интеграций. Предварительно нужно опубликовать базу как веб-сервис и настроить OAuth 2.0. Пример запроса:

POST /hs/exchange/import HTTP/1.1

Host: your-1c-server.ru

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="file"; filename="import.xml"

<?xml version="1.0"?>

<Каталог>...</Каталог>

------WebKitFormBoundary7MA4YWxkTrZu0gW--

Для автоматизации можно использовать Python с библиотекой requests или PowerShell-скрипты. Главное — обеспечить безопасность передачи данных (используйте HTTPS и токены авторизации).

Пример Python-скрипта для автоматической загрузки

import requests

url = "https://your-1c-server.ru/hs/exchange/import"

files = {"file": open("import.xml", "rb")}

headers = {"Authorization": "Bearer YOUR_TOKEN"}

response = requests.post(url, files=files, headers=headers)

print(response.json())

6. Типичные проблемы и их решения

Даже после успешной настройки обмена пользователи сталкиваются с нюансами, которые не всегда очевидны. Вот наиболее частые из них:

  • 🔄 Дублирование номенклатуры:

    Если в XML и 1С есть товары с одинаковыми Ид, но разными названиями, 1С может создать дубли. Решение: настройте правило обмена на обновление существующих элементов.

  • 💰 Некорректные цены:

    Цены в файле могут указываться с НДС или без него. Проверьте настройку Ценовая политика в 1С (НСИ → Ценообразование).

  • 📦 Пропущенные свойства товаров:

    Если в XML есть дополнительные атрибуты (например, Цвет, Размер), но они не загружаются, проверьте соответствие с Дополнительными реквизитами в справочнике Номенклатура.

  • Долгая обработка файла:

    При импорте более 20 000 товаров 1С может "подвисать". Решение: разбейте файл на части по 5 000–10 000 строк.

Если после импорта товары отображаются в 1С, но не видны в отчётах (например, в Ведомости по товарам), проверьте:

  • 📌 Настройку Видимость для отчётов в карточке номенклатуры.
  • 📌 Привязку к Типу номенклатуры (например, Товар, Услуга).
  • 📌 Наличие остатков на складах (если включена настройка "Показывать только товары с остатками").
💡

Перед массовым импортом всегда тестируйте обмен на копии базы. Это позволит избежать ошибок в рабочей системе и потери данных.

7. Пример готового XML-файла для тестирования

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

  • 📋 Основные реквизиты товара (Ид, Наименование, Артикул).
  • 💵 Ценовые предложения (с указанием типа цены).
  • 📦 Остатки на складе.
  • 🔖 Дополнительные свойства (Вес, Производитель).
<?xml version="1.0" encoding="windows-1251"?>

<КоммерческаяИнформация xmlns="urn:1C.ru:commerceml_2" xmlns:xs="http://www.w3.org/2001/XMLSchema" ВерсияСхемы="2.08" ДатаФормирования="2026-01-15T10:00:00">

<Каталог СодержитТолькоИзменения="false">

<Товары>

<Товар Ид="00001" Наименование="Смартфон Samsung Galaxy S23" ВидНоменклатуры="Товар">

<Артикул>SM-S911</Артикул>

<БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE"></БазоваяЕдиница>

<Производитель>Samsung</Производитель>

<Вес>0.168</Вес>

<Цены>

<Цена ТипЦены="Розничная" ЦенаЗаЕдиницу="79990" Валюта="RUB"></Цена>

</Цены>

</Товар>

<Товар Ид="00002" Наименование="Наушники Sony WH-1000XM5" ВидНоменклатуры="Товар">

<Артикул>WH-1000XM5/B</Артикул>

<БазоваяЕдиница Код="796" НаименованиеПолное="Штука"/>

<Производитель>Sony</Производитель>

<Цены>

<Цена ТипЦены="Розничная" ЦенаЗаЕдиницу="24990" Валюта="RUB"></Цена>

</Цены>

</Товар>

</Товары>

</Каталог>

<Остатки>

<Остаток ИдТовара="00001" Количество="15" Склад="Основной склад"/>

<Остаток ИдТовара="00002" Количество="8" Склад="Основной склад"/>

</Остатки>

</КоммерческаяИнформация>

Скопируйте этот шаблон в файл test_import.xml и попробуйте загрузить его в 1С. Если товары отобразятся в справочнике Номенклатура, настройка обмена работает корректно.

8. Альтернативные способы импорта товаров

Если загрузка через XML по какой-то причине не подходит, рассмотрите альтернативные методы:

  • 📑 Импорт из Excel:

    В 1С есть встроенная обработка "Универсальный обмен данными в формате Excel". Подходит для небольших каталогов (до 1000 товаров).

  • 🔌 Обмен через DBF:

    Старый, но надёжный способ для интеграции с 1С 7.7 или устаревшими системами.

  • 🌐 Облачные сервисы:

    Платформы вроде 1C:Fresh или 1C:EDT поддерживают импорт через JSON/REST API.

  • 🤖 Роботы RPA:

    Инструменты типа UiPath или ElectroNeek могут эмулировать ручной ввод данных в 1С.

Каждый из этих методов имеет плюсы и минусы. Например, импорт из Excel проще настроить, но он не подходит для больших объёмов данных. А обмен через DBF требует знания структуры таблиц 1С.

⚠️ Внимание: При использовании сторонних обработок для импорта (например, скачанных с Инфостарт) всегда проверяйте их на тестовой базе. Некоторые скрипты могут содержать ошибки или конфликтовать с последними обновлениями 1С.

FAQ: Частые вопросы по импорту товаров в 1С из XML

Как исправить ошибку "Недопустимый символ в XML"?

Ошибка возникает из-за использования неверной кодировки или специальных символов (например, &, <). Решения:

  1. Сохраните файл в кодировке UTF-8 без BOM.
  2. Замените специальные символы на их XML-сущности (например, & вместо &).
  3. Проверьте файл через валидатор (например, xmlvalidation.com).
Можно ли загрузить изображения товаров из XML?

Да, но для этого в XML должны быть указаны ссылки на файлы изображений (тег <Картинка>), а в настройках обмена нужно включить обработку вложений. Пример:

<Товар Ид="00001">

<Картинка>https://example.com/images/phone.jpg</Картинка>

</Товар>

В 1С изображения будут сохранены в справочнике Номенклатура на закладке Картинки.

Почему после импорта товары не отображаются в отчётах?

Причины могут быть следующими:

  • Товары не привязаны к Типу номенклатуры (например, отмечены как Услуга вместо Товар).
  • В настройках отчёта включен фильтр по Виду номенклатуры или Группе товаров.
  • Нет остатков на складах (если в отчёте установлен флаг "Только с остатками").

Проверьте настройки отчёта в разделе Отчёты → Ведомость по товарам.

Как автоматизировать ежедневный импорт XML в 1С?

Для автоматизации подойдут:

  1. Регламентные задания (в 1С:ERP или УТ 11): настройте расписание в Администрирование → Регламентные задания.
  2. Скрипты на Python/PowerShell: используйте COM-соединение или REST API для запуска импорта по расписанию (через Планировщик заданий Windows).
  3. Сторонние сервисы: например, 1C:EDT или Интеграционная платформа от 1С.

Пример команды для Планировщика заданий:

schtasks /create /tn "1C XML Import" /tr "powershell -file C:\scripts\import_1c.ps1" /sc daily /st 03:00
Где найти готовые обработки для импорта XML в 1С?

Готовые решения можно скачать на следующих ресурсах:

Перед использованием проверьте обработку на тестовой базе и адаптируйте под свою конфигурацию.