При построении взаимодействия между учетной системой 1С:Управление торговлей 10.3 и сторонним интернет-магазином, разработанным на кастомном стеке (например, Ruby on Rails и AngularJS), необходимо выбрать оптимальную архитектуру интеграции. Рассмотрим подробно основные подходы к решению этой задачи, технические особенности реализации HTTP-сервисов и рекомендации по организации обмена.
Проанализируем основные подходы к интеграции системы 1С с сайтом:
HTTP-сервис, который обрабатывает входящие запросы от интернет-магазина. Сайт выступает инициатором соединения, отправляя данные по товарам, остаткам или заказам.В платформе 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. Нагрузка на сеансовые лицензии: Если publicar 1С как HTTP-сервер и обращаться к ней при каждом действии пользователя сайта (например, проверять остаток при оформлении корзины), это приведет к активному расходу клиентских лицензий 1С и возможной блокировке сеансов пользователей компании.
2. Синхронные блокировки и таймауты: Прямая запись заказов через HTTP-сервис 1С выполняется синхронно. Если проведение документа 1С задержится из-за блокировок БД, сайт может получить ошибку по таймауту (HTTP 504). Использование асинхронной схемы (когда 1С сама забирает заказы по таймеру) гарантирует стабильную работу веб-ресурса.