Выбор файлов и каталогов на мобильном устройстве. Мобильная платформа 8.3.
Зачем?
С выходом мобильной платформы 8.3.2, у любого интересующегося 1С-ника, зачесались руки пощупать это диковинное изделие. Кто-то сделал классический "Hello world!", кто-то повторил или просто разобрал "1С:Заказы", а кого-то процесс не дошел до полной настройки рабочего окружения и тестирования своих конфигураций на своих же девайсах. Мне захотелось попробовать сразу все: разработку под Linux, Android и iOS.
Где разрабатывать?
В качестве первого рабочего окружения была выбрана связка:
- Linux Mint 13 (x86_64)
- платформа 8.3.2.163 (Deb64)
- Apache 2.2
Приятной неожиданностью была беспроблемная установка платформы. На Mint платформа встала без проблем, в отличии от CentOS. Работать в таком окружении можно, но пока не очень комфортно. В режиме конфигуратора (в моем случае) проявляется несколько мелких, но назойливых багов, сильно снижающих производительность труда. Поэтому пришлось вернуться на более стальное решение:
- Windows 7 (x86_64)
- платформа 8.3.2.163 (x86)
- Apache 2.2
Ставить и настраивать IIS мне было категорически лень, а Apache установился и завеося без каких либо дополнительных настроек (официальный дистрибутив, типовая установка). Единственное огорчение - нет Снегопата под 8.3.
На чем тестировать?
В качестве подопытных девайсов выступают:
- Digma IDx9 3G (Android 2.3.1)
- LG P500 (Android 4.0.4)
- iPad2 (iOS 5.0.1 + jailbreak + iFunbox)
Проверять приложения сразу на устройствах довольно удобно, но они не всегда под рукой. В качестве замены прекрасно подходят эмуляторы:
- родной эмулятор Android SDK
- BlueStacks
BlueStacks - вариант для ленивых. Никаких настроек, запустил - работает. Android SDK - можно настроить очень гибко, сделать эмуляторы разных версий Android. Но это долго и надо вникать.
С iOS все сложнее, но тут тоже есть пара вариантов:
- любой относительно современный компьютер от Apple, XCode, сертификат разработчика. Только при таком раскладе ваше приложение будет иметь гипотетический шанс быть опубликованным в AppStote.
- виртуальная машина MacOS X с инструментами разработчика, iOS Simulator + jailbreak. Вариант для изучения и обучения. Для нас в самый раз.
Я остановился на варианте iPad2 (iOS 5.0.1 + jailbreak + iFunbox). Мобильная платформа под iOS имеет ряд отличий от версии под Android (возможно я просто их не нашел):
- нет возможности установить свою опубликованную конфигурацию в "1C:Заказы"
- нет кнопки "Обновить" в настройках базы.
Этот вопрос можно решить, если сделан jailbreak и есть прямой доступ к файловой системе устройства. Вместо загрузки опубликованных кофигураций в приложении реализован механиз создания и обновления новых баз из шаблонов. Шаблон - это схема конфигурации, которую создает 1С при публикации мобильного приложения. Шаблоны лежат здесь:
conf.xml - шаблон типовой конфигурации
1cema.xml - шаблон нашей конфигурации
После сохранения шаблона в эту папку приложение на iOS даст создать базу из нового шаблона. При замене нашего шаблона на более новую версию приложение предложит обновить конфигурацию базы на устройстве.
Что делать?
Мне захотелось простого - просмотр каталогов и чтение основных типов файлов: текст, картинки, xml. Задачка, на первый взгляд, странная для 1С. Зато хорошо расставляет в точки над "и". Сразу понятно что можно, а что нельзя.
Беглое изучение справки дало неутешительный результат - на мобильной платформе не поддерживается "ДиалогВыбораФайла". На этом можно было забыть о задачке, ну или отложить ее до появления в мобильной платформе нужного функционала. «Настоящие герои выбирают путь
в обход» - , поэтому я решил сделать свой диалог работы с файлами и каталогами с оглядкой на возможности и ограничения разных платформ.
Так появилась обработка-конфигурация "ДиалогРаботыСФайлами".
Грабли мобильной платформы:
- нет множественного выбора в списке
- нет отображения списка в виде дерева
- проблемы с обновлением реквизитов. При изменении реквизитов на сервере, обновление реквизитов на форме происходит с глюком.
Приходится сначала очищать реквизит на клиенте, а потом перезаполнять его на сервере. Проблема проявляется на мобильной платформе, в
отладке на Windows/Linux проблема не проявляется.
- куцый набор доступных объектов. Не реализован "ТекстовыйДокумент", прочитать и разобрать xml можно, а простой текстовый файл - нет.
- нет запросов, только объектные выборки
Windows:
- файловая система основана на дисках
- разделитель пути - "\"
Т.к. Windows не является целевой платформой, функционал работы с дисками реализован не был, верхним уровнем файловой системы считается диск "С:". При желании, можно добавить команду переключения дисков.
Mint:
- корневая файловая система
- диски монтируются в системные папки, работа с дисками не реализована.
- разделитель пути - "/"
Android:
- разделитель пути - "/"
- корневая файловая система
- доступ к фалам ограничен павами пользователя на устройстве
iOS
- разделитель пути - "/"
- корневая файловая система
- приложения запускаются в песочнице
- корень файловой системы - это папка-бандл приложения на устройстве. По этой причине диалог выбора файлов практически бесполезен, нельзя выбрать фотки с камеры или системные рисунки.
Итого
В итоге получился диалог, не так много, уступающий встроенному:
1. нет множественного выбора файлов
2. фильтры поддерживаются, но есть ограничения - маска расширения должна быть полная.
правильно - "Документы Word (*.doc;*.docx)|*.doc;*.docx| Документы Excel(*.xls;*.xlsx)|*.xls;*.xlsx"
не правильно - "Документы Word (*.doc;*.docx)|*.doc*|Документы Excel(*.xls;*.xlsx)|*.xls*"
Остальные параметры соответствуют параметрам типового диалога.
Диалог отработал на 4-х системах, 3-девайсах, 2-х эмуляторах и 1-м компьютере.
В архиве конфигурация мобильного приложения (для удобства) и отдельно внешняя обработка.