Как организовать обмен данными между 1С 8.3 УТ 10.3 и интернет-магазином на кастомном стеке (Ruby on Rails / AngularJS)?

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

При построении взаимодействия между учетной системой 1С:Управление торговлей 10.3 и сторонним интернет-магазином, разработанным на кастомном стеке (например, Ruby on Rails и AngularJS), необходимо выбрать оптимальную архитектуру интеграции. Рассмотрим подробно основные подходы к решению этой задачи, технические особенности реализации HTTP-сервисов и рекомендации по организации обмена.

Варианты архитектуры взаимодействия

Проанализируем основные подходы к интеграции системы 1С с сайтом:

  1. Типовой обмен в формате CommerceML (CML 2.0). В 1С:УТ 10.3 заложен стандартный механизм выгрузки каталога товаров и загрузки заказов. Разработчику веб-сайта в этом случае необходимо реализовать скрипт, умеющий разбирать XML-файлы стандарта CommerceML и отвечать сформированными файлами заказов.
  2. 1С в роли HTTP-сервера (REST API). В конфигурации 1С создается объект HTTP-сервис, который обрабатывает входящие запросы от интернет-магазина. Сайт выступает инициатором соединения, отправляя данные по товарам, остаткам или заказам.
  3. 1С в роли HTTP-клиента (Рекомендуемый вариант). Инициатором обмена выступает база 1С. По регламентному заданию 1С опрашивает API интернет-магазина, передает обновленную номенклатуру, цены и остатки, а также забирает вновь созданные заказы.

Реализация обмена через REST API и JSON

В платформе 1С 8.3.6 реализована встроенная поддержка формата JSON через объекты ЧтениеJSON, ЗаписатьJSON, ПрочитатьJSON и ЗаписатьJSON. Это существенно упрощает обмен с веб-приложениями на Ruby on Rails, где JSON является базовым стандартом взаимодействия.

Рассмотрим пример отправки данных из 1С на эндпоинт сайта с использованием объекта HTTPСоединение:


// Создание и подготовка JSON-структуры
ЗаписьJSON = Новый ЗаписатьJSON;
ЗаписьJSON.УстановитьСтроку();

ДанныеТовара = Новый Структура;
ДанныеТовара.Вставить("sku", ТоварАртикул);
ДанныеТовара.Вставить("price", ТоварЦена);
ДанныеТовара.Вставить("stock", ТоварОстаток);

ЗаписатьJSON(ЗаписьJSON, ДанныеТовара);
СтрокаJSON = ЗаписьJSON.Закрыть();

// Отправка POST-запроса на сайт
Соединение = Новый HTTPСоединение("example-shop.com", 443, , , , Истина);
Запрос = Новый HTTPЗапрос("/api/v1/products/update");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
    // Изменения успешно приняты сайтом
КонецЕсли;

Оптимизация передаваемых данных через План обмена

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

  1. В конфигураторе 1С добавляем объект ПланОбмена (например, ОбменСИнтернетМагазином).
  2. Включаем нужные справочники (Номенклатура, ЦеныНоменклатуры) и документы в состав плана обмена.
  3. Настраиваем подписки на события: при изменении карточки товара, цены или остатков 1С автоматически регистрирует изменения для узла сайта.
  4. При выполнении фонового задания считываем зарегистрированные объекты из плана обмена, отправляем их на сайт и после успешного ответа сервера снимаем регистрацию выгруженных объектов методом УдалитьРегистрациюИзменений().

Технические нюансы и безопасность

Выясним основные риски и ограничения, о которых нужно знать при разработке обмена:

1. Нагрузка на сеансовые лицензии: Если publicar 1С как HTTP-сервер и обращаться к ней при каждом действии пользователя сайта (например, проверять остаток при оформлении корзины), это приведет к активному расходу клиентских лицензий 1С и возможной блокировке сеансов пользователей компании.

2. Синхронные блокировки и таймауты: Прямая запись заказов через HTTP-сервис 1С выполняется синхронно. Если проведение документа 1С задержится из-за блокировок БД, сайт может получить ошибку по таймауту (HTTP 504). Использование асинхронной схемы (когда 1С сама забирает заказы по таймеру) гарантирует стабильную работу веб-ресурса.

← На главную