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

Публикация № 1185983 28.01.20

Интеграция - WEB-интеграция

Битрикс 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

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

 
 Пример маршрута

 

В маршрутах можно использовать regex, что удобно при работе и через id и через xml_id

 
 Пример маршрута получения элемента

 

Организация точки входа

В файле index.php описываем приложение, подключаем контроллеры с данными.

 
 Содержимое index.php

1. Аутентификация по токену

1.1 Заголовок токена, его значения, инфоблоки для работы с товарами заданы в Helpers/ConfigAPI

 

Работа с товарами

 
 Содержимое \Controllers\References\ProductController

 

Основная логика описана в "ReferenceIblockController" и "ReferenceController"

 
 Содержимое ReferenceIblockController

 

 
  Содержимое ReferenceController

 

Для чтения списка товаров используется "Iblock\ElementTable", т.к. поддерживает limit/offset, для работы с элементами используется CIBlockElement, потому что в новом движке через ElementTable элемент не поменять.

Наследование использую для уменьшения количества кода, т.к. операции с элементами повторяются.

Для проверки параметров запроса и данных в теле запроса использую https://symfony.com/doc/current/validation.html, существенно удобнее чем вручную все проверять и писать сообщения. При ошибки проверки вызываю исключение BadRequestException в которое передаю массив ошибок.

 

Работа со справочником товары, реализация со стороны 1С

 
 Процедура загрузки списка

 

Гружу без пагинации, т.к. каталог небольшой, текущего limit 1000 хватает.

Для обновления элемента используется код

 
 Функция обновления xml_id

 

Итог

Реализация обмена через REST не сложна, гибка и структурирована, понятно на каком именно элементе произошла ошибка.

Сборка symfony нестандартная, если получится нормально настроить ErrorHandler, то будет чуть проще.

 

Благодарю за внимание.

Скачать файлы

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

.zip 1,02Mb
10
.zip 1,02Mb 10 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. FreeArcher 149 30.01.20 11:57 Сейчас в теме
Не соглашусь с первыми 2 пунктами.

Но решение интересное и познавательное, спасибо за статью.

Вопрос следующий: в БУС развивается свое REST API и планируется создать обмен с использованием его (по аналогии, как сейчас работает обмен с Битрикс24). Не сморили в сторону работы через REST API?
2. malikov_pro 1223 30.01.20 14:19 Сейчас в теме
(1) "БУС развивается свое REST API" - Отсутсвие документации и включить не получилось, компонент размещенный в админке не сработал.

Общая проблема битрикса это работа как "черный ящик", пример: грузим через модуль от битрикс реализации в сторону БУС, прилетает первый, после блокировка, типа "нельзя редактировать заказ после реализации". Даже при работе с API напрямую мучаюсь со структурами данных (вытаскивал информацию о приложенных файлах), а БУС REST API это еще один слой абстракции со своими косяками.
Допом подход к архитектуре программистов дорабатывающих типовое решение, запихать остатки в пути в множественнное строковое свойство и отключить его, и хрен пойми как проверять корректность данных со стороны админки пользователем. Про качество кода и организацию сторонних библиотек еще хуже.
Если кратко - накипело, хочу по возможности перевести на другую CMS или фреймворк.

"Но решение интересное и познавательное" - есть желание развить, с упором на редактирование данных на стороне 1С, а CMS чисто обертка.
3. Bublik2011 9 03.10.22 16:56 Сейчас в теме
Ок. Не соглашусь с третьим пунктом. Элементарно кастомизируется копированием компоненты. Откровенно говоря, после копирования - первым этапом надо "нарисовать XML", а потом уже немного "своего" добавить кода в "доп модуль https://1c.1c-bitrix.ru/ecommerce" для формирования "нарисованной XML"

На дворе уже конец 2022 года. C api-rest вендора не ахти как хорошо. Мда-а.аа...
Идеально в своих задачах применять свой, самописный API, пэтому, malikov_pro , Ваше решение - блестящее и идеальная , масштабируемая абстракция !!

P.S. Кстати, в приаттаченном файле не хватает метода getItemListByIds

	/**
	 * @param array $idList
	 * @param array $order
	 *
	 * @return array
	 */
	public static function getItemListByIds(array $idList, array $order = null )
	{
		if (empty($idList)) {
			return $idList;
		}
		$ItemListByIds=[];

		$iterator = static::getClass()::getList([
			'select' => static::getItemFields(),
			'filter' => ['=ID' => $idList]
		]);

		while ($row = $iterator->fetch()) {
			$ItemListByIds[]= $row;
		}

		return $ItemListByIds;
	}
Показать
Оставьте свое сообщение

См. также

Просмотр архива видео Trassir из 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

В Trassir есть SDK, которое позволяет получать и просматривать архив видео. Рассмотрим, как это можно сделать.

1 стартмани

30.03.2023    158    glek    0    

2

Случай "Массив, Структура и Таблица в JS плюс верстка техдемо"

WEB-интеграция Языки и среды Платформа 1С v8.3 Абонемент ($m)

Добавление в JS обозревателя 1Сных коллекций массив, структура и таблица значений. Строкование в json формат для обмена с 1Сным сервером.Убедимся, что в обозревателе 1Сные коллекции действительно работают через чтение, изменение и строкование объекта обратно в json строку.

10 стартмани

01.03.2023    377    Steelvan    0    

1

Интеграция (Ich will version)

Идеи и тренды в разработке WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Поговорим про интеграцию с точки зрения архитектора.

1 стартмани

16.09.2022    3453    botokash    66    

53

Тестирование API 1C Postman

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Тестирование вашего API, который вы сделали на 1С.

1 стартмани

18.08.2021    7437    kolya_tlt    7    

44

Создаем интернет-магазин на бесплатной CMS PrestaShop с открытым кодом за 60 минут

Розничная торговля WEB-интеграция Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Абонемент ($m)

Описано пошаговое создание полноценного действующего интернет-магазина. Бесплатно. Без программирования. Без навыков администрирования. Для "чайников".

1 стартмани

31.05.2021    2917    andryandry    0    

8

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Перенос всех логов в Elasticsearch

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

В качестве стандартного места хранения логов в "1С:Предприятие" используется Журнал регистрации. Также часто для хранения служебных событий создают специальные Регистры сведений. Но у этих решений есть свои недостатки. В статье описан подход для хранения любых логов в самой популярной свободной поисковой системе Elasticsearch.

1 стартмани

15.07.2020    7323    kuleshov.x    5    

32

1С+Firebase. Оперативное отображение информации

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Появилась задача по отображению информации из базы в "режиме реального времени" с возможностью масштабирования количества подключенных клиентов (неплохо бы уметь подключаться с мобильных устройств), плавающей нагрузкой и минимальными затратами на разработку без изобретения сложных велосипедов. В уме довольно быстро всплыло "Firebase". Далее небольшой опыт реализации взаимодействия с Firestore для раскрашивания объектов карты.

1 стартмани

06.04.2020    4403    oyti    2    

16

Синтез речи из текста с помощью Яндекс SpeechKit

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В статье описан процесс подключения Яндекс SpeechKit API и программная реализация синтеза речи из текста с помощью этого API. Тестировалось на релизе платформы 8.3.16.1224. Может использоваться в любой конфигурации. Синтез речи может использоваться для самых разных целей, в моём случае потребовалось перевести лекции из текстовых файлов в звук

1 стартмани

05.04.2020    14954    m0zg153    2    

16

На хайпе: интегрируем 1С с сервисом видеоконференций Zoom

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

По причине коронавируса всем резко понадобились видеоконференции, а Зум (zoom.us) - одна из самых популярных платформ для этого. Когда пользователей и трансляций в зуме много, возникает необходимость в автоматизации. Рассматривается интеграция 1С с Zoom через API - от регистрации в сервисе до создания конференции из 1С.

1 стартмани

04.04.2020    18543    muzipov    5    

16

Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4

WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Управление торговлей 11 Абонемент ($m)

Многие уже знают, что в релизе платформы 8.3.14.1565, браузер Internet Explorer был заменен на Web-Kit, это на самом деле большой шаг вперед, но я уверен, многим, как и мне, пока не совсем понятно, что к чему. Возник опыт использования web-kit в 1С, вызова JS из 1С и вызова 1С из JS. Давайте вместе попробуем понять, чем одно отличается от другого, и заодно сделаем, что-нибудь полезное. Да и наверняка многим придется переписывать свои подобные поделки после обновления на новую платформу, так что надеюсь мой опыт окажется полезным.

2 стартмани

08.12.2019    11124    Бэнни    25    

107

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

"Живые" картинки со Snap.SVG

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    16456    blackhole321    7    

93

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    58122    osivv    39    

60

АИТП. Автоматизируем управление ресурсами на примере Яндекс.Почта для домена

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В статье демонстрируется использование программного пакета АИТП для автоматизации предоставления ИТ-ресурсов сотрудникам на примере управления почтовыми ящиками Яндекс.Почта для домена.

1 стартмани

26.08.2019    7437    blackhole321    4    

15

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    16733    Sedaiko    28    

119

Обмен с интернет-магазином на платформе DOCPART

WEB-интеграция Оптовая торговля Розничная торговля Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В настоящее время существует множество платформ для создания интернет-магазинов. Удобные и не очень, платные или бесплатные. У каждого решения найдутся свои сторонники, но наличие оперативного обмена с учётной системой важно для любой платформы. В этой публикации мы рассмотрим одну из популярных платформ для создания интернет-магазина по продаже автозапчастей Docpart и организацию обмена данными с ней.

10 стартмани

04.07.2019    7776    Johny_v    25    

7

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Интеграция 1С и SharePoint

WEB-интеграция Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Заказчики поставили задачу автоматизации согласования заявок на оплату в программе 1С:Бухгалтерия предприятия 3.0. Согласно ТЗ, данные должны подтягиваться из действующей электронной системы документаоборота на MS SharePoint (в дальнейшем СЭД MS SP).

1 стартмани

22.03.2019    8372    -I-    5    

12

Реализация простого http-сервиса "Просмотр карточки номенклатуры(товара) в браузере"

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Практический пример реализации простого http-сервиса средствами 1С Предприятие 8.3. Обеспечивает просмотр списка товаров и просмотр данных товара в браузере.

1 стартмани

07.12.2018    27709    dmitry1975    37    

176

Подключение к REST API через OAuth протокол из 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В статье описаны варианты подключения И решение граблей по подключению к REST API через протокол OAuth 2.0 из 1С. При разработке такого подключения для получения данных и загрузки в базу 1С я столкнулся с некоторыми проблемами, решил их и хочу поделиться этими наработками.

1 стартмани

06.09.2018    22153    chemezov    14    

29

HTTP Сервисы: Путь к своему сервису. Часть 1

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    188283    dsdred    45    

510

А чё это вы здесь делаете, а?

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

1 стартмани

21.01.2018    25828    infosoft-v    42    

152

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Пример заполнения/создания файла XML из XSD схемы, используя XDTO

WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    69889    sandybaev    28    

178

Простой бесплатный DashBoard с помощью http сервиса

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Как создать свой DashBoard без дополнительных затрат и сложных технических доработок.

1 стартмани

25.11.2017    60402    dewersia    34    

292

Получение данных из Wialon Hosting через HTTP запросы (Remote API)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Абонемент ($m)

Статья будет полезна для быстрого старта работы с Wialon Hosting. Здесь я опишу основные принципы работы с системой Wialon через Remote API.

1 стартмани

12.09.2017    33735    maxopik2    30    

36

Google OAuth и мобильное приложение

Мобильная разработка Внешние источники данных WEB-интеграция Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Абонемент ($m)

Об аутентификации для работы с сервисами google из мобильного или настольного приложения

1 стартмани

29.08.2017    12448    stveans@gmail.com    3    

11

Заполнение ОГРН с использованием Инструментов разработчика

Обработка справочников WEB-интеграция Платформа 1С v8.3 Россия Абонемент ($m)

Вот и до нашей организации добралось требование указывать в отчетности для ГлавКонтроля ОГРН контрагента. Как всегда, задача возникла внезапно, и решить ее нужно было "вчера".

1 стартмани

14.04.2017    6984    vsuh    0    

9

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Передача большого количества объектов через Web-сервисы

WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Один из вариантов передачи большого количества объектов при использовании Web-сервисов.

1 стартмани

31.01.2017    17145    SinglCOOLer    14    

47

Использование SoapUi для работы с веб-сервисами. Часть1

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Как работать с SoapUi для тестирования веб-сервисов .

1 стартмани

30.09.2016    146888    kiv1c    32    

150

Передача больших пакетов через веб-сервисы

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.

06.12.2015    74739    Infostart    19    

172

Демо связи веб сервисов 1С и php

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

1 стартмани

19.07.2013    33379    Трактор    20    

28

Доступ к SOAP веб-сервисам 1С из JavaScript и Html

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.

1 стартмани

16.07.2013    34575    Elisy    53    

35

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Примеры пользования web сервисов 1С из браузера

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Даны примеры реализации доступа к web сервисам 1С из браузера. Примеры web сервисов, а также javascript'ы для доступа к этим сервисам. AJAX доступ к 1С.

1 стартмани

29.06.2008    159663    Трактор    233    

326