Каталог решений - Вариант реализации REST API для 1С-Битрикс Управление сайтом

Вариант реализации REST API для 1С-Битрикс Управление сайтом

Вариант реализации REST API для 1С-Битрикс Управление сайтом

В наличии

В статье опишу вариант обмена 1С УТ 11.4 и 1С-Битрикс управление сайтом с иcпользованием компонентов Symfony, в качестве примера обмен данными по товарам.

Категория:

Описание

Вводные

1. В Битрикс заведен каталог товаров без привязки к 1С. В 1С УТ 11 аналогичный каталог.

2. Типовая обработка не позволяет состыковать номенклатуру, результат её работы дубли либо со стороны 1С либо со стороны БУС.

3. Реализация обмена со стороны БУС "черный ящик", в который даже продвинутые программисты по битрикс не горят желанием лезть.

4. Реализация обмена со стороны 1С вызывает ряд вопросов (по логичности и по реализации).

5. Установка доп модуля https://1c.1c-bitrix.ru/ecommerce/download.php проблему не решает, усложняет обновление конфигурации.

Все вышесказанное вынес из собственного опыта взаимодействия при реализации обменов различными способами.

 

Вариант решения

Реализовать

  • точку подключения
  • аутентификацию
  • роутер
  • возможность подключения к классам битрикс
  • проверки параметров и данных в запросах (тема отдельной статьи)

 

Настройка проекта

Есть опыт работы с symfony, взял его.

В ходе реализации получил ошибку "Case mismatch between loaded and declared class names: "CCatalogSKU" vs "CCatalogSku". В коде вызывается $catalogInfo = \CCatalogSKU::getInfoByProductIBlock($this->iblockId); хотя внутри class CCatalogSku extends CAllCatalogSku, что отражает не высокое качество кода БУС (как минимум отсутствие проверок).

Так же присутствуют ошибки по проверке доступности реквизитов (PSR-4).

Для обхода ошибок был собран symfony без errorhandler.

В папке /local БУС создал папку api_min, в ней создал проект (архив проекта будет в фйлах для скачивания)

 

Создал папку public, в ней index.php, это будет точкой входа в API

В админке БУС добавил правило обработки адреса, раздел "Рабочий стол — Настройки — Настройки продукта — Обработка адресов — Правила обработки"

  • Условие #^/api_min/#
  • Файл /local/api_min/public/index.php

Роутинг реализован через https://symfony.com/doc/current/create_framework/routing.html, пример для ping

Слеш в конце строки сделал для унификации, т.к. в некоторых настройках БУС автодобавление слеша.

 

has been added to your cart:
Оформление заказа