Точка маршрутизации: API-шлюз на платформе 1С

02.02.26

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

Добрый день! Хочу поделиться своей разработкой — библиотекой «Точка маршрутизации», предназначенной для маршрутизации входящих HTTP-запросов к внешним API-сервисам с последующей обработкой и адаптацией ответов под потребности клиентов. Библиотека позволяет создавать endpoint’ы (точки подключения) для различных клиентов, принимать от них запросы, перенаправлять эти запросы во внешние API и возвращать ответы в формате, удобном и ожидаемом каждым клиентом.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Точка маршрутизации: API-шлюз на платформе 1С:
.zip 13,34Mb ver:1.0.1.1
13 Скачать бесплатно

Какую проблему решаем

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

 

 

Самый простой и очевидный подход — настроить интеграцию с внешним API непосредственно на стороне каждого клиента. Однако на практике при таком подходе можно столкнуться со следующими проблемами:

  • Сложность поддержки при изменениях API. Внешние сервисы со временем меняются: может измениться URL, набор endpoint’ов, порты, форматы ответов и другие параметры. В этом случае интеграцию приходится обновлять в каждом клиенте отдельно.
  • Подключение новых клиентов через копирование. При появлении нового клиента интеграцию, как правило, настраивают заново — часто путём копирования уже существующего решения от другого клиента.
  • Адаптация ответов API на стороне клиента. Внешний сервис может возвращать большой объём данных, значительная часть которых конкретному клиенту не нужна. В результате каждый клиент вынужден самостоятельно разбирать ответ API, извлекать нужные данные и приводить их к удобной для себя структуре.

Библиотека «Точка маршрутизации» позволяет аккуратно и централизованно решить все перечисленные выше проблемы.

  • Вся интеграция с внешним API сосредоточена в одном месте. Логика взаимодействия с внешним сервисом размещается на стороне точки маршрутизации. Благодаря этому при изменениях в API (смена URL, endpoint’ов, форматов ответов и т.д.) достаточно внести правки только в одном месте, без необходимости дорабатывать каждого клиента.
  • Простое подключение новых клиентов. Для подключения нового клиента достаточно настроить обращение к нужному ресурсу точки маршрутизации. Поскольку вся интеграционная логика уже реализована на её стороне, клиенту не требуется выполнять сложную настройку или разбираться в деталях работы внешнего API.
  • Подготовка ответа в формате, удобном для клиента. Точка маршрутизации позволяет заранее обработать ответ внешнего сервиса: привести его к нужному формату и исключить лишние данные. В результате клиент получает только ту информацию, которая ему действительно нужна, и сразу в удобном для работы виде.

 

 

Пример использования

Задача

Предположим, нам нужна интеграция с вымышленным сервисом http://api.docscan.org/, предоставляющий REST API для анализа PDF-документов через LLM. Методы API:

  1. POST /auth — получение токена (API-ключ обязателен в заголовке).
  2. POST /loadfile — загрузка PDF-файла для анализа, возвращает idFile.
  3. GET /result/{idFile} — получение JSON-результата анализа документа.
  4. GET /deleteFile/{idFile} — удаление загруженного файла.

Все методы, кроме auth, требуют Bearer-токен, полученный через auth.

С помощью этого API требуется реализовать две раздельные операции:

  1. Получение информации о документе: Сумма, Вид документа, Номер штрихкода.
  2. Получение Информации о контрагенте: ИНН, КПП, Наименование

 

Шаг 1. Модуль API

Создадим внешнюю обработку, в модуле которой реализуем программный интерфейс по вызову методов REST-API http://api.docscan.org/. Созданная внешняя обработка - это модуль API.

 
 Модуль API

 

Шаг 2. Прикладная операция получения информации документа

Создадим внешнюю обработку модуля прикладной операции получения информации документа. Модуль обработки содержит обработчик POST-запроса, который принимает PDF, отправляет его на http://api.docscan.org и возвращает JSON с суммой документа, видом документа и штрихкодом. При этом взаимодействие с API сервиса выполняется через модуль API, созданном на шаге 1.

 
 Модуль прикладной операции: информация документа

 

Шаг 3. Прикладная операция: информация о контрагенте

Вторая операция извлекает из PDF данные контрагента: ИНН, КПП и Наименование. Для этого также создаем внешнюю обработку модуля прикладной операции и реализуем обработчик POST-запроса:

 
 Модуль прикладной операции: информация контрагента

 

Шаг 4. Добавление информации о сервисе.

Загружаем созданные модули API и прикладных операций, созданных на шагах 1 - 3, в справочник внешних обработок (например, в справочник Дополнительные отчеты и обработки).

 

 

Теперь можно создать описание сервиса - для этого переходим в справочник (тм) Внешние сервисы библиотеки и создаем новый элемент. Для примера заполним так:

 

 

 

Здесь:

  • Идентификатор сервиса — уникальный идентификатор, по которому определяется, к какому API нужно отправить запрос. Указывается в параметре serviceId URL входящего запроса.
  • Модуль API — внешняя обработка, созданная на шаге 1, которая содержит все вызовы методов API внешнего сервиса.
  • Прикладные операции — перечень операций, доступных для вызова:
    • Идентификатор операции — строковый идентификатор, по которому определяется выполняемая операция. Указывается в параметре operationId URL запроса клиента.
    • Модуль операции — внешняя обработка прикладной операции (созданная на шагах 2–3), в которой реализуется:
      • обработка входящего запроса от клиента;
      • взаимодействие с API через модуль API;
      • подготовка и формирование итогового ответа для клиента.

Что получилось

В результате стали доступны два ресурса:

  1. POST docscan/info-doc - анализирует содержимое переданного pdf и возвращает результат в формате
     
    {
        "СуммаДокумента": 15200.50,
        "ВидДокумента": "Счет-фактура",
        "Штрихкод": "4601234567890"
    }
  2. POST docscan/customer-info - возвращает данные контрагента из переданного pdf в формате
     
    {
        "ИНН": "7701234567",
        "КПП": "770101001",
        "Наименование": "ООО Выдуманный Контрагент"
    }

Пример полного пути к ресурсу:

    http://<ip-адрес>/<имя публикации>/hs/api-gateway/docscan/info-doc

 

Альтернативный вариант использования

Библиотеку «Точка маршрутизации» удобно использовать как простой способ развернуть точку подключения вашей информационной системы 1С для работы с другими клиентами — будь то сайты, другие базы 1С или сторонние системы.

 

 

Когда это может пригодиться:

  • Отправка данных на сайт по запросу. Достаточно создать прикладную операцию с обработкой GET-запроса, описать алгоритм формирования данных, и клиент получит ответ в нужном формате.
  • Обработка входящих web-hook’ов. Можно быстро подключить и описать логику обработки входящих уведомлений от других систем. При этом нет необходимости создавать отдельный HTTP-сервис — вся логика находится во внешних обработках и её легко менять в любой момент.
  • Интеграция с frontend. Простое решение для добавления HTTP-endpoint’ов, через которые frontend сможет получать или отправлять данные.
  • Альтернатива oData. Библиотека позволяет предоставить REST-интерфейс для обмена данными с другими системами, без необходимости заморачиваться с oData.

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

 

Резюме

Плюсы использования библиотеки:

  • Быстрое создание endpoint’ов. После внедрения библиотеки в информационную базу 1С достаточно один раз опубликовать HTTP-сервис api-gateway, и новые точки подключения будут готовы к работе без обновления конфигурации.
  • Гибкость и простота изменений. Логика обработки входящих запросов полностью находится во внешних обработках, поэтому её можно менять и расширять в любой момент, без вмешательства в конфигурацию.

Минусы:

  • Использование внешних обработок сказывается на производительности
  • Это не полноценный API-gateway - в библиотеке нет полноценного логирования и трассировки запросов, балансирование нагрузкой.
  • Не известно как поведет себя в высоконагруженных системах - пока не предоставилось возможности сильно нагрузить http-сервис api-gateway из библиотеки. Буду признателен если поделитесь своим опытом :)

В приложенном архиве вы найдете:

  • Файл поставки библиотеки route_point_1.0.1.1.cf
  • Выгрузку демо-базы demo_route_point.dt
  • Документацию в каталоге docs
  • Архив с расширением для юнит-тестов unit-tests.zip (перед использованием прочитайте раздел по юнит-тестам в документации)
  • Шаблоны модулей API и прикладной операции

 

Найденные ошибки оформляйте в issue на github - буду исправлять :)

Рекомендуемая версия платформы: 8.3.25.1394

Репозиторий проекта: https://github.com/MadRave/route-point

Документация по внедрению здесь

Вступайте в нашу телеграмм-группу Инфостарт

Библиотека 1С Взаимодействие с API Интеграция API-шлюз API-gateway http-REST Внешние обработки

См. также

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    5304    23    4    

25

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять товары в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически синхронизирует ваш каталог. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    1659    4    0    

5

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

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

60000 руб.

07.05.2019    41341    75    45    

31

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    21865    63    52    

40

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    23239    33    24    

26
Для отправки сообщения требуется регистрация/авторизация