Інтеграція 1С з мобільним додатком
1С — найпоширеніша облікова система на постсоветському ринку, і завдання "підключити мобільний додаток до 1С" виникає майже в кожного другого B2B-клієнта. Складність полягає не в самій інтеграції, а в розмаїтті конфігурацій 1С: Бухгалтерія, Управління торгівлею, ERP, УНФ, ЗУП—кожна має свою структуру даних, і те, що працює в УТ 11, не працює в ERP 2.5.
Варіанти підключення до 1С
HTTP-сервіси в 1С — нативний спосіб для сучасних конфігурацій. У Конфігураторі створюється HTTP-сервіс з методами (GET, POST, PUT). Бізнес-логіка обробника пишеться вбудованою мовою 1С. На виході—REST API, який мобільний додаток викликає безпосередньо.
Переваги: логіка залишається в 1С, немає сторонніх компонентів. Недоліки: потрібен розробник 1С на проекті, продуктивність обмежена (1С не оптимізована для високої конкурентності HTTP-запитів).
OData-інтерфейс 1С — автоматично публікує об'єкти конфігурації (довідники, документи, регістри) як OData v4. Включається публікацією на веб-сервері без написання коду. Зручно для швидкого прототипу, але OData-запити 1С обмежені: не всі оператори фільтрації працюють, розширення глибше одного рівня часто падає з помилкою.
Зовнішній компонент + COM — застарілий підхід для настільних інтеграцій, для мобільних не застосовується.
Проміжне ПО (рекомендується) — Node.js / Go / .NET сервіс викликає 1С через HTTP-сервіси або OData, кешує довідники, трансформує відповіді, видає мобільному клієнту стислий JSON.
Аутентифікація
1С підтримує Basic Auth із коробки (ім'я користувача та пароль 1С). Для продакшену це прийнятно лише при з'єднанні через HTTPS та використанні технічного користувача з мінімально необхідними правами в 1С.
OAuth 2.0 в 1С — немає нативної підтримки в стандартних конфігураціях. Варіанти: налаштувати через 1C:Enterprise Development Tools користувацький механізм або використовувати зовнішній IdP (Keycloak) з映射 токена на користувача 1С у проміжному ПО.
На мобільному клієнті: ніколи не зберігайте облікові дані Basic Auth у SharedPreferences або UserDefaults у відкритому вигляді. Використовуйте Android Keystore + EncryptedSharedPreferences, iOS Keychain.
Типові завдання та їхні складності
Отримання залишків — популярне завдання. 1С зберігає залишки в накопичувальних регістрах (RegisterOfAccumulation.GoodsInWarehouses). OData-запит до регістру: GET /odata/standard.odata/AccumulationRegister_GoodsInWarehouses/Balance?$filter=... — працює, але повільно на великих базах без оптимізації з боку розробника 1С.
Краще: HTTP-сервіс в 1С з оптимізованим запитом (SELECT + GROUP BY), кеш залишків у проміжному ПО з TTL 2-5 хвилин.
Створення документа (замовлення, накладна) — потребує транзакції на стороні 1С. HTTP POST → 1С створює об'єкт, проводить документ, повертає номер. Якщо провести не вдалося (немає залишку, немає контрагента) — 1С повинна повернути змістовну помилку, не "Помилка 500". Домовтеся про формат помилок з розробником 1С заздалегідь.
Синхронізація довідників (номенклатура, контрагенти). Довідник номенклатури на 50 000 позицій — не можна завантажити в повному обсязі кожного разу. HTTP-сервіс 1С з параметром modified_since повинен повертати тільки змінені елементи. Реалізується через ThisObject.ChangeDate у запиті. Періодичність синхронізації: довідники — раз на 30-60 хвилин, ціни — при відкритті документа.
Офлайн для мобільного складу
Сценарій: мобільний збирач даних (сканер штрих-кодів) на Android у зоні складу з поганим WiFi. Оператор сканує штрих-коди, формує інвентаризацію — локально в Room. Після завершення або при появі мережі — відправка в 1С одним пакетом.
1С-сторона: HTTP-сервіс приймає масив позицій, створює документ інвентаризації, повертає результат. На мобільному: поки документ не підтверджений 1С, статус "в черзі". Після підтвердження — статус "передано", локальна копія помічена як синхронізована.
Типові помилки інтеграції
Публікація 1С на IIS без SSL — всі дані (залишки, ціни, накладні) передаються відкритим текстом. Обов'язковий HTTPS з валідним сертифікатом.
Ігнорування прав користувача 1С — технічний користувач з правами адміністратора. Порушення принципу мінімальних привілеїв: якщо мобільний додаток тільки читає залишки, технічний користувач повинен мати тільки право на читання конкретного регістру.
Відсутність тайм-ауту на 1С-запити. Важкий запит в 1С може виконуватися 30-60 секунд. Мобільний клієнт зависає без тайм-ауту. Проміжне ПО встановлює timeout: 15s на 1С-виклик, повертає 504 клієнту, клієнт показує кнопку повтору.
Терміни
Аудит конфігурації 1С та проектування інтеграції: 3-5 днів. Базова інтеграція (читання довідників та залишків, створення документів) через HTTP-сервіси: 3-6 тижнів. Повноцінна офлайн-підтримка, delta-sync довідників, коректна обробка помилок 1С: плюс 2-3 тижні. Вартість розраховується індивідуально — сильно залежить від конфігурації 1С та обсягу кастомізації.







