Как организовать обмен данными между мобильным приложением и двумя разными базами 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В современной бизнес-среде часто возникает задача интеграции мобильных приложений с корпоративными системами учета. Ситуация усложняется, когда таких систем несколько, и они работают на разных технологических платформах. Разберем типичный случай: необходимо разработать одно мобильное приложение, которое будет обмениваться данными с двумя базами 1С — одной современной, например, "1С:БПКР", и второй, устаревшей самописной конфигурацией на платформе 8.1. Проанализируем, какие архитектурные подходы существуют для решения этой задачи и какой из них выбрать.

Основная сложность заключается в том, что мобильное приложение не должно "знать" о внутренней кухне серверной части. Заставлять его напрямую подключаться к двум разным базам, работать с разными форматами данных и протоколами — это путь к созданию сложного, нестабильного и трудно поддерживаемого решения. Правильный подход — создание промежуточного слоя (middleware), который скроет всю сложность интеграции от мобильного клиента. Рассмотрим три основных архитектурных шаблона.

Решение 1: Единая точка входа (API Gateway)

Это наиболее гибкий и распространенный подход в современной разработке. Суть заключается в создании специального веб-сервиса, который выступает в роли единого "окна" для мобильного приложения. Приложение отправляет все запросы на этот сервис, а уже он решает, куда их направить дальше.

Как это работает?

  1. Мобильное приложение отправляет HTTP-запрос (например, на получение списка товаров или создание заказа) на адрес API Gateway. Формат данных, как правило, унифицирован и прост, чаще всего используется JSON.
  2. API Gateway принимает запрос, анализирует его и определяет, из какой базы 1С нужно получить данные или в какую записать. Например, данные о клиентах могут храниться в одной базе, а остатки товаров — в другой.
  3. Сервис-шлюз обращается к нужной базе 1С, используя подходящий для нее протокол:
    • Для современной базы 1С (платформа 8.3): Используются встроенные HTTP-сервисы. Они позволяют легко создавать гибкий REST API, который удобно использовать для обмена данными в формате JSON.
    • Для устаревшей базы 1С (платформа 8.1): Основным инструментом интеграции здесь являются Web-сервисы на основе протокола SOAP. Они работают с форматом XML, который более громоздкий, чем JSON.
  4. API Gateway получает ответы от баз 1С, при необходимости объединяет или преобразует данные и отправляет единый ответ мобильному приложению в формате JSON.

Преимущества этого подхода:

Недостатки:

Решение 2: Промежуточная база данных

Этот метод подходит, когда для мобильного приложения критически важна скорость отклика, а данные не обязательно должны быть актуальны в режиме реального времени. Идея в том, чтобы создать отдельную, быструю базу данных (например, на PostgreSQL или MySQL), которая будет служить единственным источником данных для бэкенда мобильного приложения.

Как это работает?

  1. Создается отдельная база данных, структура которой оптимизирована специально под запросы мобильного приложения.
  2. Настраивается регулярная синхронизация данных из обеих баз 1С в эту промежуточную базу. Синхронизация может происходить, например, с помощью Регламентных заданий в 1С, которые по расписанию выгружают изменения.
  3. Бэкенд мобильного приложения (его API) работает только с этой промежуточной базой. Запросы на чтение выполняются очень быстро, так как нет необходимости "на лету" обращаться к системам 1С.
  4. Если приложению нужно изменять данные, процесс усложняется. Изменения сначала сохраняются в промежуточной базе, а затем по специальному механизму (например, через очередь задач) передаются обратно в нужные базы 1С.

Преимущества этого подхода:

Недостатки:

Решение 3: Брокер сообщений (например, RabbitMQ)

Это наиболее надежный, но и самый сложный в реализации архитектурный шаблон. Он идеально подходит для систем с высокой нагрузкой и требованиями к гарантированной доставке данных, особенно для операций, изменяющих данные (создание заказов, заявок и т.д.).

Как это работает?

  1. Когда пользователь в мобильном приложении совершает действие (например, нажимает кнопку "Оформить заказ"), приложение отправляет запрос на свой бэкенд.
  2. Бэкенд не пытается сразу записать данные в 1С. Вместо этого он формирует "сообщение" (например, JSON с данными заказа) и помещает его в очередь в брокере сообщений (например, RabbitMQ).
  3. Базы 1С (или специальные сервисы-адаптеры для них) "подписаны" на эти очереди. Как только в очереди появляется новое сообщение, система 1С забирает его и обрабатывает в своем темпе.

Платформа 1С может взаимодействовать с RabbitMQ через специальные внешние компоненты или используя HTTP API, которое предоставляет сам брокер.

Преимущества этого подхода:

Недостатки:

Итоги и рекомендации

Выбор конкретной архитектуры зависит от ваших требований к системе. Проанализируем, какой подход когда лучше использовать.

В любом случае, стоит отказаться от идеи прямого подключения мобильного приложения к двум базам 1С. Создание промежуточного слоя, будь то API-шлюз или другая архитектура, сделает вашу систему более стабильной, безопасной и готовой к будущим изменениям.

← На главную