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

HTTP-сервіси 1С

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

"order_external_id": "WEB-10025"

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

!; !;[[Категорія:Міграція даних]]
Це спрощений приклад для ілюстрації логіки.; |-
| Що найважливіше?;== HTTP-сервіси і адміністрування ==
HTTP-запити мають обмеження часу.; # Код записує зовнішній ID.; Питання
 "date": "2026-05-15",
Основні HTTP-методи:
{
== HTTP-сервіс і WMS ==
Можливі причини:
MES або виробнича платформа має змогу інтегруватися з 1С через HTTP.; | Авторизація, URL, JSON, дублікати, таймаути, повільні запити, права.; Коментар

* 401  користувач системи не авторизований;
* 403  користувач системи авторизований, але дія заборонена.;== Структура HTTP-сервісу в конфігурації ==

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

* версійним;
* документованим;
* захищеним;
* ідемпотентним;
* логованим;
* контрольованим за правами;
* із валідацією;
* із правильними HTTP-кодами;
* із моніторингом;
* із захистом секретів;
* із підтримкою повторів;
* із можливістю масштабування.; ЧтениеJSON = Новый ЧтениеJSON;

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

Приклад відповіді:

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

 "sku": "SKU-001",
== Безпека HTTP-сервісів ==

'''істотно про [[1С]] та [[BAS]].''' В Україні продукти екосистеми [[1С]] і частина продуктів [[BAS]] пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками.; # Фонове або регламентне задача обробляє інформаційні дані.;[[Категорія:Запити 1С]]
|-
| 200
| Успішно
| інформаційні дані отримано
|-
| 201
| Створено
| Замовлення створене
|-
| 400
| Неправильний запит
| Немає обов’язкового поля
|-
| 401
| Не авторизовано
| Немає або неправильний токен
|-
| 403
| Заборонено
| користувач системи не має прав
|-
| 404
| Не знайдено
| Товар або замовлення не знайдені
|-
| 409
| Конфлікт
| Документ уже існує
|-
| 500
| Внутрішня помилка
| Помилка коду або бази
|}

При описі HTTP-сервісів [[1С]] і [[BAS]] в українському контексті потрібно згадувати санкційні та безпекові ризики.; ([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))

 "code": "payload_too_large",
 Тело = ЗаписьJSON.Закрыть();
як ілюстрація:

Держспецзв’язку веде перелік забороненого до використання програмного забезпечення та комунікаційного обладнання; у переліку згадуються продукти 1С/BAS, зокрема 1C:організація 8 і BAS ERP.; Такі сервіси використовуються для інтеграцій із сайтами, CRM, WMS, MES, банками, мобільними застосунками, зовнішніми API, сервісами доставки, маркетплейсами, BI-системами і міграційними інструментами.; !; X-Correlation-ID: 7b9f4c2e-1d22-4a9d-9201-abc123

{

Обробка помилок

Функція відповіді JSON

"status": "error",

HTTP-сервіс має повертати правильні коди.; Оплата має змогу приходити з банку, платіжного сервісу або сайту.;=== Чому дублюються замовлення через HTTP-сервіс? === Критично. HTTP-сервіс із записом документів, оплат, цін або персональних даних не можна публікувати у відкритий інтернет без HTTPS, авторизації, журналу, обмеження прав і моніторингу.; Призначення

{ </syntaxhighlight> }

{

HTTP-сервіс 1С — це об’єкт конфігурації, який надає можливість описати URL-шлях, HTTP-методи і код обробки запитів.; Приклад:

<ExternalID>WEB-10025</ExternalID>
}

Можливі сценарії:

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

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

Правильна міграція — це не копіювання старих endpoint-ів “як є собою”, а перенесення корисної інтеграційної логіки в сучасну ERP-архітектуру: REST API, JSON, версії API, токени, audit log, фонові задачі, черги, Power BI, контроль прав і моніторинг.; "customer": {

Возврат Истина;
[[Категорія:K2 ERP]]
<syntaxhighlight lang="text">
<syntaxhighlight lang="json">
 ТелоОтвета = ЗаписьJSON.Закрыть();
[[Категорія:Конфігуратор 1С]]

{

POST /hs/api/orders

  • старих систем;
  • CommerceML;
  • SOAP-подібних обмінів;
  • електронного документообігу;
  • державних або корпоративних форматів.;</syntaxhighlight>

Погана практика — запускати API від імені адміністратора.; # Код перевіряє авторизацію.; ЗаписатьJSON(ЗаписьJSON, Данные);

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

</syntaxhighlight> HTTPСервис: API !; Через HTTP-сервіси 1С має змогу приймати і віддавати інформаційні дані через HTTP-запити забезпечується через HTTP-сервіси 1С.; Так зовнішній системі легше зрозуміти, що саме сталося.; {

"code": "12345678",

Банківські endpoint-и потребують посиленого захисту: HTTPS, токени, IP-обмеження, журналювання і контроль дублів.;</syntaxhighlight> } !; ЗаписатьJSON(ЗаписьJSON, Данные);

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

External ID потрібен, щоб:

  • наявність обов’язкових полів;
  • типи даних;
  • формат дат;
  • валюту;
  • суму;
  • ПДВ;
  • номенклатуру;
  • контрагента;
  • складський облік;
  • зовнішній ID;
  • дублікати;
  • допустимий статус;
  • права;
  • розмір тіла запиту.; Слабка сторона — високі вимоги до безпеки, логування, авторизації, продуктивності, обробки помилок і контролю дублів.; HTTP-сервіси мають підвищений ризик, бо можуть бути доступні з мережі.; Перед міграцією потрібно зібрати:
  • великі обсяги;
  • довгі запити;
  • навантаження на робочу базу;
  • відсутність пагінації;
  • немає кешу;
  • багато користувачів BI одночасно;
  • інформаційні дані без обмеження періоду.; Лог має містити:
  • зробити external_id обов’язковим;
  • зберігати його в документі або регістрі;
  • перевіряти перед створенням;
  • повертати 409 або 200 з інформацією про існуючий документ;
  • логувати повтори.; X-API-Key: 1234567890abcdef
"status": "error",

Функция ВідповідьJSON(КодСтану, Статус, Повідомлення) Потрібно логувати кожен важливий запит.; Але ці двері мають мати замок, журнал відвідувачів, правила доступу і контроль того, хто що має змогу робити.; |- | Що найчастіше ламається?; WMS має змогу передавати в 1С: Довідники, документи, регістри, запити HTTP-сервіси часто використовуються як альтернатива COM-з’єднанню, файловому обміну, FTP, ручним обробкам або старим SOAP/XML-інтеграціям.; Деталі краще зберігати в журналі.; {

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

</syntaxhighlight> Для оплат обов’язково потрібен transaction_id, щоб не завантажити одну оплату двічі.; HTTP 500 означає внутрішню помилку.; HTTP-відповідь У реальному коді потрібно обробляти помилки, права, транзакції, обов’язкові поля, external_id і логування.; !; HTTP-сервіс у 1С можна розглядати як власний API всередині конфігурації.; HTTP-сервіси потрібні для інтеграції 1С/BAS із зовнішнім світом.; Метод

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

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

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

  • дату і час;
  • endpoint;
  • метод;
  • IP;
  • користувача або токен;
  • external_id;
  • статус;
  • HTTP-код;
  • час виконання;
  • текст помилки;
  • ID створеного документа;
  • кількість рядків;
  • розмір запиту;
  • ідентифікатор кореляції.; Елемент 1С HTTP-сервісу
  • не створити дубль;
  • знайти документ при повторному запиті;
  • оновити статус;
  • зв’язати 1С і зовнішню систему;
  • обробити повтор після помилки;
  • зробити ідемпотентний API.; Товари = Новый Массив;

Приклад:

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

</syntaxhighlight>

  • важкі запити;
  • запити в циклі;
  • багато документів у одному запиті;
  • проведення в синхронному режимі;
  • немає пагінації;
  • немає індексів для external_id;
  • endpoint читає документи замість регістрів;
  • функціонує в робочий час;
  • паралельно йде закриття місяця;
  • слабкий сервер 1С або СУБД.; Типова схема:
; # Сайт надсилає POST-запит із JSON-замовленням.; Значення
↓
"status": "success",

Це зменшує ризик таймаутів і блокувань.;

історично є собою російською програмною екосистемою.;== HTTP-коди відповідей == Без документації API оперативно стає незрозумілим навіть для тих, хто його створював.; Authorization: Bearer eyJhbGciOi...; {| class="wikitable" style="width:100%;"

"external_id": "WEB-10025",
  • помилка коду 1С;
  • не знайдено реквізит;
  • неправильний JSON;
  • помилка запису документа;
  • немає прав;
  • помилка транзакції;
  • помилка проведення;
  • блокування;
  • недоступна СУБД;
  • помилка розширення.; Метод: POST
Окремо варто відзначити який надає можливість створювати HTTP endpoint-и; додатково реалізовано як ілюстрація у форматі JSON або XML виступає ключовою рисою зовнішніх систем.; Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сфера застосування, скасування та внесення змін до санкцій.; # Назву HTTP-сервісу.;== HTTP-сервіс і Power BI ==

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

; Варіант у K2 ERP

}

Типова логіка:

Данные.Вставить("items", Товари);
"price": 1200

переважні аспекти: Ціни можуть залежати від:

</syntaxhighlight> Зазвичай застосовується схема: { Типова відповідь: "amount": 2400,

Приклад перевірки токена

Ответ = Новый HTTPСервисОтвет(КодСтану);

Типовий сценарій інтеграції з сайтом:

; Зовнішня платформа надсилає GET, POST, PUT або DELETE-запит, а 1С обробляє його кодом мовою 1С і повертає відповідь.; * які HTTP-сервіси опубліковані;
  • які URL доступні;
  • хто ними користується;
  • які методи дозволені;
  • яка авторизація;
  • які користувачі 1С використовуються;
  • які права вони мають;
  • де зберігаються токени;
  • де журнали;
  • які IP дозволені;
  • хто відповідальний за інтеграцію;
  • як відключити сервіс у разі інциденту.; Формат
15.05.2026 10:30 POST /orders WEB-10025 success 201
15.05.2026 10:31 POST /orders WEB-10026 error 400
"message": "Request body is too large"

Ідемпотентність

Помилка: дублюються замовлення

СкладКод = Запрос.ПараметрыURL.Получить("warehouse");

JSON — найпоширеніший формат для сучасних HTTP API.; ЧтениеJSON.УстановитьСтроку(Тело);

  • довідники;
  • документи;
  • залишки;
  • ціни;
  • взаєморозрахунки;
  • статуси;
  • зовнішні ID;
  • контрольні звіти.; Що означає

Залишки краще отримувати з регістрів, а не з документів.;== GET-запит у HTTP-сервісі ==

== Як функціонує HTTP-сервіс ==
 "name": "ТОВ Ромашка"
HTTP-сервіс 1С — це механізм платформи, який надає можливість створити HTTP endpoint для зовнішніх систем і обробляти GET, POST, PUT, DELETE-запити кодом 1С.; Його краще зберігати в захищених налаштуваннях або окремому сховищі секретів.;== Для чого потрібні HTTP-сервіси ==

!; Саме через них можуть працювати сайти, банки, CRM, WMS, MES, мобільні застосунки, Power BI та інші важливі бізнес-процеси.;== API-ключ ==

 "message": "Order created"

 "currency": "UAH",

Відповідь:

GET застосовується для отримання даних.;== Приклад документації endpoint-а ==
Потрібно враховувати:
"sku": "SKU-001",

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

; # 1С викликає метод HTTP-сервісу.; Статус
"job_id": "JOB-20260515-0001"

як ілюстрація:

[[Категорія:MES]]
 "external_id": "WEB-10025",
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">

}
 ЗаписьJSON = Новый ЗаписьJSON;
HTTP-сервіс має змогу віддавати інформаційні дані для аналітики, але робити це потрібно обережно.; "warehouse": "MAIN",

# Отримати складський облік і дату з параметрів.; # Код повертає JSON-відповідь зі статусом.; {| class="wikitable" style="width:100%;"

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

Спрощена логіка:

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 застосовується під час паралельного запуску

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

} рішення для бізнесу:

Варіанти перенесення HTTP-сервісів у K2 ERP

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 Розклад і статус

Головне. HTTP-сервіс 1С — це спосіб зробити API до 1С/BAS: прийняти замовлення з сайту, віддати залишки, оновити статус, отримати оплату, передати ціни або підготувати інформаційні дані для міграції.; завдяки наявності Correlation ID — це ідентифікатор запиту, який користувачі можуть знайти один і той самий запит у різних системах.; # Виконати запит до регістру накопичення.; | API endpoint у 1С/BAS для обробки HTTP-запитів.; # Код читає JSON.; Если Токен <> "Bearer secret-token" Тогда

HTTP-методи

Данные = ПрочитатьJSON(ЧтениеJSON); Таку функцію комфортно винести в загальний компонент.;== Що таке HTTP-сервіс 1С == HTTP-сервіси з бізнес-даними мають працювати через HTTPS.;
  1. Публікацію бази.;== Помилка: HTTP 404 ==
// Тут створюється документ замовлення покупця
Возврат ВідповідьJSON(200, "exists", "Order already exists");
HTTP-сервіс має змогу працювати і з XML.; GET /hs/api/products?page=1&page_size=100

 }

 ExternalID = Данные.external_id;
  • сайт передає замовлення в 1С;
  • CRM отримує статуси оплат;
  • WMS отримує задача на відвантаження;
  • MES отримує виробничі замовлення;
  • банк передає статус платежу;
  • мобільний застосунок отримує залишки;
  • маркетплейс отримує ціни;
  • Power BI або аналітичний шар отримує інформаційні дані;
  • K2 ERP отримує інформаційні дані під час міграції;
  • зовнішня платформа перевіряє контрагента;
  • служба доставки отримує інформаційні дані для ТТН.;
    переважні аспекти:
    
     "status": "success",
    
    * базовий URL;
    * список endpoint-ів;
    * методи;
    * заголовки;
    * авторизація;
    * приклади запитів;
    * приклади відповідей;
    * HTTP-коди;
    * поля;
    * типи даних;
    * обов’язкові поля;
    * помилки;
    * правила external_id;
    * обмеження;
    * контакти відповідальних.; Функция СтворитиЗамовлення(Запрос)
    
    <syntaxhighlight lang="json">
     Данные.Вставить("message", Повідомлення);
    Простий варіант  API-ключ у заголовку.; Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження.; Тело = Запрос.ПолучитьТелоКакСтроку();
    == HTTP-сервіс і REST API ==
    

</syntaxhighlight>

; Для виробництва істотно контролювати партії, специфікації, напівфабрикати і собівартість.; HTTP-сервіс має обмежувати розмір тіла запиту.; "quantity": 25

Без пагінації великий запит має змогу перевантажити 1С.; |-

Метод 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 500

{

  • HTTPS;
  • авторизацію;
  • токени;
  • права користувача;
  • firewall;
  • IP whitelist;
  • reverse proxy;
  • WAF, якщо застосовується;
  • обмеження методів;
  • обмеження розміру запиту;
  • журналювання;
  • захист персональних даних;
  • захист банківських даних;
  • захист зарплати;
  • захист цін і собівартості;
  • актуалізація платформи;
  • відключення непотрібних endpoint-ів.; У ній має бути:

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

HTTP-сервіс і банк

Після перенесення потрібно звірити:

Обработчик: СтворитиЗамовлення

 ↓ HTTP-запит

<Order>

* створюється багато документів;
* проводяться документи;
* виконується важкий запит;
* зовнішня платформа чекає надто довго;
* web-сервер обриває з’єднання;
* 1С заблокована іншою операцією.; !; Ризики:
!; Його краще використовувати тільки для читання.; При переході з [[1С]] або [[BAS]] у [[K2 ERP]] HTTP-сервіси потрібно інвентаризувати окремо.; "sku": "SKU-001",

* складський облік;
* дату;
* характеристику;
* серію;
* партію;
* резерв;
* доступний залишок;
* одиницю виміру.; Відповідь
Сильна сторона HTTP-сервісів — універсальність і зручність для сучасних інтеграцій.; Приклад:

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

'''істотно.''' HTTP-сервіси 1С/BAS можуть відкривати зовнішнім системам доступ до критичних бізнес-даних: замовлень, оплат, банку, складу, зарплати, ПДВ, виробництва, контрагентів, персональних даних, цін і собівартості.; Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності.; Приклад у 1С

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

<syntaxhighlight lang="text">
; Зовнішня платформа

Див.; додатково

</syntaxhighlight>

; * немає external_id;
  • external_id не унікальний;
  • документ створюється до перевірки;
  • повторний POST після таймауту створює новий документ;
  • немає журналу запитів;
  • немає ідемпотентності.; Метод
Если Не ЗначениеЗаполнено(Токен) Тогда

Інтеграція з банками через HTTP-сервіси має змогу включати:

/products GET Список товарів
/products/{sku} GET інформаційні дані товару
/stock GET Залишки
/prices GET Ціни
/orders POST Створення замовлення
/orders/{id} GET Отримання замовлення
/orders/{id}/status PUT актуалізація статусу
/payments POST Завантаження оплат
/counterparties POST Створення або актуалізація контрагентів
; Через них можна приймати замовлення, передавати залишки, оновлювати ціни, отримувати платежі, синхронізувати довідники, обмінюватися статусами і будувати інтеграції з іншими системами.; Повторний POST після таймауту створює новий документ.;== Черга обробки ==

Погана практика — завжди повертати 200 навіть при помилці.; "external_id": "WEB-10025" HTTP-сервіс має повертати зрозумілі помилки.; Код

; # Адресу /hs/.; Код

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

Для цього потрібно зберігати external_id у документі або окремому регістрі відомостей.; КонецФункции

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

</syntaxhighlight>

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

Чи можна публікувати HTTP-сервіс 1С в інтернет?

Ответ.УстановитьТелоИзСтроки(ТелоОтвета, КодировкаТекста.UTF8);
  1. HTTP-сервіс приймає запит.; | HTTPS, авторизація, external_id, логування, валідація, права і контроль дублів.; Приклад:
 "purpose": "Payment for order WEB-10025",

HTTP-сервіс часто виконується від імені користувача 1С або службового користувача.; Погані практики:
 "items": [
Для HTTP-інтеграцій критично важливий зовнішній ID.; * [[1С]]
* [[BAS]]
* [[BAS ERP]]
* [[K2 ERP]]
* [[ERP]]
* [[Інтеграція через JSON]]
* [[XML 1С]]
* [[COM-з’єднання 1С]]
* [[Мова 1С]]
* [[Зовнішня обробка 1С]]
* [[Зовнішній звіт 1С]]
* [[Регламентні завдання 1С]]
* [[Адміністрування 1С]]
* [[Конфігуратор 1С]]
* [[Товстий клієнт 1С]]
* [[Клієнт-серверний режим 1С]]
* [[Сервер 1С]]
* [[Розширення 1С]]
* [[СКД 1С]]
* [[Запити 1С]]
* [[Проведення документа 1С]]
* [[Рухи документа 1С]]
* [[Регістри 1С]]
* [[Регістр накопичення 1С]]
* [[Регістр відомостей 1С]]
* [[Регістр бухгалтерії 1С]]
* [[Регістр розрахунків 1С]]
* [[Взаєморозрахунки 1С]]
* [[Характеристики номенклатури 1С]]
* [[Партії 1С]]
* [[Типи цін 1С]]
* [[ПДВ 1С]]
* [[Зарплата 1С]]
* [[Виробництво 1С]]
* [[Інтеграція з банками]]
* [[Power BI]]
* [[BI система]]
* [[Вивантаження даних 1С]]
* [[Міграція даних з 1С]]
* [[Міграція з 1С]]
* [[Міграція з BAS]]
* [[Заміна BAS]]
* [[Реплікатор K2]]
* [[Права доступу в ERP]]
* [[Аудит дій]]
* [[Українське програмне забезпечення]]
* [[Цифрова незалежність]]

<syntaxhighlight lang="json">

* [https://www.president.gov.ua/documents/6012024-52009 Указ Президента України №601/2024]
* [https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання]
* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]

 ЗаписьJSON = Новый ЗаписьJSON;
 "price": 1200
 Данные.Вставить("status", Статус);
Адміністратор має знати:
[[Категорія:BAS]]
== XML у HTTP-сервісах ==
WMS має змогу отримувати з 1С:
}
== Публікація HTTP-сервісу ==
== Пагінація ==
Потрібно знайти всі endpoint-и, описати запити й відповіді, external_id, авторизацію, права, журнали, залежні системи і перенести логіку в сучасний API K2 ERP або інтеграційний шар.; Якщо такі сервіси працюють у ризиковому або підсанкційному ПЗ, компанії потрібно оцінити юридичні, технічні й кібербезпекові ризики та планувати перехід на безпечну ERP-платформу.; * список HTTP-сервісів;
* список endpoint-ів;
* методи;
* приклади запитів;
* приклади відповідей;
* авторизацію;
* токени;
* користувачів 1С;
* права;
* журнали;
* external_id;
* залежні зовнішні системи;
* розклад викликів;
* обсяги даних;
* помилки;
* відповідальних;
* бізнес-процеси, які залежать від API.; Помилка
[[Категорія:Банк]]
"date": "2026-05-15T10:30:00", Шаблон URL: /orders Функция ПеревіритиАвторизацію(Запрос) } Для сучасних API частіше краще JSON.; "currency": "UAH", }

HTTP-сервіс 1С — це не без ускладнень URL. Це повноцінна точка входу в ERP, яка має змогу читати і змінювати критичні бізнес-дані.; // Тут має бути запит до регістру залишків

}

У відповіді не варто показувати зовнішньому користувачу повний внутрішній текст помилки з технічними деталями.; | Найчастіше JSON, іноді XML.; "data": {

Причини:

"page": 1,

JSON у HTTP-сервісах

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

Причини:

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

Не варто плутати HTTP-сервіси і web-сервіси 1С.; |-
| Що краще для нових інтеграцій?; # Сформувати JSON.; |}

{

 }

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

Але для нових інтеграцій зазвичай зручніше JSON.; # Повертає ID задача.; Типове використання

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

!; Аналог у K2 ERP
Код HTTP-сервісу
|-
| GET
| Отримати інформаційні дані
| Отримати залишки товарів
|-
| POST
| Створити або передати інформаційні дані
| Створити замовлення
|-
| PUT
| Оновити інформаційні дані
| Оновити статус замовлення
|-
| PATCH
| Частково оновити інформаційні дані
| Оновити тільки поле статусу
|-
| DELETE
| Видалити або скасувати
| Скасувати замовлення
|}

== HTTP-сервіс для цін ==

{

 "total": 2500,

<syntaxhighlight lang="text">

!; # Перевірити права.; Потрібна повноцінна авторизація і журналювання.;=== Що істотно при міграції HTTP-сервісів у K2 ERP? ===

* ім’я сервісу;
* кореневий URL;
* шаблони URL;
* HTTP-методи;
* обробники методів;
* параметри шляху;
* параметри запиту;
* код відповіді;
* заголовки;
* тіло відповіді.; рішення для бізнесу:

Спрощений приклад:

* джерелом даних для міграції;
* тимчасовим bridge між старою і новою системою;
* старою інтеграцією, яку потрібно замінити;
* способом паралельного запуску;
* джерелом контрольних сум;
* каналом для синхронізації довідників.; {

}

!; # Код створює замовлення покупця.; КонецФункции

Потрібно контролювати:

 // Заповнюється контрагент, товари, ціни, складський облік, ПДВ

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

 "error": "Ошибка"

HTTP-сервіс зазвичай містить:

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

Добре:

 ↓

<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
{{DISPLAYTITLE:HTTP-сервіси 1С}}

 "message": "Product with SKU SKU-001 not found",
POST /orders з тим самим external_id щоразу створює новий документ.; Проблеми:
[[Категорія:Автоматизація бізнесу]]
== Типові помилки HTTP-сервісів 1С ==
 "page_size": 100,
Сервер 1С
== Валідація запитів ==
== Таймаути ==
 ЗаписьJSON.УстановитьСтроку();

Найчастіше через відсутність external_id, журналу обміну й ідемпотентної логіки.; "items": []

У 1С код має перевірити ключ до виконання бізнес-логіки.; # Повернути відповідь.; Час
 {
Приклад заголовка:
Web-сервер

 "items": [

== Correlation ID ==
 "date": "2026-05-15",

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

істотно відрізняти:

<syntaxhighlight lang="text">

== HTTP-сервіси в сучасній ERP-архітектурі ==

* токени;
* логіни;
* паролі;
* замовлення;
* банківські інформаційні дані;
* персональні інформаційні дані;
* ціни;
* залишки;
* комерційну інформацію.; Endpoint

[[Категорія:REST API 1С]]

 "status": "success",

HTTP-сервіс не можна залишати відкритим без авторизації.;[[Категорія:JSON]]
'''Практичний сенс.''' HTTP-сервіси дозволяють не обмінюватися файлами вручну, а зробити керований API, через який системи автономно передають інформаційні дані.; | Для інтеграцій із сайтами, CRM, WMS, MES, банками, BI і зовнішніми системами.; Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
 "external_id": "WEB-10025",
Якщо endpoint повертає багато даних, потрібна пагінація.; URL
 "order_number": "000000123",
Проблеми виникають, якщо:
[[Категорія:Регістри 1С]]
}
!; Погана відповідь:
== HTTP-сервіс і web-сервіс 1С ==
"status": "error",

Розширення 1С можуть додавати або змінювати HTTP-сервіси.; Типові сценарії: </syntaxhighlight>

{
- Які формати використовуються?;
Content-Type: application/json
 ]
 "document_ref": "000000123",

Ідемпотентність означає, що повторний однаковий запит не створює дублікати.;[[Категорія:Цифрова незалежність України]]
== Типові HTTP endpoint-и для 1С ==
 КонецЕсли;
Для критичних даних одного IP whitelist недостатньо.; Приклад журналу:
},
"transaction_id": "PAY-98765",
; * компактний;
  • зручний для web API;
  • добре підтримується більшістю мов;
  • без зайвих зусиль читати;
  • підходить для REST;
  • зручний для мобільних застосунків.; |-
Для чого потрібен?; Приклад відповіді:

{{SEO

; КонецЕсли;

POST /orders з тим самим external_id повертає існуючий документ або оновлює його за правилами.; Наслідок

__TOC__
== Приклад обробника GET у 1С ==
[[Категорія:Обмін даними 1С]]

[[Категорія:ERP]]

!; Приклад:

 "quantity": 2,

== Документація API ==
Приклад помилки:
Функция ОтриматиЗалишки(Запрос)
Для довгих процесів краще використовувати асинхронну обробку через job_id.; Токен = Запрос.Заголовки.Получить("Authorization");

</div>

* відкривати API без авторизації;
* використовувати адміністратора 1С;
* зберігати токен у коді відкритим текстом;
* повертати повний текст внутрішньої помилки;
* приймати будь-який JSON без перевірки;
* створювати документи без external_id;
* проводити все синхронно без черги;
* не логувати запити;
* не обмежувати розмір запиту;
* дозволяти DELETE для фізичного видалення важливих об’єктів;
* відкривати endpoint-и в інтернет без HTTPS.; Держспецзв’язку веде офіційно затверджений перелік забороненого до використання програмного забезпечення та комунікаційного обладнання, де згадуються продукти 1С/BAS, зокрема 1C:організація 8 і [[BAS ERP]].; # Записує задача в чергу.; # Шаблон URL.;<syntaxhighlight lang="json">
== HTTPS ==
 Данные = Новый Структура;
[[Категорія:Номенклатура]]
або:

<syntaxhighlight lang="json">

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

 Возврат Ложь;

Щоб HTTP-сервіс був доступний зовні, інформаційну базу потрібно опублікувати на web-сервері.; "created": true

 },

* типу ціни;
* валюти;
* дати;
* номенклатури;
* характеристики;
* контрагента;
* знижок;
* прайс-листа.;<syntaxhighlight lang="text">

 "sku": "SKU-001",
Для регулярної аналітики краще використовувати окремий BI-шар, репліку, сховище або [[Power BI]]-датасет, а не постійно навантажувати робочу базу HTTP-запитами.; |-
| HTTP-сервіс
| REST-подібний HTTP, JSON, XML, текст
| Сучасні інтеграції, API, мобільні застосунки
|-
| Web-сервіс
| SOAP/XML
| Старі корпоративні інтеграції, формальні SOAP-схеми
|-
| COM-з’єднання
| COM Automation
| Старі Windows-інтеграції, Excel, C#, PowerShell
|-
| Файловий обмін
| XML, CSV, TXT, DBF
| Старі або прості обміни через папки
|}

HTTP-сервіс 1С часто використовують для побудови REST-подібного API.;
  • після актуалізація розширення має змогу зламатися;
  • endpoint має змогу конфліктувати;
  • права можуть бути не враховані;
  • логіка має змогу дублювати типову;
  • немає документації;
  • сервіс має змогу залишитися активним після завершення проєкту.; Приклад URL:

{

  • web-сервер;
  • опублікована інформаційна база;
  • HTTP-сервіс у конфігурації;
  • користувач системи або механізм авторизації;
  • правила мережевого доступу;
  • HTTPS;
  • firewall;
  • reverse proxy, якщо застосовується.; # Журнал помилок.; # Web-сервер передає запит у 1С.; * факт відбору;
  • факт пакування;
  • факт відвантаження;
  • інвентаризацію;
  • серії;
  • партії;
  • розбіжності.;== HTTP-сервіси і міграція з 1С/BAS ==

Погано:

Данные = Новый Структура;
; Приклад
  • читати потрібні довідники;
  • створювати потрібні документи;
  • не бачити зайві інформаційні дані;
  • не мати повних прав;
  • не мати доступу до зарплати без потреби;
  • не мати доступу до банку без потреби;
  • не мати доступу до конфігуратора;
  • не мати доступу до небезпечних обробок.; це механізм платформи / 1С:організація.; Причина

Для нових інтеграцій частіше краще HTTP-сервіс із JSON.; "status": "accepted",

ЗаписьJSON.УстановитьСтроку();

Помилка: HTTP 401 або 403

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

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

"items": [
Данные.Вставить("date", Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"));

Краща відповідь:

Возврат Ложь;

Можливі варіанти:

Коротко

Перед записом даних потрібно перевіряти: </syntaxhighlight> GET-запит не повинен змінювати інформаційні дані.; Можна тільки з належним захистом: HTTPS, авторизація, токени, обмеження прав, firewall, журналювання, перевірка запитів, обмеження розміру і моніторинг.; Без HTTPS можна перехопити:

Через HTTP-сервіси можна тимчасово отримувати з 1С:
]
]
 Если ЗамовленняВжеІснує(ExternalID) Тогда

 Данные.Вставить("warehouse", СкладКод);
У [[K2 ERP]] HTTP-інтеграції краще будувати не як хаотичні endpoint-и, а як контрольований API-шар із правами, логами, токенами, схемами, версіями і моніторингом.; !;</div>

* оптимізувати запити;
* додати пагінацію;
* використовувати регістри;
* виносити важкі операції в фон;
* додати чергу;
* обмежити розмір запиту;
* кешувати довідкові інформаційні дані;
* запускати великі обміни за розкладом.; POST застосовується для створення або передачі даних.;[[Категорія:Міграція з 1С]]

* базова авторизація web-сервера;
* користувач системи 1С;
* API-ключ;
* Bearer token;
* HMAC-підпис;
* IP whitelist;
* reverse proxy з авторизацією;
* VPN;
* сертифікати;
* поєднання кількох механізмів.;</div>
 <CustomerCode>12345678</CustomerCode>
Для інтеграцій із сайтами, CRM, WMS, MES, банками, мобільними застосунками, Power BI, маркетплейсами, зовнішніми API і міграційними інструментами.; '''Проста аналогія.''' HTTP-сервіс — це “двері” в 1С для інших програм.; # Перевіряє формат.; Що перевірити:

<syntaxhighlight lang="json">

== HTTP-сервіс для залишків ==

* можна не змінювати основну конфігурацію;
* комфортно додати API для інтеграції;
* легше підтримувати окрему логіку;
* можна швидше тестувати зміни.; # Версію конфігурації.;== Права користувача HTTP-сервісу ==

 "code": "missing_required_field",

 КонецЕсли;
'''[[Реплікатор K2]]''' має змогу допомогти при переході з HTTP-інтеграцій [[1С]] або [[BAS]] у [[K2 ERP]].;[[Категорія:Регламентні завдання]]
!; URL

* немає токена;
* неправильний токен;
* неправильний користувач системи;
* недостатньо прав;
* IP не дозволений;
* web-сервер блокує запит;
* сервіс вимагає іншу авторизацію.;[[Категорія:Проведення документа]]
=== Що краще для HTTP-сервісу: JSON чи XML? ===
|-
| 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
| Скасувати або видалити, якщо така логіка дозволена
|}

Приклад відповіді після створення замовлення:

 "message": "Field external_id is required"

== External ID ==

Тіло запиту:
У реальному проєкті токен не можна зберігати відкритим текстом у коді.; Контроль
{

}

<syntaxhighlight lang="text">

== Висновок ==
}
Він має змогу використовуватися для:

<syntaxhighlight lang="json">
== HTTP-сервіс і виробництво ==

Приклад:

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

; Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сфера застосування, скасування та внесення змін до персональних спеціальних економічних та інших санкцій.; !; XML має змогу бути потрібен для:

Його корисно записувати в журнал 1С, журнал web-сервера і журнал зовнішньої системи.; # Web-сервер.; * аналізу старих endpoint-ів;

  • вивантаження довідників;
  • вивантаження документів;
  • вивантаження регістрів;
  • формування контрольних сум;
  • перевірки external_id;
  • підготовки JSON;
  • заміни старих HTTP API;
  • підготовки даних для Power BI;
  • паралельного запуску 1С/BAS і K2 ERP;
  • порівняння старої і нової системи.; External ID
"price_type": "RETAIL",
Що таке HTTP-сервіс 1С?;
Возврат Ответ;

HTTP-сервіси 1С — це потужний механізм для створення API всередині 1С/BAS.; "quantity": 25

</syntaxhighlight>

  • не приймати файл на сотні мегабайт;
  • розбивати великі імпорти на частини;
  • використовувати чергу;
  • приймати тільки зміни;
  • повертати помилку при перевищенні ліміту.;

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

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

Для HTTP-сервісу потрібна документація.;
!; Механізм

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

* отримати виробниче замовлення;
* отримати специфікацію;
* передати факт випуску;
* передати списання матеріалів;
* передати брак;
* передати НЗВ;
* отримати залишки матеріалів.;[[Категорія:Взаєморозрахунки]]

{
!; {

 "quantity": 10

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

[[Категорія:Рухи документа]]
Приклад допоміжної функції:
[[Категорія:Аудит дій]]
 "code": "product_not_found",
== HTTP-сервіс для сайту ==
</Order>

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

 }

 Ответ.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8);
=== Для чого використовують HTTP-сервіси 1С? ===
!; Призначення

[[Категорія:СКД 1С]]
 Возврат ВідповідьJSON(201, "success", "Order created");
Цей користувач системи має мати мінімальні права:
Під час переходу з [[1С]] або [[BAS]] у [[K2 ERP]] HTTP-сервіси можуть бути:
Кращий підхід:
Приклад відповіді:
У сучасній ERP-архітектурі HTTP API має бути:

Помилка: API повільне

У 1С це не завжди “чистий REST” у строгому архітектурному сенсі, але для бізнес-інтеграцій такий підхід часто достатній.; !; | Документований REST API з JSON, логами, токенами, статусами і моніторингом.; Поле

"sku": "SKU-002",