На примере мобильного приложения «1С:Управление нашей фирмой» (сокращенно УНФ) я хочу показать эволюцию мобильного бизнес-приложения от его возникновения и выхода самой первой версии до сегодняшнего дня. Сейчас у этого приложения более 220 000 скачиваний; приложение бесплатное, но в нем есть платные опции (реализованные через встроенные покупки).

image

Первая версия мобильной УНФ была сделана на одной из первых версий мобильной платформы «1С:Предприятия» в 2012 году. На тот момент уже существовала клиент-серверная конфигурация «1С:Управление небольшой фирмой» (тогда название было таким), программа для автоматизации деятельности небольшой компании – продажи, закупки, база клиентов и поставщиков, управление складом, производство и т.п.

Как и большинство мобильных приложений, написанных на кросс-платформенной мобильной платформе 1С:Предприятия, мобильный УНФ доступен на iOS, Android и Windows.

Задача была поставлена так: сделать мобильное приложение, поддерживающее часть сценариев работы «большого» УНФ. Приложение должно уметь работать как автономно, так и синхронизировать данные с «большим» УНФ (далее слово «большой» применительно к клиент-серверной версии УНФ я буду писать без кавычек, чтобы не перегружать текст). В случае работы с большим УНФ должны поддерживаться сценарии «мобильных» сотрудников – торгового представителя, сервисного инженера, продавца.

Первая версия была создана за 1 человеко-месяц. При создании мобильного приложения часть объектов метаданных (справочники, документы) была реализована на основе объектов большого УНФ. Но часть функциональности пришлось программировать с нуля, например, процесс обмена данными с большим УНФ. Правда, применительно к обмену данными собственно программировать пришлось немного – мы использовали стандартные механизмы платформы (в частности, планы обмена), сводящие написание кода к минимуму.

image

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

Особенности мобильной версии


Есть две основных стратегии выбора функциональности мобильного приложения. Первая – «одно приложение – одна функция». Например, мобильное приложение для приема товара на складе, которое умеет только сканировать встроенной камерой штрих-код товара и отправлять информацию о принятом товаре на сервер. Вторая стратегия — создание мобильного приложения с широкой функциональностью «все в одном». Оба подхода имеют право на жизнь; при написании мобильного УНФ мы выбрали второй подход – наше приложение покрывает много задач своей предметной области и может работать полностью автономно, обслуживая потребности небольшой организации. Еще один плюс такого подхода – пользователь может работать с несколькими взаимосвязанными функциями из одного приложения.

Мобильный УНФ широко использует функциональность мобильного устройства, в частности:

  • Встроенную камеру устройства можно использовать для фотографирования товара при заполнении карточки товара, для чтения штрих- и QR-кодов
  • Счет на оплату можно отправить клиенту по емейл или через SMS
  • Контрагента можно выбрать из адресной книги мобильного устройства
  • Если у контрагента задан телефон – можно одним касанием позвонить контрагенту или послать SMS, если задан емейл – отправить письмо, если задан адрес – показать его на карте
  • Можно печатать документы на принтерах через WiFi и Bluetooth

Есть опция бэкапа и восстановления базы мобильного УНФ на Яндекс.Диск и отправка базы по почте.

Конфигурация мобильного УНФ выглядит достаточно спартански (см. скриншот ниже):

  • 8 справочников (в большом УНФ – 273 справочника)
  • 7 документов (в большом УНФ – 125)
  • 3 журнала документов (в большом УНФ – 24)
  • 3 регистра сведений (в большом УНФ – 357)
  • 4 регистра накопления (в большом УНФ – 64)

image
Основные объекты мобильного УНФ

Но, несмотря на такое небольшое количество прикладных объектов, продукт получился достаточно функциональным.

Интересная особенность мобильного УНФ – это то, что им зачастую начинают пользоваться люди, до этого про 1С не слыхавшие (да-да, есть в нашей стране и такие), те, которым понадобилось мобильное приложение для ведения учета их маленького бизнеса (например, домашнего крафтинга). Они просто нашли его поиском в Google Play или AppStore, почитали отзывы – и начали работать.

Автономная работа


Этот сценарий работы предназначен для совсем маленьких организаций, когда весь учет ведется исключительно на мобильном устройстве. Это может быть, например, «домашний» бизнес – изготовление украшений на дому и их продажа на страничке ВКонтакте. А может быть даже и небольшой магазин – лично видел случай, когда магазин игрушек, специализирующийся на продаже конструкторов Lego, вел учет исключительно на мобильной версии УНФ. Учитывая, что мобильный УНФ умеет печатать на WiFi и Bluetooth принтерах, с его помощью можно решать довольно большое количество задач. Мобильный УНФ поддерживает обработку заказов, ввод приходных и расходных накладных, учет поступления и расход денег.

Работа в режиме синхронизации с сервером (первые версии)


В режиме синхронизации с сервером в мобильном УНФ в ранних версиях становилась недоступна учетная функциональность, и работа в нем велась в основном с заказами (прием и выполнение заказов) и сопутствующей этому деятельности (ведение справочников контрагентов, товаров и услуг и т.п.).

Синхронизировались с большим УНФ справочники товаров и услуг, контрагентов, и заказы.

image
Обмен данными мобильного и большого УНФ в первых версиях

Заказы, введенные с мобильных устройств, попадали в большой УНФ, а при синхронизации попадали на мобильные устройства ответственных за заказы. Документы типа поступлений в кассу, реализации товара и т.п., введенные на мобильных устройствах, уезжали в большой УНФ, но не синхронизировались между мобильными устройствами. Вся работа в мобильном приложении в режиме синхронизации велась в основном вокруг заказов – их принятия и исполнения, полноценный учет на мобильном устройстве при этом не велся, для этого нужно было пользоваться большим УНФ на компьютере.

Так было в первых версиях, но впоследствии мы изменили ситуацию и расширили список сценариев использования мобильного УНФ, чтобы сделать работу с ним более удобной для пользователей.

Немного про синхронизацию данных


Обмен данными между мобильным и большим УНФ идет через веб-сервисы; мобильный УНФ вызывает веб-сервисы, развернутые на стороне большого УНФ. Структуры данных в большом и мобильном УНФ различаются; при проектировании архитектуры мы рассматривали 2 варианта обмена данными:

  1. Создать структуру данных в большом УНФ, дублирующую структуру данных мобильного УНФ, и обмениваться данными с мобильным УНФ «один-в-один». При изменении данных в большом УНФ нужно новые/изменённые данные перенести в эту дублирующую структуру, а после обмена данными с мобильным УНФ – сконвертировать данные, пришедшие с мобильного устройства и размещенные в дублирующей структуре, в формат большого УНФ.
  2. Обмениваться данными непосредственно со структурами большого УНФ, осуществляя конвертацию данных «на лету» по правилам обмена.

Решили остановиться на втором варианте. Первый вариант, хоть и сулил некоторые преимущества, связанные с простотой собственно обмена данными, плохо обрабатывал ситуацию, когда в новой версии мобильного УНФ менялась (расширялась) структура данных; чтобы обмен данными «один-в-один» продолжал работать, нужно было бы обновлять и серверный, большой УНФ. Что, по многим причинам, было неприемлемо.

Механизмы обмена данными, реализованные в платформе, берут на себя бОльшую часть работы по формированию пакетов для синхронизации данных, позволяя свести написание кода к минимуму. В процессе обмена используется стандартный механизм платформы 1С:Предприятия – механизм обмена данными; для каждого мобильного УНФ в большом УНФ создается узел обмена данными, в большом и мобильном УНФ задействуется служба регистрации изменений для отслеживания данных, измененных со времени последней синхронизации и т.д.

Мобильное приложение инициирует обмен данными, с помощью механизмов платформы формирует пакет обмена (содержащий идентификатор мобильного приложения и данные, обновленные на мобильном УНФ со времени последней синхронизации) и пересылает его в большой УНФ. Исходя из информации в стартовом пакете, большой УНФ готовит для мобильного УНФ данные, измененные в большом УНФ со времени последней синхронизации, и упаковывает их в пакеты. Пакеты в формате XDTO — это объекты метаданных 1С, сериализованные в XML; размер каждого пакета – не более 500 объектов.

image

Мобильный УНФ забирает эти данные пакет за пакетом. После загрузки последнего пакета мобильный УНФ начинает обрабатывать полученные данные – проводить документы, записывать справочники и т.д. В случае разрыва связи поддерживается докачка пакетов; механизм докачки мы написали для УНФ самостоятельно (в платформе его нет), но, поскольку мобильный УНФ поставляется в исходных кодах, разработчики могут посмотреть на реализацию механизма и позаимствовать ее для своих приложений.

Во время первичной синхронизации мобильного УНФ с большим УНФ работать в мобильном УНФ нельзя – появляется модальное окно, показывающее ход процесса. Все последующие синхронизации – фоновые, и не блокируют работу мобильного УНФ.

Полный список объектов, которыми обмениваются мобильный и большой УНФ:

  • Справочники:
    • Номенклатура
    • Контрагенты
    • Список пользователей
  • Документы:
    • Заказы покупателей
    • Поступление в кассу
    • Расход из кассы
    • Приходная накладная
    • Расходная накладная
    • Производство
  • Регистры (но не полностью все цены, а только основные):
    • ЦеныПоставщиков
    • ЦеныТоваров
  • Сведения об организации:
    • Наименование
    • Информация о налогообложении

В большом УНФ у товаров есть картинки – изображения собственно товаров. С целью минимизации трафика мы не грузим в мобильный УНФ картинки, они подгружаются по требованию – например, когда мы открываем в мобильном УНФ карточку товара.

image
Карточка товара с изображением товара

Эволюция приложения – развиваем сценарии использования


Типичная ситуация – бизнес растет, и функциональности мобильного УНФ на одном мобильном устройстве перестает хватать. В бизнесе появляется еще один сотрудник (или сотрудники), и им тоже надо работать с заказами.

В первых версиях мобильного УНФ сценарий переезда был достаточно прямолинейным – данные, введенные в мобильном УНФ, копировались в базу большого УНФ, и пользователь должен был отныне вести учет на компьютере. Мобильный УНФ в этом случае будет работать в режиме работы с заказами, а вести учет (как на автономной версии мобильного УНФ) на нем уже будет нельзя.

Это, конечно, было не совсем удобно для конечного пользователя – он уже привык вести учет с мобильного устройства, а тут его принудительно заставляют пересесть за клавиатуру компьютера. Не все будут этим довольны.

Поэтому мы расширили список сценариев работы мобильного УНФ. В этом нам помогло появление нашего облачного сервиса http://1cfresh.com, основанного на облачной технологии 1cFresh. Появилась возможность размещать большой УНФ в облаке. Мы расписали три сценария использования мобильного приложения по мере роста бизнеса пользователя:

  1. Совсем маленький бизнес. Учет ведется на одном мобильном устройстве.

  2. Бизнес растет – появились сотрудники. Можно поставить мобильный УНФ на мобильные устройства сотрудников. При этом нужно уметь обмениваться данными между мобильными устройствами для синхронизации данных; для этого мы решили использовать не обмен через файлы, а задействовать для синхронизации (а заодно и для бэкапа) версию большого УНФ, расположенную в облаке http://1cfresh.com. При включении этого сценария в облаке http://1cfresh.com создается экземпляр большого УНФ, база которого будет использоваться для синхронизации данных между мобильными устройствами. Использование в таком сценарии одного мобильного устройства – бесплатно, за каждое дополнительное устройство мы берем 75 руб/месяц, использовать в этом сценарии можно не больше трех устройств. При этом пользователям мобильных устройств можно задать предопределенные роли – торговый представитель, сервисный инженер, продавец (возможна также детальная настройка ролей); соответствующим образом будет ограничена функциональность мобильного приложения. Можно также работать через веб-клиент или тонкий клиент с большим УНФ, размещенным в облаке, но функциональность облачного УНФ будет урезана до функциональности мобильного УНФ. Но работать непосредственно в облачном УНФ необязательно – вся работа может вестись только с мобильных устройств.

  3. Бизнес вырос до размера средней фирмы. В этом случае имеет смысл арендовать в облаке полноценную версию большого УНФ, чтобы получить (через веб-клиент или тонкий клиент) дополнительную функциональность — CRM (в планах – включение CRM в мобильный УНФ, но пока доступен только в большой версии), управление складом, расширенное формирование цен, возможность работы с банками и так далее. В этом случае количество мобильных устройств, работающих с большим УНФ, не ограничено (за каждое устройство взимается дополнительная плата согласно тарифу, как за одно рабочее место; 1 лицензия на УНФ во Фреше или на «коробочный» УНФ дает право бесплатного пользования и 1 мобильным приложением).


image

Опыт монетизации приложения


Мобильное приложение УНФ, как я уже писал – бесплатное. Некоторое время назад мы решили монетизировать наше приложение (с помощью функциональности встроенных покупок, реализованной в мобильной платформе 1С:Предприятия версии 8.3.8), продавая дополнительную функциональность – производство, и возможность синхронизации с дополнительными мобильными устройствами.

image

Покупка функциональности «Производство» — разовая, а возможность синхронизации с дополнительными мобильными устройствами оформлена как подписка, которую нужно продлевать каждый месяц. Интересно, что уже через 3 недели после добавления функциональности покупок мобильный УНФ попал в топ 15 Google Play по продажам приложений для бизнеса.

Заключение


Мобильный УНФ – сравнительно небольшой (с точки зрения объема исходного кода), но довольно популярный продукт. Надеемся, рассказ о его эволюции будет полезен создателям мобильных end-user продуктов как на технологиях 1С, так и на других средствах разработки.

Нелишним будет напомнить, что на мобильной платформе 1С можно делать приложения, взаимодействующие не только с 1С-серверным backend-ом; протоколы, используемые для обмена данными в мобильных приложениях на платформе 1С – платформенно-независимые (web- и HTTP-сервисы, поддержка XML и JSON и т.п.). Так что если вам нужно быстро и динамично развивать кросс-платформенный (Android, iOS, Windows) мобильный клиент, причем с возможностью офлайн работы без постоянного подключения к Интернет для вашего бизнес-приложения, то мобильная платформа 1С вполне может быть оптимальным выбором для вас.
Поделиться с друзьями
-->

Комментарии (8)


  1. torrie
    26.06.2017 11:44

    Правильно понимаю, что всё это не нативное?


    1. iliabvf
      26.06.2017 12:21

      мобильная платформа это «конструктор» apk написанное на C++ воспроизводящее «конфигурацию» в виде XML, которую так же можно скомпоновать в один новый apk. Так что ответ да, не нативное, хороший дизайн не получится сделать, зато разработка быстрая и легкая как и сама десктопная 1С (по сути это она и есть).


      1. Varim
        27.06.2017 17:36

        Это примерно как браузер в смартфоне и страничка с JavaScript.
        Браузер нативный, а страничка не нативная, а — HTML, CSS, JS, IMG.
        Платформа нативная, а вместо странички с «HTML, CSS, JS, IMG» — конфигурация, такая же текстовая плюс бинарные картинки.


        1. iliabvf
          28.06.2017 14:52

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


          1. Varim
            28.06.2017 15:08

            есть своя база данных и мобильная платформа может работать как оффлайн приложение без связи с внешним миром
            Я в курсе этого. Просто попытался объяснить что такое конфигурация. Не вам, а тому кто не знает. Браузер+сайт, похоже на 1С+Конфигурация, только Конфигурация сидит локально, а не в интернете.


            1. Neikist
              29.06.2017 11:39

              Ну вроде сейчас и приложения основанные на всяких веб фреймворках

              своя база данных и мобильная платформа может работать как оффлайн приложение без связи с внешним миром

              имеют, хотя точно не уверен, кроме 1с на практике ни с чем дела не имел.


  1. siens
    28.06.2017 12:41

    Думаете ли Вы в 1С о создании собственного тонкого клиента под андроид? Который работал бы напрямую с большой базой? Как это делают уже давно, например, многие мобильные банки, форумы, каталоги и т.д. Да, оффлайн не поработаешь, но это иногда и не нужно при современном постоянном интернете.


    1. PeterG
      28.06.2017 15:36

      Да, потребность в таком решении понятна. Планами реализации пока поделиться не готов)