Перейти до вмісту

HTTP-сервіси 1С

Матеріал з K2 ERP Wiki
 

{

GET /hs/api/stock?warehouse=MAIN&date=2026-05-15

КонецЕсли;
]
 
! # Зовнішня платформа перевіряє статус. Потрібно враховувати:

 }
<syntaxhighlight lang="json">
{| class="wikitable" style="width:100%;"
}

 "date": "2026-05-15T12:00:00",

POST /orders з тим самим external_id щоразу створює новий документ. або:

== Типові питання ==

* сайт передає замовлення в 1С;
* CRM отримує статуси оплат;
* WMS отримує задача на відвантаження;
* MES отримує виробничі замовлення;
* банк передає статус платежу;
* мобільний застосунок отримує залишки;
* маркетплейс отримує ціни;
* Power BI або аналітичний шар отримує інформаційні дані;
* K2 ERP отримує інформаційні дані під час міграції;
* зовнішня платформа перевіряє контрагента;
* служба доставки отримує інформаційні дані для ТТН. Метод

== Авторизація HTTP-сервісів ==

 "external_id": "WEB-10025",

 "order_number": "000000123",

* компактний;
* зручний для web API;
* добре підтримується більшістю мов;
* швидко читати;
* підходить для REST;
* зручний для мобільних застосунків. Що означає
 "external_id": "WEB-10025",
== Обробка помилок ==

 "correlation_id": "7b9f4c2e-1d22-4a9d-9201-abc123"

! |-
| Що найчастіше ламається? "items": [

</div>

[[Категорія:Міграція з BAS]]

* базовий URL;
* список endpoint-ів;
* методи;
* заголовки;
* авторизація;
* приклади запитів;
* приклади відповідей;
* HTTP-коди;
* поля;
* типи даних;
* обов’язкові поля;
* помилки;
* правила external_id;
* обмеження;
* контакти відповідальних.<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

== Безпека HTTP-сервісів ==

== HTTP-сервіс для залишків ==
[[Категорія:HTTP-сервіси 1С]]

 Возврат Ответ;

 СкладКод = Запрос.ПараметрыURL.Получить("warehouse");
}
рішення для бізнесу:

[[Категорія:ПДВ]]
}

Що не можна робити в HTTP-сервісі

Приклад відповіді після створення замовлення: X-Correlation-ID: 7b9f4c2e-1d22-4a9d-9201-abc123

Данные = ПрочитатьJSON(ЧтениеJSON);

{

"quantity": 10
  • токени;
  • логіни;
  • паролі;
  • замовлення;
  • банківські інформаційні дані;
  • персональні інформаційні дані;
  • ціни;
  • залишки;
  • комерційну інформацію. |-

| Що найважливіше?== Таймаути ==

"price": 1200
  • джерелом даних для міграції;
  • тимчасовим bridge між старою і новою системою;
  • старою інтеграцією, яку потрібно замінити;
  • способом паралельного запуску;
  • джерелом контрольних сум;
  • каналом для синхронізації довідників. Його краще використовувати тільки для читання. Елемент 1С HTTP-сервісу
  • помилка коду 1С;
  • не знайдено реквізит;
  • неправильний JSON;
  • помилка запису документа;
  • немає прав;
  • помилка транзакції;
  • помилка проведення;
  • блокування;
  • недоступна СУБД;
  • помилка розширення. # Адресу /hs/. Зовнішня платформа надсилає GET, POST, PUT або DELETE-запит, а 1С обробляє його кодом мовою 1С і повертає відповідь. Такі сервіси використовуються для інтеграцій із сайтами, CRM, WMS, MES, банками, мобільними застосунками, зовнішніми API, сервісами доставки, маркетплейсами, BI-системами і міграційними інструментами. Можна тільки з належним захистом: HTTPS, авторизація, токени, обмеження прав, firewall, журналювання, перевірка запитів, обмеження розміру і моніторинг. {| class="wikitable" style="width:100%;"
  • складський облік;
  • дату;
  • характеристику;
  • серію;
  • партію;
  • резерв;
  • доступний залишок;
  • одиницю виміру. Якщо такі сервіси працюють у ризиковому або підсанкційному ПЗ, компанії потрібно оцінити юридичні, технічні й кібербезпекові ризики та планувати перехід на безпечну ERP-платформу. Але ці двері мають мати замок, журнал відвідувачів, правила доступу і контроль того, хто що здатна робити. "message": "Order created"

!== Помилка: дублюються замовлення == Реплікатор K2 здатна допомогти при переході з HTTP-інтеграцій або BAS у K2 ERP.

Таку функцію інтуїтивно винести в загальний компонент.</syntaxhighlight>

! | Документований REST API з JSON, логами, токенами, статусами і моніторингом. | HTTPS, авторизація, external_id, логування, валідація, права і контроль дублів. Значення

</syntaxhighlight>

Права користувача HTTP-сервісу

HTTP-сервіс для оплат

Що перевірити перед міграцією HTTP-сервісів

"code": "payload_too_large",
"amount": 2400,
Данные.Вставить("date", Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"));
Данные = Новый Структура;
Ответ.УстановитьТелоИзСтроки(ТелоОтвета, КодировкаТекста.UTF8);

HTTP-сервіс і REST API

Функция ОтриматиЗалишки(Запрос)

HTTPS

Если Не ЗначениеЗаполнено(Токен) Тогда
"status": "success",
// Заповнюється контрагент, товари, ціни, складський облік, ПДВ
  • не приймати файл на сотні мегабайт;
  • розбивати великі імпорти на частини;
  • використовувати чергу;
  • приймати тільки зміни;
  • повертати помилку при перевищенні ліміту. Через них можна приймати замовлення, передавати залишки, оновлювати ціни, отримувати платежі, синхронізувати довідники, обмінюватися статусами і будувати інтеграції з іншими системами. У 1С це не завжди “чистий REST” у строгому архітектурному сенсі, але для бізнес-інтеграцій такий підхід часто достатній. # Код читає JSON.
  • старих систем;
  • CommerceML;
  • SOAP-подібних обмінів;
  • електронного документообігу;
  • державних або корпоративних форматів. ]

конкурентні переваги:

 ]
! '''HTTP-сервіс 1С — це не без зусиль URL.''' Це повноцінна точка входу в ERP, яка здатна читати і змінювати критичні бізнес-дані. Що перевірити:

 "sku": "SKU-001",

* список HTTP-сервісів;
* список endpoint-ів;
* методи;
* приклади запитів;
* приклади відповідей;
* авторизацію;
* токени;
* користувачів 1С;
* права;
* журнали;
* external_id;
* залежні зовнішні системи;
* розклад викликів;
* обсяги даних;
* помилки;
* відповідальних;
* бізнес-процеси, які залежать від API.<syntaxhighlight lang="json">
Приклад відповіді:
{| class="wikitable" style="width:100%;"
 }
Приклад:

! | Найчастіше JSON, іноді XML. | API endpoint у 1С/BAS для обробки HTTP-запитів. Метод |- | Сервіс відкритий без авторизації | API опублікували без захисту | Витік або зміна даних |- | Завжди повертається 200 | Помилки не відображаються HTTP-кодами | Зовнішня платформа не розуміє проблему |- | Немає external_id | Не контролюються дублікати | Документи створюються повторно |- | Важка логіка в одному POST | Документи створюються і проводяться синхронно | Таймаути і блокування |- | Немає логування | Помилки не зберігаються | Неможливо підтримувати інтеграцію |- | API функціонує від адміністратора | Службовому користувачу дали повні права | Ризик витоку і зміни даних |- | Немає HTTPS | інформаційні дані передаються відкрито | Перехоплення токенів і даних |}

</syntaxhighlight>

API-ключ

  • база не опублікована;
  • неправильний URL;
  • неправильна назва сервісу;
  • неправильний шлях шаблону;
  • web-сервер не налаштований;
  • сервіс не включений у конфігурації;
  • зміни не оновлені в базі;
  • URL має інший регістр або структуру. Через HTTP-сервіси 1С здатна приймати і віддавати інформаційні дані через HTTP-запити забезпечується через HTTP-сервіси 1С. Типове використання

}

{

У 1С код має перевірити ключ до виконання бізнес-логіки. Можливі сценарії:

  • довідники;
  • документи;
  • залишки;
  • ціни;
  • взаєморозрахунки;
  • статуси;
  • зовнішні ID;
  • контрольні звіти.
    '''Головне.''' HTTP-сервіс 1С  це спосіб зробити API до 1С/BAS: прийняти замовлення з сайту, віддати залишки, оновити статус, отримати оплату, передати ціни або підготувати інформаційні дані для міграції. # Код записує зовнішній ID.[[Категорія:JSON]]
     КонецЕсли;
    Держспецзв’язку веде перелік забороненого до використання програмного забезпечення та комунікаційного обладнання; у переліку згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і BAS ERP. HTTP-сервіс у 1С/BAS
    Проблеми:
    HTTP-сервіси потрібні для інтеграції 1С/BAS із зовнішнім світом. # 1С викликає метод HTTP-сервісу.== Коротко ==
    
    == Помилка: HTTP 401 або 403 ==
    
    [[Категорія:Права доступу]]
    
    [[Категорія:Power BI]]
     Возврат Истина;
    [[Категорія:Сервер 1С]]
    == Черга обробки ==
    |-
    | GET
    | /hs/api/products
    | Отримати товари
    |-
    | GET
    | /hs/api/stock?warehouse=MAIN
    | Отримати залишки
    |-
    | POST
    | /hs/api/orders
    | Створити замовлення
    |-
    | POST
    | /hs/api/payments
    | Завантажити оплату
    |-
    | PUT
    | /hs/api/orders/WEB-10025/status
    | Оновити статус
    |-
    | DELETE
    | /hs/api/orders/WEB-10025
    | Скасувати або видалити, якщо така логіка дозволена
    |}
    
    Залишки краще отримувати з регістрів, а не з документів. 
    
    [[Категорія:XML 1С]]
    
    * типу ціни;
    * валюти;
    * дати;
    * номенклатури;
    * характеристики;
    * контрагента;
    * знижок;
    * прайс-листа. {| class="wikitable" style="width:100%;"
    
     Возврат ВідповідьJSON(201, "success", "Order created");
    
    X-API-Key: 1234567890abcdef
    
    При описі HTTP-сервісів [[1С]] і [[BAS]] в українському контексті потрібно згадувати санкційні та безпекові ризики. # Web-сервер передає запит у 1С. "total": 2500,
    

Для нових інтеграцій частіше краще HTTP-сервіс із JSON. Причина

історично виступає як російською програмною екосистемою.

SEO title: HTTP-сервіси 1С — REST API, JSON, XML, GET, POST, інтеграції, авторизація, помилки і міграція в K2 ERP

SEO keywords: HTTP-сервіси 1С, HTTP сервисы 1С, REST API 1С, API 1С, JSON 1С, XML 1С, web-сервіс 1С, інтеграція 1С, BAS API, K2 ERP, міграція з 1С

</noinclude>
 {{SEO
Шаблон для службового SEO-опису сторінки. 

}}


 "name": "ТОВ Ромашка"
HTTP-сервіси часто використовуються як альтернатива [[COM-з’єднання 1С|COM-з’єднанню]], файловому обміну, FTP, ручним обробкам або старим SOAP/XML-інтеграціям. Без пагінації великий запит здатна перевантажити 1С. # Повернути відповідь. конкурентні переваги:

* 401 — користувач системи не авторизований;
* 403 — користувач системи авторизований, але дія заборонена. Токен = Запрос.Заголовки.Получить("Authorization");
ЗаписьJSON = Новый ЗаписьJSON;

Для регулярної аналітики краще використовувати окремий BI-шар, репліку, сховище або Power BI-датасет, а не постійно навантажувати робочу базу HTTP-запитами. Для цього потрібно зберігати external_id у документі або окремому регістрі відомостей. Приклад: Приклад журналу: Типова логіка:

Реплікатор K2 і HTTP-сервіси 1С

XML здатна бути потрібен для:

Данные = Новый Структура;

Причини:

GET-запит у HTTP-сервісі

HTTP-сервіс для сайту

ExternalID = Данные.external_id;

Для критичних даних одного IP whitelist недостатньо. Формат

У реальному проєкті токен не можна зберігати відкритим текстом у коді. HTTPСервис: API Погані практики: Приклад помилки:

Тело = Запрос.ПолучитьТелоКакСтроку();

Логування HTTP-сервісів

! Відповідь

Ответ.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8);

GET застосовується для для отримання даних. * аналізу старих endpoint-ів;

  • вивантаження довідників;
  • вивантаження документів;
  • вивантаження регістрів;
  • формування контрольних сум;
  • перевірки external_id;
  • підготовки JSON;
  • заміни старих HTTP API;
  • підготовки даних для Power BI;
  • паралельного запуску 1С/BAS і K2 ERP;
  • порівняння старої і нової системи. # Сформувати JSON. Правильна міграція — це не копіювання старих endpoint-ів “як виступає як”, а перенесення корисної інтеграційної логіки в сучасну ERP-архітектуру: REST API, JSON, версії API, токени, audit log, фонові задачі, черги, Power BI, контроль прав і моніторинг. У реальному коді потрібно опрацьовувати помилки, права, транзакції, обов’язкові поля, external_id і логування. КонецФункции
"transaction_id": "PAY-98765",
}

Типові сценарії:

Данные.Вставить("status", Статус);

Помилка: HTTP 404

Публікація API без контролю доступу виступає як серйозним ризиком безпеки. # Назву HTTP-сервісу.

Так зовнішній системі легше зрозуміти, що саме сталося. HTTP-запити мають обмеження часу. "price_type": "RETAIL",
 "items": []
HTTP-сервіс має обмежувати розмір тіла запиту. Дія

! * базова авторизація web-сервера;
* користувач системи 1С;
* API-ключ;
* Bearer token;
* HMAC-підпис;
* IP whitelist;
* reverse proxy з авторизацією;
* VPN;
* сертифікати;
* поєднання кількох механізмів. "order_external_id": "WEB-10025"

 "price": 1200

 "warehouse": "MAIN",

* ім’я сервісу;
* кореневий URL;
* шаблони URL;
* HTTP-методи;
* обробники методів;
* параметри шляху;
* параметри запиту;
* код відповіді;
* заголовки;
* тіло відповіді. Після перенесення потрібно звірити:
[[Категорія:Реплікатор K2]]
== Структура HTTP-сервісу в конфігурації ==
[[Категорія:Рухи документа]]

 "status": "accepted",

== Валідація запитів ==

Сервер 1С

* прийом webhook про платіж;
* отримання виписки;
* передачу платіжного доручення;
* перевірку статусу;
* обробку комісії;
* звірку транзакцій. # Виконати запит до регістру накопичення. ! URL

# HTTP-сервіс приймає запит. HTTP 500 означає внутрішню помилку.== Приклад обробника POST у 1С ==

[[Категорія:MES]]
== Публікація HTTP-сервісу ==
== HTTP-сервіс і Power BI ==
<syntaxhighlight lang="json">
|-
| API замовлень
| REST API K2 ERP
| Потрібні external_id і статуси
|-
| API залишків
| Stock API або BI-шар
| Важлива продуктивність
|-
| API цін
| Price API
| Потрібні типи цін і валюти
|-
| API оплат
| Payment API / bank integration
| Потрібний transaction_id
|-
| API довідників
| Master data API
| Потрібна дедублікація
|-
| API для Power BI
| Data warehouse / Power BI dataset
| Краще не навантажувати ERP напряму
|-
| Тимчасовий bridge
| Integration layer
| застосовується для під час паралельного запуску
|}

MES або виробнича платформа здатна інтегруватися з 1С через HTTP. }
! Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження. !<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

* факт відбору;
* факт пакування;
* факт відвантаження;
* інвентаризацію;
* серії;
* партії;
* розбіжності. ([cip.gov.ua](https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya), [president.gov.ua](https://www.president.gov.ua/documents/6012024-52009))
Зовнішня платформа
Authorization: Bearer eyJhbGciOi... Данные.Вставить("items", Товари);

[[Категорія:Проведення документа]]

! Механізм
Для HTTP-сервісу потрібна документація.[[Категорія:BAS ERP]]

 {

 Возврат Ложь;
== Приклад перевірки токена ==
</div>

== HTTP-коди відповідей ==

Найчастіше через відсутність external_id, журналу обміну й ідемпотентної логіки. Ідемпотентність означає, що повторний однаковий запит не створює дублікати. |-
| Endpoint
| URL методу
| API route
| Метод, реліз системи, доступ
|-
| Метод GET/POST
| Тип операції
| API method
| Читання чи запис
|-
| JSON/XML
| Формат обміну
| JSON/API schema
| Валідація
|-
| Token
| Авторизація
| API token/OAuth
| Захист секретів
|-
| External ID
| Зовнішній ключ
| External reference
| Захист від дублів
|-
| Журнал
| історія продукту викликів
| Integration log
| Помилки і повтори
|-
| Регламентне задача
| Фонова обробка
| Background job
| Розклад і статус
|}

через Correlation ID — це ідентифікатор запиту, який користувачі можуть знайти один і той самий запит у різних системах.
"message": "Product with SKU SKU-001 not found",

Correlation ID

Причини: </syntaxhighlight>

"code": "12345678",

! # Фонове або регламентне задача обробляє інформаційні дані. {| class="wikitable" style="width:100%;"

як приклад:

Обработчик: СтворитиЗамовлення
 "document_ref": "000000123",
== HTTP-сервіс для цін ==
Через HTTP-сервіси можна тимчасово отримувати з 1С:
<syntaxhighlight lang="json">
 Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
 }
Типова відповідь:
Оплата здатна приходити з банку, платіжного сервісу або сайту. Для інтеграцій із сайтами, CRM, WMS, MES, банками, мобільними застосунками, Power BI, маркетплейсами, зовнішніми API і міграційними інструментами. !== Типові помилки HTTP-сервісів 1С ==

* кількість замовлень;
* кількість оплат;
* суми документів;
* залишки;
* ціни;
* контрагентів;
* номенклатуру;
* зовнішні ID;
* статуси;
* кількість помилок;
* дублікати;
* час відповіді API;
* відповідність JSON-схеми;
* результати контрольних звітів. ↓

Приклад:

* замовлення на відвантаження;
* переміщення;
* залишки;
* довідник товарів;
* штрихкоди;
* партії;
* серії;
* характеристики. "quantity": 25

[[Категорія:Аудит дій]]

![[Категорія:Банк]]

== Як функціонує HTTP-сервіс ==

У сучасній ERP-архітектурі HTTP API має бути:

* web-сервер;
* опублікована інформаційна база;
* HTTP-сервіс у конфігурації;
* користувач системи або механізм авторизації;
* правила мережевого доступу;
* HTTPS;
* firewall;
* reverse proxy, якщо застосовується для. як приклад:

'''Критично.''' HTTP-сервіс із записом документів, оплат, цін або персональних даних не можна публікувати у відкритий інтернет без HTTPS, авторизації, журналу, обмеження прав і моніторингу.[[Категорія:Типи цін 1С]]

== HTTP-сервіс і web-сервіс 1С ==

== Приклад обробника GET у 1С ==

 {

== Помилка: HTTP 500 ==

! }

  • HTTPS;
  • авторизацію;
  • токени;
  • права користувача;
  • firewall;
  • IP whitelist;
  • reverse proxy;
  • WAF, якщо застосовується для;
  • обмеження методів;
  • обмеження розміру запиту;
  • журналювання;
  • захист персональних даних;
  • захист банківських даних;
  • захист зарплати;
  • захист цін і собівартості;
  • оновлення версій платформи;
  • відключення непотрібних endpoint-ів.
  • немає external_id;
  • external_id не унікальний;
  • документ створюється до перевірки;
  • повторний POST після таймауту створює новий документ;
  • немає журналу запитів;
  • немає ідемпотентності.</syntaxhighlight>
  • важкі запити;
  • запити в циклі;
  • багато документів у одному запиті;
  • проведення в синхронному режимі;
  • немає пагінації;
  • немає індексів для external_id;
  • endpoint читає документи замість регістрів;
  • функціонує в робочий час;
  • паралельно йде закриття місяця;
  • слабкий сервер 1С або СУБД. Коментар

</syntaxhighlight>

ЗаписатьJSON(ЗаписьJSON, Данные);

критично відрізняти:

"sku": "SKU-002",
"quantity": 2,

Приклад:

Метод: POST { </syntaxhighlight>

</syntaxhighlight>

ЧтениеJSON = Новый ЧтениеJSON;

КонецФункции

КонецЕсли;

</Order> Тіло запиту:

ЗаписатьJSON(ЗаписьJSON, Данные);

WMS здатна отримувати з 1С: Для HTTP-інтеграцій критично важливий зовнішній ID. Повторний POST після таймауту створює новий документ. як приклад:

  • зробити external_id обов’язковим;
  • зберігати його в документі або регістрі;
  • перевіряти перед створенням;
  • повертати 409 або 200 з інформацією про існуючий документ;
  • логувати повтори.== HTTP-сервіси і адміністрування ==

{

Функция ПеревіритиАвторизацію(Запрос) HTTP-сервіс 1С — це механізм платформи, який дає можливість створити HTTP endpoint для зовнішніх систем і опрацьовувати GET, POST, PUT, DELETE-запити кодом 1С.=== Чи можна публікувати HTTP-сервіс 1С в інтернет? ===

"error": "Ошибка"
  • дату і час;
  • endpoint;
  • метод;
  • IP;
  • користувача або токен;
  • external_id;
  • статус;
  • HTTP-код;
  • час виконання;
  • текст помилки;
  • ID створеного документа;
  • кількість рядків;
  • розмір запиту;
  • ідентифікатор кореляції. # Код повертає JSON-відповідь зі статусом. Держспецзв’язку веде офіційний перелік забороненого до використання програмного забезпечення та комунікаційного обладнання, де згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і BAS ERP.== Функція відповіді JSON ==

як приклад: Погано: </syntaxhighlight>

GET-запит не повинен змінювати інформаційні дані. Проблеми виникають, якщо:

  • оптимізувати запити;
  • додати пагінацію;
  • використовувати регістри;
  • виносити важкі операції в фон;
  • додати чергу;
  • обмежити розмір запиту;
  • кешувати довідкові інформаційні дані;
  • запускати великі обміни за розкладом. Питання

Чому дублюються замовлення через HTTP-сервіс?

POST застосовується для для створення або передачі даних.

 "page_size": 100,
{| class="wikitable" style="width:100%;"
== Ідемпотентність ==
Відповідь:
Адміністратор має знати:
 "created": true
[[Інтеграція з банками]] через HTTP-сервіси здатна включати:

== Обмеження розміру запиту ==

 "date": "2026-05-15T10:30:00",

! Цей користувач системи має мати мінімальні права:

[[Категорія:Обмін даними 1С]]

* які HTTP-сервіси опубліковані;
* які URL доступні;
* хто ними користується;
* які методи дозволені;
* яка авторизація;
* які користувачі 1С використовуються;
* які права вони мають;
* де зберігаються токени;
* де журнали;
* які IP дозволені;
* хто відповідальний за інтеграцію;
* як відключити сервіс у разі інциденту. Указ Президента України 601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сценарії використання, скасування та внесення змін до санкцій. Код
 "external_id": "WEB-10025",
{

 Если Токен <> "Bearer secret-token" Тогда

[[Категорія:Цифрова незалежність України]]

! Час
! Ответ = Новый HTTPСервисОтвет(200);

* після оновлення версій розширення здатна зламатися;
* endpoint здатна конфліктувати;
* права можуть бути не враховані;
* логіка здатна дублювати типову;
* немає документації;
* сервіс здатна залишитися активним після завершення проєкту. Приклад у 1С

 "code": "missing_required_field",

 "customer": {

 "sku": "SKU-001",
== HTTP-сервіси і міграція з 1С/BAS ==
 
|-
| Що таке HTTP-сервіс 1С? ! "sku": "SKU-001",
Спрощена логіка:
<syntaxhighlight lang="text">
|-
| /products
| GET
| Список товарів
|-
| /products/{sku}
| GET
| інформаційні дані товару
|-
| /stock
| GET
| Залишки
|-
| /prices
| GET
| Ціни
|-
| /orders
| POST
| Створення замовлення
|-
| /orders/{id}
| GET
| Отримання замовлення
|-
| /orders/{id}/status
| PUT
| оновлення версій статусу
|-
| /payments
| POST
| Завантаження оплат
|-
| /counterparties
| POST
| Створення або оновлення версій контрагентів
|}

 "date": "2026-05-15",

Content-Type: application/json

* сайт передає замовлення в 1С;
* 1С повертає номер документа;
* 1С передає залишки на сайт;
* 1С передає ціни;
* сайт отримує статус оплати;
* 1С отримує статус доставки;
* обидві системи використовують external_id. Приклад:

HTTP-сервіс має повертати зрозумілі помилки. Метод
 "date": "2026-05-15",

</div>

</syntaxhighlight>

Типова відповідь:

* отримати список товарів;
* отримати залишки;
* отримати ціни;
* передати замовлення;
* передати оплату;
* оновити статус документа;
* отримати інформацію про контрагента;
* завантажити довідник;
* створити документ;
* виконати перевірку наявності товару;
* передати інформаційні дані для інтеграції;
* отримати контрольні суми;
* запустити міграційне вивантаження. |-
| Що краще для нових інтеграцій? Endpoint
 "sku": "SKU-001",
Це зменшує ризик таймаутів і блокувань. Поле
 ЗаписьJSON = Новый ЗаписьJSON;
Банківські endpoint-и потребують посиленого захисту: HTTPS, токени, IP-обмеження, журналювання і контроль дублів. Значення
рішення для бізнесу:
Кращий підхід:
Добре:
Для виробництва критично контролювати партії, специфікації, напівфабрикати і собівартість. HTTP-сервіс зазвичай містить:
}
 "status": "error",
'''критично.''' HTTP-сервіси 1С/BAS можуть відкривати зовнішнім системам доступ до критичних бізнес-даних: замовлень, оплат, банку, складу, зарплати, ПДВ, виробництва, контрагентів, персональних даних, цін і собівартості. Варіант у K2 ERP

Код HTTP-сервісу

<syntaxhighlight lang="json">

 "quantity": 25

<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

{| class="wikitable" style="width:100%;"

Що краще для HTTP-сервісу: JSON чи XML?

JSON — найпоширеніший формат для сучасних HTTP API. External ID { |- | 15.05.2026 10:30 | POST | /orders | WEB-10025 | success | 201 |- | 15.05.2026 10:31 | POST | /orders | WEB-10026 | error | 400 |}

Простий варіант  API-ключ у заголовку. Для сучасних API частіше краще JSON. {

Під час переходу з [[1С]] або [[BAS]] у [[K2 ERP]] HTTP-сервіси можуть бути:

}

'''HTTP-сервіс 1С'''  це об’єкт конфігурації, який дає можливість описати URL-шлях, HTTP-методи і код обробки запитів. Деталі краще зберігати в журналі. # Версію конфігурації.<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
Якщо endpoint повертає багато даних, потрібна пагінація. ! # Web-сервер. "status": "error",
[[Категорія:Автоматизація бізнесу]]
|-
| 200
| Успішно
| інформаційні дані отримано
|-
| 201
| Створено
| Замовлення створене
|-
| 400
| Неправильний запит
| Немає обов’язкового поля
|-
| 401
| Не авторизовано
| Немає або неправильний токен
|-
| 403
| Заборонено
| користувач системи не має прав
|-
| 404
| Не знайдено
| Товар або замовлення не знайдені
|-
| 409
| Конфлікт
| Документ уже існує
|-
| 500
| Внутрішня помилка
| Помилка коду або бази
|}

! Наслідок

* немає токена;
* неправильний токен;
* неправильний користувач системи;
* недостатньо прав;
* IP не дозволений;
* web-сервер блокує запит;
* сервіс вимагає іншу авторизацію. }

 {

 "status": "error",
<syntaxhighlight lang="text">
Але для нових інтеграцій зазвичай зручніше JSON. | Для інтеграцій із сайтами, CRM, WMS, MES, банками, BI і зовнішніми системами. # Код перевіряє авторизацію. Лог має містити:

!<syntaxhighlight lang="text">

GET /hs/api/products?page=1&page_size=100

 <Date>2026-05-15</Date>

* читати потрібні довідники;
* створювати потрібні документи;
* не бачити зайві інформаційні дані;
* не мати повних прав;
* не мати доступу до зарплати без потреби;
* не мати доступу до банку без потреби;
* не мати доступу до конфігуратора;
* не мати доступу до небезпечних обробок. * великі обсяги;
* довгі запити;
* навантаження на робочу базу;
* відсутність пагінації;
* немає кешу;
* багато користувачів BI одночасно;
* інформаційні дані без обмеження періоду.== HTTP-сервіс і банк ==
Можливі варіанти:
{
! |-
| Які формати використовуються?[[Категорія:Інтеграція 1С]]
Перед записом даних потрібно перевіряти:
[[Категорія:Регламентні завдання]]
 Возврат Ложь;
Погана відповідь:
[[Категорія:Міграція даних]]
Web-сервер
'''Практичний сенс.''' HTTP-сервіси дозволяють не обмінюватися файлами вручну, а зробити керований API, через який системи автоматизовано передають інформаційні дані. Слабка сторона  високі вимоги до безпеки, логування, авторизації, продуктивності, обробки помилок і контролю дублів. Призначення

У відповіді не варто показувати зовнішньому користувачу повний внутрішній текст помилки з технічними деталями. Приклад
}
{
|-
| GET
| Отримати інформаційні дані
| Отримати залишки товарів
|-
| POST
| Створити або передати інформаційні дані
| Створити замовлення
|-
| PUT
| Оновити інформаційні дані
| Оновити статус замовлення
|-
| PATCH
| Частково оновити інформаційні дані
| Оновити тільки поле статусу
|-
| DELETE
| Видалити або скасувати
| Скасувати замовлення
|}

 Тело = ЗаписьJSON.Закрыть();

HTTP-сервіс має повертати правильні коди. {

Возврат Ответ;

External ID

Контрольні суми після міграції HTTP-сервісів

Спрощена логіка створення замовлення:

Товари = Новый Массив;
  • створюється багато документів;
  • проводяться документи;
  • виконується важкий запит;
  • зовнішня платформа чекає надто довго;
  • web-сервер обриває з’єднання;
  • 1С заблокована іншою операцією. Потрібно логувати кожен важливий запит.<ExternalID>WEB-10025</ExternalID>

Санкції та ризики використання 1С/BAS в Україні

Краща відповідь: </syntaxhighlight> Типовий сценарій інтеграції з сайтом: WMS здатна передавати в 1С: Зазвичай застосовується для схема:

Типові HTTP endpoint-и для 1С

"page": 1,

HTTP-сервіс у 1С можна розглядати як власний API всередині конфігурації. XML доречний для старих систем, CommerceML, SOAP-подібних обмінів або форматів, де XML уже виступає як стандартом. |- | Для чого потрібен? Призначення Погана практика — завжди повертати 200 навіть при помилці. # Повертає ID задача.</syntaxhighlight>

Не варто плутати HTTP-сервіси і web-сервіси 1С. Аналог у K2 ERP

HTTP-відповідь

Через HTTP-сервіс зовнішня платформа здатна:

Основні HTTP-методи:

У бізнес-системах DELETE часто краще реалізовувати не як фізичне видалення, а як скасування або зміну статусу. Метод

[[Категорія:Web-сервіси]]

У [[K2 ERP]] HTTP-інтеграції краще будувати не як хаотичні endpoint-и, а як контрольований API-шар із правами, логами, токенами, схемами, версіями і моніторингом.=== Для чого використовують HTTP-сервіси 1С? ===
<syntaxhighlight lang="xml">
HTTP-сервіси з бізнес-даними мають працювати через HTTPS. |-
| Метод
| POST
|-
| URL
| /hs/api/orders
|-
| Формат
| JSON
|-
| Авторизація
| Bearer token
|-
| Обов’язкові поля
| external_id, date, customer, items
|-
| Успішна відповідь
| 201 Created
|-
| Дубль
| 409 Conflict або 200 з existing=true
|-
| Помилки
| 400, 401, 403, 500
|}

HTTP-сервіс здатна віддавати інформаційні дані для аналітики, але робити це потрібно обережно. ([cip.gov.ua](https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya), [president.gov.ua](https://www.president.gov.ua/documents/6012024-52009))

// Тут створюється документ замовлення покупця

HTTP-сервіси мають підвищений ризик, бо можуть бути доступні з мережі. # Шаблон URL. } Без HTTPS можна перехопити: ! * можна не змінювати основну конфігурацію;

  • інтуїтивно додати API для інтеграції;
  • легше підтримувати окрему логіку;
  • можна швидше тестувати зміни. Спрощений приклад:

</syntaxhighlight>

HTTP-сервіс і WMS

HTTP-сервіс 1С часто використовують для побудови REST-подібного API. Приклад URL:

Можливі причини:

HTTP-сервіси 1С — це потужний механізм для створення API всередині 1С/BAS. # Код створює замовлення покупця. Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності. },

HTTP-сервіси і розширення

це механізм платформи / 1С:компанія-користувач. Він здатна використовуватися для:

"status": "success",

Проста аналогія. HTTP-сервіс — це “двері” в 1С для інших програм. Приклад відповіді:

Для чого потрібні HTTP-сервіси

{ {

"message": "Request body is too large"

HTTP-сервіс часто виконується від імені користувача 1С або службового користувача.

  1. Сайт надсилає POST-запит із JSON-замовленням. Саме через них можуть працювати сайти, банки, CRM, WMS, MES, мобільні застосунки, Power BI та інші важливі бізнес-процеси. ! Приклад заголовка:
ЗаписьJSON.УстановитьСтроку();
↓ HTTP-запит

HTTP-методи

Функция СтворитиЗамовлення(Запрос) Довідники, документи, регістри, запити }

Для важких запитів краще не виконувати всю логіку одразу. Ціни можуть залежати від:

! Сильна сторона HTTP-сервісів — універсальність і зручність для сучасних інтеграцій. Помилка

Карта міграції HTTP API

{

HTTP-сервіс не можна залишати відкритим без авторизації.== Див. так само ==

}, Приклад відповіді: Розширення 1С можуть додавати або змінювати HTTP-сервіси.
== HTTP-сервіс і виробництво ==

Для оплат обов’язково потрібен transaction_id, щоб не завантажити одну оплату двічі. Контроль
 ЧтениеJSON.УстановитьСтроку(Тело);

[[Категорія:Партії 1С]]

* не створити дубль;
* знайти документ при повторному запиті;
* оновити статус;
* зв’язати 1С і зовнішню систему;
* обробити повтор після помилки;
* зробити ідемпотентний API. Окремо варто відзначити який дає можливість створювати HTTP endpoint-и; так само реалізовано як приклад у форматі [[Інтеграція через JSON|JSON]] або [[XML 1С|XML]] виступає ключовою рисою зовнішніх систем.=== Що критично при міграції HTTP-сервісів у K2 ERP? ===

Потрібно знайти всі endpoint-и, описати запити й відповіді, external_id, авторизацію, права, журнали, залежні системи і перенести логіку в сучасний API K2 ERP або інтеграційний шар. Ризики:

== POST-запит у HTTP-сервісі ==
POST /hs/api/orders
 Если ЗамовленняВжеІснує(ExternalID) Тогда
<syntaxhighlight lang="text">
! Приклад:

 "items": [

{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
[[Категорія:Мова 1С]]
|-
| HTTP-сервіс
| REST-подібний HTTP, JSON, XML, текст
| Сучасні інтеграції, API, мобільні застосунки
|-
| Web-сервіс
| SOAP/XML
| Старі корпоративні інтеграції, формальні SOAP-схеми
|-
| COM-з’єднання
| COM Automation
| Старі Windows-інтеграції, Excel, C#, PowerShell
|-
| Файловий обмін
| XML, CSV, TXT, DBF
| Старі або прості обміни через папки
|}

 Данные.Вставить("message", Повідомлення);

}

 "status": "success",

 <CustomerCode>12345678</CustomerCode>
 "currency": "UAH",
HTTP-сервіс здатна працювати і з XML. # Журнал помилок. Щоб HTTP-сервіс був доступний зовні, інформаційну базу потрібно опублікувати на web-сервері.<syntaxhighlight lang="text">
Типова схема:

=== Що таке HTTP-сервіс 1С? ===

POST /orders з тим самим external_id повертає існуючий документ або оновлює його за правилами. Це спрощений приклад для ілюстрації логіки. URL
{
! # Перевірити права. При переході з [[1С]] або [[BAS]] у [[K2 ERP]] HTTP-сервіси потрібно інвентаризувати окремо. "data": {
 Данные.Вставить("warehouse", СкладКод);
== Помилка: API повільне ==
}
<Order>
== Що таке HTTP-сервіс 1С ==
 Возврат ВідповідьJSON(200, "exists", "Order already exists");
== Варіанти перенесення HTTP-сервісів у K2 ERP ==
Можливі причини:
<syntaxhighlight lang="text">

 "items": [

 "purpose": "Payment for order WEB-10025",

 // Тут має бути запит до регістру залишків

!== HTTP-сервіси в сучасній ERP-архітектурі ==
 ЗаписьJSON.УстановитьСтроку();
Для довгих процесів краще використовувати асинхронну обробку через job_id. # Записує задача в чергу. ТелоОтвета = ЗаписьJSON.Закрыть();

* наявність обов’язкових полів;
* типи даних;
* формат дат;
* валюту;
* суму;
* ПДВ;
* номенклатуру;
* контрагента;
* складський облік;
* зовнішній ID;
* дублікати;
* допустимий статус;
* права;
* розмір тіла запиту. Потрібна повноцінна авторизація і журналювання. External ID потрібен, щоб:

 "currency": "UAH",

* версійним;
* документованим;
* захищеним;
* ідемпотентним;
* логованим;
* контрольованим за правами;
* із валідацією;
* із правильними HTTP-кодами;
* із моніторингом;
* із захистом секретів;
* із підтримкою повторів;
* із можливістю масштабування. * отримати виробниче замовлення;
* отримати специфікацію;
* передати факт випуску;
* передати списання матеріалів;
* передати брак;
* передати НЗВ;
* отримати залишки матеріалів. Статус

# Отримати складський облік і дату з параметрів.== XML у HTTP-сервісах ==

Без документації API оперативно стає незрозумілим навіть для тих, хто його створював. # Перевіряє формат.== Документація API ==

'''критично про [[1С]] та [[BAS]].''' В Україні продукти екосистеми [[1С]] і частина продуктів [[BAS]] пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками.
Функция ВідповідьJSON(КодСтану, Статус, Повідомлення)
 Ответ = Новый HTTPСервисОтвет(КодСтану);
[[Категорія:K2 ERP]]
Потрібно контролювати:

 Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");

 "job_id": "JOB-20260515-0001"
}

КонецФункции

Зовнішні посилання

КонецФункции

"message": "Field external_id is required"

Можливі причини:

"code": "product_not_found",

Приклад документації endpoint-а

Його корисно записувати в журнал 1С, журнал web-сервера і журнал зовнішньої системи.== Пагінація ==

Авторизація, URL, JSON, дублікати, таймаути, повільні запити, права. Код
== Висновок ==

! Його краще зберігати в захищених налаштуваннях або окремому сховищі секретів.== JSON у HTTP-сервісах ==

Погана практика  запускати API від імені адміністратора.</div>
Приклад допоміжної функції:
Перед міграцією потрібно зібрати:
У ній має бути:
[[Категорія:Конфігуратор 1С]]

<syntaxhighlight lang="text"> Приклад:

"external_id": "WEB-10025"

Шаблон URL: /orders