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

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

API 1С: что это и как им пользоваться

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

API 1С — это набор программных интерфейсов, через которые внешние системы могут читать и изменять данные информационной базы: документы, справочники, остатки, проводки. Когда сайт выгружает заказы в «1С:Управление торговлей», а складская программа получает из неё остатки — это и есть работа через API. Само слово API (Application Programming Interface) переводится как «интерфейс прикладного программирования», то есть формальный договор о том, как одна программа обращается к другой.

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

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

Что такое API 1С и зачем он нужен

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

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

Важно понимать: API — это не отдельный продукт и не доработка конфигурации по умолчанию. Часть механизмов встроена в платформу (OData, COM, веб-сервисы), часть создаёт разработчик в конфигураторе (HTTP-сервисы, шаблоны обмена). Насколько «готов» API к использованию, зависит от конкретной конфигурации и её настроек.

Какие механизмы API существуют в 1С

Платформа «1С:Предприятие 8.3» предоставляет четыре основных способа внешнего доступа. Они различаются технологией, требованиями к инфраструктуре и объёмом доработок.

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

HTTP-сервисы — механизм, где разработчик сам описывает URL-шаблоны, методы (GET, POST и другие) и логику обработки на встроенном языке 1С. Это полноценный способ построить REST API под конкретную задачу: принять заказ, вернуть остатки по фильтру, зарегистрировать оплату. Требует программирования, но даёт полный контроль над форматом и проверками.

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

COM-соединение и внешние компоненты — вариант для локальной сети Windows, когда одна база 1С подключается к другой напрямую. Быстро и без веб-сервера, но не масштабируется и не подходит для доступа через интернет.

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

OData

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

HTTP-сервисы

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

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

Уместны в корпоративном контуре, где внешняя система работает по WSDL. Громоздкий формат, сложнее отладка.

COM-соединение

Работает только внутри локальной сети Windows, подходит для связки двух баз 1С. Не применять для доступа из интернета.

Как выбрать подходящий механизм под задачу

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

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

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

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

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

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

Как включить и опубликовать API 1С

Базовое условие для OData и HTTP-сервисов — публикация информационной базы на веб-сервере (IIS или Apache). Без веб-сервера внешние HTTP-запросы принимать нечем. Файловая база тоже может быть опубликована, но для регулярной интеграции надёжнее клиент-серверный вариант.

Для OData последовательность такая: в конфигураторе откройте свойства объектов, которые нужно открыть, и убедитесь, что они не исключены из стандартного интерфейса OData (по умолчанию большинство объектов доступно). Затем при публикации базы через диалог «Публикация на веб-сервере» отметьте флажок публикации стандартного интерфейса OData. После перезапуска веб-сервера данные станут доступны по адресу вида http://сервер/ИмяБазы/odata/standard.odata/.

Для HTTP-сервиса сначала создайте объект «HTTP-сервис» в конфигураторе: задайте корневой URL, шаблоны URL, методы и напишите код обработчиков. Затем при публикации включите флажок «Публиковать HTTP-сервисы». Проверьте, что в файле публикации (default.vrd) сервис присутствует.

Порядок действий
  1. 1
    Определите, какие данные и операции нужно открыть наружу, и выберите механизм (OData или HTTP-сервис)
  2. 2
    Установите и настройте веб-сервер (IIS или Apache) с модулем расширения 1С
  3. 3
    Опубликуйте базу через конфигуратор, включив нужный флажок публикации (OData или HTTP-сервисы)
  4. 4
    Создайте отдельного пользователя для интеграции и назначьте ему минимально необходимые права
  5. 5
    Проверьте доступность API запросом из браузера или curl с логином и паролем
  6. 6
    Настройте внешнюю систему и проведите тестовый обмен на копии базы
bash
curl -u ApiUser:Пароль "http://server/BaseName/odata/standard.odata/Catalog_Номенклатура?$format=json&$top=5"

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

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

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

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

Проверка работы и типичные ошибки

Проверку начинайте с самого простого запроса: откройте корневой URL OData или тестовый метод HTTP-сервиса в браузере. Если запрашивается логин и пароль и после ввода возвращается XML или JSON с данными — публикация работает. Ошибка 404 означает, что сервис не опубликован или неверно указан путь; ошибка 401 — проблема с аутентификацией; ошибка 500 — исключение в коде обработчика, его текст ищите в журнале регистрации.

Для OData полезно проверить метаданные по адресу .../odata/standard.odata/$metadata — там перечислены все доступные сущности. Если нужного объекта нет в списке, проверьте, что он не исключён из интерфейса OData в свойствах конфигурации и что у пользователя есть права на чтение.

После тестового обмена сверьте результат в самой 1С: созданные документы, корректность заполнения реквизитов, отсутствие дублей. Дубли — частый симптом повторной отправки запроса внешней системой при тайм-ауте; защищайтесь проверкой уникальности по внешнему идентификатору.

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

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

Доступность API
Норма

Запрос возвращает данные в JSON/XML после аутентификации

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

Ошибка 404 (не опубликовано) или 401 (проблема с логином)

Права пользователя
Норма

Доступны только нужные объекты, остальное отдаёт отказ

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

Интеграционный пользователь видит всю базу

Запись данных
Норма

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

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

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

Нагрузка
Норма

Сеансы API короткие, пользователи работают без задержек

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

Рост числа сеансов, зависание сервера при обмене

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

Ограничения и альтернативы API

У API-подхода есть границы. Стандартный OData не умеет выполнять произвольные запросы и агрегацию сложнее базовых фильтров; COM не работает через интернет и требует Windows; HTTP-сервисы требуют разработчика, который будет сопровождать код при обновлениях конфигурации. Каждый вызов API расходует серверные ресурсы, и при массовом обмене это ощутимо.

Альтернативы, которые стоит рассмотреть: планы обмена (для регулярной синхронизации между базами 1С), файловый обмен через CSV/XML/JSON по расписанию (для периодических выгрузок больших объёмов), готовые коннекторы и шины данных (для типовых связок с популярными CMS и маркетплейсами), а в типовых конфигурациях — встроенные механизмы обмена с сайтами на базе CommerceML.

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

Перед разработкой собственных HTTP-сервисов проверьте типовые механизмы конфигурации: во многих решениях уже есть готовый обмен с сайтом, синхронизация с CRM или подсистема интеграции. Настройка готового механизма обычно дешевле и надёжнее, чем написание и сопровождение собственного API.
ПЗ
Практическое замечание

Частые вопросы

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

Для OData и HTTP-сервисов веб-сервер обязателен — именно он принимает внешние запросы. Без веб-сервера доступны COM-соединение (только локально, Windows) и файловый обмен. Если ставить веб-сервер нельзя, рассмотрите обмен через промежуточные файлы или облачные сервисы интеграции.

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

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

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

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

Безопасно ли давать внешней системе доступ к 1С через API?

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

Что делать, если внешняя система требует формат, которого нет в 1С?

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

Нужно ли дорабатывать конфигурацию для работы API?

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

Итог

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

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