Как настроить интеграцию 1С и CMS ABCP для выгрузки каталога товаров и прайс-листов

Программист 1С v8.3 (Обычные формы) Торговля и дистрибуция
← На главную

Концепция передачи каталога товаров в CMS ABCP

Рассмотрим специфику работы с API платформы ABCP при необходимости выгрузить номенклатуру из 1С на сайт. В некоторых CMS выгрузка справочника номенклатуры разделена на передачу структуры каталога с карточками товаров и загрузку цен с остатками. Однако в архитектуре ABCP каталог и прайс-лист представляют собой единую сущность.

Отдельного метода API для поштучного создания или обновления карточек товаров на стороне ABCP нет. Загрузка товаров, их наименований, брендов, артикулов, характеристик, цен и остатков выполняется единым массивом путем обновления прайс-листа (метод cp/distributor/pricelistUpdate). В данном случае собственный справочник номенклатуры компании передается как прайс-лист, в котором владельцем (дистрибьютором) выступает само предприятие.

Предварительная настройка панели управления ABCP

Перед тем как отправлять файл из 1С через API, разберем порядок подготовки профиля импорта на стороне интернет-магазина:

  1. Перейдем в панель администратора CMS ABCP в раздел настроек поставщика.
  2. Создадим профиль импорта для вашего дистрибьютора.
  3. Настроим сопоставление колонок файла (производитель/бренд, артикул, наименование, цена, остаток).

без предварительной настройки профиля импорта в панели ABCP сервер не сможет распарсить передаваемый из 1С файл прайс-листа.

Авторизация запросов к API ABCP

Проанализируем параметры, которые необходимо передавать при каждом обращении к API администратора ABCP:

  1. userlogin — логин администратора API.
  2. userpsw — пароль администратора в формате MD5-хэша.
  3. distributorId — идентификатор поставщика в системе ABCP.

Формирование и отправка запроса multipart/form-data

Разберем особенности передачи файла с помощью POST-запроса со спецификацией multipart/form-data.

При использовании платформ 1С v8.3 (начиная с версий 8.3.9 и 8.3.10) работа с HTTP-запросами существенно упрощена. Наличие объектов ЧтениеJSON, ЗаписьJSON, ПотокВПамяти и ЗаписьДанных позволяет собирать составные HTTP-запросы прямо в оперативной памяти без сохранения промежуточных файлов на диск.

В платформе 1С v8.2 и ранних версиях 8.3 встроенных средств для автоматического формирования multipart/form-data нет. Посмотрим на основные способы решения этой задачи:

  1. Сборка бинарного тела в 1С: Текстовые заголовки и разделители (boundary) записываются во временные текстовые файлы, после чего объединяются с файлом прайс-листа с помощью метода ОбъединитьФайлы(). Это исключает искажение бинарных данных при передаче.
  2. Использование консольной утилиты cURL: 1С сохраняет файл прайс-листа на диск и вызывает внешнюю утилиту cURL с помощью метода ЗапуститьПриложение(). cURL автоматически формирует корректный POST-запрос с ключом -F.
  3. Загрузка файла по FTP/HTTP: В панели управления ABCP настраивается автоматический забор файла прайс-листа по расписанию с вашего FTP- или HTTP-сервера. 1С выгружает файл с помощью стандартного объекта FTPСоединение, что позволяет обойтись без сложного ручного формирования HTTP-запросов.

Выясним структуру составного запроса при передаче файла:


// Пример заголовка Content-Type
Content-Type: multipart/form-data; boundary=---------------------------123456789

// Пример структуры блока файла в теле запроса
-----------------------------123456789
Content-Disposition: form-data; name="uploadFile"; filename="pricelist.xlsx"
Content-Type: application/octet-stream

[Бинарные данные файла]
-----------------------------123456789--

Готовые решения для интеграции

Если перед вами стоит задача реализовать полный цикл обмена (включая загрузку заказов, статусов и контрагентов), стоит рассмотреть готовые специализированные модули интеграции (например, решения от компании Ниракс) или внешние обработки, где механизмы формирования HTTP-запросов и обработки ответов API уже реализованы.

← На главную