1с мобильное приложение пример разработки

Разработка бизнес-приложений 1С + Android

image loader
В данной статье хочу познакомить вас с новым продуктом “FBA Toolkit”, который существенно облегчает процесс разработки корпоративного мобильного приложения на 1С + Android.
“FBA Toolkit” это:
— разработка «нативного» приложения Android в родной IDE на языке Java;
— 1С: Предприятие 8.1 (8.2) в роли источника данных, корпоративной информационной системы.

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

Подготавливаем рабочее место

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

1. Установить и настроить:
— Java SDK + Eclipse + Android SDK;
— Web-сервер (IIS или Apache);
— 1С: Предприятие 8.1 (8.2)

2. Для Eclipse произвести импорт двух библиотечный проектов: ActionBarSherlock и ru_profu1c_fba из хранилища SVN.

3. Установить дистрибутив конфигурации «FBA» и объединить ее с вашим прикладным решением на базе 1С.

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

Описание приложения

Создание шаблона мобильного приложения в 1С

Разработка мобильного приложения начинается в 1С, как это не удивительно. Здесь вы определяетесь с составом метаданных, настраиваете схему обмена и регенерируете шаблон вашего будущего мобильного приложения.

Создайте новый элемент в справочнике «Мобильные приложения» с наименованием «Рапорт руководителю» и идентификатором SAMPLE_REPORT_HEAD.

Выделите в списке “Метаданные” группу “Внешние данные” и нажмите кнопку “Добавить” на панели инструментов. Заполните параметры новой таблицы как показано на рисунке:

image loader

«Показатель» — тестовое представление показателя отчета, строка (250)
«Значение» — числовое значение показателя, число (15.2)
Имена колонок и самой таблицы здесь, как правило, задаются на русском языке, по ним будет производиться заполнение таблицы данными средствами встроенного языка 1С. Нажмите ОК, таблица будет добавлена в дерево метаданных, для мобильного приложения имена автоматически переводятся в латиницу.

Таким образом, мы подготовили структуру таблицы значений (в терминах 1С) в которой будем передавать данные для отчета «Финансовые показатели». Для второго отчета «Товары на складах» данные будут передаваться как внешний файл.

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

image loader

Сохраните изменения. Нажмите на кнопку “Шаблон мобильного приложения” на панели инструментов, установите параметры вашего мобильного приложения

image loader

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

На закладке «Основные» укажите имя пакета, это должен быть уникальный идентификатор. Если у вас есть сайт, используйте его для генерации префикса. В этом примере я указал ru.profi1c.samples.report.head

На закладке «Web-сервис» указан IP-адрес 10.0.2.2, по умолчанию это адрес вашего компьютера при доступе с Android-эмулятора. В поля «Имя веб-сервиса» и «Подкаталог приложения» введите данные, которые были указаны при публикации веб-сервиса.

image loader

Обратите внимание, что для 1С 8.2, скорее всего, подкаталог приложения у вас будет с дополнительным подкаталогом /ws, т.е demoFba/ws, подробнее см. здесь.
Нажмите Создать, шаблон Android-проекта будет сгенерирован.

Подготовка исходных данных для отчетов в 1С

Откройте в конфигураторе 1С модуль fbaПодпискаНаСобытия и добавьте следующий код в процедуру ПередОтправкойВнешнейТаблицы:

В этом примере таблица заполняется фиктивными данными, в реальном приложении здесь можете передавать произвольное количество показателей отчета.
С данными для первого отчета разобрались, осталось подготовить для второго. В этом же модуле fbaПодпискаНаСобытия добавите в процедуру ПодготовитьДвоичныеДанныеДляОтправки следующий код:

Прокомментирую код. Когда мобильное приложение запрашивает произвольные данные (в виде файла) с идентификатором «REPORT_PRODUCTS_IN_STOK», в 1С выполняется отчет и результат его сохраняется во временный файл. Затем этот временный файл считывается как двоичные данные и передается мобильному приложению. Временный файл удаляется.

Как в данном случае генерируется html файл, нам не важно. Вы можете использовать штатный механизм 1С сохранения табличного документа в виде HTML или сформировать HTML вручную. Пример вывода можете посмотреть в конфигурации «FBA демо», отчет «Товары на складах».

С 1С всё, переходим к разработке мобильного приложения на Android.

Проектирование Android – приложения

Созданный в 1С шаблон Android-проекта импортируем в рабочее пространство Eclipse.

Запустите Eclipse и выполните импорт проекта: File > Import… В группе Android выберите элемент «Exists Android Code Into Workspace» нажмите Next, укажите путь к каталогу шаблона Android-проекта и нажмите Finish, новый проект будет добавлен в рабочее пространство. Если возникнут сложности см. здесь, процесс описан в картинках.

1. Создаем отчет «Финансовые показатели», источником данных для которого является таблица значений, полученная от 1С. Для этого добавьте новый класс ToChiefReport.java, вот полный исходный код:

4. Вывод списка отчетов на главной форме. Откройте файл res\ activity_main.xml и добавьте listView в котором будет отображать список отчетов:

В MainActtiviy.java добавляем:

а) локальную переменную для списка

б) метод инициализации

и вызов его в onCreate() после установки макета формы

в) метод инициализации списка отчетов

г) процедуру запуска обмена по вашим правилам

И изменяем вызов процедуры обмена startExchange(ExchangeVariant.FULL, true) в обработчике onOptionsItemSelected на startExchangeMyRules(ExchangeVariant.FULL, true).

Приложение готово, формы авторизации и настроек программы будут созданы автоматически, изменять их не будем.
Давайте проверим его на эмуляторе. Если вы нигде не ошиблись, приложение запустится. Однако, вместо окна авторизации будет отображено сразу окно настроек, так как не указаны данные авторизации (имя пользователя и пароль).

Укажите имя пользователя: ivanov
И пароль: 123456

Запустите базу 1С и откройте справочник «Мобильные сотрудники». В качестве мобильного устройства укажите предопределённый элемент «Эмулятор устройства», в табличную часть «Мобильные приложения» добавьте приложение «Рапорт руководителю» и установите идентичные имя и пароль пользователя.

image loader

Запустите на эмуляторе процедуру обмена (кнопка со стрелочкой «Вверх» на панели справа)
image loader

результат работы обмена выводится в уведомлении:
image loader

Нажмите на него для запуска вашего приложения (или для просмотра подробной информации об ошибке, если обмен завершился неудачно).

Проверим, что получилось. Кликните мышкой по отчету в списке:

image loaderimage loader

Использование HTML для построения отчетов позволяет создавать весьма разнообразные отчеты, в т.ч. и с интерактивными элементами. Например, в одном нашем проекте используется вот такой отчет:

image loader

И конечно, вы ничем не ограничены, можете использовать сторонние библиотеки для вывода отчетов и диаграмм, например achartengine или самостоятельно создать свой график/диаграмму (примеров полно, в т.ч. есть и в Android SDK).

На этом все, с другими примерами вы можете ознакомиться на сайте http://profi1c.ru.
В ближайшее время планируется добавить уроки по интерактивным элементам и адаптерам библиотеки FBA, а так же показать как работать с офф-лайн картами mapsforge.

Ложка дегтя

В ближайшее время (не более месяца) будет коммерческая версия, информацию о стоимости и порядке лицензирования добавим на наш сайт.

Спасибо, что дочитали до конца. Готов ответить на ваши вопросы в комментариях как по 1С, так и по Android.

Источник

Success story:
Как разработать коммерческое мобильное приложение на 1С

Другие статьи по мобильной платформе:

История разработки мобильного приложения на платформе «1С:Предприятие 8»

Многие финалисты наших тренингов успешно применяют полученные знания на практике, продвигаются по карьерной лестнице, становятся руководителями и Project Manager’ми…

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

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

Отметим, что в разработке очень пригодился курс по мобильной платформе – автор статьи является выпускником первого потока, и полученные знания сэкономили уйму времени, благодаря подробному описанию особенностей разработки под мобильные устройства. Также мы позаимствовали оттуда несколько идей для Контейнера, в частности, заполнение демо базы помогло начинающим пользователям быстрее разобраться в программе.

Управление разработкой

Команда разработчиков состоит из трех человек. И как правило, когда разработчиков больше одного, сложно обойтись без инструмента для распределения задач и отслеживания их выполнения. Для этих целей наиболее подходящей оказалась система Atlassian Jira.

Мы подключили плагин Jira Agile, который превращает Jira в полноценную систему управления проектами. Так что теперь наше рабочее место выглядит так:

%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 %D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F %D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%D0%BC%D0%B8

Еще один плагин Enterprise Mail Handler for JIRA Cloud избавил нас от постоянной проверки почты, куда пользователи пишут свои пожелания. Теперь письма сразу приходят в нашу систему, и на каждое письмо автоматически создается задача. Далее, если это сообщение об ошибке, то мы создаем подзадачу и включаем ее в один из спринтов. Если это вопрос – прямо там же можно ответить.

Интерфейс

Главная задача – сделать приложение не только функциональным, но и максимально простым, чтобы в нем могли разобраться даже пользователи, незнакомые с 1С.
В процессе создания приложения около 80% всего времени занимает проектирование интерфейса и адаптация его к экрану мобильных телефонов, а само приложение, с точки зрения бизнес логики, совершенно простое – приход, расход товара, кассовые документы, переоценка, инвентаризация, меньше 10 отчетов и все. На настольной 1С это можно написать за неделю. На мобильной платформе у нас ушло более полугода.

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

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

%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D1%84%D0%BE%D1%80%D0%BC%D1%8B
Так выглядит мыслительный процесс создания формы оплаты товарной накладной.

Почему столько итераций? Потому что очень непросто нарисовать форму со следующим функционалом и уместить на экране телефона:

%D0%98%D1%82%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9 %D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82

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

Так как в платформе нет инструментов для работы с html, то мы используем отладчик, встроенный в Google Chrome. В связи с этим процесс создания отчетов выглядит несколько нетипично для обычного 1С-ника:

%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%BE%D0%B2

Тестирование

После отрисовки красивого интерфейса необходимо протестировать его на всех устройствах.

%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 %D0%BD%D0%B0 %D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0%D1%85Внешний вид может отличаться не только на разных ОС (например, в iOS одна из кнопок формы перескакивает в заголовок), но и на разных телефонах. Одна из проблем – мобильная платформа странно ведет себя на устройствах с высокой плотностью пикселей. Например, на Samsung Galaxy S4 с экраном в 5 дюймов форма может не поместиться на экран (и появляются полосы прокрутки), а на Samsung Galaxy Win с диагональю 4,7 дюймов всё хорошо. Решение было найдено абсолютно случайно – ширина элементов на форме должна быть нечетной (если у группы указать ширину 28, то форма не помещается, а 29 – помещается).

В процессе тестирования обнаруживаются не только ошибки разработчиков, но и мобильной платформы. Мы регистрируем все найденные ошибки в 1С (на момент написания статьи – более 80-ти), и что особенно радует – 1С их исправляет. Как оказалось, большинство разработчиков не знает, как регистрировать ошибки, поэтому мы опубликовали статью на эту тему.

Вот так организована разработка нашего приложения Контейнер.

Источник

Практика разработки мобильного приложения 1С 8.3 (часть 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 строка из Википедии « http://ru.wikipedia.org/wiki/П иво» преобразуется в « http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%B2%D0%BE ».

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

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

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

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

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

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

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

Источник

Разработка мобильных приложений на платформе 1С:Предприятие 8.3

macbook 624707 1280 280 210

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

К середине 2006 года компания представила релиз нового продукта с многообещающим названием «1С:Предприятие 8. Расширение для карманных компьютеров». У разработчиков 1С, разглядевших перспективы 8-й платформы появилась надежда, что теперь на одном инструменте без особого труда стало возможным выполнять разработку под популярную в те годы мобильную операционную систему «Windows Mobile».

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

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

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

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

приложений с треском провалилась.

Шаг вперед

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

«1С» полностью переосмыслила подход к решению мобильной «теоремы» и учла ошибки предыдущего неудачного продукта. Результатом стал абсолютно новый инструмент, не имеющий ничего общего с предшественником и ориентированный на самые актуальные мобильные платформы – Android и iOS.

Мобильные приложения в стиле 1С

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

Для работы вам потребуется последний релиз платформы «1С:Предприятие 8.3». Учебная версия дистрибутива доступна на официальном сайте 1С. Для воссоздания примера ее возможностей более, чем достаточно.

Помимо платформы «1С:Предприятие 8.3» нам потребуются ряд дополнительных инструментов. В статье будет рассматриваться пример разработки приложения для Android. В связи с этим придется загрузить: Android SDK и WEB-сервер Apache. Первый компонент содержит все необходимое для сборки приложения и эмулятор для тестирования, а WEB-сервер пригодится для быстрой загрузки приложения на мобильную ОС.

androidsdk

Также нам потребуется поставка «Мобильной платформы разработчика». Она содержит конфигурацию для упрощения процесса сборки созданного мобильного приложения, а также мобильную платформу разработчика. Ее необходимо установить на мобильном устройстве или эмуляторе.

Для сборки приложения, готового к распространению через Google Play потребуется загрузить Apacheant и JavaJDK. Эта тема выходит за рамки статьи, поэтому узнать подробности о работе с этими инструментами и сборкой приложения вы можете в соответствующем разделе моего блога.

Конфигурируем инструменты

Платформа «1С:Предприятие 8.3» и web-сервер Apache поставляются с инсталляторами и устанавливаются стандартным образом. Android SDK необходимо просто разархивировать в отдельную директорию и запустить “sdk manager.exe”. Перед вами появится окно с выбором доступных пакетов для установки. Для тестирования, рассматриваемого в рамках статьи примера, потребуется выбрать и установить: Android SDK Tools, Android Platform Tools, SDK Platform API 17.

androidsdkinstall

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

Первая мобильная конфигурация

В главном меню конфигуратора найдем раздел «Конфигурация» и выберем пункт «Открыть конфигурацию». Дерево конфигурации (объектов, из которых будет состоять будущее приложение) отобразится в левой части окна. Выделите в нем корень конфигурации и нажмите сочетание клавиш «Alt + Enter». В правой части окна конфигуратора откроется редактор свойств.

konfigurator

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

redaktorsvojstvkonfiguracii

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

Этих объектов нам вполне хватит для решения задачи и обкатки возможностей мобильной платформы. Взаимодействие пользователя будет происходить с формой элемента справочника «Задачи», поэтому желательно поработать над ее дизайном. Я на этом заострять внимание не стану, т.к. статья не резиновая, а просто приведу скриншот моего варианта оформления. Вы можете сделать что-то подобное или положиться на платформу, которая при необходимости сгенерирует необходимые формы автоматически.

formanovojzadachi

Пишем код

Первым делом напишем код для добавления в регистр сведений «СостояниеЗадач» новых записей. Для этого откроем модуль менеджера (правый клик по регистру) и опишем в нем две процедуры (см. листинг 1 и листинг 2).

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

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

Листинг 1. Код процедуры «ДобавитьЗадачу»

Листинг 2. Код функции «ПолучитьСписокНеЗакрытых Задач()

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

Листинг 3. Код процедуры «СоздатьНовуюЗадачу»

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

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

Работаем над интерфейсом

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

Найдем в дереве конфигурации узел «Общие формы» и добавим новую форму с именем «РабочийСтол». Откроем созданную форму в конструкторе интерфейса и добавим реквизит типа «ТаблицаЗначений». Назовем его «ОткрытыеЗачи». Таблица будет содержать две колонки – «Задача» (СправочникСсылка.Задачи) и «ДатаИсполнения» (Дата).

modificirovannajaformarabochegostola

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

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

Теперь опишем у формы обработчик события «ПриСозданииНаСервере». Добавим в него одну строку кода:

В коде мы обращаемся к описанной нами процедуре «ПолучитьСписокНеЗакрытыхЗадач» и результат ее выполнения помещаем в таблицу.

Вернемся к конструктору формы и добавим группу типа «Обычная группа без отображения» с двумя кнопками: «Создать» и «Обновить». Свойству «Группировка» у добавленной группы зададим значение «Горизонтальная». Для более выразительного оформления кнопок добавим изображения и изменим шрифт по умолчанию.

proektirueminterfejsrabochegostola

Теперь выделим кнопку «Создать» и зададим ей глобальную команду «Задачи: создать». Это позволит создавать задачи, минуя вход в сам справочник. По нажатию второй кнопки будем обновлять содержимое таблицы с задачами. Для этого потребуется создать дополнительную команду формы.

opredeljaemkomandudljaknopki

Все новые команды формы создаются на одноименной вкладке «Команды». Принцип прост – добавляем новую команду, описываем в ней код действия и затем связываем команду с интерфейсом, в нашем случае с кнопкой.

Не стоит также забывать, что мы разрабатываем управляемое приложение, поэтому надо четко разграничивать клиентский и серверный код. При нажатии кнопки будет контекст «НаКлиенте», а данные из базы будем получать уже с сервера. В коде это выглядит так:

Теперь определим нашу форму рабочего стола в качестве области начальной страницы. Откроем свойства конфигурации (выделяем самый верхний узел и нажимаем «Alt+Enter») и для свойства «Рабочая область начальной страницы» установим значение «Одна колонка», после добавим в список нашу форму «РабочийСтол».

rabochajaoblastnachalnojstranicy

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

Приземляемся на Android

Конфигурация отлично работает на десктопе, и теперь самое время протестировать ее на эмуляторе мобильной ОС. Для подготовки нового эмулятора запустите командный интерпретатор (cmd.exe) и перейдите в директорию «toos» дистрибутива с Android SDK. Выполните команду «android.bat avd», которая запустит менеджер виртуальных Android устройств. В нем нажмите кнопку «Create» и в появившемся окне укажите параметры виртуального устройства. В своем рабочем окружении я решил эмулировать Nexus S с Android версии 4.2.2. (API Level 17).

sozdaemvirtualnoeustrojstvosandroid

emuljatorvrabote

publikacijamobilnogoprilozhenijanawebservere

Указав в качестве имени «todo-mobile», приложение будет доступна по адресу – «http://host/todo-mobile». Нажимаем «ok» и попробуем обратиться к опубликованному приложению с помощью браузера. В случае успеха, сервер отдаст XML-код созданной конфигурации.

mobilnoeprilozhenieuspeshnoopublikovano

Возвращаемся к эмулятору и загрузим в него приложение с мобильной платформой разработчика. Сам файл приложения доступен вместе с поставкой мобильной платформы разработчика и называется «1cem-arm.apk». Для установки этого приложения в эмуляторе воспользуемся утилитой «adb.exe» из директории «platform-tools»: adb.exe install –r 1cem-arm.apk.

zagruzka1snaemuljatore

После успешной установки, открываем в эмуляторе список приложений и запускаем мобильную платформу разработчика. В открывшемся окне нажимаем «Add application» и в поле «адрес» указываем URL к нашему web-серверу. У меня это http://192.0.168.106/todo-mobile. Нажимаем «Add» и наша конфигурация успешно перемещается на мобильную платформу. Приложение готово к работе. Протестируйте результат и возвращайтесь в конфигуратор, самое время снабдить приложения «мобильным функционалом».

dobavljaemrazrabotannoeprilozhenienaandrojd

prilozhenienaandrojde

Отправка SMS/MMS сообщений

Функции для работы с SMS/MMS сообщениями мобильными платформами поддерживаются по-разному. Например, при работе приложения на Android, у разработчика есть возможность оформить подписку на SMS и получать доступ к новым сообщениям сразу после получения. Увы, но на iOS эта же возможность отсутствует, поэтому во время разработки документация должна быть под рукой.

Для отправки SMS сообщений предусмотрен объект SMSСообщение. Рассмотрим пример:

Код достаточно простой и вряд ли нуждается в комментариях. Теперь посмотрим на оформление подписки на входящие сообщения:

Процедура «ОбработкаНовыхСообщений» будет вызываться каждый раз при получении новой SMS. Через параметр «Сообщение» передаётся объект типа «SMSСообщение» и мы без труда можем получить текст сообщения и информацию об отправителе.

Работа с MMS сообщения выполняется аналогичным образом. Сначала мы создаем SMSСообщение, а потом добавляем к нему вложение (например, изображения). Таким простым действием SMS превращается в MMS:

Совершаем звонки из мобильного приложения

Программное совершение звонка осуществляется с помощью метода «НабратьНомер» глобального объекта «СредстваТелефонии». Перед вызовом метода крайне желательно проверить возможность совершения звонка:

Параметр «ВызватьСразу» влияет на выполнение набора номера. Когда она равен «Истина», набор номера выполняется автоматически через стандартное приложение совершения звонков. При значении «Ложь» пользователь также увидит стандартный интерфейс приложения набора номера, но для совершения вызова потребуется нажать кнопку «Вызвать».

Журнал звонков

Мобильная платформа позволяет разработчику взаимодействовать с журналом звонков. Например, вы без особого труда можете получить список исходящих, пропущенных или входящих звонков. Функция поддерживается только на Android:

Геопозиционирование

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

Работа с мультимедийными функциями

Разработчику доступна возможность делать снимки, видеозаписи, аудиозаписи средствами встроенного языка: СделатьФотоснимок(), СделатьВидеозапись(), СделатьАудиозапись().

Под какую мобильную ОС лучше разрабатывать на 1С?

Несмотря на мою любовь к технике Apple, создавать мобильные приложения средствами платформы 1С лучше всего под Android. Причин тут несколько, но самая главная из них – поддерживаемые функции. К сожалению, под iOS многие нужные вещи не поддерживаются. Например, отсутствие возможности ставить программную подписку на SMS сообщения или взаимодействовать с журналом звонков – могут сделать невозможным реализацию некоторых идей. Android в этом плане более дружелюбен. Не стоит также забывать о стоимости самих устройств. Не каждая компания будет готова разориться на приобретение мобильных устройств от Apple.

Вместо завершения

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с мобильное приложение печать
  • 1с мобильное приложение ошибка функциональности ошибочная структура xml