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

Разработка и Конфигурация · 9 мин

Что такое API 1С и как с ним работать

Что такое API в 1С: HTTP-сервисы, OData, веб-сервисы SOAP и REST. Как опубликовать интерфейс, настроить доступ и проверить работу интеграции.

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

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

Практическая ценность API проста: данные вводятся один раз и автоматически попадают во все связанные системы. Менеджер оформляет заказ на сайте — в 1С появляется документ, резервируется товар, формируется счёт. Ручной перенос информации исчезает вместе с ошибками и задержками.

Какие виды API есть в 1С

Платформа 1С:Предприятие предоставляет несколько способов открыть доступ к данным извне. Каждый из них публикуется через веб-сервер (IIS или Apache) и требует отдельной настройки прав доступа.

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

HTTP-сервисы — собственные REST-подобные точки входа, которые разработчик описывает в конфигураторе. Здесь полностью контролируется логика: какие данные отдать, в каком формате, какие проверки выполнить перед записью документа.

Веб-сервисы SOAP — классический корпоративный вариант с описанием через WSDL. Используется, когда внешняя система уже умеет работать по SOAP или корпоративный стандарт требует именно этот протокол.

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

OData

Подходит для быстрого доступа к справочникам и документам без разработки. Ограничение: отдаёт данные «как есть», без произвольной бизнес-логики.

HTTP-сервисы

Подходят для нестандартных сценариев: агрегированные ответы, контроль прав, произвольный JSON. Требуют разработки и тестирования.

SOAP веб-сервисы

Подходят для интеграции с корпоративными системами, ориентированными на WSDL. Более тяжёлый формат, менее удобен для веб-приложений.

Планы обмена

Подходят для регулярной синхронизации между базами 1С. Не являются API в привычном смысле — работают по расписанию, а не по запросу.

Как работает стандартный интерфейс OData

OData включается флажком «Публиковать стандартный интерфейс OData» при публикации базы на веб-сервере. После этого каждый объект конфигурации становится доступен по URL вида /base/odata/standard.odata/Catalog_Номенклатура.

Чтение данных выполняется GET-запросом с параметрами: $filter для отбора, $select для выбора полей, $top и $skip для постраничной выборки. Создание объекта — POST-запросом с JSON в теле, изменение — PATCH, удаление — DELETE.

Формат ответа по умолчанию — Atom/XML, но запросом с заголовком Accept: application/json или параметром $format=json получают JSON, который удобнее разбирать в большинстве языков программирования.

bash
curl -u Пользователь:Пароль "https://server/base/odata/standard.odata/Catalog_Номенклатура?$format=json&$top=10"

Важная особенность: OData выполняет запись через стандартные обработчики объектов, то есть срабатывают подписки на события и проверки заполнения. Однако сложную прикладную логику (например, «создать заказ и сразу зарезервировать товар по особым правилам») через OData реализовать нельзя — для этого нужен HTTP-сервис.

Когда нужен собственный HTTP-сервис

HTTP-сервис создают, когда стандартного OData недостаточно: нужен ответ в специфичном формате, агрегация данных из нескольких источников, нестандартная авторизация (например, по токену партнёра) или выполнение прикладных операций — проведение документа, запуск расчёта, формирование отчёта.

Разработка ведётся в конфигураторе: создаётся объект «HTTP-сервис», в нём описываются шаблоны URL и методы (GET, POST и другие), для каждого метода пишется обработчик на встроенном языке. Затем сервис публикуется на веб-сервере через механизм публикации.

Порядок создания HTTP-сервиса
  1. 1
    Создайте в конфигураторе объект «HTTP-сервис» и задайте корневой URL.
  2. 2
    Добавьте шаблон URL, например /orders/{id}, и метод GET или POST.
  3. 3
    Напишите обработчик: разбор параметров, запрос к данным, формирование JSON-ответа.
  4. 4
    Опубликуйте сервис на веб-сервере и укажите его в файле публикации.
  5. 5
    Проверьте ответ внешним запросом из Postman или curl под учётной записью с минимальными правами.

Отдельное внимание уделите обработке ошибок: сервис должен возвращать осмысленные HTTP-коды (400 при неверных параметрах, 404 при отсутствии объекта, 500 при внутренней ошибке) и текст причины, а не молча падать. Это существенно упрощает сопровождение интеграции.

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

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

Доступ должен идти только по HTTPS, иначе логин и пароль передаются открытым текстом. Для внутренних контуров дополнительно ограничивают доступ по IP-адресам на уровне веб-сервера или межсетевого экрана.

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

Как проверить работу интеграции

Проверку начинают с простого запроса на чтение: если GET к справочнику возвращает данные — публикация и авторизация работают. Затем тестируют создание и изменение объектов на копии базы, а не на рабочей.

Контрольные точки: код ответа, структура JSON, корректность записанных в базу данных. После создания документа через API откройте его в интерфейсе 1С и убедитесь, что все поля заполнены, документ проводится и даёт ожидаемые движения по регистрам.

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

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

Ответ на GET-запрос
Норма

Код 200 и JSON с ожидаемыми полями

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

Код 401/403 (проблема с правами) или 404 (неверный URL публикации)

Создание объекта через POST
Норма

Код 201, объект виден в интерфейсе 1С с корректными данными

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

Код 400 с ошибкой проверки заполнения или объект создаётся пустым

Права интеграционного пользователя
Норма

Доступ только к нужным объектам, попытка чтения чужих данных отклоняется

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

Пользователь видит всю базу — права избыточны

Типичные ошибки при работе с API 1С

Большинство проблем интеграций связано не с самой технологией, а с пренебрежением базовыми правилами: избыточными правами, отсутствием тестовой среды и игнорированием особенностей платформы.

Типичные ошибки
01
Интеграция под администратором — любая утечка пароля открывает полный доступ к базе.
02
Тестирование на рабочей базе — ошибочный запрос создаёт мусорные документы или портит данные.
03
Выгрузка больших списков без $top — запрос на всю номенклатуру подвешивает и API, и клиента.
04
Игнорирование версионирования — обновление конфигурации переименовало реквизит, а внешняя система узнала об этом из ошибок.
05
Запись объектов напрямую без проведения — документ создан, но движений по регистрам нет, отчёты его не видят.

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

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

Нужен ли отдельный веб-сервер для API 1С?

Да, для OData, HTTP-сервисов и SOAP требуется публикация на веб-сервере IIS или Apache. Файловая база без публикации недоступна извне. В клиент-серверном варианте веб-сервер обычно разворачивают на отдельной машине или на сервере приложений.

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

Да. OData и HTTP-сервисы — это обычные HTTP-запросы, поэтому подходит любой язык с HTTP-клиентом: Python (requests), JavaScript (fetch, axios), PHP, C#. Аутентификация чаще всего Basic (логин и пароль пользователя 1С) или через токен, если он реализован в HTTP-сервисе.

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

OData платформа генерирует автоматически и отдаёт данные объектов «как есть», без произвольной логики. HTTP-сервис разработчик программирует сам: можно собрать данные из нескольких таблиц, применить свои проверки, вернуть ответ в любом формате. OData быстрее запустить, HTTP-сервис гибче.

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

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

Что делать, если после обновления конфигурации API перестал работать?

Сначала проверьте, не изменились ли имена объектов и реквизитов — OData-URL и поля JSON жёстко к ним привязаны. Затем убедитесь, что публикация на веб-сервере сохранилась и права интеграционного пользователя не сброшены. Для собственных HTTP-сервисов проверьте, не изменился ли код обработчиков.

Подходит ли API для обмена большими объёмами данных?

Для разовых запросов и небольших порций — да, с обязательной постраничной выборкой через $top и $skip. Для регулярной массовой синхронизации между базами 1С эффективнее планы обмена или выгрузка через файлы: они передают только изменения и не нагружают веб-сервер постоянными запросами.

Итог

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

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