OData / типовые веб-сервисы
- Десятки сущностей и неочевидные связи
- Долгий онбординг без 1С-разработчика
- XML или громоздкие схемы обмена
- Сложно отладить из Postman или curl
JSON и HTTP вместо OData: счета, акты, оплаты и поиск документов — для B2B-платформ и интеграторов
Для кого
Молодым разработчикам не нужно неделями разбирать OData, метаданные и внутреннюю модель 1С. Достаточно знать HTTP и JSON — как в любом современном веб-сервисе.
/invoices, /acts, /tax-invoices, /counterpartiesБыстрый старт
Штатными средствами 1С в конфигурацию «Бухгалтерия предприятия 3.0» (3.0.190.22+, в т.ч. КОРП).
Базовый URL: /{публикация}/hs/bit_http_api/. Создайте пользователя с ролью bitHttpApi_ОсновнаяРоль.
JSON с seller_inn, payer_inn и массивом items — счёт создаётся в 1С.
Из PHP, Python, Node — обычный HTTP-клиент. Суммы передаются в копейках (целые числа).
curl -X POST "https://your-1c/hs/bit_http_api/invoices" \
-u api_user:password \
-H "Content-Type: application/json" \
-d '{
"seller_inn": "7799434926",
"payer_inn": "770987654321",
"items": [{"name": "Услуга", "price": 100000, "quantity": 1}]
}'
Возможности
CRUD, списки за период с фильтрами, статус оплаты, PDF, поле comment, поиск по комментарию.
CRUD, списки по дате и счёту, связь с основанием, tax_invoice_id, PDF для клиента.
Создание по акту, получение сущности и PDF — для полного документооборота из B2B-платформы.
v0.3.0Поиск по ИНН, создание и обновление реквизитов — перед выставлением счетов из CRM или B2B-портала.
Примеры запросов →Для интеграторов
Типовые сценарии для backend-разработчика: найти партнёра по ИНН перед выставлением счёта, создать карточку из CRM или обновить реквизиты. JSON, Basic Auth, те же URL, что в Swagger.
Перед POST /invoices проверьте, есть ли партнёр в 1С. Если карточки нет — ответ 404,
создайте её через POST ниже.
Запрос
curl -X GET \
"https://your-1c/hs/bit_http_api/counterparties/771234567890" \
-u api_user:password
Ответ 200
{
"inn": "771234567890",
"kpp": "771301001",
"name": "ООО Ромашка",
"address": "г. Москва, ул. Ленина, 1",
"account_number": "40702810500000012345",
"bank_bik": "044525225",
"email": "example@mail.ru"
}
Обязательны inn и name; для юрлица — kpp.
После создания используйте payer_inn в счёте.
Запрос
curl -X POST \
"https://your-1c/hs/bit_http_api/counterparties" \
-u api_user:password \
-H "Content-Type: application/json" \
-d '{
"inn": "771234567890",
"kpp": "771301001",
"name": "ООО Ромашка",
"address": "г. Москва, ул. Ленина, 1",
"email": "example@mail.ru"
}'
Ответ 201
{
"inn": "771234567890",
"kpp": "771301001",
"name": "ООО Ромашка",
"address": "г. Москва, ул. Ленина, 1",
"account_number": null,
"bank_bik": null,
"email": "example@mail.ru"
}
Банковские реквизиты и контакты — без пересоздания карточки. ИНН в path не меняется.
Запрос
curl -X PUT \
"https://your-1c/hs/bit_http_api/counterparties/771234567890" \
-u api_user:password \
-H "Content-Type: application/json" \
-d '{
"name": "ООО Ромашка",
"account_number": "40702810500000012345",
"bank_bik": "044525225",
"email": "billing@romashka.ru"
}'
Ответ 200
{
"inn": "771234567890",
"kpp": "771301001",
"name": "ООО Ромашка",
"address": "г. Москва, ул. Ленина, 1",
"account_number": "40702810500000012345",
"bank_bik": "044525225",
"email": "billing@romashka.ru"
}
История продукта
У клиента была своя B2B-платформа, отдельно от 1С:Бухгалтерия. API стал мостом между ними — не «для интернет-магазина», а для связки учёта и портала
Практика
Как связали B2B-платформу заказчика с 1С:Бухгалтерия и развили расширение для других компаний с похожей задачей.
Читать кейс →Зачем отдельный REST-слой, чем он отличается от штатного обмена и с чего начать.
Обзор REST API →Минимальный curl, разбор JSON-ответа и импорт OpenAPI в Postman.
Создать счёт через API →Справочник
1С:Бухгалтерия предприятия 3.0 (3.0.190.22+, в т.ч. КОРП) · расширение bit_http_api · актуальная версия 0.4.0
Пошаговый POST счёта с curl — в статье Создать счёт через REST API.
REST API для интеграции 1С:Бухгалтерия с внешними системами через HTTP-запросы. Расширение устанавливается штатными средствами 1С:Предприятие.
Рекомендуется отдельный пользователь с ролями: bitHttpApi_ОсновнаяРоль, базовые права БСП, добавление и изменение данных бухгалтерии, удалённый доступ (OData). Для PDF-печати отключите безопасный режим — требуется временный файл на сервере.
/{ваша_публикация}/hs/bit_http_api/{полный_номер}_{дата} — пример: 0000-000596_20161227{номер}_{дата}_{ИНН_продавца}_{ИНН_покупателя} — пример: 123_20161227_7799434926_2286004196facsimile=0 отключает подписи и печати на форме (v0.1.2)Content-Type: application/json
Authorization: Basic {base64_credentials}
| Метод | Путь | Параметры | Описание | Ответ |
|---|---|---|---|---|
| GET | /invoices |
dateBegin, dateEnd, sellerInn, payerInn, offset, limit, comment |
Список счетов (v0.4.0). limit по умолчанию 10, offset — 0 |
Массив счетов |
| POST | /invoices |
seller_inn, payer_inn, items[], comment |
Создание счёта | Полная схема счёта |
| GET | /invoices/{id} |
?comment=1 — поиск по фрагменту в path (v0.2.0) |
Получение или поиск счёта | Полная схема |
| PUT | /invoices/{id} |
Все поля счёта | Редактирование (нельзя при оплатах) | Обновлённый счёт |
| DELETE | /invoices/{id} |
— | Удаление (нельзя при оплатах) | HTTP 204 |
| GET | /invoices/{id}/print |
?facsimile=0 |
PDF счёта | PDF в base64 |
| Метод | Путь | Параметры | Описание | Ответ |
|---|---|---|---|---|
| GET | /acts |
dateBegin, dateEnd, sellerInn, payerInn, offset, limit, invoiceId |
Список актов (v0.4.0). limit по умолчанию 10, offset — 0 |
Массив актов |
| POST | /acts |
seller_inn, payer_inn, invoice_id, items[] |
Создание акта | Созданный акт |
| GET | /acts/{id} |
— | Получение акта (в т.ч. tax_invoice_id, v0.3.0) |
Полная схема |
| PUT | /acts/{id} |
Все поля акта | Редактирование (нельзя при оплатах) | Обновлённый акт |
| DELETE | /acts/{id} |
— | Удаление (нельзя при оплатах) | HTTP 204 |
| GET | /acts/{id}/print |
?facsimile=0 |
PDF акта | PDF в base64 |
| Метод | Путь | Параметры | Описание | Ответ |
|---|---|---|---|---|
| POST | /tax-invoices |
act_id в JSON |
Создание счёта-фактуры на основании акта | Сущность «Счёт-фактура» |
| GET | /tax-invoices/{id} |
— | Получение счёта-фактуры по id | Полная схема |
| GET | /tax-invoices/{id}/print |
?facsimile=0 |
PDF счёта-фактуры (id из tax_invoice_id акта) |
PDF в base64 |
| Метод | Путь | Обязательные | Ответ |
|---|---|---|---|
| POST | /counterparties |
inn, name, kpp для юрлица |
Контрагент |
| GET | /counterparties/{inn} |
— | Данные контрагента |
| PUT | /counterparties/{inn} |
— | Обновлённые данные |
Успешные ответы — JSON. Ошибки — текст (ограничение платформы 1С).
| Код | Пример | Условие |
|---|---|---|
| 400 | «Не указаны обязательные поля: seller_inn» | Валидация |
| 401 | «Требуется авторизация» | Auth |
| 403 | «Документ имеет оплаты…» | Бизнес-правило |
| 404 | «Контрагент с ИНН … не найден» | Не найдено |
| 409 | «Контрагент уже существует» | Конфликт |
Суммы — целые числа в копейках.
{
"id": "СЧ-2024-001_20240515",
"number": "СЧ-2024-001",
"date": "2024-05-15",
"seller_inn": "7799434926",
"payer": { "inn": "771234567890", "name": "ООО Ромашка" },
"status": "paid",
"comment": "идентификатор в B2B-платформе",
"items": [{ "name": "Услуга", "price": 100000, "quantity": 2, "total": 200000 }],
"payments": [{ "date": "2024-05-16", "amount": 200000, "payment_method": "bank_transfer" }],
"total_amount": 200000,
"paid_amount": 200000
}
{
"id": "0000-000006_20260225",
"number": "0000-000006",
"date": "2026-02-25",
"seller_inn": "228601494276",
"payer": { "inn": "228601494276", "name": "ИП Антюхин Иван Иванович" },
"invoice_id": "СЧ-2024-001_20240515",
"tax_invoice_id": "0000-0000006_20260225",
"items": [
{ "name": "Услуга", "description": "Услуга", "price": 109865, "quantity": 1, "total": 109865 }
],
"total_amount": 269865,
"deleted": false,
"paid_amount": 0
}
tax_invoice_id — id счёта-фактуры, если оформлен; null, если нет (v0.3.0).
{
"id": "0000-0000006_20260225",
"number": "0000-0000006",
"date": "2026-02-25",
"seller_inn": "228601494276",
"payer": { "inn": "228601494276", "name": "ИП Антюхин Иван Иванович" },
"act_id": "0000-000006_20260225",
"total_amount": 269865,
"deleted": false
}
{
"inn": "771234567890",
"kpp": "771301001",
"name": "ООО Ромашка",
"address": "г. Москва, ул. Ленина, 1",
"account_number": "40702810500000012345",
"bank_bik": "044525225",
"email": "example@mail.ru"
}
POST /{публикация}/hs/bit_http_api/invoices
Content-Type: application/json
Authorization: Basic ...
{
"seller_inn": "7799434926",
"payer_inn": "770987654321",
"comment": "order-8842",
"items": [{ "name": "Услуга", "price": 1000000, "quantity": 1 }]
}
GET /{публикация}/hs/bit_http_api/invoices?dateBegin=2026-02-01&dateEnd=2026-02-28&sellerInn=7799434926&offset=0&limit=10
Authorization: Basic ...
GET /{публикация}/hs/bit_http_api/acts?invoiceId=СЧ-2024-001_20240515&limit=10
Authorization: Basic ...
GET /{публикация}/hs/bit_http_api/invoices/order-8842?comment=1
Authorization: Basic ...
POST /{публикация}/hs/bit_http_api/tax-invoices
Content-Type: application/json
Authorization: Basic ...
{ "act_id": "0000-000006_20260225" }
GET /{публикация}/hs/bit_http_api/invoices/СЧ-2024-001_20240515/print?facsimile=0
Authorization: Basic ...
GET /invoices?dateBegin=&dateEnd=&sellerInn=&payerInn=&offset=&limit=&comment=GET /acts?dateBegin=&dateEnd=&sellerInn=&payerInn=&offset=&limit=&invoiceId=limit=10, offset=0GET /acts/{id}) добавлено поле tax_invoice_id — id счёта-фактуры или nullPOST /tax-invoices — создание счёта-фактуры по act_idGET /tax-invoices/{id} — получение счёта-фактурыGET /tax-invoices/{id}/print — PDF счёта-фактуры/invoices/{фрагмент}?comment=1GET /counterparties/{inn}facsimile=0 для методов печати — без подписей и печатейcomment при создании счётаДля установки расширения и публикации HTTP-сервиса — да, один раз. Дальше веб-разработчик работает только с REST и JSON.
CommerceML — пакетный обмен файлами. REST API — оперативные запросы: создать счёт сейчас, сразу получить PDF, проверить оплату.
Базовое расширение заточено под 1С:Бухгалтерия предприятия 3.0 (3.0.190.22+). Дополнительные документы, поля и интеграции — по ТЗ, команда CodeLab.
В вашей базе 1С. API — тонкий HTTP-слой, не дублирует учёт во внешней БД.
Пошагово с curl и разбором ответа — в статье Создать счёт через REST API. Схема полей — в документации.
Скачать: bit_http_api-openapi.yaml. Полный справочник методов — HTTP-сервис bit_http_api.
Расскажите о системе, с которой нужно связать бухгалтерию — подберём формат обмена и сроки пилота.