Отладка мобильного клиента
Не уверен что данной информации нет, но все что находил содержало либо частичную настройку либо недостоверные / сложно реализуемые способы.
Суть проблемы: есть множество мобильных приложений и мобильных клиентов и необходимо их отлаживать как в процессе разработки так и в процессе использования, т.е. когда сами устройства где-то по стране гуляют.
Решение будет описано в контексте мобильного клиента, т.к. работа шла на нем.
Еще до отладки было необходимо реализовать подключение мобильного клиента к самой БД. Суть сборки описана тут, но есть нюанс который там не освещен нигде, а именно то, что адрес во внутренней сети и во внешней отличается. Да, это банальность, но я на нее напоролся))
При разработке приложения я подключен к корпоративному WiFi и это внутренняя сеть, т.к. публикация выполнена на сервере (IIS) во внутренней сети и адрес для подключения мобильного клиента может быть такой: http://web_server/base_name, где web_server и base_name имя сервера и имя базы соответственно.
При этом, как только происходит отключение от WiFi, то соединение уже не установится, т.к. этот адрес недоступен из внешней сети. Тогда идем к админам и просим их сделать проброс этого адресе во внешнюю сеть (у вас должен быть какой-то сайт или домен, открытый извне). Например сделали проброс внешнего адреса http://url.website/basename на http://web_server/basename. У некоторых данный способ отработает и соединение будет установлено, а вот у некоторых нет. Проблема в том, что для небезопасного соединения используется 80 порт (для защищенного 443, но там еще с сертификатами заморочки, поэтому опишу в отдельной статье) и если порт явно не указать он автоматом указывается 80, т.к. порт популярный он может быть занят. Что в этом случае сделать? Можно явно указать порт в строке соединения и уже его прокинуть на 80 порт вашего web_server’а. Например, строка соединения превращается из http://url.website/basename в http://url.website:2080/basename. На этом проблемы соединения из внешней сети ушли, однако по такой строке теперь стало невозможно подключиться из внутренней сети)) Причина всё таже, порт. Решение тоже тривиальное, хотя может и некорректное, это изменение стандартного порта web_server’а, т.е. размещение его с 80 порта на 2080. Тогда порт нужно будет указывать явно всегда, но работать такое решение будет как во внешней сети так и во внутренней.
Возможно вышеописанные действия не самые корректные, но по крайне мере это работает, а каких-то адекватных решений и разборов проблем по мобильному клиенту пока еще маловато.
П.С. Вообще в компании я запросил отдельный сервер со своим IIS для всяких мобильных приложений, поэтому с манипуляциями на этом сервере проблем не возникло, а строка подключения прописывается при сборке мобильного клиента и пользователям о ней знать не обязательно.
Если подключение мобильного клиента успешно выполнено, то у вас уже должна быть доступна отладка, но только серверной части. Естественно сервер должен быть запущен в режиме отладки, поэтому данный момент опускаем, да и материалов по этому поводу навалом, однако отладка клиента будет недоступна.
Для реализации отладки клиента мобильного приложения необходимо:
Последним шагом будет являться установка адреса сервера отладки на мобильном устройстве, которое необходимо отладить и установка признака «отладка разрешена», тоже на мобильном устройстве.
Сам путь можно посмотреть в конфигураторе, в окне настроек параметров отладки.
Мобильная платформа 1С:Предприятие 8 – первые шаги
(бесплатная статья по Программированию в 1С)
Другие статьи по мобильной платформе:
Мобильная платформа 1С:Предприятие 8 – первые шаги
Где работает данная платформа?
На ПК в режиме эмуляции, при помощи программы BlueStacks (это самый простой вариант):
Отдельно дополню – желательно любое новое устройство с Андроид 4+, либо «флагманы» прошлых годов. На остальных «железках» программа хоть и работает, но только с небольшими объемами данных.
Что может мобильная платформа?
Тут следует немного отвлечься от 1С и разобраться в политике безопасности Андроида.
Все достаточно прозрачно, основная идея заключается в том, что в манифесте вашего приложения должны быть прописаны все права доступа к телефону. Т.е. если вы реализовали в вашем приложении возможность работы с видеокамерой, но не прописали ее в манифесте, то работать с ней вы не сможете.
Что же это нам дает? А дает следующее – мы можем, глядя на эти права, сразу понять – с чем наше приложение может работать, а с чем не может вообще.
Для наглядности давайте посмотрим свойства мобильной платформы 1С и мессенджера Viber.
Для этого зажимаем палец на приложении и ведем его вверх (О программе), или заходим в Настройки > Приложения > нажимаем на наше приложение.
И смотрим внизу список прав. Нажав на любое право, мы узнаем, что оно позволяет делать приложению. Для МП он будет выглядеть вот так:
А теперь посмотрим на права, которые требует Viber:
На что я тут хотел бы обратить внимание – когда говорят, что 1С может звонить или отправлять смс, то это не так. 1С может вызвать окно набора номера или отправки смс, но сама она ни звонить, ни отправлять, ни принимать смс не может! Так как это, как минимум, не разрешит ей сделать Андроид (это можно обойти, но об этом не сейчас).
Так же эти права показываются в момент установки, так что, если вы устанавливаете игру, а она имеет возможно совершать звонки или отправлять смс (желтеньким выделяется), то насторожитесь, может это не такая и простая игра.
Скорость работы мобильной платформы
Так как мобильник – это не компьютер, и мы не можем просто купить его, и, в случае медленной работы, добавить ему оперативки или заменить диск, то тут надо подходить к вопросу с осторожностью. Программировать под МП необходимо на том устройстве, с которым в последствии будет работать конечный пользователь.
Чтобы понимать на сколько это серьезно, я написал статью «Тестирование мобильной платформы 1С», в которой я постарался дать ответ на один вопрос – на сколько критично влияет оборудование на производительность в МП.
Перейдя в саму статью, вы можете более детально ознакомиться с тем, что это за варианты, и даже протестировать свои устройства. Скажу лишь одно – от Варианта А до Варианта Г увеличивается количество создаваемых элементов, документов и т.д., т.е. в Варианте А – самое маленькое количество документов и элементов справочника.
На текущий момент нас интересуют только цифры. Если быть точнее, то разница между устройствами. Почему это так важно? Ответ очевиден – нам нужно понимать на сколько может затянуться синхронизация в том или ином случае.
Как вы могли увидеть, разница между стационарным компьютером и мобильной платформой 1С отличается по скорости в 10 раз, в среднем.
В самом начале, я бы рекомендовал эмулировать ситуацию на вашей фирме, для того, чтобы понять – с чем нам стоит дальше работать, и, как следствие, в каком ключе.
Приведу пример, если у Вас в фирме есть порядка 500 номенклатур и в среднем десяток документов, то можно не заморачиваться с разными сложными механизмами обмена, регистрации и т.д., а просто при каждой синхронизации обновлять все с нуля. Это достаточно удобно. Однако, если у вас 50 000 товаров, 300 000 характеристик, 1 000 000 штрихкодов и т.д., то тут уже надо бы призадуматься над более сложными механизмами синхронизации.
Выбор устройства для работы с мобильной платформой
Эта тема тоже достаточно актуальная, так как необходимо понимать, на что стоит обратить внимание кроме производительности.
Ну, во-первых, если вы планируете использовать GPS, то, ясное дело, он должен быть в устройстве. Это весьма явный вывод, однако, есть и несколько не явных вещей.
Если вы хотите использовать видеокамеру телефона для сканирования штрихкодов (1С вроде как обещали эту функцию), то тут сразу необходимо обратить внимание на то, что она должна быть с автофокусом. Если автофокуса нет, то программа может или вообще не использовать эту функцию, или сканирование одного штрихкода у вас займет порядка 10 минут.
Кроме этого всего, у телефона должно быть достаточно встроенной памяти.
Фонарик желательно иметь, если вы планируете сканировать в темных помещениях, ну или даже просто фотографировать.
Если же вам необходимо в конечном итоге получить программу для инвентаризаций, то тут же встанет вопрос о сканировании товара, при чем встанет достаточно остро, и камерой телефона тут не обойтись. А это значит, что надо параллельно с телефоном – купить Bluetooth сканер, ну или если у вас в устройстве есть USB OTG, то HID совместимый проводной сканер.
Конечно же батарея – ее должно хватать на нормальный рабочий день, прогоните устройство пару раз и убедитесь, что заряда хватит.
Если же вы планируете купить ТСД на Андроид, то тут сходу надо понимать, что в эти ТСД встроены сканеры, которые работают по умолчанию только с предустановленными программами, и если вы попытаетесь просканировать что-то в 1С, то у Вас может ничего не получиться. Прежде чем брать такой сканер – убедитесь, что он может сканировать в абсолютно любые формы (например, в смс сообщения, или в текстовый редактор) и после сканирования – отрабатывает функция перевода строки. Это все в будущем вам облегчит страдания.
Подготавливаем софт для работы с мобильной платформой
Как вы могли догадаться – для работы с МП нам необходим соответствующий инструментарий.
Давайте создадим некий каталог, куда мы с Вами будем скидывать все, что нам понадобится. Путь к этому каталогу должен быть коротким, не содержать пробелов и состоять только из латиницы. У меня он будет таким: C:\MobilePl. В нем я создам папку Install, куда я буду закидывать все установочные файлы. И у нас будет еще одна папка Soft, куда мы будем скидывать подготовленные приложения, устанавливать новые и ссылаться на этот путь везде, где потребуется.
Настройка платформы 1С
Для начала убедитесь, что у вас установлены следующие модули 1С:
Если чего-то не хватает – установите.
Так как МП по своим свойствам и возможностям похожа на работу в тонком клиенте, то нам нужно установить модуль, позволяющий работать в режиме тонкого клиента в файловом режиме.
Мы, в том числе, будем рассматривать вариант обмена данными при помощи web-сервисов, поэтому нам необходим модуль для работы с веб-серверами.
Установка Apache
Так как 1С сама по себе не может выступать в роли веб-сервиса, то нам необходимо настроить или IIS или Apache. Мы будем рассматривать вариант с Apache, так как он является более легким в настройке и кроссплатформенным.
Для начала нам необходимо скачать Apache. Сделать это можно так:
Заходим на сайт http://www.apache.org/mirrors/. Это список всех доступных зеркал, на которых можно скачать Apache.
Я выбрал сайт http://apache-mirror.rbc.ru/pub/apache/, он для России. Это значения по большому счету не имеет, так как вес его маленький.
Тут нас интересует файлик httpd-2.2.25-win32-x86-no_ssl.msi. Если вы используете SSL, то качайте тот, что ниже. Если не знаете, что это такое – качайте любой.
Во время установки программа спросит про порт, который она будет прослушивать. По умолчанию – это порт 80, его и выбираем. Обратите внимание, что на 80 порту любят висеть всякие программы, которые в последствии не дадут запустить вам Apache. Чаще всего – это:
Я рекомендую потом назначить свой порт. Чтобы убедиться, что выбранный вами порт, на текущий момент, не использует ни одна программа – зайдите в Диспетчер задач > Производительность – Монитор ресурсов – Сеть – Прослушиваемые порты. Убедитесь, что порт не занят и смело его вбивайте. По опыту, я использую порты в диапазоне 40 000 – 60 000.
Проверить работоспособность Apache можно, забив в браузере адрес 127.0.0.1 или localhost, или IP адрес вашего компьютера (при условии того, что открыт доступ к 80 порту). Если все хорошо, то вы увидите надпись It works! Если ее нет, то, вероятнее всего, вы или не указали порт, или у вас в hosts не прописаны эти адреса.
Установка Apache ant
Если вы пока не планируете компилировать приложение до apk-файла, то можно этот пункт пока пропустить.
Это программа для сборки приложений. Нам она нужна только для сборки конечных apk-файлов.
Скачать ее можно с того же ftp, что и Apache.
Путь будет таким – http://apache-mirror.rbc.ru/pub/apache/ant/binaries/. На текущий момент там лежит версия apache-ant-1.9.2-bin.zip. Ее мы и качаем в нашу папку Install. Так как это просто архив, который не требует инсталляции – мы его сразу разархивируем в папку C:\MobilePl\Soft\ant. Обратите внимание, что это конечный путь, где лежат файлы. Т.е. я не перенес папку apache-ant-1.9.2-bin, так как, в случае обновления, вам нужно будет только удалить эти файлы и скопировать сюда новые, при этом все пути сохранятся.
Для чего еще ее можно использовать – можно почитать тут:
Эти все ссылки я привел для понимания того, что 1С его использует не спроста. Это мировая тенденция. Ранее, в версии 8.3.3 мобильной платформы, был сборщик приложений, работал он на основе жестко прописанных путей и кода. Однако, при помощи ант, можно задать скрипт действия, по которому он будет компилироваться. Их даже можно несколько собрать. Например, собирать приложения под разные имена пакетов и разные ключи разработчика.
Установка Java JDK
Если вы пока не планируете компилировать приложение до apk-файла, и использовать виртуальную машину, то можно этот пункт пока пропустить.
Так как Android, по сути, эмулирует виртуальную Java машину, то и нам от Java не уйти. Рассматриваемая нами версия мобильной платформы уже нормально работает с Java 1.7, вот ее мы и установим.
К сожалению, прямого линка на скачку нет, поэтому придётся проходить квест на скачку новой версии. На текущий момент, ссылка вот такая: http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-windows-i586.exe.
Видим такую картинку:
Нажимаем на JDK Download (выделил желтым).
Соглашаемся с лицензией и качаем нужную нам версию. Есть x64 и x86, так как мы не работаем с большими объемами, то, в независимости от разрядности вашей операционной системы, качаем x86.
Сохраняем его в наш каталог Install. Заранее создадим папку для этой программы – C:\MobilePl\Soft\jdk и C:\MobilePl\Soft\jre. Запускаем программу.
Когда программа спросит – куда установить ее, укажите путь C:\MobilePl\Soft\jdk\. Потом она спросит еще раз – куда установить jre. Указываем путь C:\MobilePl\Soft\jre\.
На этом установка Java закончена.
Установка мобильной платформы для разработчика
Нам необходимо скачать архив с сайта 1С. Я использую платформу 8.3.4.9. Переименовываем архив в соответствии с версией, которая в нем находиться, и копируем как есть в папку C:\MobilePl\Install\.
Давайте разберем структуру этого архива. Внутри него есть три папки:
В чем отличие файлов 1cem-arm.apk и 1cem-x86.apk? Отличие их заключается в оптимизации под одну или другую архитектуру процессоров. Чаще всего используется архитектура arm. Однако, если у вас в телефоне установлен процессор от Intel, то, вероятнее всего, у вас используется архитектура x86.
Теперь надо определиться – куда мы хотим установить мобильную платформу? У нас есть два варианта:
На мобильное устройство. Этот вариант самый идеальный, так как телефон будет работать значительно стабильней, чем компьютер.
Если без дополнительных танцев с бубном, то можно установить эмулятор BlueStacks. Однако придётся пожертвовать стабильностью. Те, кто работали под ним, изредка замечали странное поведение форм и вылеты. Тогда как на телефоне было все отлично. Однако с ним удобно работать – достаточно установить его и нажать два раза на akp-файле и он сразу установиться в эмулятор.
Эмулятор Android Virtual Device (AVD). Он идет в комплекте с Андроид SDK. Этот эмулятор – самый приближенный к реальности. Однако стоит отметить, что, как и установка его самого, так и приложений под него – задача не из самых приятных.
Установка Android эмулятора AVD и Android SDK
Если вы пока не планируете компилировать приложение до apk-файла, и использовать виртуальную машину, то можно этот пункт пока пропустить.
Для установки AVD, нам потребуется скачать Android SDK, так как нам все это понадобиться далее – не удаляйте эти файлы.
Теперь давайте скачаем Android SDK – идем по этой ссылке https://developer.android.com/intl/ru/sdk/index.html.
Там раскрываем USE AN EXISTING IDE (так как наша среда разработки 1С, то другой нам не надо), и нажимаем Download the SDK Tools for Windows.
Сохраняем его в нашу папку Install.
Начинаем установку – запускайте файл. Для установки указываем путь C:\MobilePl\Soft\sdk\.
Ставим нужные нам опции:
Вот тут остановимся немного поподробней. Эмулятор Андроида, сам по себе, весьма тормознут.
Однако, есть специальное решение, которое, используя инструкции процессора, ускоряет его, скажем так – прилично ускоряет. Но, как и всегда, есть нюансы – ваш процессор должен соответствовать определенным условиям:
Аппаратное обеспечение
Поддерживаемые операционные системы
Примечание: Intel HAXM работает только с теми процессорами Intel, которые в точности соответствуют приведенным выше требованиям. Процессоры других производителей не поддерживаются.
Как можно проверить – подходит ли это все вам? Необходимо узнать модель процессора. Сделать это можно, нажав сочетание клавиш Win+R. У вас должно всплыть окно, далее вбиваем в него: dxdiag. Появиться вот такое окно (вначале может спросить про подписи – жмем что угодно):
Операционная система – подходит. А вот от процессора нам нужна модель. В моем случае это i7 950. Захожу на сайт http://ark.intel.com/ и справа вверху, в окно поиска, вношу свою модель i7 950. Спускаемся вниз и смотрим:
Мой процессор, выпущенный в 2009 году, удовлетворяет условиям. Поэтому я ставлю ту галочку. Дополнительно про это написано на сайте http://software.intel.com/ru-ru/articles/intel-hardware-accelerated-execution-manager.
Теперь жмем кнопку Install. Далее принимаем лицензионные соглашения и начнется установка. Вся установка будет идти из интернета. Так что учтите это. После установки – закрываем все. И запускаем AVD – эмулятор Андроида, для этого открываем файл C:\MobilePl\Soft\sdk\AVD Manager.exe.
Нажимаем New и заполняем поля:
Если в двух словах, то мы по сути эмулируем некое устройство. Мы указываем какую версию Андроида использовать, какую архитектуру процессора, оперативную память, память для одной виртуальной java-машины (приложение), внутреннюю память и т.д.
Нажимаем ОК. И после этого жмем кнопку Start. У нас должна запуститься виртуальная машина на Андроиде.
Установка приложения в Андроид
На текущий момент вы должны уже были определиться с устройством, на котором вы будете запускать мобильную платформу. Рассмотрим два варианта установки приложения. Для примера, возьмем платформу для разработчиков. Напоминаю, она находится в архиве, который мы скачали ранее с сайта 1С, и называется 1cem-arm.apk и 1cem-x86.apk. Так как у меня устройство на arm-архитектуре, то я буду устанавливать файл 1cem-arm.apk.
Установка приложения на телефоне
Для установки – скопируйте его на телефон, и запустите. Перед этим убедитесь, что у вас разрешено устанавливать приложение не только с доверенных источников. Эта галочка ставится в Настройки > Безопасность. Для передачи файлов на телефон я использую программу DropBox. Т.е. я устанавливаю ее на компьютер и на телефон, потом просто скидываю в папку нужный мне файл и забираю его с телефона. Этот подход требует установки дополнительного софта, и выхода в интернет.
Установка приложения на AVD
Тут все немного сложнее. Интерактивного установщика приложений нет. Поэтому придётся устанавливать через командную строку. Но чтобы не мучатся сильно, мы сделаем cmd-файл.
Для этого создадим новый текстовый документ и нажмем Файл > Сохранить как > имя файла – «Установка apk.cmd» > Тип файла – «Все файлы» и жмем Cохранить. Далее вставим в него такой текст:
C:\MobilePl\Soft\sdk\platform-tools\adb.exe install C:\MobilePl\Soft\8.3.4.9\Android\1cem-arm.apk
Сохраним и запустим. После того, как выполнится этот скрипт – будет установлена мобильная платформа.
По умолчанию в AVD стоит андроид с локализацией для Америки. Поэтому 1С будет там на английском языке. Для работы с русской версией – зайдите в настройки локализации и выберите нужную вам локализацию.
Пишем и переносим простейшую конфигурацию на мобильное устройство
Прежде чем мы приступим к написанию конфигурации, я хотел бы рассказать об ограничениях МП. МП поддерживает не все виды метаданных, которые доступны на стационарном компьютере, но, кроме этого, она еще поддерживает не все общие функции.
Так как целью данного параграфа будет написание конфигурации только под мобильную платформу, то я предлагаю убрать пару галочек из настроек конфигуратора. А именно, мы с вами уберем из контекстной подсказки те функции, которые не поддерживает МП, и из справки – ту информацию, которая не доступна на МП.
Начнем. Давайте создадим для начала новую базу данных. Тут нет ничего необычного, создаем как обычную базу данных. Входим в конфигуратор и первое что мы делаем – заходим в Сервис > Параметры:
Тут снимаем галочки напротив тех опций, которые нам будут только мешать.
Тут снимаем галочки с тех опций, которые мы не хотим видеть в справке.
Зачем это надо? Все очень просто – если вы оставите эти галочки, то вы всюду будете натыкаться на функции, которые не поддерживаются мобильной платформой и наоборот, если вы используете те функции, которые поддерживает только МП – конфигуратор будет ругаться, что их не поддерживают остальные.
После этого нам надо указать конфигуратору, что данная конфигурация разрабатывается только для МП.
Правой кнопкой на дереве конфигурации > Свойства > Назначение использования > Ставим галочку Мобильное устройство, и снимаем галочку с Персональный компьютер.
После нажатия ОК – дерево метаданных изменит свой вид. В нем появятся затемненные объекты. Это объекты, с которыми МП работать не может.
Отчеты – это одна из самых главных функций, которые просто обязаны быть доступны на мобильнике. Я даже с ребятами как-то написал приложение, которое эмулировало СКД конструктор (1C + Android (конструктор отчетов) v1.5.1).
Однако тут доступны Обработки, с помощью которых можно выводить отчет. Так же 1С, на примере демо конфигурации Заказы, подключается к web-сервису на сервере, передает параметры, на сервере строиться отчет, сериализуется, сжимается и отправляется на телефон, телефон его десериализует и выводит пользователю. Минусы очевидны – только в режиме онлайн. Но и плюсы есть – можно любой сложности отчет строить, вот только поместиться ли он в 5 дюймов и ограничение связанные с использованием SOAP протокола?
Однако этот же механизм использовали и мы, для синхронизации нашего приложения, поэтому я вам позже расскажу про подводные камни такого подхода конкретней.
Общие реквизиты. Ну тут скорее желание удобства. Просто в случае программирования конфигурации с нуля, начинаешь понимать, как они полезны.
Регламенты, ну тут и так все ясно, и этого хотят все, например, запускать в фоне службу 1С, которая синхронизирует задачи, остатки и т.д.
Функциональные опции. Так как ролей нету, да они тут и не нужны, но в одном предприятии может быть несколько вариантов мобильного приложения, раз нельзя сделать видимость по Ролям, то хотя бы по опциям делать, дабы не держать для каждого свою отдельную конфигурацию. Но следует отметить, что мы несколько конфигураций можем уместить в одно приложение, как это сделать – мы обсудим позже.
Ну и самое печальное, на текущий момент – это то, что нет печати. Печать на мобильных устройствах – это весьма нетривиальная задача, однако мы даже не можем сохранить, например, в DropBox документ в экселе, что бы потом распечатать. Т.е. это все придется самому делать.
Как один из предложенных вариантов был – вы делаете запрос на сервер, сервер принимает документ, сохраняет его в эксель и отправляет менеджеру на почту, но это как бы не правильно, так как опять-таки – нужен сервер и интернет. Можно конечно генерировать этот же эксель, и передать его в ответ на запрос, а потом сохранить на СД карту, но это уже дело такое, так как вопрос печати с мобильника все же остается.
С другой стороны, все эти ограничения принесли весьма положительный опыт, так как первопроходцы не решались на телефон отправлять 100 000 товаров и 25 типов цен, потому что работать с ними, с учетом текущих ограничений, было бы весьма сложно.
Самое главное – запомните один девиз:
Самое сложное при программировании под мобильную платформу – понять, что это МОБИЛЬНАЯ платформа.
Тут надо четко понимать, что мобильное приложение – это не обычная версия 1С. Так не получится вывести 20 кнопок и 30 показателей.
Там не надо вести партионный учет, там должен быть минимум информации, с которой пользователь может комфортно работать. Каждый лишний реквизит в номенклатуре – добавляет вес приложению и свободу действий оператору. Давайте условимся, что если менеджеру надо видеть себестоимость товара по партиям, то он просто каждое утро будет получать срез этих данных, ну, а если они ему нужны постоянно, то он будет работать в режиме онлайн, иначе это будет костыль на костыле.
После того, как мы определились с ограничениями и уложили это все у себя в голове – приступим к настройке программы.
Основные свойства, которые надо заполнить у конфигурации
Возвращаемся в нашу конфигурацию и до заполним свойства:
Синоним – тут пишем полное название базы, она так и будет называться и на мобильном телефоне или в виде отдельного приложения, или в составе конфигураций;
Платформа для разработчика
Данный вариант предполагает наличие доступа к компьютеру из мобильного приложения через сеть. Суть заключается в следующем – мы публикуем конфигурацию приложения (это по сути своей web-сервис), мобильное приложение подключается к нему и забирает конфигурацию.
Давайте опубликуем конфигурацию для того, чтобы получить ее на телефоне. Для этого заходим в Конфигурация – Мобильное Приложение – Публиковать – заполняем данные – Опубликовать.
Давайте чуть поподробней остановимся на некоторых полях.
Имя – не пытайтесь в него вложить много смысла, оно должно быть простое, так как вы не раз его будете вбивать вручную. Имя должно отличаться от имени публикации базы для тонкого клиента.
Обновлять мобильное приложение – эта галочка отвечает за очень удобную опцию. Ее имеет смысл использовать только в произвольной конфигурации, суть ее в том, что при каждом обновлении конфигурации автоматически будет обновлена конфигурация на устройстве (если на нем тоже стоит галочка, об этом позже). Кроме этого, обновлять можно и вручную.
Если, в момент нажатия кнопки Опубликовать, у вас появилось сообщение о том, что 1С не может записать данные в файл, то это у вас сработал UAC. Это значит, что вы запустили 1С не от имени администратора. Решить это проблему можно следующим путем:
Каждый раз запускать 1С от имени администратора. Правой кнопкой на ярлыке 1С > Запустить от имени администратора.
Отключить UAC (не безопасно!).
Зайти в свойства ярлыка 1С, и поставить галочку Выполнять эту программу от имени администратора.
У каждого из этих вариантов есть свои плюсы и минусы. Какой подойдет вам – решайте сами.
Если у вас все получилось, то давайте убедимся в том, что наша конфигурация была правильно опубликована. Для этого перейдем по ссылке http://127.0.0.1/orders/. Мы должны увидеть xml-файл. Это и есть структура нашей конфигурации.
Теперь заходим в ранее установленное приложение, и нажимаем кнопку Добавить.
Видим вот такую картинку:
В поле адрес вбиваем IP компьютера, на котором опубликована конфигурация. Если надо, то можно указать другой порт, например, http://192.168.1.2:54215/orders. Учтите, просто вбив адрес без http:// у вас может ничего не сработать. Как узнать IP адрес вашего компьютера, и что должен быть открыт нужный порт и т.д. – я тут рассказывать не буду.
Далее жмем кнопку Загрузить.
Увидим вот такую картинку. Давайте остановимся не на долго. Помните мы заполняли свойства конфигурации? Ну вот тут можете сопоставить одно к другому и использовать в своих целях.
Обязательно поставьте галочку Перезапуск из конфигуратора.
Нажимаем Готово. Теперь откроется окно выбора конфигурации. Если зажать на конфигурации палец и из всплывающего меню выбрать Изменить, то станет доступным такое окно:
Т.е. вы все можете изменить со временем. Кроме этого, если не стоит галочка Перезапуск из конфигуратора, то вам придется постоянно выходить и заходить в конфигурацию самостоятельно, чтобы применились изменения.
Давайте зайдем в конфигурацию, и посмотрим, что у нас получилось.
Так как мы изначально не определили никакой формы для рабочего стола, то программа нам просто выводит меню функций. Давайте исправим это. Добавим новую форму в конфигурацию и выведем ее на рабочий стол.
Для начала создадим общую форму, сделаем надпись, вспомним что мы можем использовать форматированную строку, потом в свойствах конфигурации открываем Рабочую область начальной страницы и добавляем туда эту форму.
А теперь нажмем кнопку Обновить. И смотрим на телефон – приложение могло обновиться, а могло и нет. (почему? Раньше же обновляло.) Если не обновилось, тогда выводим кнопочку:
И нажимаем на нее, смотрим на открытую конфигурацию в телефоне. Через пару секунд, телефон должен перезапустить конфигурацию, и мы увидим вот такую форму:
Я специально выделил заголовки в рамку, и хочу сейчас вернуться в свойство формы:
В Андроиде есть разграничение между заголовком основной программы и заголовками формы которые показывает программа. 1С тоже так сделали, но, тут видать ошибка, потому что эти два заголовка идентичные, и ни один из них скрыть, для освобождения пространства – вы не можете.
Заголовок берется из свойств формы согласно приоритетам как я расписал в картинке, т.е. вначале программа берет Расширенное представление и т.д. Поведение идентично стационарной платформе, однако иногда про это забывают.
Для того, чтобы попрактиковаться – предлагаю скопировать нашу тестовую базу и переименовать ее в warehouse (дальше по статье поймете почему). И в каждой базе – изменим надпись с «Привет МИР!» на «Заказы» и «Склад». Обязательно подключите эту базу в платформу для разработчиков и попробуйте поочередно обновлять базы, зайдите и выйдите. Цель – понять, как работают обновления базы с компьютера.
Поздравляю – теперь вы можете начать разработку своего собственного приложения или просто присмотреться к мобильной платформе.
Конфигурация для компиляции приложения
Помните в архиве, скаченном с сайта 1С, у нас была конфигурация? Давайте теперь разберемся с ней. Для этого нам понадобятся обе базы. Начнем с того, что после установки вам надо вначале зайти в конфигуратор и создать пользователя с админскими правами. После этого – заходим в базу.
Сразу заходим в Сервис > Настройки приложения и заполняем все, что нам надо. Что и зачем – написано в справке, основная идея в том, что если работаете вы с разных компьютеров, то надо что бы на каждом из них были установлены все пакеты и прописаны пути.
1С, кроме прочего – требует еще утилиту PuTTY, она нужна при компиляции под iOS. К сожалению, обойти это не получается, т.е. разработчики уже сразу считают, что вы будете компилировать под iOS. Поэтому я просто выбираю папку Soft и все.
Тут в наименование берется имя компьютера, поэтому не меняйте его.
Далее идем в Сервис > Редактирование поставщика.
Придумываем себе префикс. Это очень важный шаг. Андроид устроен так, что он контролирует версию сборки и имя пакета. Т.е. если вы переименуете пакет, то обновить существующую базу – у вас не выйдет. Поэтому давайте придумаем себе префикс. Обычно имя пакета в андроиде выглядит вот так:
com.example.helloworld.
Где com – обычно либо окончание сайта, либо просто локаль автора (например – ru, ua и т.д.).
Example – либо продолжение сайта, либо ваше ФИО. Т.е. по сути, нечто уникальное, которое идентифицирует вас.
Helloworld – имя приложения. В нашем случае это может быть orders.
Я выбрал себе такое имя пакета: ua.dnv + имя приложения
Внимание! Имя должно содержать только латиницу и цифры, ну и часть спец символов. Каждая часть названия – подчиняется правил объявления переменной, т.е. нельзя называть вот так rfё.1cd.dd#
Далее нам необходимо создать ключ поставщика. Это очень важный шаг. Например, если андроид нашел приложение с таким же именем пакета, то он проверяет подпись – если подпись не совпадает, то андроид не обновит это приложение. Соответственно, если вы потеряете ключ, то обновить существующие приложения у клиентов не выйдет. А если вы распространяете свое приложение про помощи площадки Google Play, то вы не сможете обновить там приложение. Придется создавать новое при этом теряя все скачки, голоса и т.д.
Итак, нажимаем на ссылку Создать ключ разработчика. Все поля, кроме пароля и псевдонима – можно заполнять на каком угодно языке.
Я заполнил вот так. Жмем теперь Сформировать ключ. Дальше программа заполнит все сама.
Ставим галочку “Для ОС Android” и записываем элемент.
Далее нам надо подключить архив мобильной платформы, что бы программа могла скомпилировать все. Для этого сверху откроем справочник Мобильные платформы. Тут надо обратить внимание на такой момент – вся эта информация будет храниться в базе, т.е. если мы каждую платформу будем вставлять в базу в полном объеме – у нас очень быстро вырастит база, а нам это не надо. Поэтому мы немного урезаем архив. Из справки:
При загрузке система ожидает, что мобильная платформа будет представлена zip-файлом со следующей структурой (регистр имени файла и каталога – важен!), остальные файлы в архиве игнорируются:
Так как я не компилирую под iOS, но выбора у меня нет, то мне придется и те файлы оставить. Убедимся, что при входе в архив – у нас вначале появляется папка Android и iOS, а в них уже те файлы что надо. Т.е. в архиве должна быть только 1 папка.
Пишем версию мобильной платформы, при чем до последней цифры. Иначе потом запутаетесь в сборках.
Если бы сюда еще информация о найденных и исправленных багов добавлялась – этой конфигурации бы цены не было :).
Далее нам необходимо вставить конфигурации, разработанные ранее. Для этого мы заходим в конфигуратор каждой базы и нажимаем Конфигурация > Мобильное приложение > Записать в файл.
Назовем файл как-то по-человечески, например, orders и warehouse соответственно. Это xml-представление конфигурации. В конфигурации для сборки – открываем справочник Мобильные конфигурации и для каждой конфигурации создаем независимые группы первого уровня – Заказы и Склад. Заходим в группу и добавляем элемент. Слева вверху нажимаем Загрузить конфигурацию и выбираем соответствующий файл.
Далее программа подхватывает имя конфигурации и ее версию. Тоже самое сделаем для конфигурации Склад.
А теперь пора бы уже создать и приложение, но придётся заполнить еще одну форму. Для этого открываем справочник Мобильные приложения и создаем группу, без группы нельзя. В группе мы указываем все что нам может пригодится.
Называем группу, в нашем случае – это Заказы.
Ставим галочку Для ОС Android.
Выбираем версию мобильной платформы, на которой будем компилировать.
Пишем идентификатор решений – orders. Справа покажется полный идентификатор приложения, еще правее есть кнопка Проверить уникальность идентификатора. Она проверяет идентификаторы в текущей базе. Идеально было бы, что бы программа проверяла уникальность на площадке, где вы собираетесь разместить приложение в будущем. Но пока и так сойдет.
Указываем версию приложения и номер сборки.
Тут остановимся подробней. По номеру сборки – программа Android проверяет версию программы, т.е. если у вас установлена программа с номером сборки 22, то программу с номером сборки 20 вы уже не поставите. Этот номер не имеет дробной части, это целое число. На моей практике – доходило до нескольких тысяч. Это не значит, что если вы подняли номер сборки – то «обязаны» опубликовать приложение.
А версия приложения – это представления для пользователя. Как все любят, что-то вроде 1.21.44.
И внизу – вы добавляете папку с конфигурациями, которые вы нынче будете создавать.
Теперь давайте-таки создадим само приложение. Заходим в созданную группу и создаем новый элемент:
Программа заполнит все сама. Нажимаем на заветную кнопку Собрать приложение. Ждем. Это займет некоторое время. Периодически будут мигать черные окна консоли – не закрывайте их. После сборки приложений, если у вас высветились ошибки доступа к файлам, то перезагрузите компьютер, запустите 1С под администратором и попробуйте еще раз.
Теперь нам надо забрать эти файлы. Забрать их можно на вкладке Результаты сборки.
Выбираем нужную нам строку и жмем Получить приложение. Откроется диалог сохранения файла. Сохраняем файл в нашу папку, теперь устанавливаем его на эмулятор или на телефон по примеру, который описан был выше.
Повторите тоже самое для конфигурации «Склад». И тоже установите на телефон. И так, нам надо работать с двумя конфигурациями, а это дико не удобно, когда они являются разными приложениями. Давайте сделаем так, чтобы эти две конфигурации у нас были в одном приложении. Для этого создадим новую группу в справочнике Мобильные приложения. И заполним ее вот так:
Отличие в том, что в табличной части, где указываются ресурсы конфигураций – я указал и Заказы и Склад. Теперь создаем элемент справочника в этой группе:
На вкладке Представление мобильного приложения мы можем указать название нашего приложения, оно будет показываться в приложениях:
Но давайте разберемся попутно с еще одним моментом – это иконки и заставка. Для этого откроем справочник Графические ресурсы. И создадим там новый элемент, который назовем Заказы+Склад.
1С нам подсказывает структуру архива:
При загрузке графической информации системы ожидает, что графическая информация будет представлена zip-файлом со следующей структурой (регистр имени файла и каталога – важен!):
Где icon – иконка соответствующего разрешения для приложения, а splash – заставка. Давайте сделаем такой архив. Для этого зайдем, например, на сайт http://www.iconsearch.ru справа вверху выберем фильтр для иконок 128х128. И найдем то, что нам по нраву. Не забываем про лицензии на приложения. Мне, например, понравилась вот эта иконка http://www.iconsearch.ru/detailed/19501/6/.
Тут нужного мне формата нету, поэтому я просто качаю эту иконку и пережимаю под меньшие размеры. Потом иду на другой сайт, например, на этот http://wallpaperswide.com, и ищу то что мне понравилось. Я думаю, что все понимают, что изображение должно нормально выглядеть и под разные форматы экрана (4:3, 16:9) и под разные разрешения экрана, ну и, конечно же, под разную ориентацию.
Там же я качаю нужные мне форматы. Однако обратите внимание – все придется пережать в png, и повернуть на 90 градусов, так как в имени – разрешение не зря указанно именно в такой последовательности. У меня получился вот такой набор:
Теперь я это все архивирую и вставляю в конфигурацию, выбираю этот графический набор и компилирую приложение.
Вот так теперь оно выглядит среди прочих приложений:
Вот так оно выглядит среди остальных приложений. Кстати обратите внимание на то, что при пережатии при помощи Paint – иконка потеряла прозрачность. Так что учтите это. Вот так теперь выглядит окно запуска:
И при входе – мы увидим пустой список баз, нажимаем Добавить. И выбираем нужный нам шаблон.
Почему шаблон? Потому что у вас может быть много баз с одинаковыми конфигурациями. При обновлении – вы обновляете шаблон, и, как следствие, все базы, которые были на основе него сделаны.
Мобильная платформа, конфигурация, обновление
Каким образом можно разрабатывать под мобильную платформу
К текущему моменту вы уже должны были бы определиться с вопросом о том, подходит вам мобильная платформа или нет. В независимости от вашего ответа мы пойдем дальше.
Итак, как же все-таки работать с мобильной платформой? Как передать в нее конфигурацию?
Давайте начнем с того – каким образом можно получить то, что мы хотим на мобильном устройстве?
Напомню, на текущий момент у нас существуют два варианта:
Обновляемая конфигурация
Обновляемая конфигурация позволяет вам работать в одном мобильном приложении с несколькими разными базами, а точнее – их конфигурациями, а также обновлять конфигурации через свой сервер.
Под нее программировать довольно просто: сконфигурировали — опубликовали в web (в конфигураторе: Конфигурация — Мобильное приложение — Публиковать; указываем имя публикации, отличное от имени публикации базы данных для веб доступа, если таковое имеется), затем нажали кнопку «Обновить» на телефоне. Или поставили галочку «Обновлять мобильные приложения» в конфигурации: тогда при входе пользователя в базу на телефоне (при наличии доступа к серверу конфигураций) или если он находиться в текущий момент в этой конфигурации, то мобильное приложение само обновит конфигурацию. Не нужно ничего компилировать и обновлять вручную. Правда в этом случае вы не сможете обновить мобильную платформу, не скинув ее отдельным файлом, или без помощи других сервисов.
Фиксированная конфигурация
Это вариант скомпилированной до apk-файла конфигурации.
Соответственно, если вы изменили что-то в конфигурации, вам необходимо всем пользователям отправить этот файлик (вес — около 40 Мб, стоит отметить, что с версии 8.3.3.42 – файл весит чуть более 20 Метров, но теперь надо самостоятельно контролировать архитектуру процессора и ставить соответствующую версию), и все должны переустановить приложение на телефоне. В этом случае обновится и платформа, и конфигурация. Данные должны остаться.
Если вы разработчик, который планирует написать конфигурацию для учета звезд во Вселенной и поделиться ею со всеми живыми, и не очень, существами, то вам однозначно необходим вариант фиксированной конфигурации.
Выбрав этот вариант, вы можете расположить свой apk-файл в интернет-магазинах типа Google Play, где приложение будет продаваться или распространяться бесплатно (к слову, 1С еще не определилась с лицензиями до конца, но разрешает использовать без её ведома до 50 мобильных устройств).
Если конфигурация обновляется, вы размещаете новый apk-файл в интернет-магазине, и вскоре он обновится у всех купивших приложение.
Если вы штатный программист, которому дали задание роботизировать группу торговых представителей, то ваш выбор однозначно должен пасть на вариант без компиляции. В этом случае вам достаточно установить на телефон мобильное приложение, которое вы скачали, и добавить в него новую базу, прописав путь к опубликованной конфигурации.
Этот вариант подходит также для отладки конфигурации до момента конечной компиляции до apk-файла.
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Комментарии / обсуждение (279):
“Помните в архиве, скаченном с сайта 1С, у нас была конфигурация? Давайте теперь разберемся с ней. Для этого нам понадобятся обе базы. Начнем с того, что после установки вам надо вначале зайти в конфигуратор и создать пользователя с админскими правами. После этого – заходим в базу.
Сразу заходим в Сервис > Настройки приложения и заполняем все, что нам надо. Что и зачем – написано в справке, основная идея в том, что если работаете вы с разных компьютеров, то надо что бы на каждом из них были установлены все пакеты и прописаны пути.
1С, кроме прочего – требует еще утилиту PuTTY, она нужна при компиляции под iOS. К сожалению, обойти это не получается, т.е. разработчики уже сразу считают, что вы будете компилировать под iOS. Поэтому я просто выбираю папку Soft и все.”
Я так и не понял что за конфигурация которую мы скачивали и где ее можно взять? Подскажите пожалуйста и откуда ниже окно “Путь к компонентам”? Откуда взялось всё это? Просто не могу в этом разобраться.
Доброе. На ИТС вы скачиваете архив с установкой мобильной платформы. И там же есть, в архиве, конфигурация Сборщика.
Вот о ней и говорится тут
Здравствуйте Дмитрий. А где именно ИТС находится? Какая ссылка? А то вдруг не то скачаю.
Этого я не знаю. Есть несколько ИТС для разных стран.
Мобильная платформа лежит там же, где вы скачали и обычную. Стационарную.
Например отсюда releases.1c.ru
Честно не могу понять что тут нужно делать.
1. Откуда что скачивали?
2. Мобильную платформу я скачивал отдельно?
3. Как выйти на эту картинку и где что заполнять непонятно?
4. Где скачать эти обе базы про которые идет речь? Тоже не ясно.
5. Пожалуйста есть ли статья где про это можно почитать поподробнее? Или если нет очень прошу Вас, пожалуйста если можно, объясните подробнее более конкретно. Честно не понимаю.
“Помните в архиве, скаченном с сайта 1С, у нас была конфигурация? Давайте теперь разберемся с ней. Для этого нам понадобятся обе базы. Начнем с того, что после установки вам надо вначале зайти в конфигуратор и создать пользователя с админскими правами. После этого – заходим в базу.
Сразу заходим в Сервис > Настройки приложения и заполняем все, что нам надо. Что и зачем – написано в справке, основная идея в том, что если работаете вы с разных компьютеров, то надо что бы на каждом из них были установлены все пакеты и прописаны пути.
1С, кроме прочего – требует еще утилиту PuTTY, она нужна при компиляции под iOS. К сожалению, обойти это не получается, т.е. разработчики уже сразу считают, что вы будете компилировать под iOS. Поэтому я просто выбираю папку Soft и все.”
Лучше начните с этого курса.
А то, если честно – я не до конца понимаю что вы хотите получить.
Вам нужно сделать компилированное приложение, или вы просто хотите установить 1С на телефон и начать изучать. Если второе – то лучше посмотрите бесплатный курс. А про первое – это или надо брать полный курс (но он уже немного устарел), или искать актуальную информацию в других местах, так как ничего в нашем мире не стоит на месте
“Помните в архиве, скаченном с сайта 1С, у нас была конфигурация? Давайте теперь разберемся с ней. Для этого нам понадобятся обе базы. ”
Я не могу понять, что за архив скачанный с сайта 1С? Откуда вы скачивали? И почему там было 2 базы и они нам понадобятся?
Это конфигурация сборки мобильного приложения. Она идёт в том же архиве, где и лежит сама мобильная платформа. Правда она уже за столько времени обновилась и формы поменялись.
Как ее установить? И как достать? из этого архива?
Доброе. Зайдите на ИТС. Скачайте оттуда архив мобильной платформы. Распакуйте его. Там внутри будут установочные файлы конфигурации. Установите ее как обычные файлы постааки конфигурации. Создайте новую базу и укажите что вы хотите создать ее из шаблона, выберите шаблон этой конфигурации и все.
Здравствуйте. Вы могли бы дать ссылку именно на тот архив мобильной платформы, который вы использовали?
Добрый день. При загрузке apk Google выдает сообщение “Целевой уровень API для вашего приложения – 28… целевой уровень API должен быть не ниже 29”. Как его обеспечить?
Взять более новую платформу, в манифесте прописываются таргеты.
Скачал с помощью SDK Manager:
Android SDK Platforms Tools 29.0.6
Android SDK Build Tools 29
SDK Platform (API 29)
Скопировал папки platforms, tools, platform-tools и build-tools в папку SDK26, на которую настроен сборщик. При начале сборки выдается сообщение “Используемая мобильная платформа может быть собрана только при Android SDK Tools версии 26.x и старше… В данный момент используется версия 25.2.5”.
Что не так сделал?
а зачем вы все это копировали в папки какие то? Просто менеджером устанавливаете и прописываете путь в сдк в сборщике.
А вообще – всегда идите отладкой, ибо не редки случаи багов в самой конфе, или кривых настроек окружения. Так что лучше отладкой.
Нашел свою оплошность, не создал в сборщике мобильную версию 8.3.17, делал на предыдущей.
Добрый день. При переходе с платформы 8.3.10.51 на платформу 8.3.16.142 получил проблему с обновлением. Ранее создавал apk файл через сборщик и устанавливал его на планшеты. Далее программно правил файл v8i после установки на планшет и указывал путь к серверу, куда выкладывал xml файл с обновлением. И при каждом запуске программа проверяла на наличие файла и отличие версии, от той что установлена на плашете. При различии версий ставилось обновление. Но только конфигурации. А нужно, чтобы подтянулась новая платформа, в которой есть работа с GPS в фоне и прочие плюшки, появившиеся в новой платформе. В итоге я пересобрал apk уже с новой платформой 8.3.16 и … получил небольшую проблему: механизм обновления через xml файл не работает, так как я могу выгрузить из конфигуратора только zip файл, который подгружается в сборщик мобильных приложений новых. Но этот файл нельзя подпихнуть вместо xml на сервере. Даже если переписываю что нужно вместо xml искать по указанному пути zip файл, приложение выдает ошибку 404 типа путь не найден, либо ошибка разбора xml файла. Старый механизм целиком утерян в новых релизах платформы и можно обновлять приложение только опубликовав его в Андроид маркете, либо используя механизм для разработчиков, когда конфа на нашем сервере публикуется на апаче и я просто устанавливаю платформу и прописываю путь к базе? Или всё-таки есть какие-то возможности обновлять как и раньше конфигурации на платформу 8.3.16?
Увы, но 1с поменяло логику, раньше передавалась конфа, и разворачивалась на устрйостве.
Теперь передается пустой дт, который там разворачивается. И они изменили формат. Думаю если копнуть глубже, то можно восстановить тот механизм, как то же 1С обновляет текущую конфу, просто мне еще не приходилось с такой задачей сталкиваться в новых платформах.
Спасибо, Дмитрий.
А такой вопрос не подскажете? В платформе 8.3.12 есть фоновое получение GPS данных. У меня при запуске приложения вызывается СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(… с периодичностью в 5 минут и там я получаю последнее местоположение и заношу эти данные в регистр. Но вот вроде как в 12 платформе я выставил разрешение на получение гекоординат в фоне (геопозиционирование в фоновом режиме), но при получении координат, как было и ранее, у меня приложение стопорится на время получения геокоординат. И на открытом вэбенаре разработчики говорили, что это нормальное положение дел, для 10 платформы … я думал, что для 8.3.12 и старше, всё исправят, но … увы. У меня всё так же на время получения координат, приложение замирает. Я думал, что функционал будет, что-то вроде фоновых заданий в обычной платформе, но только для определения местоположения. Может я код не так выполняю? Вот код :
Процедура ПриНачалеРаботыСистемы()
#Если МобильноеПриложениеКлиент Тогда
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(“ПериодическийОтловГПСДанных”, “gps”, 10, 60);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПериодическийОтловГПСДанных() Экспорт
#Если МобильноеПриложениеКлиент Тогда
ДМ = Неопределено;
НайденПровайдерСеть = Ложь;
ТекДатаВрем = ОсновнойМодуль.ПолучитьТекущуюУниверсальнуюДату();
ТекущийПровайдер = “gps”;
Попытка
СредстваГеопозиционирования.ОбновитьМестоположение(ТекущийПровайдер,30)
ДМ = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ТекущийПровайдер);
Если НЕ ДМ = Неопределено Тогда
… далее идет передача координат в процедуру записи в регистр данных. Это немного упрощенный вариант, без проверки расхождения текущего времени и времени из ДМ.
И в момент выполнения данного кода, программа как бы зависает на время получения координат от устройства. Или же эта галочка (получения геокоординат в фоновом режиме) только “для галочки” и на реальную работоспособность мобильного приложения не влияет?
Увы, тут надо ждать 18 платформы, где будет настоящий асинхрон, сейчас в 1с есть только псевдо асинхрон. И вот в настоящем – уже таких проблем не будет.
Кроме этого – в мобильнике вообще все грустно с фоновыми вещами, или событийными, тут да, разве только считывать пасивного оператора, и смотреть – а может там уже есть актуальные данные?
Или использовать гео зоны, типо если отошел на 100 метров, тогда только брать. Как то так.
Просто на сколько это важно получать гео именно тогда, когда человек работает с системой? Можно ли это делать тогда, когда он не видит системы?
Спасибо ещё раз за ответ. Я только не понял по поводу “Можно ли это делать тогда, когда он не видит системы?”. Важно чтобы максимально точно можно было отследить перемещения сотрудника в момент работы. Так как от этого по плану работодателя будет начисляться компенсация за бензин. Будет это сторонним приложение выполняться или самим 1С, не принципиально. Просто когда пробовали работать с тем же акоде, вылезали проблемы при установке приложения на новое устройство или когда нерадивый пользователь удаляет “не нужное” ему для работы приложение.
Ну тут можно посмотреть в сторону ВК, либо, я имел ввиду, что может опрашивать не по времени, а по событию, типо по изменению положения более чем на 100 метров, например, в этом случае, скорее всего человек движется, а не смотрит в экран.
У меня опрос не только по времени, но и по расстоянию, только в коде, который я высылал указано расстояние 10 метров, в рабочей базе выставлено 100 … изменений 0. К сожалению ВК я так и не смог осилить. На момент, когда смотрел информацию по внешним компонентам, в наличии был только пример с шагомером. Но сломать тот пример и перелопатить его под мои нужды так и не удалось. А на просторах интернета внятной литературы по изменению и внедрению ВК в приложение не особо много. Возможно сейчас самое время начать изучать это дело …
Огромное спасибо!
Ну на самом деле инфы достаточно, я, если честно – не проверял ее, но есть смысл копнуть.
Например, получение координат через html поле, как тут предложили.
А на счет изучения – никогда не поздно. Посмотрите эту и эту статью.
1С может вызвать окно набора номера или отправки смс, но сама она ни звонить, ни отправлять, ни принимать смс не может! Так как это, как минимум, не разрешит ей сделать Андроид (это можно обойти, но об этом не сейчас).
А когда где об этом рассказано?
Из конфигурации разработчика смс отправляются, а из собранного приложения нет. Это андроид где то блокирует? Почему тогда он в режиме разработчика не блокирует? где исправить что бы отправляло?
Надо просто дать соответствующие права приложению в самой конфигурации, хотя, с такими правами – гугл приложение не одобрит в маркете.
Если все правильно сделано, то при утсановке вашего приложения – система будет вас красным цветом предупреждать о том, что это приложение может звонить и слать смс.
Права на отправку смс в конфигурации стоят. При запуске на телефоне оно попросило разрешения на отправку смс. Но смс не отправлялись.
Тогда, возможно, что это баг. Но вот так сказать сложно. Это лучше у самой 1с узнать тогда
Добрый день. Можно ли обновить собранное приложение не через http а из файла?
Грубо говоря – куда подсунуть 1cema.xml чтобы обновить приложение.
Спасибо.
можно, для этого достаточно поковырять файл v8i, и там все понятно.
Здравствуйте,
Наше приложение должно работать постоянно, но пользователи регулярно нажимая кнопку “назад” на андроиде, закрывают программу (выбирают потом завершить). Можно ли запретить закрытие приложения? Пробывали писать Отказ = Истина в ПередЗавершениемРаботыСистемы, не работает.
Хотели бы сделать закрытие по кнопке.
Наверняка кто-то сталкивался с такой же проблемой
Попробуйте вывести обработку на рабой стол, но открывать ее сразу при старте системы, чтобы ее можно было закрыть. повесьте на нее обработчик закрытия и запретите закрывать.
Да, это идея. Спасибо!
Добрый день,
Что-то всё никак не получается. Форма, если открывать программно, не имеет сбоку панели с действиями (где список приложений, о программе и т.д). Как уже не побывали, всегда только кнопка закрыть и всё.
Можно как то программно открыть форму, чтобы у неё была эта панель сбоку и можно было переключатся между элементами?
поиграйтесь с параметрами формы при открытии, типо блокировать интерфейс, владельца, и т.д.
Да уж всё перепробовали вроде((
Она открывается или как подчиненная рабочему столу и кнопка назад, или как в “отдельном окне” и кнопка закрыть.
Вот что странно, если совсем убрать форму рабочего стола, рисуются команды, как в боковой панели и оттуда открывается форма как мне надо, а если создать новую форму рабочего стола и на неё перенести те же кнопки из глобальных команд, то уже не получается…
Есть ещё такая идея: убираем рабочий стол (чтобы команды были), а дальше вызываем какое-то действие андроида, типо имитации нажатия на кнопку, и уже дальше запрет закрытия моей формы. Тогда будет как мне нужно, но не могу найти как вызвать такую имитацию.
Помогите пожалуйста, если это возможно.
Давайте еще раз – вы создали форму, и добавили ее в конифигурации на рабочий стол, верно? Т.е. не программно, а именно в конфе?
И при этом, у вас слева вверху нет кнопки меню. Я верно понимаю?
Моб Платформа 8.3.14.53
Постараюсь максимально подробно описать.
Создали общую форму – наш рабочий стол приложения (назову её НашРабСтол).
1. Сначала поставили НашРабСтол в конфигурации на рабочий стол (не программно). И всё бы хорошо, но никак не обработать нажатие кнопки “назад” на андроиде (т.е. закрытие формы). А нам нужно, чтобы приложение нельзя было закрыть через “назад” + хочется чтобы в одном месте при нажатии на “назад” менялась страница на форме НашРабСтол.
При таком исполнении код “ПередЗакрытием” на форме НашРабСтол не исполняется. А в модуле управляемого приложения “ПередЗавершениемРаботыСистемы” Отказ = Истина не работает (похоже в принципе не работает).
И, конечно, в этом исполнении слева кнопка меню есть.
2. Второй вариант, это не добавлять НашРабСтол как рабочий стол в конфигурации, а открывать через общую команду, как раз в меню слева. Тогда всё работает отлично – в “ПередЗакрытием” пишется нужный код и отрабатывает как нам нужно.
В этом исполнении слева кнопка меню есть.
Но эту форму пользователю нужно открыть, у нас даже был “тупой” вариант: сделать простую форму рабочего стола с одной надписью “открой меню слева и выбери НашРабСтол”, чтобы открыть нашу форму, а дальше всё бы работало корректно.
3. Вы дали наводку: Открыть программно нашу форму. По сути повторить действие пользователя из пункта 2. И вот тут начались приколы…
В конфигурации рабочий стол и убрали и добавляли пустую форму. По какой-то причине ОткрытьФорму() отрабатывает так, что наша форма НашРабСтол получается как бы привязана к рабочему столу, пробывали различные варианты: игрались с владельцем, режимом открытия окна, открывали модально, передавали параметр “Окно” (разные окна) функции “ПолучитьФорму()”, открывать форму через обработчик ожидания.
Открывали как в ПередНачаломРаботыСистемы, ПриНачалеРаботыСистемы, ПриОткрытии(у пустой формы рабочего стола).
Результата 2: или НашРабСтол открывается с кнопкой назад (сверху слева) и при нажатии назад возвращает тебя на рабочий стол, либо там же кнопка “закрыть” и при её нажатии мы опять же возвращаемся на рабочий стол.
В обоих случаях слева кнопки меню НЕТ (По сути только её для счастья и не хватает).
Сравнивали свойства формы НашРабСтол если её открыть программно, и если её открыть пальцем из меню (когда всё хорошо) – полное совпадение, за исключением УникальногоИдентификатора.
4. Был ещё такой эксперимент:
Если не добавлять в конфигурации рабочий стол, тогда формируется автоматическая форма, в которой есть кнопки повторяющиеся из меню сверху слева, в том числе там же есть “НашРабСтол”. И если ткнуть “НашРабСтол” то он ЧУДО – открывается так, что ЕСТЬ сверху слева меню.
А если создать пустую форму, добавить её в конфигурации на рабочий стол и в ней из глобальных команд вытащить ту же команду “НашРабСтол” и нажать, то уже сверху слева меню НЕТ (всё как в пункте 3).
И вот какие мысли есть, что вообще можно предпринять:
1. Реанимировать пункт 3, каким-то чудесным образом открыть программно форму, чтобы у неё была кнопка меню слева. Но, если это вообще возможно, нужна подсказка, т.к. все свои варианты перепробывали
2. Научить платформу Отказ = Истина в ПередЗавершенииРаботыСистемы. Тогда дальше можно всё обработать.
3. Пункт 4, эксперимент когда рабочий стол был пустой и создался автоматически – сработал. Как нибуть заставить андроид сымитировать нажатие на нужную кнопку (по аналогии с windows shell для десктопных версий, мы там имитировали нажатие клавиш)