- PVSM.RU - https://www.pvsm.ru -
На примере мобильного приложения «1С:Управление нашей фирмой» (сокращенно УНФ) я хочу показать эволюцию мобильного бизнес-приложения от его возникновения и выхода самой первой версии до сегодняшнего дня. Сейчас у этого приложения более 220 000 скачиваний; приложение бесплатное, но в нем есть платные опции (реализованные через встроенные покупки).
Первая версия мобильной УНФ была сделана на одной из первых версий мобильной платформы «1С:Предприятия» [1] в 2012 году. На тот момент уже существовала клиент-серверная конфигурация «1С:Управление небольшой фирмой» [2] (тогда название было таким), программа для автоматизации деятельности небольшой компании – продажи, закупки, база клиентов и поставщиков, управление складом, производство и т.п.
Как и большинство мобильных приложений, написанных на кросс-платформенной мобильной платформе 1С:Предприятия, мобильный УНФ доступен на iOS, Android и Windows.
Задача была поставлена так: сделать мобильное приложение, поддерживающее часть сценариев работы «большого» УНФ. Приложение должно уметь работать как автономно, так и синхронизировать данные с «большим» УНФ (далее слово «большой» применительно к клиент-серверной версии УНФ я буду писать без кавычек, чтобы не перегружать текст). В случае работы с большим УНФ должны поддерживаться сценарии «мобильных» сотрудников – торгового представителя, сервисного инженера, продавца.
Первая версия была создана за 1 человеко-месяц. При создании мобильного приложения часть объектов метаданных (справочники, документы) была реализована на основе объектов большого УНФ. Но часть функциональности пришлось программировать с нуля, например, процесс обмена данными с большим УНФ. Правда, применительно к обмену данными собственно программировать пришлось немного – мы использовали стандартные механизмы платформы (в частности, планы обмена [3]), сводящие написание кода к минимуму.
Помимо упрощения работы с синхронизацией данных платформа 1С ощутимо облегчает работу по конструированию полнофункционального мобильного приложения, предоставляя разработчику такие компоненты интерфейса, как списки (табличные и иерархические) с возможностью поиска по ним, поля ввода с поиском, таблицы для отчетов, широкий спектр диаграмм, возможность печати на WiFi и Bluetooth принтерах и т.д.
Есть две основных стратегии выбора функциональности мобильного приложения. Первая – «одно приложение – одна функция». Например, мобильное приложение для приема товара на складе, которое умеет только сканировать встроенной камерой штрих-код товара и отправлять информацию о принятом товаре на сервер. Вторая стратегия — создание мобильного приложения с широкой функциональностью «все в одном». Оба подхода имеют право на жизнь; при написании мобильного УНФ мы выбрали второй подход – наше приложение покрывает много задач своей предметной области и может работать полностью автономно, обслуживая потребности небольшой организации. Еще один плюс такого подхода – пользователь может работать с несколькими взаимосвязанными функциями из одного приложения.
Мобильный УНФ широко использует функциональность мобильного устройства, в частности:
Есть опция бэкапа и восстановления базы мобильного УНФ на Яндекс.Диск и отправка базы по почте.
Конфигурация мобильного УНФ выглядит достаточно спартански (см. скриншот ниже):
Основные объекты мобильного УНФ
Но, несмотря на такое небольшое количество прикладных объектов, продукт получился достаточно функциональным.
Интересная особенность мобильного УНФ – это то, что им зачастую начинают пользоваться люди, до этого про 1С не слыхавшие (да-да, есть в нашей стране и такие), те, которым понадобилось мобильное приложение для ведения учета их маленького бизнеса (например, домашнего крафтинга). Они просто нашли его поиском в Google Play или AppStore, почитали отзывы – и начали работать.
Этот сценарий работы предназначен для совсем маленьких организаций, когда весь учет ведется исключительно на мобильном устройстве. Это может быть, например, «домашний» бизнес – изготовление украшений на дому и их продажа на страничке ВКонтакте. А может быть даже и небольшой магазин – лично видел случай, когда магазин игрушек, специализирующийся на продаже конструкторов Lego, вел учет исключительно на мобильной версии УНФ. Учитывая, что мобильный УНФ умеет печатать на WiFi и Bluetooth принтерах, с его помощью можно решать довольно большое количество задач. Мобильный УНФ поддерживает обработку заказов, ввод приходных и расходных накладных, учет поступления и расход денег.
В режиме синхронизации с сервером в мобильном УНФ в ранних версиях становилась недоступна учетная функциональность, и работа в нем велась в основном с заказами (прием и выполнение заказов) и сопутствующей этому деятельности (ведение справочников контрагентов, товаров и услуг и т.п.).
Синхронизировались с большим УНФ справочники товаров и услуг, контрагентов, и заказы.
Обмен данными мобильного и большого УНФ в первых версиях
Заказы, введенные с мобильных устройств, попадали в большой УНФ, а при синхронизации попадали на мобильные устройства ответственных за заказы. Документы типа поступлений в кассу, реализации товара и т.п., введенные на мобильных устройствах, уезжали в большой УНФ, но не синхронизировались между мобильными устройствами. Вся работа в мобильном приложении в режиме синхронизации велась в основном вокруг заказов – их принятия и исполнения, полноценный учет на мобильном устройстве при этом не велся, для этого нужно было пользоваться большим УНФ на компьютере.
Так было в первых версиях, но впоследствии мы изменили ситуацию и расширили список сценариев использования мобильного УНФ, чтобы сделать работу с ним более удобной для пользователей.
Обмен данными между мобильным и большим УНФ идет через веб-сервисы; мобильный УНФ вызывает веб-сервисы, развернутые на стороне большого УНФ. Структуры данных в большом и мобильном УНФ различаются; при проектировании архитектуры мы рассматривали 2 варианта обмена данными:
Решили остановиться на втором варианте. Первый вариант, хоть и сулил некоторые преимущества, связанные с простотой собственно обмена данными, плохо обрабатывал ситуацию, когда в новой версии мобильного УНФ менялась (расширялась) структура данных; чтобы обмен данными «один-в-один» продолжал работать, нужно было бы обновлять и серверный, большой УНФ. Что, по многим причинам, было неприемлемо.
Механизмы обмена данными, реализованные в платформе, берут на себя бОльшую часть работы по формированию пакетов для синхронизации данных, позволяя свести написание кода к минимуму. В процессе обмена используется стандартный механизм платформы 1С:Предприятия – механизм обмена данными [4]; для каждого мобильного УНФ в большом УНФ создается узел обмена данными, в большом и мобильном УНФ задействуется служба регистрации изменений [5] для отслеживания данных, измененных со времени последней синхронизации и т.д.
Мобильное приложение инициирует обмен данными, с помощью механизмов платформы формирует пакет обмена (содержащий идентификатор мобильного приложения и данные, обновленные на мобильном УНФ со времени последней синхронизации) и пересылает его в большой УНФ. Исходя из информации в стартовом пакете, большой УНФ готовит для мобильного УНФ данные, измененные в большом УНФ со времени последней синхронизации, и упаковывает их в пакеты. Пакеты в формате XDTO [6] — это объекты метаданных 1С, сериализованные в XML; размер каждого пакета – не более 500 объектов.
Мобильный УНФ забирает эти данные пакет за пакетом. После загрузки последнего пакета мобильный УНФ начинает обрабатывать полученные данные – проводить документы, записывать справочники и т.д. В случае разрыва связи поддерживается докачка пакетов; механизм докачки мы написали для УНФ самостоятельно (в платформе его нет), но, поскольку мобильный УНФ поставляется в исходных кодах, разработчики могут посмотреть на реализацию механизма и позаимствовать ее для своих приложений.
Во время первичной синхронизации мобильного УНФ с большим УНФ работать в мобильном УНФ нельзя – появляется модальное окно, показывающее ход процесса. Все последующие синхронизации – фоновые, и не блокируют работу мобильного УНФ.
Полный список объектов, которыми обмениваются мобильный и большой УНФ:
В большом УНФ у товаров есть картинки – изображения собственно товаров. С целью минимизации трафика мы не грузим в мобильный УНФ картинки, они подгружаются по требованию – например, когда мы открываем в мобильном УНФ карточку товара.
Карточка товара с изображением товара
Типичная ситуация – бизнес растет, и функциональности мобильного УНФ на одном мобильном устройстве перестает хватать. В бизнесе появляется еще один сотрудник (или сотрудники), и им тоже надо работать с заказами.
В первых версиях мобильного УНФ сценарий переезда был достаточно прямолинейным – данные, введенные в мобильном УНФ, копировались в базу большого УНФ, и пользователь должен был отныне вести учет на компьютере. Мобильный УНФ в этом случае будет работать в режиме работы с заказами, а вести учет (как на автономной версии мобильного УНФ) на нем уже будет нельзя.
Это, конечно, было не совсем удобно для конечного пользователя – он уже привык вести учет с мобильного устройства, а тут его принудительно заставляют пересесть за клавиатуру компьютера. Не все будут этим довольны.
Поэтому мы расширили список сценариев работы мобильного УНФ. В этом нам помогло появление нашего облачного сервиса http://1cfresh.com [7], основанного на облачной технологии 1cFresh [8]. Появилась возможность размещать большой УНФ в облаке. Мы расписали три сценария использования мобильного приложения по мере роста бизнеса пользователя:
Мобильное приложение УНФ, как я уже писал – бесплатное. Некоторое время назад мы решили монетизировать наше приложение (с помощью функциональности встроенных покупок, реализованной в мобильной платформе 1С:Предприятия версии 8.3.8 [10]), продавая дополнительную функциональность – производство, и возможность синхронизации с дополнительными мобильными устройствами.
Покупка функциональности «Производство» — разовая, а возможность синхронизации с дополнительными мобильными устройствами оформлена как подписка, которую нужно продлевать каждый месяц. Интересно, что уже через 3 недели после добавления функциональности покупок мобильный УНФ попал в топ 15 Google Play по продажам приложений для бизнеса.
Мобильный УНФ – сравнительно небольшой (с точки зрения объема исходного кода), но довольно популярный продукт. Надеемся, рассказ о его эволюции будет полезен создателям мобильных end-user продуктов как на технологиях 1С, так и на других средствах разработки.
Нелишним будет напомнить, что на мобильной платформе 1С можно делать приложения, взаимодействующие не только с 1С-серверным backend-ом; протоколы, используемые для обмена данными в мобильных приложениях на платформе 1С – платформенно-независимые (web- и HTTP-сервисы, поддержка XML и JSON и т.п.). Так что если вам нужно быстро и динамично развивать кросс-платформенный (Android, iOS, Windows) мобильный клиент, причем с возможностью офлайн работы без постоянного подключения к Интернет для вашего бизнес-приложения, то мобильная платформа 1С вполне может быть оптимальным выбором для вас.
Автор: PeterG
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mobil-ny-e-prilozheniya/258806
Ссылки в тексте:
[1] мобильной платформы «1С:Предприятия»: https://habrahabr.ru/company/1c/blog/283198/
[2] «1С:Управление небольшой фирмой»: http://v8.1c.ru/small.biz/
[3] планы обмена: http://v8.1c.ru/overview/Term_000000151.htm
[4] механизм обмена данными: http://v8.1c.ru/overview/Term_000000269.htm
[5] служба регистрации изменений: http://v8.1c.ru/overview/Term_000000316.htm
[6] XDTO: http://v8.1c.ru/overview/Term_000000162.htm
[7] http://1cfresh.com: http://1cfresh.com/
[8] 1cFresh: http://v8.1c.ru/fresh/whatis.htm
[9] тарифу: https://1cfresh.com/price#details_techno
[10] версии 8.3.8: http://v8.1c.ru/overview/release_8_3_8/
[11] Источник: https://habrahabr.ru/post/331644/
Нажмите здесь для печати.