HTTP-сервіси 1С
{
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-інтеграцій 1С або 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. Причина
1С історично виступає як російською програмною екосистемою.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%;"
як приклад:
- відкривати API без авторизації;
- використовувати адміністратора 1С;
- зберігати токен у коді відкритим текстом;
- повертати повний текст внутрішньої помилки;
- приймати будь-який JSON без перевірки;
- створювати документи без external_id;
- проводити все синхронно без черги;
- не логувати запити;
- не обмежувати розмір запиту;
- дозволяти DELETE для фізичного видалення важливих об’єктів;
- відкривати endpoint-и в інтернет без HTTPS. Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сценарії використання, скасування та внесення змін до персональних спеціальних економічних та інших санкцій. ! # Публікацію бази. * Указ Президента України №601/2024
- Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання
- Сайт K2 ERP
- Wiki K2 ERP
- хмарна інфраструктура K2 ERP
Обработчик: СтворитиЗамовлення
"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С / 1С:компанія-користувач. Він здатна використовуватися для:
"status": "success",
Проста аналогія. HTTP-сервіс — це “двері” в 1С для інших програм. Приклад відповіді:
Для чого потрібні HTTP-сервіси
{ {
"message": "Request body is too large"
HTTP-сервіс часто виконується від імені користувача 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 |
|---|