Интеграция 1С с REST API внешнего сервиса: как это работает и что нужно учесть

Обмен данными между 1С и внешним сервисом через REST API
Содержание 13 разделов

Пошаговый разбор для тех, кто планирует связать 1С с внешней системой через API

В интеграции 1С выполняет две разные роли. Входящие запросы принимает опубликованный HTTP-сервис или стандартный интерфейс OData. Исходящие обращения к API другой системы выполняют объекты HTTPСоединение и HTTPЗапрос. Для промышленного обмена поверх этого проектируют авторизацию, журнал, безопасные повторы, идемпотентность и минимальные права технической учётной записи [1][2][3][4].

Кому полезна статья

Материал пригодится руководителям и специалистам, которые решают задачу вида «нужно, чтобы 1С обменивалась данными с CRM, маркетплейсом, службой доставки, банком или собственным сайтом» и хотят понять, как устроена такая интеграция изнутри, прежде чем ставить задачу разработчику или обсуждать её с подрядчиком.

Разбираемся, что такое REST API применительно к 1С, какими способами 1С может выступать и клиентом, и сервером, какие вопросы авторизации и безопасности возникают, какие ошибки типичны и когда стоит привлекать разработчика.

Что такое REST API и при чём здесь 1С

REST (Representational State Transfer) — архитектурный стиль построения сетевых интерфейсов, при котором системы обмениваются данными по протоколу HTTP, обращаясь к ресурсам по URL и используя стандартные методы GET, POST, PUT, DELETE [6]. Ответ обычно возвращается в формате JSON — он компактнее XML и проще разбирается программно, поэтому стал основным форматом для REST-интеграций, в том числе в 1С [1].

Для 1С REST API — это способ решить одну из самых частых практических задач: избавиться от двойного ввода данных и построить единую IT-инфраструктуру, когда данные о заказах, остатках, оплатах или клиентах должны появляться сразу в нескольких системах [7].

Важно различать две роли, которые 1С может играть в интеграции:

  • 1С как сервер — платформа публикует свои данные через REST/OData-интерфейс, и внешняя система обращается к 1С [2].
  • 1С как клиент — конфигурация сама отправляет HTTP-запросы к внешнему API: банку, службе доставки, CRM, маркетплейсу [8][9].

Часто в одном проекте задействованы оба сценария одновременно: например, сайт получает из 1С остатки и цены через OData, а сама 1С в это же время отправляет статус заказа во внешнюю службу доставки через её REST API.

Как это устроено технически

1С как поставщик данных: автоматический REST-интерфейс и OData

Стандартный интерфейс OData публикует включённые и доступные пользователю объекты прикладного решения. Он подходит для типовых операций чтения и записи, но не заменяет бизнес-методы со сложными проверками, транзакциями и составным результатом. Набор опубликованных объектов и права интеграционной учётной записи ограничивают задачей обмена [2][10][11].

Ключевой момент с точки зрения безопасности: OData не вводит отдельную модель прав — доступ регулируется обычными правами пользователя 1С, под которым выполняется запрос. Если у пользователя нет прав на чтение или изменение объекта в обычном сеансе, через OData он их тоже не получит [11]. Из этого следует практическое правило: для интеграционной учётной записи стоит публиковать и открывать только те объекты, которые действительно нужны внешней системе, а не всю конфигурацию целиком [11].

1С как поставщик собственного API: HTTP-сервисы

Когда типового REST/OData-интерфейса недостаточно и нужна собственная бизнес-логика (например, специфический метод для мобильного приложения или сайта), в конфигурации создают объект метаданных «HTTP-сервис». Разработчик описывает URL-шаблоны, HTTP-методы (GET, POST, PUT, DELETE) и обработчики на встроенном языке 1С, после чего сервис публикуется на веб-сервере так же, как обычная база [12][13]. Такой подход даёт полный контроль над форматом запросов и ответов, но требует больше разработки, чем готовый OData-интерфейс.

1С как клиент: обращение к внешнему REST API

Для обращения к стороннему API из 1С используются встроенные объекты HTTPСоединение и HTTPЗапрос [8][9]. Общая логика такая:

  1. Создаётся HTTPСоединение с указанием сервера, порта и признака защищённого соединения (HTTPS) [8].
  2. Формируется объект HTTPЗапрос с адресом, заголовками (в том числе заголовком авторизации) и телом запроса для методов POST/PUT [9][14].
  3. Запрос отправляется одним из методов — Получить() для GET, ОтправитьДляОбработки() или аналогичным для POST/PUT [15][16].
  4. Из объекта HTTPОтвет считывается код состояния и тело ответа; тело в формате JSON разбирается стандартными средствами платформы в структуру или соответствие [9][16].

Отдельное внимание нужно уделить обработке кода состояния ответа: код 200 не гарантирован, и код, отличный от «успешного», необходимо обрабатывать как ошибку, а не игнорировать [9][16].

Авторизация: с чем чаще всего приходится работать

Практически ни один промышленный API не отдаёт данные без проверки, кто их запрашивает. В интеграциях 1С встречаются разные схемы:

  • Basic-аутентификация — логин и пароль передаются в заголовке запроса; распространена для внутренних и корпоративных интеграций, обычно в сочетании с обязательным HTTPS [17].
  • Токен доступа (Bearer-токен) — токен передаётся в заголовке Authorization, часто выдаётся при подключении приложения к сервису и имеет ограниченный срок действия [18][14].
  • OAuth 2.0 — более сложная схема, при которой 1С регистрируется как приложение у поставщика API, получает код авторизации и обменивает его на токен доступа; применяется, например, при интеграции с сервисами Google [19][20].

Отдельная ситуация — когда обращения к HTTP-сервису 1С выполняет не живой пользователь, а другая программа или планировщик по расписанию. Для таких сценариев рекомендуется заводить отдельных служебных пользователей и использовать токены доступа, привязанные к этому пользователю, а не к личной учётной записи сотрудника [21].

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

Российская специфика

Если по API передаются персональные данные, до разработки фиксируют состав полей и основание обработки, сокращают данные до необходимого набора, используют защищённый канал, отдельные роли и журнал доступа. Тесты проводят на обезличенной выборке, а конкретные меры защиты определяют по применимым требованиям 152-ФЗ и модели угроз информационной системы [5][22].

Применительно к технической стороне интеграции 1С это означает как минимум:

  • передавать персональные данные только по защищённым каналам (HTTPS, а не открытый HTTP) [24];
  • ограничивать состав данных, которые уходят во внешний сервис, тем минимумом, который реально нужен для решения задачи;

Эти вопросы стоит прорабатывать на этапе постановки задачи, а не после того, как обмен уже запущен в промышленную эксплуатацию.

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

Варианты реализации интеграции

На практике для связи 1С с внешними системами используется не один способ, а несколько, и выбор зависит от задачи:

  • REST API / OData — стал де-факто основным способом современных интеграций благодаря универсальности и кроссплатформенности [10].
  • SOAP (веб-сервисы) — более тяжеловесный протокол на основе XML, применяется реже, в основном там, где так исторически сложилось на стороне внешней системы [25][9].
  • Файловый обмен — данные выгружаются и загружаются через промежуточные файлы (например, обмен 1С с сайтами на основе стандарта CommerceML); подходит для нечастых обменов без жёстких требований к скорости [26].
  • Прямой доступ к базе данных — используется реже всего и требует особой осторожности, так как обходит бизнес-логику приложения [10].
  • Интеграционная шина («1С:Шина») — отдельный сервис-посредник, который берёт на себя транспорт, преобразование и маршрутизацию сообщений между системами, снимая с разработчиков необходимость писать и сопровождать эту инфраструктуру самостоятельно [27].

Для точечной задачи (например, разово выгрузить остатки на сайт) часто достаточно готового REST-запроса. Для регулярного двустороннего обмена между несколькими системами с контролем очередей и повторной обработкой сбоев есть смысл рассматривать интеграционную шину или отдельный сервис-посредник.

Практические этапы интеграции

  1. Определить, какие данные и в каком направлении должны передаваться — какие объекты 1С (документы, справочники, регистры) участвуют в обмене, что является источником, а что приёмником.
  2. Изучить документацию внешнего API — доступные методы, форматы запросов и ответов, лимиты на количество запросов, версию API и её актуальность.
  3. Выяснить условия доступа — нужна ли регистрация, договор, тестовая (песочница) среда, какая схема авторизации поддерживается.
  4. Спроектировать сопоставление данных — как объекты и реквизиты 1С соотносятся с полями внешнего API (например, как сопоставляются идентификаторы товаров, клиентов, статусов заказов).
  5. Реализовать обмен — либо публикацию REST/OData-интерфейса или HTTP-сервиса на стороне 1С, либо клиентский код с HTTPСоединение/HTTPЗапрос для обращения к внешнему API.
  6. Продумать обработку ошибок и повторные попытки — что происходит, если внешний сервис недоступен, вернул ошибку или отправил данные повторно.
  7. Настроить логирование — без журнала запросов и ответов интеграция превращается в чёрный ящик: данные не передались, а понять, на каком этапе и почему, невозможно [3].
  8. Протестировать на тестовом контуре — желательно на песочнице внешнего сервиса, если она предусмотрена, прежде чем подключать боевые данные.
  9. Запустить в промышленную эксплуатацию — с контролем первых обменов, назначенным ответственным сотрудником и инструкцией на случай сбоя.

Ограничения, ошибки и риски

Отсутствие или недостаточность логирования. Без структурированных логов промежуточных этапов обмена расследование сбоя занимает несопоставимо больше времени, чем его предотвращение через продуманное логирование с самого начала [3][4].

Проблемы с очередью сообщений. При интеграциях, построенных на очередях (в том числе через интеграционную шину), возможны ситуации, когда сообщения накапливаются и не обрабатываются вовремя; для таких случаев нужен мониторинг состояния очереди на обеих сторонах обмена [28][29].

Повторная обработка данных (отсутствие идемпотентности). Если внешний сервис или сеть присылают одно и то же сообщение повторно, а обработчик в 1С не проверяет, было ли оно уже обработано, данные могут задвоиться. Разработку обмена стоит проектировать так, чтобы повторное получение одного и того же сообщения не приводило к дублированию записей.

Расхождение форматов и типов данных. Частая причина сбоев при интеграции с сайтами и другими системами — некорректный тип или формат переданных данных, из-за чего сведения либо не попадают в целевую систему, либо попадают в искажённом виде [26].

Избыточные права интеграционной учётной записи. Если технической учётной записи, от имени которой работает обмен, выданы более широкие права, чем нужно для задачи, это увеличивает потенциальный ущерб при компрометации доступа [11].

Передача незащищённых или устаревших данных. Работа по HTTP вместо HTTPS, использование неактуальной версии API или устаревшей документации — источник как технических сбоев, так и рисков безопасности [17][24].

Рекомендации по выбору решения

Если задача — разовая или редкая выгрузка данных без сложной бизнес-логики (например, раз в день выгрузить остатки в фиксированном формате), может быть достаточно готового REST-запроса или файлового обмена, реализованного силами штатного специалиста 1С без глубокой кастомной разработки.

Если нужен регулярный двусторонний обмен, несколько систем одновременно, обработка ошибок и повторов, контроль очередей и SLA по времени доставки данных — это уже задача, требующая архитектурного проектирования: выбора между собственным HTTP-сервисом, готовым OData-интерфейсом и интеграционной шиной, продуманного логирования и тестирования.

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

Как может помочь «Пятый фактор»

Основная сложность интеграции 1С с внешним сервисом обычно заключается не только в самом подключении к API, но и в сопоставлении данных между системами, обработке ошибок, логировании и контроле последующего обмена. Команда «Пятого фактора» занимается в том числе точечными интеграциями 1С с внешними системами — например, подключением API транспортных и логистических сервисов к 1С или TMS с сопоставлением идентификаторов, обработкой повторных и запоздавших данных и журналом сверки [30]. Если для вашей задачи достаточно готового сервиса или собственной настройки — это тоже стоит обсудить заранее, чтобы не заказывать разработку там, где она не нужна.

Чтобы обсудить задачу или получить консультацию, свяжитесь с командой «Пятого фактора» любым удобным способом.

Вывод

REST API — сегодня основной способ связать 1С с внешними системами: платформа умеет и отдавать свои данные через автоматический REST/OData-интерфейс или собственный HTTP-сервис, и сама обращаться к внешним API через HTTPСоединение и HTTPЗапрос. Техническая часть подключения решается стандартными средствами платформы, а основная инженерная работа сосредоточена вокруг авторизации, разграничения прав, обработки ошибок, логирования и — для персональных данных — соответствия требованиям 152-ФЗ. Чем раньше эти вопросы продуманы, тем устойчивее будет обмен данными в промышленной эксплуатации.

Источники

[1] infostart.ru — Что важно знать для реализации REST API в 1С — https://infostart.ru/1c/articles/2619678/

[2] v8.1c.ru — REST интерфейс :: Интеграция — платформа 1С:Предприятие — https://v8.1c.ru/platforma/rest-interfeys/

[3] netlab-com.ru — Интеграция 1С с другими внешними сервисами по API — https://netlab-com.ru/services/integratsiya-1c-s-drugimi-vneshnimi-servisami-po-api/

[4] infostart.ru — Методология логирования промежуточного этапа интеграций 1С — https://infostart.ru/1c/articles/1962861/

[5] 72.rkn.gov.ru — Роскомнадзор: Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных» — https://72.rkn.gov.ru/p21978/p25026/p25030/

[6] infostart.ru — Rest API от чайника для чайников — https://infostart.ru/1c/articles/1671610/

[7] v8.1c.ru — Интеграция «1С:УНФ» с другими системами и сервисами — https://v8.1c.ru/small.biz/integraciya/

[8] b-rs.ru — Использование HTTP запросов в 1С — https://b-rs.ru/company/article/ispolzhttp-zapros

[9] okolokompa.com — Интеграция 1С с внешними сервисами: REST API и SOAP — https://okolokompa.com/forum/1spredpriyatie-8-x/integracziya-1s-s-vneshnimi-servisami-rest-api-i-soap/

[10] skhlebnikov.ru — Топ-5 способов интеграции 1С: от REST API до прямого доступа к БД — https://skhlebnikov.ru/blog/top-5-sposobov-integracii-1c/

[11] sayfocus.me — OData в 1С: публикация REST и работа с документами — https://sayfocus.me/blog/ru/1c-odata-rest-guide.html

[12] its.1c.ru — Создание и отладка HTTP-сервисов :: Методическая поддержка разработчиков 1С:Предприятия 8 — https://its.1c.ru/db/metod8dev/content/5756/hdoc

[13] wiki.programstore.ru — HTTP-сервисы — https://wiki.programstore.ru/http-servisy/

[14] mngb.ru — Программный запрос к HTTP сервису 1С через код — https://mngb.ru/dannye/28/kak-obratitsya-k-http-servisu-1s-programmno

[15] programmist1s.ru — HTTP запросы в 1С 8.3: примеры GET и POST запросов — https://programmist1s.ru/http-zaprosyi-v-1s-8-3-primeryi-get-i-post-zaprosov/

[16] 1c.alexcode.ru — Http запросы GET и POST в языке 1С 8. Примеры работы — https://1c.alexcode.ru/http-zaprosy-get-post-v-yazyke-1c-8-primery-raboty/

[17] koderline.ru — Настройка доступа к API в системе 1С: ERP — https://www.koderline.ru/expert/narabotki/article-api-v-1s-nastroyka-dostupa-avtorizatsiya-i-autentifikatsiya/

[18] infostart.ru — Авторизация с помощью токена (OAuth2.0) на примере сервиса Яндекс Еда — https://infostart.ru/1c/tools/1817924/

[19] infostart.ru — Аутентификация на внешних сервисах посредством OAuth — https://infostart.ru/1c/articles/1030500/

[20] 1clancer.ru — Авторизация 1С OAuth 2.0 в API Google и получение access token — https://1clancer.ru/catalog/3217

[21] 1cmycloud.com — Аутентификация в HTTP-сервисах для неинтерактивных пользователей :: 1С:Шина — https://1cmycloud.com/console/help/esb/docs/topics/external-program-authentication/

[22] base.garant.ru — Закон о персональных данных от 27.07.2006 N 152-ФЗ — https://base.garant.ru/12148567/

[23] gendalf.ru — Закон 152-ФЗ о защите данных: обзор, ключевые аспекты, штрафы — https://gendalf.ru/news/manager/o-personalnykh-dannykh-152fz-instruktsiya/

[24] directum.credos.ru — 152-ФЗ и СЭД: требования к защите персональных данных — https://directum.credos.ru/blog/152-fz-elektronnyj-dokumentooborot

[25] its.1c.ru — «Http Сервис» :: 1С:Шина. Руководство разработчика. Издание 3 — https://its.1c.ru/db/esbdoc3/content/809/hdoc

[26] intervolga.ru — Типовые ошибки интеграции между 1С и 1С-Битрикс — https://www.intervolga.ru/blog/support/tipovye-oshibki-integratsii-mezhdu-1s-i-1s-bitriks/

[27] infostart.ru — Об 1С:Шине — https://infostart.ru/1c/articles/1892440/

[28] its.1c.ru — Решение проблем интеграции с Порталом 1С:ИТС — https://its.1c.ru/db/content/fresh/src/48740770.html

[29] its.1c.ru — Методика анализа проблем интеграции «1С:Шины» — https://its.1c.ru/db/content/metod8dev/src/developers/scalability/troubleshooting/i8105997.htm

[30] 5factor.ru — Интеграция Wialon с 1С или TMS — https://5factor.ru/uslugi/integracii-i-avtomatizaciya/integraciya-wialon-1c-tms/

Быстрые вопросы и ответы

Есть ли в 1С готовый REST API?

Платформа умеет публиковать стандартный OData-интерфейс для разрешённых объектов. Для собственных методов и бизнес-правил создают HTTP-сервис в конфигурации, поэтому готовность зависит от задачи и состава опубликованных данных.

Кто должен инициировать обмен — 1С или внешний сервис?

Инициатором выбирают сторону, которая надёжнее узнаёт о событии и имеет подходящий интерфейс. В одном проекте возможны оба направления: внешний webhook приходит в HTTP-сервис, а регламентное задание 1С запрашивает статусы у партнёра.

Где хранить API-ключи и токены?

Их выдают отдельной технической учётной записи, ограничивают права и хранят в защищённом хранилище или закрытых настройках с контролем доступа. В журнал записывают идентификатор ключа и результат запроса, а само значение секрета маскируют.

Как избежать дублей при повторном запросе?

Передают стабильный внешний ID или idempotency key, сохраняют результат обработки и при повторе возвращают прежний ответ. Для документов дополнительно контролируют бизнес-ключ: номер, организацию, дату и источник.

Нужно ли открывать всю базу 1С в интернет?

Нет. Публикуют только нужный сервис и объекты, используют HTTPS, отдельного пользователя, сетевые ограничения, reverse proxy или закрытый канал. Доступ проверяют с минимальными правами и журналируют.

Нужна помощь по этой задаче?
На странице услуги «Интеграция двух систем по API и webhook» указаны состав работ, результат и фиксированная цена.