Выбор файлов и каталогов на мобильном устройстве. Мобильная платформа 8.3

















С выходом мобильной платформы 8.3.2, у любого интересующегося 1С-ника, зачесались руки пощупать это диковинное изделие. Кто-то сделал классический "Hello world!", кто-то повторил или просто разобрал "1С:Заказы", а кого-то процесс не дошел до полной настройки рабочего окружения и тестирования своих конфигураций на своих же девайсах. Мне захотелось попробовать сразу все: разработку под Linux, Android и iOS.

Выбор файлов и каталогов на мобильном устройстве. Мобильная платформа 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-м компьютере.

 

В архиве конфигурация мобильного приложения (для удобства) и отдельно внешняя обработка.

 

15 Comments

  1. LaNaite

    Grazie ❗

    Reply
  2. PRO100_NigGaZ

    Как выбрать файл? на ПК «Новый ДиалогВыбораФайла;» работает на андроиде нет (

    Reply
  3. PRO100_NigGaZ

    Архив = Новый ЧтениеZipФайла(Путь + Имя) на мобильной платформе не работает 🙁

    Reply
  4. maleshov.maxim

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

    Реально, на данный момент, можно прочитать только xml и картинки.

    Reply
  5. demetr2011

    готовое решение

    http://infostart.ru/public/183122/

    Reply
  6. TrinitronOTV

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

    Reply
  7. vile_folder

    на андроиде поставил платформу 8,3 ля обильных. загружает и сразу просит приложение добавить — переходишь «добавить» — просит логин,пароль и сайт… что делать кто нибудь знает?

    Reply
  8. lcd-boost

    Очень даже хорошо!!! Но не лучше ли было бы, код отобразить в статье? Так сказать для наглядности 🙂

    Reply
  9. fozzy

    Подскажите, а как же Вы реализовали так, что 1С видит пользовательские папки?

    Reply
  10. maleshov.maxim

    Тут все зависит от платформы. iOS дает доступ только к песочнице приложения.

    В общем случает идет обращение к корневой папке файловой системы («/») и перебор всех папок/файлов в ней.

    Reply
  11. mzelensky

    Доброго времени суток!

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

    Reply
  12. maleshov.maxim

    Т.к. нативного диалога выбора файлов в мобильном приложении нет, нужно делать все руками через НайтиФайлы().

    Либо использовать эту обработку, либо писать свою. Третьего варианта пока нет.

    Reply
  13. for_sale

    (7) vile_folder, у тебя на компе должно быть опубликовано приложение (в конфигураторе КОнфигурация — Мобильное приложение — Опубликовать). При публикации указываешь имя конфигурации, после этого в диалоге на мобильном пишешь адрес компьютера и имя конфигурации. Ну и пользователя, если он есть.

    Reply
  14. ololoanonim

    А я писал свою. только не смог убрать гон с переходом в верхнюю папку)

    Reply
  15. sasha_r

    (5) demetr2011, страница не найдена. а что там было?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *