К статье
Практический материал

Автоматизация · 12 мин

API 1С: что это и как использовать для интеграции

Что такое API 1С, какие интерфейсы интеграции есть в платформе: HTTP-сервисы, OData, веб-сервисы. Практические сценарии, настройка и типичные ошибки.

API 1С — это набор программных интерфейсов, через которые другие системы обмениваются данными с базой 1С: создают документы, читают справочники, получают остатки и цены. Без API сайт не узнает актуальные остатки склада, а CRM — выставленные счета. Интеграция через API заменяет ручной перенос данных и файловый обмен, который ломается при изменении структуры каталогов.

В платформе 1С:Предприятие нет единого «API» в привычном понимании REST-разработчиков. Вместо этого есть несколько механизмов: автоматический интерфейс OData, HTTP-сервисы, веб-сервисы (SOAP), механизм XDTO-пакетов и EnterpriseData для обмена между конфигурациями. Выбор зависит от задачи: одно дело — отдать каталог товаров на сайт, другое — принимать заказы от мобильного приложения.

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

Что скрывается за термином «API 1С»

Когда говорят «API 1С», обычно имеют в виду один из четырёх вариантов. Первый — автоматический REST-интерфейс OData, который платформа генерирует сама на основе структуры конфигурации. Второй — HTTP-сервисы, которые разработчик создаёт в конфигураторе и описывает произвольную логику. Третий — веб-сервисы SOAP, исторически первый механизм интеграции. Четвёртый — внешние API самих сервисов 1С, например «1С:ДиректБанк» или облачные сервисы фирмы «1С».

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

Какие интерфейсы интеграции есть в платформе

У каждого механизма своя область применения. OData подходит для чтения данных и простых операций записи без дополнительной разработки. HTTP-сервисы — для произвольной логики: приём заказов, вебхуки, интеграция с мобильными приложениями. SOAP-веб-сервисы чаще встречаются в унаследованных проектах и интеграциях с корпоративными шинами. Планы обмена и EnterpriseData используют для регулярной синхронизации между базами 1С и совместимыми системами.

МеханизмТип задачНужна доработкаОграничение
ODataЧтение справочников, документов, остатковНет, включается публикациейНет произвольной бизнес-логики
HTTP-сервисыПриём данных, вебхуки, нестандартные выборкиДа, код в конфигуратореТребует разработчика 1С
Веб-сервисы (SOAP)Интеграция с ESB, унаследованные проектыДаГромоздкий формат XML
Планы обменаСинхронизация между базами 1СНастройка, иногда доработкаТолько совместимые форматы

Сравнение вариантов

OData

Быстрый старт без программирования; не подходит, если нужна проверка данных перед записью или агрегация

Свой HTTP-сервис

Полный контроль над логикой и форматом; требует разработчика и сопровождения кода

План обмена

Надёжная регулярная синхронизация между базами 1С; не предназначен для внешних систем произвольного типа

Как включить и опубликовать OData

Автоматический REST-интерфейс включается при публикации базы на веб-сервере (IIS или Apache). В диалоге публикации есть отдельный флажок «Публиковать доступ для клиентских приложений» и настройка OData. После публикации данные становятся доступны по адресу вида http://сервер/база/odata/standard.odata/Catalog_Номенклатура. Состав публикуемых объектов можно ограничить: в конфигураторе у каждого объекта есть свойство доступности через OData.

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

Проверить работу можно прямо из браузера: откройте URL сервиса, введите учётные данные и убедитесь, что возвращается XML со списком сущностей. Затем запросите конкретный справочник с параметром $format=json, чтобы получить данные в удобном для разработки виде.

Порядок включения OData
  1. 1
    Опубликуйте базу на веб-сервере через конфигуратор: Администрирование → Публикация на веб-сервере
  2. 2
    Отметьте публикацию OData и при необходимости ограничьте состав объектов
  3. 3
    Создайте отдельного пользователя с правами только на нужные объекты
  4. 4
    Проверьте доступ: откройте URL standard.odata в браузере и выполните тестовый запрос
  5. 5
    Документируйте адрес сервиса и учётную запись для команды интеграции

Когда OData недостаточно: собственные HTTP-сервисы

Автоматический интерфейс записывает объекты «как есть» и не умеет выполнять произвольные проверки: например, отклонить заказ с несуществующим договором или рассчитать скидку по сложным правилам. Для таких сценариев в конфигураторе создают объект «HTTP-сервис», описывают шаблоны URL и пишут обработчики на встроенном языке. Внутри обработчика доступна вся прикладная логика конфигурации.

Типовой сценарий — приём заказов с сайта. Внешняя система отправляет JSON на адрес вида /hs/orders/create, обработчик проверяет контрагента и товары, создаёт документ «Заказ покупателя» и возвращает его номер. Такой подход даёт контроль над форматом, ошибками и транзакционностью, но требует поддержки кода при обновлении конфигурации.

json
POST /base/hs/orders/create HTTP/1.1
Authorization: Basic ...
Content-Type: application/json

{"contragent": "ИНН7701234567", "items": [{"sku": "ТР-1042", "qty": 5}]}

Безопасность и права доступа

Открытый наружу API — это точка входа в учётную систему, поэтому требования здесь жёстче, чем к обычному пользовательскому доступу. Публикация должна работать только по HTTPS: базовая аутентификация передаёт логин и пароль в закодированном, но легко раскрываемом виде, и по открытому HTTP их перехватит любой, кто видит трафик. Перед выводом сервиса в интернет настройте TLS-сертификат и ограничьте доступ по IP там, где это возможно.

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

Производительность и нагрузка на базу

Каждый запрос к OData или HTTP-сервису выполняется в сеансе 1С и потребляет ресурсы сервера. Тяжёлые выборки — например, чтение всех документов за год без фильтра — способны заметно замедлить работу пользователей. Правильная практика: всегда использовать фильтры ($filter в OData), постраничную выборку ($top, $skip) и запрашивать только нужные поля через $select.

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

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

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Ответ сервиса на тестовый запрос
Норма

HTTP 200, корректный JSON/XML с ожидаемыми полями

Тревожный признак

Ошибки 401/403 (права), 404 (не тот URL или объект не опубликован)

Запись документа через API
Норма

Документ создан, проведён, виден в интерфейсе 1С

Тревожный признак

Документ создан частично или без проведения — логика обработчика отработала не полностью

Время ответа под нагрузкой
Норма

Ответы в пределах секунд на типовые запросы

Тревожный признак

Резкий рост времени при выборках без фильтра

Журнал регистрации
Норма

Нет массовых ошибок аутентификации

Тревожный признак

Повторяющиеся отказы входа — перебор паролей или неверные учётные данные у интеграции

Типичные ошибки
01
Использование административной учётной записи для интеграции — при утечке злоумышленник получает полный доступ к базе
02
Чтение больших таблиц без фильтров и пагинации — рост нагрузки и таймауты у внешней системы
03
Публикация по HTTP вместо HTTPS — перехват логина и пароля в открытом виде
04
Запись данных напрямую через OData в обход проверок — рассинхронизация с прикладной логикой, например отрицательные остатки
05
Отсутствие обработки ошибок во внешней системе — потерянные заказы, о которых никто не узнает

Как выбрать подход под свою задачу

Критерий выбора простой: чем больше прикладной логики нужно выполнить в момент обмена, тем ближе решение к собственному HTTP-сервису. Если задача — «отдать наружу справочники и остатки», начните с OData: это самый быстрый путь. Если нужно принимать и проверять данные — проектируйте HTTP-сервис с явной валидацией. Для обмена между двумя базами 1С сначала смотрите на типовые планы обмена и формат EnterpriseData, прежде чем писать своё.

Маршрут решения

Как выбрать действие

Нужно только читать справочники и документы внешней системойВключите OData, ограничьте состав объектов и права пользователя
Нужно принимать заказы или заявки с проверкамиРазработайте HTTP-сервис с валидацией и транзакционной записью
Нужна регулярная синхронизация двух баз 1СНастройте план обмена, при необходимости с форматом EnterpriseData
Интеграция с корпоративной шиной или унаследованной системойРассмотрите веб-сервисы SOAP или обмен через промежуточный брокер сообщений

Частые вопросы об API 1С

Есть ли в 1С готовый REST API без программирования?

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

Можно ли работать с API 1С из Python или PHP?

Да. OData и HTTP-сервисы работают по обычному HTTP, поэтому подходят любые языки с HTTP-клиентом. Для Python часто используют requests, для PHP — cURL или Guzzle. Формат данных — JSON или XML, для OData JSON включается параметром $format=json.

Чем OData отличается от HTTP-сервиса?

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

Безопасно ли открывать API 1С в интернет?

Безопасно при соблюдении условий: только HTTPS, отдельный пользователь с минимальными правами, ограничение состава публикуемых объектов, мониторинг журнала регистрации. Публикация по HTTP или с административной учётной записью — недопустима.

Почему запросы к OData выполняются медленно?

Чаще всего причина в выборках без фильтров: внешняя система запрашивает всю таблицу. Добавьте $filter, $top и $select, чтобы запрашивать только нужные данные. Также проверьте, не выполняется ли параллельно несколько тяжёлых запросов, конкурирующих за ресурсы сервера 1С.

Можно ли через API провести документ?

Через OData документ записывается, и для него можно установить признак проведения, если права пользователя это позволяют. Однако сложные проверки перед проведением (лимиты, статусы согласования) надёжнее реализовать в собственном HTTP-сервисе, где вы контролируете всю цепочку.

Итог

Что важно запомнить

API 1С — это несколько механизмов платформы: автоматический OData для стандартного доступа, HTTP-сервисы для произвольной логики, планы обмена для синхронизации баз. Начинайте с OData, переходите к собственным сервисам при необходимости проверок, и всегда ограничивайте права интеграционного пользователя и используйте HTTPS.