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

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

Разработка современной экосистемы предприятия часто требует тесной интеграции мобильных устройств с учетной системой. Одной из классических задач является передача данных из нативного Android-приложения в информационную базу 1С. Например, когда клиент через смартфон записывается на прием, и эти данные должны мгновенно отобразиться в рабочем месте менеджера. Разберем наиболее эффективные и современные способы реализации этой задачи, основываясь на возможностях платформы 1С:Предприятие 8.3.

Решение 1: Использование собственных HTTP-сервисов 1С

Наиболее гибким и профессиональным способом является создание собственного HTTP-сервиса внутри конфигурации 1С. Этот метод позволяет определить четкую структуру API, которую будет вызывать мобильное приложение. Рассмотрим подробнее процесс реализации этого механизма.

Для начала проанализируем структуру нашего сервиса в конфигураторе. Нам необходимо создать объект метаданных HTTP-сервисы. В свойствах укажем корневой URL (например, /mobile_exchange). Далее определим шаблон URL, например, /create_appointment, и добавим к нему метод POST. Именно этот метод будет отвечать за прием данных от Android-приложения.

Разберем пример программного кода внутри модуля HTTP-сервиса, который принимает JSON с данными пациента:


Функция ПринятьЗаписьНаПрием(Запрос)
    
    // Читаем тело запроса, которое пришло из Android
    ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
    
    // Инициализируем чтение JSON
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ТелоЗапроса);
    
    Данные = ПрочитатьJSON(Чтение);
    Чтение.Закрыть();
    
    // Создаем новый документ или запись в справочнике
    НоваяЗаявка = Справочники.ЗаявкиНаПрием.СоздатьЭлемент();
    НоваяЗаявка.ФИО = Данные.PatientName;
    НоваяЗаявка.Телефон = Данные.Phone;
    НоваяЗаявка.Врач = Справочники.Врачи.НайтиПоНаименованию(Данные.DoctorName);
    НоваяЗаявка.ДатаПриема = Дата(Данные.AppointmentDate);
    
    Попытка
        НоваяЗаявка.Записать();
        Ответ = Новый HTTPСервисОтвет(201); // Created
        Ответ.УстановитьТелоИзСтроки("Запись успешно создана");
    Исключение
        Ответ = Новый HTTPСервисОтвет(500); // Internal Server Error
        Ответ.УстановитьТелоИзСтроки("Ошибка записи: " + ОписаниеОшибки());
    КонецПопытки;
    
    Возврат Ответ;
    
КонецФункции

Важно помнить, что для работы этого сервиса база 1С должна быть опубликована на веб-сервере (Apache или IIS). При публикации необходимо убедиться, что флажок "Публиковать HTTP сервисы" установлен.

Решение 2: Использование стандартного интерфейса OData

Если нам требуется максимально быстрое решение без написания программного кода в 1С, рассмотрим использование автоматического REST-интерфейса (OData). Платформа 1С позволяет автоматически генерировать API для всех объектов метаданных.

Выясним, как это включить. В свойствах конфигурации необходимо найти пункт "Состав стандартного интерфейса OData" и выбрать те справочники или документы, к которым мобильное приложение будет иметь доступ. После публикации базы на веб-сервере, Android-приложение сможет отправлять стандартные HTTP-запросы (GET, POST, PATCH) по адресу вида: http://server/base/odata/standard.odata/Document_ЗаявкаНаПрием.

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

Решение 3: Интеграция через облачную базу данных (Firebase)

Проанализируем ситуацию, когда прямое соединение Android-приложения с сервером 1С затруднено (например, из-за отсутствия выделенного IP-адреса или строгих настроек безопасности). В этом случае удобно использовать Firebase Realtime Database или Firestore в качестве посредника.

Схема работы выглядит следующим образом:

  1. Мобильное приложение записывает данные в Firebase. Это происходит практически мгновенно и поддерживает офлайн-режим.
  2. 1С периодически опрашивает Firebase через свои HTTP-запросы или использует механизм Webhooks.
  3. 1С считывает новые записи, обрабатывает их и помечает в Firebase как "обработанные".

Для реализации этого в 1С мы используем объект HTTPСоединение для обращения к REST API Firebase. Это позволяет системе работать внутри закрытой сети, самостоятельно инициируя сеансы связи с облаком.

Выбор формата обмена: Почему JSON?

Выясним, почему в современных реализациях стоит отказаться от XML или текстовых файлов (CSV) в пользу JSON. Во-первых, JSON является "родным" форматом для JavaScript и Android-разработки (библиотеки Retrofit, GSON). Во-вторых, в 1С версии 8.3.6 и выше появилась встроенная поддержка этого формата через объекты ЧтениеJSON и ЗаписьJSON.

Рассмотрим пример формирования JSON-структуры для отправки из 1С в мобильное приложение, если нам нужно подтвердить запись:


Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
СтруктураОтвета = Новый Структура;
СтруктураОтвета.Вставить("Status", "Confirmed");
СтруктураОтвета.Вставить("AppointmentID", "12345");
ЗаписатьJSON(Запись, СтруктураОтвета);
РезультатСтрокой = Запись.Закрыть();

Важные аспекты безопасности и сетевой инфраструктуры

При организации обмена данными необходимо обратить внимание на следующие технические детали:

Таким образом, мы рассмотрели основные архитектурные подходы. Для простых задач идеально подойдет OData, для гибких и масштабируемых систем — собственные HTTP-сервисы, а для работы в нестабильных сетях — интеграция через Firebase. Выбор конкретного метода зависит от ваших компетенций в программировании и требований к безопасности системы.

← На главную