Мобильное приложение для автосервиса на 1С: приёмка и заказ-наряды

Приёмка автомобиля у машины: автономная база на мобильной платформе 1С, обмен с центральной учётной базой по HTTP и push-уведомления на iOS и Android

Заказчик: Автосервис / автотехцентр
Стек: Мобильная платформа 1С:Предприятие 8.3, iOS, Android, HTTP-обмен, хранилище значений, push (GCM/APNs), QR-сканирование

Задача

Мастер-приёмщик автосервиса встречает автомобиль на территории, а заказ-наряд оформлял позже за компьютером: терялось время, детали приёмки записывались на бумагу и переносились в 1С вручную. Нужен был мобильный инструмент, чтобы оформить приёмку и собрать заявку с работами и запчастями прямо у машины, с офлайн-работой и обменом с центральной учётной базой.

Результат

Приложение на мобильной платформе 1С (iOS и Android) с автономной базой: приёмщик оформляет заявку у автомобиля, сканирует QR номенклатуры, отправляет заказ-наряд в центральную 1С по HTTP. Справочники приходят на устройство обменом, push-уведомления информируют о событиях. Бумажная приёмка и повторный ввод в 1С устранены.

Это кейс про мобильное приложение для автосервиса на 1С. Клиент — автотехцентр: мастер-приёмщик встречает автомобиль на территории, а не за стойкой. Задача — дать ему приложение на телефоне и планшете, чтобы прямо у машины оформить приёмку, собрать заявку с работами и запчастями и отправить её в центральную 1С, не возвращаясь к компьютеру.

Приложение «СпрингАвтодилер» сделано на мобильной платформе 1С:Предприятие — это автономная база на устройстве с собственными справочниками и документами, которая обменивается с центральной учётной базой по HTTP. Работает офлайн: связь с сервером нужна только в момент синхронизации.

Что внутри приложения

На устройстве живёт своя конфигурация: справочники Автомобили, Автоработы, Номенклатура, Сотрудники, Цеха, СкладыКомпании и документ Заявка — мобильный аналог заказ-наряда. Приёмщик выбирает автомобиль и клиента, добавляет работы и запчасти, при необходимости сканирует QR-код номенклатуры камерой телефона. Формы документа сделаны отдельно под iOS и Android (ФормаДокумента_Phone_iOS и _Android), чтобы интерфейс был родным для каждой платформы.

Обмен с центральной 1С по HTTP

Мобильное приложение не имеет прямого доступа к базе автосервиса — оно общается с ней через HTTP-сервис. Пакет обмена сериализуется в хранилище значений и уходит POST-запросом на сервер, ответ так же десериализуется обратно:

Функция HTTPServer_POST(ПакетДляОтправкиНаСервер, ВидЗапроса, СтекОшибок) Экспорт
    Соединение = ПолучитьСоединениеHTTP();
    Запрос = Новый HTTPЗапрос(
        Константы.СтрокаПодключенияHTTP.Получить()
        + Перечисления.ВидыPostЗапросов.ПолучитьФункциюДляPOSTЗапроса(ВидЗапроса));
    Запрос.УстановитьТелоИзСтроки(ПоместитьПакетВХранилище(ПакетДляОтправкиНаСервер));

    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Если Ответ.КодСостояния = 200 Тогда
        Возврат ПолучитьПакетИзХранилища(Ответ.ПолучитьТелоКакСтроку());
    КонецЕсли;
КонецФункции

Виды запросов (создать заказ-наряд, синхронизация, push) вынесены в перечисление — сервер по ним понимает, какую операцию выполнить. При каждом обмене приложение передаёт системную информацию устройства (версия ОС и приложения, процессор, память) и данные регистрации изменений, а флаг «идёт обмен» защищает от параллельного запуска синхронизации.

Синхронизация справочников и заявок

Ответ сервера — пакет обмена, разложенный по типам данных. Приложение проходит его и грузит справочники и документы. Состав реквизитов для загрузки определяется динамически из метаданных, поэтому добавление нового поля в справочник не ломает обмен:

Для Каждого ЭлСтр Из СтрОтвета Цикл
    ТипДанных = Метаданные.НайтиПоТипу(ЭлСтр.Ключ);
    Если ЭлСтр.Ключ = Тип("СправочникСсылка.Автоработы")
        Или ЭлСтр.Ключ = Тип("СправочникСсылка.Номенклатура")
        // ... прочие справочники
    Тогда
        ЗагрузкаСправочников(ЭлСтр.Значение, ТипДанных.Имя, СтрРеквизитов);
    ИначеЕсли ЭлСтр.Ключ = Тип("ДокументСсылка.Заявка") Тогда
        ЗагрузкаДокументовБезПроведения(ЭлСтр.Значение, ТипДанных);
    КонецЕсли;
КонецЦикла;

Заказ-наряд из мобильной заявки создаётся в центральной базе отдельными командами — «Создать», «Создать с закрытием», «Обновить», — каждая уходит своим HTTP-запросом. Синхронизацию можно запускать вручную или фоновым заданием; результат каждого обмена пишется в журнал, а дата последней синхронизации хранится в константе.

Push-уведомления на iOS и Android

Чтобы приёмщик узнавал о событиях (например, готовности запчасти или назначении заявки), приложение получает push. Уведомления складываются в очередь — регистр PushУведомления — и рассыльщик отправляет их по платформе устройства: Android напрямую через сервис Google, iOS — через собственный серверный шлюз к APNs. После доставки сообщение удаляется из очереди:

Для каждого PushСообщение Из СписокСообщений Цикл
    Если PushСообщение.МобильнаяОС = Перечисления.МобильныеОС.Android Тогда
        Ответ = ОтправитьPUSH_Android(PushСообщение.Идентификатор, PushСообщение.Данные, PushСообщение.ТекстСообщения);
    ИначеЕсли PushСообщение.МобильнаяОС = Перечисления.МобильныеОС.iOS Тогда
        Ответ = ОтправитьPUSH_IOS(PushСообщение.Идентификатор, PushСообщение.Данные, PushСообщение.ТекстСообщения);
    КонецЕсли;
    Если Ответ = 200 Тогда
        УдалитьСообщениеИзСпискаОтправки(PushСообщение);
    КонецЕсли;
КонецЦикла;

Ещё в приложении

Авторизация и регистрация устройства, разграничение доступа по ролям, версионирование обмена, обработка и журналирование ошибок клиента, подбор номенклатуры и уведомления пользователю. Всё это — стандартный «обвес» промышленного мобильного решения на 1С, который делает приложение пригодным для ежедневной работы смены приёмщиков.

Итог

Автосервис получил мобильный инструмент приёмки: заявки оформляются у автомобиля и уходят в центральную 1С заказ-нарядами, справочники приезжают на устройство обменом, а push держат приёмщика в курсе. Это часть общего проекта автоматизации автотехцентра — там же настроена интеграция 1С с Битрикс24 для отдела продаж. Разбор серверной части обмена — в статье HTTP-сервис 1С для мобильного приложения, а реализация push под iOS — в статье Push-уведомления на мобильной 1С под iOS. Полный маршрут разработки и защиты мобильных решений на 1С — на курсе Защита мобильного клиента 1С.

Частые вопросы

Нужен похожий проект?

Опишите задачу — оценю сроки и стоимость.