Администрирование · 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. Часто используется для интеграции с корпоративными системами, где требуется строгий контракт обмена.
Сравнение способов доступа
Включается без доработок, удобен для чтения данных и простых интеграций. Ограничение: мало контроля над логикой, не подходит для сложных операций.
Полный контроль над логикой и форматом, работа с JSON. Требуют разработки в конфигураторе и тестирования.
Строгий контракт через 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 — это стандарт для современных интеграций.
Функция ПолучитьОстаток(Запрос)
КодТовара = Запрос.ПараметрыURL["Код"];
Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
Если Товар.Пустая() Тогда
Ответ = Новый HTTPСервисОтвет(404);
Возврат Ответ;
КонецЕсли;
// ... запрос остатков и формирование JSON
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(ТекстJSON);
Возврат Ответ;
КонецФункцииПосле разработки сервис нужно опубликовать: база размещается на веб-сервере (IIS или Apache), в настройках публикации включаются HTTP-сервисы. Без публикации на веб-сервере ни один внешний запрос до базы не дойдёт — файловая база «сама по себе» не принимает HTTP-обращения.
Как опубликовать базу и настроить доступ
Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». Указывается имя публикации, каталог, выбираются механизмы — OData, HTTP-сервисы или веб-сервисы. Для клиент-серверной базы публикация делается на сервере, где развёрнут веб-сервер с установленным модулем расширения 1С.
- 1Определите, какие данные и операции нужны внешней системе, и выберите механизм: OData, HTTP-сервис или SOAP.
- 2Создайте отдельного пользователя базы для интеграции с минимально необходимыми правами.
- 3При необходимости разработайте HTTP-сервис с обработчиками и протестируйте его локально.
- 4Опубликуйте базу на веб-сервере с включёнными нужными сервисами.
- 5Настройте HTTPS и проверьте доступ внешним запросом с аутентификацией.
- 6Проверьте журнал регистрации: запросы проходят, ошибок прав доступа нет.
Аутентификация чаще всего строится на базовой схеме: внешняя система передаёт логин и пароль пользователя 1С в заголовке запроса. Для повышения безопасности применяют токены, прокси-слой или шлюз, который скрывает прямой доступ к базе. Какой бы вариант ни выбрали, обязательны два условия: соединение только по HTTPS и отдельная учётная запись с ограниченными правами.
Права доступа и безопасность
Каждый запрос к API выполняется от имени конкретного пользователя 1С, и платформа применяет к нему стандартную систему прав. Если у пользователя нет права чтения справочника — внешняя система получит отказ, даже если сам сервис работает исправно. Это одновременно защита и частый источник ошибок «запрос не работает».
Правильная практика — завести отдельную роль «ИнтеграцияССайтом» и включить в неё только нужные объекты: например, чтение номенклатуры и цен, запись заказов покупателей. Никаких прав на регистры бухгалтерии, зарплату и административные функции. Если конфигурация поддерживает ограничение доступа на уровне записей (RLS), оно будет действовать и для API-запросов.
Как проверить, что доступ работает
Простейшая проверка — обратиться к опубликованному адресу из браузера или утилиты вроде 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, публикация только нужных сервисов и регулярное тестирование после обновлений.