Интеграция 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С ограничены: не все операторы фильтрации работают, expand глубже одного уровня часто падает с ошибкой.
Внешняя компонента + COM — устаревший подход для десктопных интеграций, для мобильного не применим.
Middleware (рекомендуется) — 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С в middleware.
На мобильном клиенте: Basic Auth credentials никогда не хранить в SharedPreferences или UserDefaults в открытом виде. Android Keystore + EncryptedSharedPreferences, iOS Keychain.
Типичные задачи и их сложности
Получение остатков — популярная задача. 1С хранит остатки в регистрах накопления (РегистрНакопления.ТоварыНаСкладах). OData-запрос к регистру: GET /odata/standard.odata/AccumulationRegister_ТоварыНаСкладах/Balance?$filter=... — работает, но медленно на больших базах без оптимизации со стороны 1С-разработчика.
Лучше: HTTP-сервис в 1С с оптимизированным запросом (ВЫБРАТЬ + СГРУППИРОВАТЬ ПО), кэш остатков в middleware с TTL 2-5 минут.
Создание документа (заказ, накладная) — нужна транзакция на стороне 1С. HTTP POST → 1С создаёт объект, проводит документ, возвращает номер. Если провести не удалось (нет остатка, нет контрагента) — 1С должна вернуть осмысленную ошибку, не «Ошибка 500». Договаривайтесь с 1С-разработчиком о формате ошибок заранее.
Синхронизация справочников (номенклатура, контрагенты). Справочник номенклатуры на 50 000 позиций — нельзя грузить целиком каждый раз. 1С HTTP-сервис с параметром modified_since должен возвращать только изменённые элементы. Реализуется через ЭтотОбъект.ДатаИзменения в запросе. Периодичность синхронизации: справочники — раз в 30-60 минут, цены — при открытии документа.
Offline для мобильного склада
Сценарий: мобильный ТСД (терминал сбора данных) на Android в зоне склада с плохим WiFi. Оператор сканирует штрих-коды, формирует инвентаризацию — локально в Room. По завершении или при появлении сети — отправка в 1С одним пакетом.
1С-сторона: HTTP-сервис принимает массив позиций, создаёт документ инвентаризации, возвращает результат. На мобильном: пока документ не подтверждён 1С, статус «в очереди». После подтверждения — статус «передан», локальная копия помечается как синхронизированная.
Типичные ошибки интеграции
Публикация 1С на IIS без SSL — все данные (остатки, цены, накладные) передаются открытым текстом. Обязателен HTTPS с валидным сертификатом.
Игнорирование прав пользователя 1С — технический пользователь с правами администратора. Нарушение принципа минимальных привилегий: если мобильное приложение только читает остатки, у технического пользователя должно быть только право на чтение конкретного регистра.
Отсутствие таймаута на 1С-запросы. Тяжёлый запрос в 1С может выполняться 30-60 секунд. Мобильный клиент зависает без таймаута. Middleware устанавливает timeout: 15s на 1С-вызов, возвращает 504 клиенту, клиент показывает кнопку retry.
Сроки
Аудит конфигурации 1С и проектирование интеграции: 3-5 дней. Базовая интеграция (чтение справочников и остатков, создание документов) через HTTP-сервисы: 3-6 недель. Полноценная offline-поддержка, delta-sync справочников, корректная обработка ошибок 1С: плюс 2-3 недели. Стоимость рассчитывается индивидуально — сильно зависит от конфигурации 1С и объёма кастомизации.







