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

Администрирование · 11 мин

Доступ к API в 1С: что это и как его организовать

Что такое доступ к API в 1С, какие способы интеграции существуют (HTTP-сервисы, OData, веб-сервисы), как настроить доступ и права безопасно.

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

Термин «API» (Application Programming Interface) означает программный интерфейс — набор правил, по которым одна программа может запрашивать данные у другой. В контексте 1С это обычно HTTP-запросы к опубликованным сервисам базы: внешняя система отправляет запрос, 1С проверяет права и возвращает ответ в формате JSON, XML или другом согласованном виде.

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

Какие способы доступа к API существуют в 1С

Платформа 1С:Предприятие предлагает несколько встроенных механизмов интеграции, и выбор зависит от задачи. Нет одного «единого API» — есть набор технологий, каждая со своими сильными сторонами.

Стандартный интерфейс OData включается практически без программирования: база сама предоставляет доступ к справочникам, документам и регистрам по REST-подобному протоколу. Подходит для чтения данных и простых операций записи, например для выгрузки номенклатуры в аналитическую систему.

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

Веб-сервисы (SOAP) — более старый, но надёжный механизм с формальным описанием интерфейса через WSDL. Часто используется для интеграции с корпоративными системами, где требуется строгий контракт обмена.

Сравнение способов доступа

OData

Включается без доработок, удобен для чтения данных и простых интеграций. Ограничение: мало контроля над логикой, не подходит для сложных операций.

HTTP-сервисы

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

Веб-сервисы (SOAP)

Строгий контракт через WSDL, подходят для корпоративных интеграций. Более тяжеловесны и сложны в отладке.

Что такое OData и когда его достаточно

Стандартный интерфейс OData публикует прикладные объекты базы автоматически: после включения настройки внешняя система может обращаться к адресам вида /odata/standard.odata/Catalog_Номенклатура и получать данные в формате Atom или JSON. Поддерживаются фильтры, выбор полей и постраничная выборка — этого хватает для большинства задач выгрузки.

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

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

Как организовать доступ через HTTP-сервис

HTTP-сервис создаётся в конфигураторе: добавляется объект «HTTP-сервис», в нём описываются шаблоны URL (например, /orders/{number}) и методы — GET, POST, PUT, DELETE. Для каждого метода пишется обработчик на встроенном языке, который разбирает запрос, выполняет действия в базе и формирует ответ.

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

bsl
Функция ПолучитьОстаток(Запрос)
    КодТовара = Запрос.ПараметрыURL["Код"];
    Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
    Если Товар.Пустая() Тогда
        Ответ = Новый HTTPСервисОтвет(404);
        Возврат Ответ;
    КонецЕсли;
    // ... запрос остатков и формирование JSON
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(ТекстJSON);
    Возврат Ответ;
КонецФункции

После разработки сервис нужно опубликовать: база размещается на веб-сервере (IIS или Apache), в настройках публикации включаются HTTP-сервисы. Без публикации на веб-сервере ни один внешний запрос до базы не дойдёт — файловая база «сама по себе» не принимает HTTP-обращения.

Как опубликовать базу и настроить доступ

Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». Указывается имя публикации, каталог, выбираются механизмы — OData, HTTP-сервисы или веб-сервисы. Для клиент-серверной базы публикация делается на сервере, где развёрнут веб-сервер с установленным модулем расширения 1С.

Порядок включения доступа к API
  1. 1
    Определите, какие данные и операции нужны внешней системе, и выберите механизм: OData, HTTP-сервис или SOAP.
  2. 2
    Создайте отдельного пользователя базы для интеграции с минимально необходимыми правами.
  3. 3
    При необходимости разработайте HTTP-сервис с обработчиками и протестируйте его локально.
  4. 4
    Опубликуйте базу на веб-сервере с включёнными нужными сервисами.
  5. 5
    Настройте HTTPS и проверьте доступ внешним запросом с аутентификацией.
  6. 6
    Проверьте журнал регистрации: запросы проходят, ошибок прав доступа нет.

Аутентификация чаще всего строится на базовой схеме: внешняя система передаёт логин и пароль пользователя 1С в заголовке запроса. Для повышения безопасности применяют токены, прокси-слой или шлюз, который скрывает прямой доступ к базе. Какой бы вариант ни выбрали, обязательны два условия: соединение только по HTTPS и отдельная учётная запись с ограниченными правами.

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

Каждый запрос к API выполняется от имени конкретного пользователя 1С, и платформа применяет к нему стандартную систему прав. Если у пользователя нет права чтения справочника — внешняя система получит отказ, даже если сам сервис работает исправно. Это одновременно защита и частый источник ошибок «запрос не работает».

Правильная практика — завести отдельную роль «ИнтеграцияССайтом» и включить в неё только нужные объекты: например, чтение номенклатуры и цен, запись заказов покупателей. Никаких прав на регистры бухгалтерии, зарплату и административные функции. Если конфигурация поддерживает ограничение доступа на уровне записей (RLS), оно будет действовать и для API-запросов.

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

Как проверить, что доступ работает

Простейшая проверка — обратиться к опубликованному адресу из браузера или утилиты вроде curl. Для OData достаточно открыть URL вида https://сервер/база/odata/standard.odata и ввести логин и пароль: в ответ должен прийти список доступных сущностей в XML. Ошибка 401 означает проблему с аутентификацией, 404 — сервис не опубликован или неверный адрес.

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

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

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

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

Код 200 и корректные данные в ожидаемом формате

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

401/403 (проблема с правами), 404 (сервис не опубликован), 500 (ошибка в обработчике)

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

Нет ошибок доступа и исключений по интеграционному пользователю

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

Повторяющиеся ошибки «Нарушение прав доступа» или необработанные исключения

Данные в базе
Норма

Записанные через API документы корректно проведены и видны в отчётах

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

Документы созданы с пустыми реквизитами или не проводятся

Ограничения и частые проблемы

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

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

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

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

FAQ

Можно ли настроить API в 1С без программиста?

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

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

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

Работает ли API в файловой базе 1С?

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

Как защитить API от несанкционированного доступа?

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

Почему внешняя система получает ошибку 403 при обращении к API?

Чаще всего у интеграционного пользователя нет прав на запрашиваемый объект. Проверьте его роль в конфигураторе и журнал регистрации — там фиксируется событие «Нарушение прав доступа» с указанием объекта. Реже причина в ограничении доступа на уровне записей (RLS).

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

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

Итог

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

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