Files
ave-cms/help/modules/commerceml.md
T
2026-07-30 11:56:32 +03:00

3.1 KiB
Raw Blame History

Обмен с 1С (CommerceML)

Модуль commerceml принимает стандартный HTTP-обмен 1С и потоково разбирает XML через XMLReader. Для работы нужны модули Товары и Планировщик. Это модуль торгового контура: он не публикуется в общем каталоге модулей для чистой системы.

Безопасный запуск

  1. Создайте профиль и выберите товарную рубрику.
  2. Сопоставьте внешний ID, артикул, цену и остаток с реальными полями рубрики.
  3. Оставьте Создавать неизвестные товары выключенным.
  4. Загрузите тестовый XML и проверьте журнал.
  5. После сверки разрешите создание; публикацию новых товаров включайте отдельно.

Адрес обмена: /exchange/1c/<код-профиля>. Для каждого профиля задаются свои логин и пароль. Пароль хранится в защищённом хранилище секретов и не выводится в панели. Имена загружаемых файлов нормализуются, разрешён только XML, разбор выполняется с LIBXML_NONET.

После checkauth сервер создаёт отдельную временную сессию обмена. init, загрузка частей файла и import принимаются только с выданной cookie ave_commerceml. Поэтому два последовательных или одновременных обмена не дописывают XML друг друга. Размер одной части ограничен 20 МБ, общий объём сессии — 200 МБ. Данные читаются и записываются небольшими блоками, а после попытки импорта временная сессия удаляется. Незавершённые сессии старше трёх дней удаляет задание планировщика commerceml.cleanup.

Сначала товар ищется по сохранённой связи внешнего ID, затем по полю артикула. Неизвестная позиция либо пропускается, либо создаётся в выбранной рубрике. Все запуски сохраняют количество обработанных, созданных, обновлённых и ошибочных позиций.

Фильтр commerceml.document.payload позволяет изменить payload перед сохранением документа. События commerceml.item.failed и commerceml.import.completed подходят для уведомлений и интеграционного лога.