г. Минск, ул. К. Маркса, 32
+375 (29) 636 65 85
г. Минск, ул. К. Маркса, 32
Современные информационные системы редко работают изолированно. Интернет-магазин передает заказы в учетную систему, CRM получает данные о клиентах, службы доставки возвращают информацию о статусе отправлений, платежные сервисы подтверждают оплату, а внешние сервисы обмениваются с 1С товарами, ценами и остатками.
Одним из основных способов организовать такой обмен является API (Application Programming Interface) — программный интерфейс, который позволяет одной системе взаимодействовать с другой по заранее определенным правилам.
Для разработчика 1С работа с API становится важным навыком. Необходимо понимать, как отправлять HTTP-запросы, работать с JSON и XML, передавать параметры авторизации, обрабатывать ответы сервера и корректно реагировать на ошибки.
В этой статье разберем, как подключить 1С к API, какие технологии используются для интеграции, как устроен обмен данными и что важно учитывать при разработке.

API — это набор правил, по которым одна программа может обращаться к функциям или данным другой программы.
Например, интернет-магазину необходимо передать в 1С новый заказ. Вместо того чтобы сотрудник вручную переносил информацию из одной системы в другую, интернет-магазин может отправить HTTP-запрос в API 1С.
Упрощенно процесс выглядит так:
Интернет-магазин → HTTP-запрос → API 1С → обработка данных → ответ
Или в обратную сторону:
1С → HTTP-запрос → API внешнего сервиса → ответ → обработка в 1С
API может использоваться для самых разных задач:
Для разработчика 1С API фактически становится связующим звеном между учетной системой и внешним программным обеспечением.
Большинство современных API работают поверх протокола HTTP или HTTPS.
Когда 1С обращается к API, она формирует запрос, отправляет его на сервер и получает ответ.
Например:
1С
↓
HTTP-запрос
↓
https://api.example.com/products
↓
API внешнего сервиса
↓
JSON-ответ
↓
1ССам запрос может содержать:
Ответ сервера обычно содержит:
При работе с API чаще всего используются четыре HTTP-метода:
| Метод | Назначение |
|---|---|
| GET | Получение данных |
| POST | Создание или отправка данных |
| PUT | Полное изменение существующего объекта |
| PATCH | Частичное изменение объекта |
| DELETE | Удаление объекта |
Рассмотрим их подробнее.
GET используется, когда необходимо получить информацию.
Например:
GET /api/productsСистема может вернуть список товаров.
Другой пример:
GET /api/products/123В этом случае запрашивается товар с идентификатором 123.
POST обычно используется для создания нового объекта или отправки данных.
Например, 1С может отправить новый заказ:
POST /api/ordersВ теле запроса передается информация о заказе:
{
"customer": "Иван Петров",
"product": "Ноутбук",
"quantity": 1
}PUT используется для полного обновления объекта.
Например:
PUT /api/products/123В запросе передается новый набор данных товара.
PATCH применяется, когда необходимо изменить только отдельные поля.
Например, если нужно поменять только цену:
PATCH /api/products/123{
"price": 1500
}DELETE используется для удаления объекта:
DELETE /api/products/123Однако возможность удаления зависит от конкретного API.
Один из наиболее распространенных вариантов API — REST API.
REST (Representational State Transfer) — архитектурный подход, который широко используется при создании веб-сервисов.
REST API обычно работает через HTTP и активно использует JSON.
Например:
GET https://api.example.com/users/25Ответ:
{
"id": 25,
"name": "Ivan",
"email": "ivan@example.com"
}Для 1С это особенно удобно, поскольку платформа позволяет работать с HTTP-запросами и преобразовывать JSON в структуры данных 1С.
При интеграции 1С с API разработчик должен понимать форматы данных.
На практике наиболее часто встречаются:
Сегодня во многих REST API используется именно JSON.
Например:
{
"id": 1001,
"name": "Ноутбук",
"price": 2500,
"quantity": 5
}В 1С эти данные можно преобразовать в структуру.
Например:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ);
Данные = ПрочитатьJSON(ЧтениеJSON);После этого можно обращаться к значениям:
Наименование = Данные.name;
Цена = Данные.price;
Количество = Данные.quantity;Конкретный способ обработки зависит от структуры JSON и используемой версии платформы.
Для работы с HTTP в 1С используются специальные объекты платформы.
Один из базовых вариантов — объект:
HTTPСоединениеС его помощью можно установить соединение с сервером.
Например:
Соединение = Новый HTTPСоединение("api.example.com");После этого создается HTTP-запрос:
Запрос = Новый HTTPЗапрос("/api/products");И выполняется:
Ответ = Соединение.Получить(Запрос);Полученный объект Ответ содержит информацию, которую вернул сервер.
Например, можно получить код состояния:
КодСостояния = Ответ.КодСостояния;И тело ответа:
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();Предположим, внешний сервис предоставляет API:
https://api.example.com/productsНужно получить список товаров.
Примерная реализация:
Соединение = Новый HTTPСоединение("api.example.com");
Запрос = Новый HTTPЗапрос("/products");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
Данные = ПрочитатьJSON(ЧтениеJSON);
КонецЕсли;В реальном проекте необходимо дополнительно учитывать:
Теперь рассмотрим более практический пример.
Допустим, 1С должна отправить заказ во внешнюю систему.
Сначала создадим структуру данных:
ДанныеЗаказа = Новый Структура;
ДанныеЗаказа.Вставить("number", "000123");
ДанныеЗаказа.Вставить("customer", "Иван Петров");
ДанныеЗаказа.Вставить("amount", 1500);Затем преобразуем структуру в JSON:
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеЗаказа);
JSONСтрока = ЗаписьJSON.Закрыть();Создаем HTTP-запрос:
Запрос = Новый HTTPЗапрос("/api/orders");
Запрос.Заголовки.Вставить(
"Content-Type",
"application/json"
);
Запрос.УстановитьТелоИзСтроки(
JSONСтрока,
КодировкаТекста.UTF8,
ИспользованиеByteOrderMark.НеИспользовать
);После этого отправляем запрос:
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);Конкретный код может отличаться в зависимости от конфигурации, версии платформы и требований API.
Практически любой реальный API требует авторизации.
Сервис должен понимать, кто обращается к нему и имеет ли клиент право выполнять определенные операции.
Наиболее распространенные варианты:
Один из простых вариантов — передавать специальный ключ в заголовке.
Например:
Authorization: Api-Key 123456789В 1С:
Запрос.Заголовки.Вставить(
"Authorization",
"Api-Key " + APIКлюч
);Реальный формат заголовка определяется документацией конкретного API.
Другой распространенный вариант:
Authorization: Bearer eyJhbGciOi...В 1С:
Запрос.Заголовки.Вставить(
"Authorization",
"Bearer " + Токен
);Важно не хранить токены непосредственно в исходном коде конфигурации.
Например, не стоит делать так:
Токен = "123456789abcdef";Безопаснее хранить секретные данные в настройках, защищенном хранилище или другом подходящем механизме.
OAuth 2.0 используется, когда авторизация API требует более сложного механизма получения и обновления токенов.
Упрощенно схема может выглядеть так:
1С
↓
Запрос токена
↓
Сервер авторизации
↓
Access Token
↓
1С
↓
APIПри этом access token может иметь ограниченный срок действия.
Разработчику необходимо учитывать:
Заголовки позволяют передать дополнительную информацию серверу.
Например:
Content-Type: application/json
Authorization: Bearer TOKEN
Accept: application/jsonВ 1С заголовки можно установить следующим образом:
Запрос.Заголовки.Вставить(
"Content-Type",
"application/json"
);
Запрос.Заголовки.Вставить(
"Accept",
"application/json"
);Какие именно заголовки нужны, всегда следует смотреть в документации API.
Иногда данные передаются непосредственно в URL.
Например:
/api/products?category=computer&limit=20Здесь:
category — категория;computer — значение параметра;limit — количество результатов.Такие параметры часто используются при фильтрации и постраничной загрузке.
Например:
/api/orders?page=2&limit=100Это может означать запрос второй страницы по 100 заказов.
Еще один вариант — параметры непосредственно в пути.
Например:
/api/products/123Здесь 123 — идентификатор товара.
В 1С URL может формироваться программно:
Идентификатор = 123;
Путь = "/api/products/" + Строка(Идентификатор);
Запрос = Новый HTTPЗапрос(Путь);При этом важно корректно обрабатывать специальные символы и кодирование параметров.
Получить ответ недостаточно. Необходимо проверить, успешно ли был выполнен запрос.
Для этого используется HTTP-код состояния.
Основные коды:
| Код | Значение |
|---|---|
| 200 | Успешный запрос |
| 201 | Объект создан |
| 204 | Успешно, но без содержимого |
| 400 | Некорректный запрос |
| 401 | Требуется авторизация |
| 403 | Доступ запрещен |
| 404 | Объект не найден |
| 409 | Конфликт |
| 429 | Слишком много запросов |
| 500 | Ошибка сервера |
| 502 | Ошибка шлюза |
| 503 | Сервис временно недоступен |
Например:
Если Ответ.КодСостояния >= 200
И Ответ.КодСостояния < 300 Тогда
// Успешный ответ
Иначе
// Обработка ошибки
КонецЕсли;Такой подход надежнее, чем проверять только один конкретный код.
Интеграция может работать идеально во время тестирования, но столкнуться с проблемами после запуска в рабочей среде.
Например:
Поэтому код интеграции должен предусматривать обработку исключений.
Например:
Попытка
Ответ = Соединение.Получить(Запрос);
Исключение
ЗаписатьВЖурналРегистрации(
"Ошибка при обращении к API: "
+ ОписаниеОшибки()
);
КонецПопытки;В рабочей системе желательно дополнительно сохранять информацию о запросе и ответе, но без записи чувствительных данных и секретов.
Логирование помогает понять, что произошло во время обмена.
Например, полезно фиксировать:
Например:
12:45:03
Операция: Отправка заказа
Заказ 1С: 000123
HTTP: POST
Ответ: 201
Результат: успешноПри ошибке:
12:47:18
Операция: Отправка заказа
Заказ 1С: 000124
HTTP: POST
Ответ: 400
Ошибка: Некорректный формат датыТакие журналы значительно упрощают поиск проблем.
Код 401 Unauthorized обычно связан с проблемами авторизации.
Проверить стоит:
Authorization.Например, если API ожидает:
Authorization: Bearer TOKENа разработчик отправляет:
Authorization: TOKENсервер может отклонить запрос.
Код 429 Too Many Requests означает, что клиент отправил слишком много запросов за определенный период.
Например, API может разрешать только:
100 запросов в минутуЕсли 1С отправляет больше, сервер временно ограничивает доступ.
При проектировании интеграции необходимо учитывать rate limit — ограничение количества запросов.
Могут применяться:
Практически любую интеграцию можно разбить на несколько этапов.
Перед написанием кода нужно понять:
Удобно сначала протестировать API с помощью инструментов вроде Postman или аналогичных клиентов.
Например:
GET
https://api.example.com/productsЕсли запрос работает вне 1С, разработчику будет проще перенести его логику в код 1С.
Получить API Key или токен, если этого требует сервис.
В 1С формируется:
Например:
Ответ = Соединение.ВызватьHTTPМетод(
"POST",
Запрос
);Необходимо определить, был ли запрос успешным.
Если API возвращает JSON, его необходимо преобразовать в структуру данных 1С.
Полученные данные могут использоваться для:
Интеграция должна корректно работать не только при успешном ответе.
Это особенно важно для фонового обмена, который выполняется без участия пользователя.
При интеграции важно понимать разницу между синхронным и асинхронным взаимодействием.
1С отправляет запрос и ждет ответа.
1С → API → ответ → 1СТакой подход удобен, если ответ необходим сразу.
Например:
Но если внешний сервис отвечает долго, пользователь может ждать завершения операции.
Запрос или обработка выполняется отдельно от пользовательского действия.
Например:
Пользователь
↓
1С
↓
Фоновое задание
↓
API
↓
Обработка ответаДля больших объемов данных асинхронный подход часто оказывается более удобным.
В 1С для подобных задач могут использоваться фоновые задания, регламентные задания и другие механизмы платформы.
Представим, что необходимо передать из 1С 100 000 товаров.
Плохой вариант — отправлять каждый товар отдельным HTTP-запросом:
1 товар → запрос
1 товар → запрос
1 товар → запрос
...Это может привести к:
Если API поддерживает пакетную обработку, лучше передавать данные группами:
100 товаров → запрос
100 товаров → запрос
100 товаров → запросЕще лучше — использовать предусмотренные API механизмы массовой загрузки.
При получении большого списка данных API часто использует пагинацию.
Например:
/api/products?page=1&limit=100
/api/products?page=2&limit=100
/api/products?page=3&limit=1001С должна последовательно получать страницы и объединять результаты.
Условно:
Получить страницу 1
↓
Есть следующая?
↓ ↓
Да Нет
↓ ↓
Страница 2 Завершить
↓
...Важно учитывать, как именно конкретный API сообщает о наличии следующей страницы.
Это может быть:
next;nextPage;Не всегда 1С должна постоянно спрашивать внешний сервис:
Есть новый заказ?
Есть новый заказ?
Есть новый заказ?Для некоторых интеграций используется webhook.
В этом случае внешний сервис сам отправляет HTTP-запрос, когда происходит определенное событие.
Например:
Покупатель оформил заказ
↓
Интернет-магазин
↓
Webhook
↓
1С
↓
Создание заказаЭто позволяет уменьшить количество постоянных запросов.
При использовании webhook 1С должна предоставить внешний HTTP-сервис, который сможет принимать входящие запросы.
Платформа 1С позволяет не только обращаться к внешним API, но и создавать собственные HTTP-сервисы.
Это означает, что 1С сама может выступать в роли API-сервера.
Например, внешний сайт может отправить запрос:
POST /api/orderа 1С получит данные и создаст документ.
Таким образом, интеграции можно строить в обе стороны:
1С → внешний APIили:
Внешняя система → API 1СЭто один из важных моментов, который должен понимать разработчик.
При работе с внешними сервисами нельзя забывать о безопасности.
Передача данных должна выполняться по защищенному соединению.
Вместо:
http://example.comобычно следует использовать:
https://example.comAPI-ключи, пароли и токены не стоит жестко прописывать в модулях.
Плохо:
Пароль = "MySecretPassword123";При публикации конфигурации такой подход создает дополнительный риск.
Например, не следует сохранять:
Authorization: Bearer eyJhbGciOi...в журнал, доступный большому количеству пользователей.
В логах лучше использовать маскирование:
Authorization: Bearer ******Многие API предоставляют отдельные среды:
Test
ProductionРазработчику важно не перепутать их.
В тестовой среде можно безопасно проверять:
После завершения тестирования настройки меняются на рабочие.
Разработчик начинает писать код, не разобравшись в формате API.
В результате возникают проблемы с:
Решение: сначала изучить документацию и протестировать основные запросы.
Код работает, пока API отвечает 200.
Но что произойдет при:
401
403
404
429
500Если обработка отсутствует, пользователь может получить непонятную ошибку.
Решение: предусмотреть обработку различных групп HTTP-кодов.
Внешний сервер может зависнуть или отвечать слишком долго.
Если интеграция не учитывает это, пользовательская операция может выполняться неопределенно долго.
Временная ошибка сервиса не всегда означает, что операция окончательно провалилась.
Для некоторых ошибок можно реализовать повторную попытку с задержкой.
Однако повторять запросы автоматически можно не всегда. Например, повторная отправка POST может привести к созданию дубликата.
При интеграциях нужно понимать, может ли повторный запрос изменить результат.
Представим:
1С отправила заказ
↓
API создало заказ
↓
ответ потерялся
↓
1С повторяет запросЕсли API не умеет различать повторную операцию, могут появиться два одинаковых заказа.
Для защиты от таких ситуаций используются, например:
Это особенно важно для финансовых операций, заказов и других критически важных данных.
Для полноценной работы с интеграциями полезно знать несколько областей.
Нужно понимать:
Разработчик должен уметь:
Необходимо понимать:
Важно уметь проектировать:
Нужно знать:
Перед публикацией интеграции стоит проверить:
API работает в тестовой среде.
Документация изучена.
Настроена авторизация.
Используется HTTPS.
Правильно формируются URL.
Заголовки передаются корректно.
JSON формируется без ошибок.
Ответ API корректно разбирается.
Обрабатываются HTTP-ошибки.
Предусмотрены тайм-ауты.
Учитываются ограничения API.
Реализована пагинация, если она необходима.
Предусмотрена обработка повторных запросов.
Есть логирование.
Секретные данные не попадают в логи.
Проверены большие объемы данных.
Тестовый и рабочий контуры разделены.
Проведены тесты на недоступность внешнего сервиса.
Подключение 1С к API — это не просто создание одного HTTP-запроса. Полноценная интеграция включает целый набор задач: от изучения документации и настройки авторизации до обработки ошибок, логирования и обеспечения безопасности.
Базовую схему можно представить так:
API
│
┌─────────┴─────────┐
│ │
1С Внешняя система
│ │
└──── HTTP/JSON ────┘Разработчику необходимо понимать, как:
Чем больше интеграций появляется в информационной системе, тем важнее становится не только умение написать код, но и понимание архитектуры обмена данными.
Интеграция 1С с API — один из востребованных навыков современного 1С-разработчика. С помощью API учетную систему можно связать практически с любым сервисом, который предоставляет программный интерфейс: интернет-магазином, CRM, сайтом, платежной системой, службой доставки или корпоративным приложением.
Для начала достаточно разобраться в базовых понятиях: HTTP, REST API, JSON, HTTP-запросы, авторизация и обработка ответов. После этого можно переходить к более сложным задачам — асинхронному обмену, webhook, пагинации, очередям, повторным запросам и оптимизации интеграций.
Главный принцип надежной интеграции прост: разработчик должен учитывать не только ситуацию, когда внешний API работает идеально, но и все сценарии, при которых сервис недоступен, возвращает ошибку или присылает неожиданные данные.
В IT ШАГ можно изучить программирование и 1С-разработку на практике — от основ алгоритмов и работы с данными до создания реальных приложений и автоматизации бизнес-процессов.
Обучение помогает системно разобраться в программировании, базах данных, архитектуре приложений и инструментах, которые используются разработчиками в современных IT-проектах.
Если вы хотите связать обучение с будущей профессией в IT, изучение 1С и навыков интеграции с внешними сервисами может стать хорошей основой для дальнейшего развития в направлении разработки и автоматизации.
Вы можете настроить использование каждого типа файлов cookie, за исключением типа «технические/функциональные (обязательные) cookie», без которых невозможно корректное функционирование сайта itstep.by (далее – Сайт).
Сайт запоминает Ваш выбор настроек на 1 год. По окончании этого периода Сайт снова запросит Ваше согласие. Вы вправе изменить свой выбор настроек файлов cookie (в т.ч. отозвать согласие) в любое время в интерфейсе Сайта путем перехода по ссылке в нижней части страницы Сайта «Выбор настроек cookie».
Перед тем как совершить выбор настроек параметров использования файлов cookie Вы можете ознакомиться с Политикой обработки файлов cookie ООО «АЙТИ ШАГ СФЕРА», а также со списком файлов cookie.
Данные cookie-файлы необходимы в статистических целях, позволяют подсчитывать количество и длительность посещений Сайта, анализировать как посетители используют Сайт, что помогает улучшать его производительность и сделать более удобным для использования. Запретить хранение данного типа cookie-файлов можно непосредственно на Сайте либо в настройках браузера. Со списком данных файлов Вы можете ознакомиться здесь.
Данные cookie-файлы необходимы в статистических целях, позволяют подсчитывать количество и длительность посещений Сайта, анализировать как посетители используют Сайт, что помогает улучшать его производительность и сделать более удобным для использования. Запретить хранение данного типа cookie-файлов можно непосредственно на Сайте либо в настройках браузера. Со списком данных файлов Вы можете ознакомиться здесь.
Рекламные cookie-файлы используются для целей маркетинга и улучшения качества рекламы (предоставление более актуального и подходящего контента и персонализированного рекламного материала). Запретить хранение данного типа cookie-файлов можно непосредственно на Сайте либо в настройках браузера. Со списком данных файлов Вы можете ознакомиться здесь.
