Советы по автоматизации. Мобильный клиент: установка, отладка, сборка под Android" Как создать 1с apk файл

Это статья для тех, кто интересуется мобильным клиентом. Мы рассмотрим установку мобильного клиента на Android, подключение отладки и сборку apk приложения в конфигурации «Сборщик мобильных приложений».

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

Я предполагаю, что Вы знакомы с установкой мобильного приложения и сборщиком мобильных приложений, а также, что у Вас уже установлен Android SDK, Apache Ant и прочее. Статей на эту тему уже полно.

Возьмем для наших экспериментов демонстрационную конфигурацию «Управляемое приложение» и, для начала, попробуем подключить ее в готовый мобильный клиент. В моем случае, дистрибутив клиента - это файл «1cem-client-arm.apk». Предварительно на смартфоне должна быть включена возможность установки приложений из неизвестных источников. У меня это выглядит так:

Мобильный клиент - это аналог веб-клиента, поэтому, для доступа к базе, ее необходимо опубликовать на веб-сервере. Здесь все стандартно, я публикую на веб-сервере IIS с именем “demo”. База у меня файловая, так что нужно дать права на каталог пользователю IUSR. Радует, что система сама об этом напомнила.

Подключаем базу в мобильном клиенте:

Сразу в базу войти, конечно же, не удалось J Все дело в том, что у Администратора открывается обработка по работе с электронной почтой и пытается установить значок для панели задач, которой в мобильном клиенте нет. Поскольку данной функциональности также нет и в веб-клиенте, код обрамлен в директивы компиляции «#Если Не ВебКлиент Тогда». Нам просто необходимо найти все места, где используется данная директива и поменять ее на «#Если Не ВебКлиент И Не МобильныйКлиент Тогда». Для начала этого вполне достаточно, и мы можем наконец-то увидеть работу мобильного клиента. Командный интерфейс выглядит следующим образом:

А вот список контрагентов:

Конечно же, это не все места, которые необходимо адаптировать под работу мобильного клиента. Проверить конфигурацию можно с помощью «Главное меню - Конфигурация - ---Проверка конфигурации»:

У меня нашлось 84 ошибки, включая неподдерживаемые объекты метаданных. Плюс те три места в коде, которые я уже ограничил директивами. Так что придется еще поработать над адаптацией, но это конечно не то же самое, что писать мобильное приложение с нуля.

Запуск под другими ролями происходит также, только необходимо установить право запуска мобильного клиента.

Если мы не понимаем в чем же ошибка - нам поможет отладка. Она в мобильном клиенте есть, но используется только отладка по HTTP. У меня база файловая, так что я воспользуюсь локальным сервером отладки («Сервис - Параметры - Отладка») и настрою автоматическое подключение для мобильного клиента («Отладка - Подключение - Автоматическое подключение»):

Указываем параметры и готово:

Настройка для предварительно подготовленного apk клиента от 1С завершена.

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

И так, имеем архив мобильной версии платформы. Загружаем его в справочник «Мобильные версии»:

В настройках сборщика отдельно появился пункт для SDK 26 и выше (кто, как и я, давно не обновлял - запускаем SDK Manager и загружаем новые пакеты):

Далее необходимо подготовить файл конфигурации. Вот с этим шагом у меня и были проблемы в самом начале. Потом я открыл документацию и все немного прояснилось. Руководство разработчика говорит по этому поводу следующее: «Каждая конфигурация, которая может работать в мобильном клиенте, содержит некоторую вспомогательную информацию, позволяющую отследить подмену конфигурации».
Файл конфигурации необходимо подписать. При этом для каждой конфигурации формируется свой закрытый ключ, а в файл 1cemca.xml выгружается открытый ключ (поле DSAKey), с помощью которого и сравнивается подпись конфигурации.

Чтобы сформировать ключ и подпись, заходим в свойства конфигурации «Подпись мобильного клиента» (сразу под требуемыми разрешениями, если у Вас свойства разделены по категориям, а не по алфавиту) и видим настройки подписи:

Сначала создаем закрытый ключ, прячем его от шпионов и врагов. Далее формируем подпись конфигурации. На будущее, руководство советует зайти в «Главное меню - Конфигурация - Мобильный клиент - Настройка использования мобильного клиента». В диалоге установить флажок «Проверять подпись мобильного клиента при обновлении конфигурации базы данных» и нажать кнопку «ОК». Судя по руководству, подпись будет меняться, если у нас меняется состав или имена объектных типов метаданных, а также имена и/или состав ключей записи регистров. Т.е. изменение форм определенно не влияет на подпись и, судя по описанию, изменение состава реквизитов существующих справочников, документов (но это не точно).

Подпись готова, можем продолжить. Сразу скажу, что фоновые процессы в мобильном клиенте недоступны, так что их необходимо отключить в разрешениях мобильного клиента. Так же недоступен обмен файлами с ПК. Я дополнительно отключил геопозиционирование, чтобы при сборке не возникала ошибка из-за отсутствия ключа для работы с картами. У меня получился следующий список разрешений:

Добрый день, уважаемые читатели, предлагаем Вашему вниманию небольшую статью по созданию простого мобильного приложения на базе мобильной платформы 1С: Предприятия под Android без компиляции в apk-файл.

Для начала вкратце определимся с основными понятиями и софтом, который нам понадобится для разработки.

1.Основные понятия

Мобильная платформа - инструмент, позволяющий реализовать приложения, функционирующие на мобильных устройствах под управлением операционных систем iOS, Android, Windows Phone.

Мобильное приложение - является конечным результатом разработки. Устанавливается на мобильное устройство и имеет возможность обмена информацией с основным приложением в режиме Off-line. Для обмена доступны следующие каналы передачи информации: Файловый обмен, электронная почта, Web-сервисы и т.п.

В качестве среды разработки выступает конфигуратор, единственное, что необходимо принять во внимание: мобильным приложением поддерживаются не все объекты конфигурации и механизмы системы.

2.Настройка программного обеспечения

2.1 Установка Web сервера

Для начала установим Web сервер. Работа возможна как с Internet information services от Microsoft так и с Apache . В нашем примере будем рассматривать Apache поскольку он более прост в настройке и стабилен в работе.

При помощи клавиши «Next» переходим к следующему окну:

В поля «Network Domain» и «Server name» впишем «localhost » (или 127.0.0.1). Это значит, что сервер будет работать на локальном компьютере.

В поле « Administrator s Email Address » укажем почтовый адрес, на него будут приходить ответы сервера.

По умолчанию Apache работает с 80 портом. С этим же портом по умолчанию работает множество популярных программ, например TeamViewer , Skyp e , которые в дальнейшем не дадут запустить Apache . Есть 2 варианта решения данной проблемы, отключить использование данного порта в этих программах, либо поменять порт у Apache .

Чтобы выяснить какие программы занимают 80 порт необходимо запустить cmd.exe (нажать Пуск - вбить в поиск cmd - нажать правой кнопкой «Запустить от имени администратора») в появившемся окне ввести команду netstat -ab .

На скриншоте видим, что 80 порт занят Skype.

Оставим порт по умолчанию 80. Нажимаем «Next» выбираем типовую установку. Нажимаем «Next» , меняем каталог установки если потребуется, в следующем окне нажимаем «Install , после чего запустится процесс установки.

После окончания установки в системном трее появится иконка , если кликнем по ней два раз, откроется следующее окно:

Если все же возникли проблемы со стандартным портом его всегда можно поменять вручную, для этого нужно зайти в папку где установлен Apache , выбрать папку «conf» , в ней открыть файл «httpd.conf ». В нем найти параметр «Listen» и поменять его значения на нужный Вам порт, например 8080.

После изменения номера порта сохраняем файл и перезапускаем Apache . Для этого в трее щелкаем по значку

левой кнопкой мыши в появившемся меню выбираем «Restart ».

Убедимся в работоспособности Web сервера, зайдем в браузер и в поле ввода адреса укажем http://localhost:8080/ (где 8080 порт, который мы установили) на экране должна появиться следующая страница:

2.2 Настройка платформы

Для успешной работы необходимо, что бы были установлены следующие компоненты:

2.3 Установка мобильной платформы

Скачиваем мобильную платформу с сайта 1С https://users.v8.1c.ru/ . В нашем примере используется версия 8.3.8.70.

Скаченная платформа представляет собой архив, который состоит из следующих папок:

  1. Android - содержит в себе файлы для сборки под Android;
  2. iOS - содержит в себе файлы для сборки под iPhone;
  3. Windows - содержит в себе файлы для сборки под Windows Phone;
  4. MobileAppMaker - содержит в себе файлы конфигурации «Сборщик приложений».

Поскольку разработку приложения Мы будем вести для устройства под управлением ОС Android, то нас интересует первый каталог.

Посмотрим его содержимое:

  • 1cem-arm.apk - мобильная платформа разработчика для архитектуры ARM, наиболее часто используемая;
  • 1cem-x86.apk - мобильная платформа разработчика для архитектуры x86, используется для процессоров от Intel;
  • prjandroid-arm.zip - мобильная платформа, предназначенная для сборки мобильных приложений (для архитектуры ARM);
  • prjandroid-x86.zip - мобильная платформа, предназначенная для сборки мобильных приложений (для архитектуры x86).

Установим мобильную платформу на устройство, для этого скопируем в память телефона файл «1cem-arm.apk» либо если Ваше устройство использует процессор Intel, «1cem-x86.apk».

Зайдем в диспетчер файлов на мобильном устройстве, найдем наш файл и запустим его

При установке может возникнуть сообщение о блокировке приложений не полученных из Play Store.

В таком случае нужно нажать кнопку «Настройки » и в появившемся окне установить флажок «Неизвестные источники »

и повторить установку.

2.4 Настройка конфигурации

После того как все программное обеспечение настроено приступим к разработке нашего мобильного приложения. Создадим новую информационную базу и зайдем в неё в режиме конфигурирования.
Заходим в меню Сервис -> Параметры и расставим галочки как показано на скриншоте:

У вас есть вопрос, нужна помощь консультанта?

Далее вызываем свойства корневого узла конфигурации и устанавливаем параметр «Назначение использования» как «Мобильное устройство», флаг «Персональный компьютер» убираем. После этого станут доступны объекты мобильного приложения. Часть объектов конфигурации станет недоступна.

2.5 Публикация конфигурации приложения

Следующим шагом осуществим перенос конфигурации на телефон. Для это в первую очередь создадим каталог, путь к этому каталогу должен быть коротким, не содержать пробелов и состоять только из латиницы, например C:\MobileApp. Далее заходим Конфигурация -> Мобильное Приложение -> Публиковать . В появившемся окне заполним параметры:

  • Имя - Имя мобильного приложения. Имя не должно совпадать с именем публикации базы для тонкого клиента.
  • Обновлять мобильное приложение - если данный параметр установлен, то при каждом обновлении конфигурации автоматически будет обновлена конфигурация на устройстве
  • Каталог - путь к папке, где будут хранится файлы мобильного приложения.

Убедимся, что все работает, зайдем в браузере по адресу http://localhost:8080/Mobapp/ , мы должны увидеть следующий xml-файл:

В поле адрес вводим IP компьютера на котором опубликована конфигурация и имя самой публикации через слеш. В нашем примере используется не стандартный порт, поэтому адрес будет иметь следующий вид:

Нажимаем кнопку загрузить, после загрузки должно появиться следующее окно настроек:

Устанавливаем параметры:

  • «Перезапуск из конфигуратора » - Приложение будет автоматически обновляться когда будет обновлен размещенный на веб-сервере XML файл конфигурации.
  • «Отладка разрешена » - возможна пошаговая отладка приложения на мобильном устройстве из Конфигуратора на компьютере разработчика. Нажимаем кнопку «OK ».

В случае если после нажатия кнопки «Загрузить » возникнет подобная ошибка:

Теперь наша база добавлена на мобильном устройстве, и мы можем её запустить, нажимаем на неё в списке выбора баз. Появившееся окно пустое, поскольку мы еще не добавили ни одного объекта метаданных. Приступим к разработке.

  1. Настройка обмена между ЦБ и мобильным приложением

Предположим, что у нас есть некая база-источник, которая содержит только один справочник: «Номенклатура». И она должна обмениваться информацией с нашим мобильным приложением.

Перейдем в конфигуратор мобильного приложения, создадим иерархический справочник под названием «Номенклатура». Добавим форму списка.

Зайдем в рабочую область начальной страницы и добавим туда форму списка справочника «Номенклатура», параметр «Шаблон начальной страницы» установим как «Одна колонка».

Нажмем кнопку «Обновить », приложение в телефоне должно обновится автоматически. Если нет, то выводим на панель кнопку и нажмем её. На экране должно появиться следующее окно:

Следующим шагом создадим новую ИБ. В неё добавим справочник «Номенклатура», структура которого будет полностью повторять справочник «Номенклатура» мобильного приложения. Данная база будет выступать в роли Источника.

Создадим новый Web-сервис, назовем его «MobileExchange». В свойствах установим URI пространства имен «MobileExchange». В данном Web-сервисе добавим новую операцию и называем её «ЗагрузитьТовары»

Теперь напишем код, который будет возвращать список товаров из базы источника в виде xml файла. Зайдем в свойства операции «ЗагрузитьТовары» и создадим новую функцию из поля «Имя метода ». В функции пропишем следующий код:

Опубликуем Web-сервис, для этого перейдем Администрирование ->Публикация на Web -Сервере . В появившемся окне зададим имя Web-сервиса «MobileExchange» и снимем галочку «Публиковать тонкий клиент и Web-клиент». После этого нажмем кнопку «Опубликовать ».

После публикации Web-сервиса, перейдем в конфигурацию мобильной платформы, откроем форму списка справочника «Номенклатура» и добавим новую команду «Обновить номенклатуру» в командную панель формы. Перед этим рекомендуется снять галочку «Автозаполнение » у данной панели.

Создаем у команды «Обновить номенклатуру» новое действие и пишем следующий код:

Обновляем конфигурацию.

На этом разработка завершена. Переходим в пользовательский режим конфигурации Источника и заполняем справочник номенклатура произвольным образом

Переходим в мобильное устройство, запускаем приложение, и нажимаем кнопку «Обновить номенклатуру». Если все сделано верно, то на экране должны появиться данные:

Заключение

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

Вот мы и подобрались к 1С: Предприятие в виде мобильного приложения - небольшой обзор на мобильное приложение изнутри.

Мобильное приложение представляет собой самодостаточное приложение со своей собственной базой данных для работы с пользовательской информацией. На данный момент , мобильные приложение от 1С могут работать на трех самых популярных платформах - Android, Apple iOS, и Windows.


Установка мобильного приложения осуществляется из «маркетов» на данных платформах . Если приложение не опубликовано, то можно его установить передав файл-дистрибутив на мобильное устройство.

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




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


Зато есть функционал для использования мобильных достоинств: при разработке мобильного приложения можно использовать Контактную книгу, совершать вызов из приложения через подсистему « Т елефония», получить данные о местонахождении через Геопозиционирование.

Вы спросите: « Как же работать с обычной базой на 1С? Зачем такое приложение вообще нужно?»

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

Мобильное приложение должно выполнять функцию мобильного приложения и соответствующий функционал, поэтому полностью все данные из одной базы в другую не синхронизируются, да и не смогли бы из-за объектного ограничения, описанного выше.
Такая реализация обмена доступна, например, в связке программ 1С: Предприятие 8 Управление Торговлей ред.11 и мобильное приложение "1С:Заказы" . Базы обмениваются информацией о контрагентах, заказах покупателей товарным ассортиментом и ценами. При этом мобильное приложение может работать оффлайн, а при доступности сети Интернет производить обмен данными.
Мобильное приложение выглядит достойно, есть визуальный узнаваемый стиль по сравнению с десктопной версией 1С, а также набор стандартных операций производимый с объектами, типа: «Провести», «Пометить на удаление» и тому подобные. Поэтому пользователям мобильного приложения будет знаком контекст работы.

Вот так выглядит интерфейс приложения в последних версиях:


Второй популярный способ общения между мобильным приложением и учетной системой
1С: Предприятие 8 - это работа через веб-сервисы

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

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

Подробнее:

Сервис может передавать данные в формате, описанном в XDTO пакете, причем сам разработчик описывает эту модель данных. Можно передавать примитивные типы: числа, строки, даты. Можно передавать составные типы, можно передавать бинарные данные - например, картинки, или документы PDF, XLS. Мы покажем простой пример, где описан пакет с задачами - номер задачи и заголовок. Пример того, как выглядит пакет :

В свою очередь, в мобильном приложении создается объект с типом WS-Ссылка. В ней указывается адрес веб-сервиса, после чего автоматически подгружаются типы данных и методы, которыми сервис оперирует:

Все готово! В мобильном приложении теперь можно вызывать функцию сервиса 1С: Предприятие 8 или получать необходимые данные.

А что с лицензиями на мобильные приложения от 1С?

В информационном письме от фирмы 1С данный вопрос раскрыт. Выдержка приведена ниже.

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

И по традиции, кейс:

Задача:

Заказчик имеет центральный офис и несколько точек в своей торговой сети. На каждой точке несколько продавцов-менеджеров и одно рабочее место продажи товара с учетной программой.

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

Для постановки задач Заказчик сначала использовал электронную почту и телефонные звонки, но - автоматизированное рабочее место одно и оперативно получать задачи и реагировать на них работники не могли. Центральный офис имел трудности в контроле таких задач, так как при постановке по телефону задача нигде не записывалась, а пересматривать почту на предмет невыполненных задач было затруднительно.

Решение:

Мы предложили следующее решение. Разработать необходимый функционал для постановки задач сотрудникам на базе мобильного приложения «1С: Заказы» и интегрировать его с центральной учетной системой.

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

Благодаря тому, что мобильное приложение и центральная учетная система работают в одном информационном пространстве - была достигнута оперативность постановки задач и адресация именно на того сотрудника, кому она предназначалась.

Повысилась точность передачи информации - если раньше по электронной почте менеджер в офисе писал - «подготовить товар по Заказу№ ___», то теперь в задаче он просто указывал ссылку на необходимый заказ, которые работник точки мог открыть на телефоне.

Повысился уровень контроля по задачам - они никуда не пропадали и имели статус, который им устанавливал работник в процессе исполнения задачи. А центральный офис всегда мог проконтролировать поставленную задачу.

Анатолий Никулин

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

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

Установка веб сервера Apache

1. Скачиваем скомпилированные файлы веб сервера Apache, весрии 2.2 (На момент написания, платформа 1С могла работать, только с указанной версией). Выбрать, откуда скачать, можно по адресу: https://httpd.apache.org/docs/current/platform/windows.html#down раздел «». Например, используем сайт «ApacheHaus » и скачиваем архив в зависимости от разрядности вашей операционной системы.

Скачанный архив распаковываем, по пути: «C:\Apache22», убедитесь, что порт 80 на вашем компьютере свободен и не занят другим приложением. Далее с помощью «Командной строки» (запущенной от имени администратора) переходим в каталог «C:\Apache22\bin» и выполняем команды:

Httpd -k install

Httpd -k start

После этого, будет установлена и запущена служба «Apache2.2», проверить которую можно в браузере, по адресу: http://127.0.0.1/ но вместо 127.0.0.1 используйте IP адрес вашей сетевой карты, через которую будет происходит обмен данными, с разработанным мобильным приложением 1С.
Если установка прошла успешно, будет выведена информация о сервере и надпись «It works!».

В папке с исполняемыми файлами веб сервера, находится приложение «ApacheMonitor.exe », которое служит удобной утилитой для остановки и перезапуска сервера. Ссылку на данное приложение помещаем в автозагрузку операционной системы, например, в папку:

C:\Users\[ИмяПользователя]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Установка мобильной платформы для разработчиков 1С

2. Скачиваем и распаковываем архив с мобильной платформой для разработчиков 1С, с доступных вам адресов:
https://users.v8.1c.ru/distribution/total , http://online.1c.ru/catalog/free/18610155/ , http://its.1c.ru/ , либо с торрент трекеров.
В папке «Android» находятся APK файлы (1cem-arm.apk и 1cem-x86.apk ), выберите нужный тип (arm либо x86 (Intel)) в зависимости от того какая архитектура используется в процессоре вашего устройства.
Установите приложение на ваше устройство, перед этим включите разрешение на установку из неизвестных источников (Настройки – раздел «Безопасность»).

Создание конфигурации для мобильного приложения

3. На локальном компьютере создайте новую базу данных и запустите «Конфигуратор». В свойствах конфигурации, для параметра «Назначение использования» укажите «Мобильное устройство».

Создайте общую форму и поместите на нее «Декорация — Надпись» с текстом «Привет мир» и команду «НажмиМеня», с обработчиком:

&НаКлиенте Процедура НажмиМеня(Команда) Сообщить("Привет Мир!!!"); КонецПроцедуры

После, откройте «Параметры» (Сервис — Параметры) и выберите вкладу «Отладка», установите настройки согласно скриншоту:

Проверка настроек брандмауэра

4. Проверьте настройки брандмауэра, порты 80 и 45455 по протоколу TCP, должны быть доступны. На домашнем компьютере использую «ESET Smart Security», версии 9, для него необходимо зайти в «Дополнительные настройки», выбрать раздел «Персональный файервол», далее подраздел «Основное» и «Изменить» правила.

Проверьте на мобильном устройстве доступ к веб серверу Apache и отладчику 1С, для этого в браузере используйте IP адрес сетевой карты, через которую идет обмен данными с разработанным мобильным приложением 1С, примеры адресов: http://192.168.0.96 и http://192.168.0.96:45455

Настройка мобильного приложения 1С

5. Откройте мобильную платформу на устройстве Android и добавьте новое приложение, настройте как показано на скриншоте (используйте свой IP адрес):

Тестирование мобильного приложения 1С

6. Тестируйте ваше 1С мобильное приложение «Привет мир». Дополнительно, попробуйте поставить точку останова в процедуре обработки нажатия кнопки.

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

Практика разработки мобильного приложения 1С 8.3 (часть 1)

В данной статье речь пойдет о том, что довелось перепробовать и на какие грабли наступить, прежде чем удалось сделать более-менее нормальное приложение для планшетников. Приложение изначально затачивалось только под Андроид, за основу взята конфигурация 1С: Заказы, и мобильное приложение для разработки.

Изначально был выбран «неправильный» подход с компилированием приложения и закидыванием его на планшетник вручную. Напомню, что для сборки мобильных приложений используется «Помощник создания мобильного приложения» (MobileAppWizzard ). Затем на одном из форумов было найдено красивое решение с использованием мобильного приложения для разработки. Это приложение входит в комплект установки мобильной платформы. На момент разработки использовалась платформа версии 8.3.3.24. В папке «Android » можно найти файл 1cem.apk. Это и есть мобильное приложение для разработки. Его огромнейший плюс, сэкономивший нам уйму времени — в том, что можно опубликовать мобильное приложение на веб-сервере, а на планшетнике указать путь вида http://[ Адрес веб-сервера ]/[ Имя мобильного приложения ].

На планшетном ПК, в настройках добавленного приложения можно отметить флажок «Обновлять из конфигуратора», и при каждом запуске приложение будет пытаться подключиться к веб-серверу и проверять обновления.

После того, как мобильное приложение было развернуто, начался процесс его доработки.

Что требовалось:

1. Настроить обмен между центральной базой и мобильным устройством.

2. Организовать асимметричную синхронизацию: из центральной базы выгружать данные о номенклатуре, контрагентах, остатках товаров на складе и взаиморасчетах, а из мобильного приложения загружать только заказы покупателей.

3. Реализовать простой интерфейс для менеджеров, где они смогут быстро просмотреть остатки, цены и взаиморасчеты.

На этапе тестирования использовалась промежуточная база «Управляемое приложение», ввиду того что демо-приложение 1С:Заказы изначально заточено на обмен именно с Управляемым приложением.

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

1. Использование com- объектов на 64-битной серверной ОС. Для решения проблемы была использована обертка COM+ Applications, которая настраивается в Component Services.

2. Удаленный вызов Com с другого сервера. Вызываемый сервер должен иметь роль Application Server, и у него должно быть настроено COM+ Network Access. Кроме того, сервер Apache должен иметь соответствующие права (т. е. запускаться как сервис от имени авторизованного пользователя)

Намучившись с Ком-соединениями, решили переводить рабочую базу на web- сервисы.

О публикации веб-сервисов также написано очень много, но там написано о том, как работает. Как НЕ работает, поделюсь ниже.

Рабочая база развернута на платформе 8.2, мобильное приложение, соответственно, на 8.3.

При публикации вначале приложения 8.3, а затем 8.2. периодически выхватывали глюк «Ошибка формата потока» в веб-клиенте 8.3, либо сообщение об ошибке «различаются версии платформы клиента и сервера». Перепубликация не помогает, равно как и перезапуск Apache. А вот отключение публикации и подключение заново — помогает.

Далее, поймал забавную ошибку при авторизации пользователя (при создании ws Определения). При тестировании на компьютере, авторизация с длинным ФИО проходит легко. При попытке авторизации этого же пользователя с планшетника под управлением Android, авторизация заканчивалась, не начавшись. Экспериментальным путем удалось вычислить, что кириллицей длина логина ограничена 22 символами. При этом сочетание кириллических символов и цифр дало авторизоваться с логином длиной 27 символов. Есть подозрение, что это связано с преобразованием кириллических символов. Так, например, в браузере Firefox строка из Википедии « иво» преобразуется в « ».

Технологически, мобильная платформа 8.3.3 на текущий момент имеет ряд ограничений. Самое ожидаемое, на мой взгляд, нововведение — это поддержка запросов. Но, поскольку произвольные запросы в динамических списках мобильная платформа пока не поддерживает, пришлось «пойти другим путем».

Для решения задачи отображения справочника номенклатуры с ценами и остатками был использован следующий подход:

1. В форме справочника номенклатуры созданы две таблицы. Первая — динамический список, собственно сам справочник. Фильтр динамического списка настроен так, чтобы выводились только группы. Вторая таблица — собственно остатки и цены. При активизации строки динамического списка, на сервере происходит заполнение таблицы значений, которая затем и выводится во вторую таблицу. При получении цен и остатков использовалась объектная модель. Все эти танцы с бубном были исполнены только потому, что привычного по толстому клиенту метода «при выводе строки» или «при получении данных» нет, и динамически нарисовать цифры в колонке нельзя.

Аналогичный подход использовался и в форме подбора

2. Для вывода строки с текущими ценами отлично подошла ФорматированнаяСтрока.

Ниже — пример кода.

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

3. Для загрузки справочников, остатков и цен в мобильное приложение был использован веб-сервис, который на входе получает структуру параметров, а на выходе возвращает хранилище значения. Еще одним неприятным открытием стал вылет обмена при слишком длительной обработке на стороне сервера. Сложилось впечатление, что имеется какой-то таймаут, после которого приложение «считает», что связь прервана (хотя на самом деле все еще идет обработка данных в рабочей базе через ws -соединение), и прекращает обмен с ошибкой.

Чтобы этого избежать, было принято решение дробить полный обмен на порции с возвратом фокуса обратно в мобильное приложение. Т.е. вначале синхронизировать номенклатуру, затем контрагентов, затем остатки, и т. п.

4. Для получения отчетов оставлен тот же подход, что и в конфигурации 1С: Заказы. Вызывается веб-сервис с параметрами, на стороне сервера рабочей базы формируется табличный документ, и затем уже готовый табличный документ возвращается в мобильное приложение.