Рапорт руководителю

Цель урока

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

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

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

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

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

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

Подробно весь процесс предварительной настройки описан в статьях:

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

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

Создадим мобильное приложение  «Рапорт руководителю»,  предназначенное для регулярного информирования  руководителя о состоянии дел на предприятии. Приложение будет состоять из 3-х экранов:

1 . “Вход” – авторизация пользователя при запуске программы.

2. “Список отчетов” – основной экран нашего приложения. Отображается список доступных отчётов  с возможностью просмотра и обновления данных из базы 1С.

3. “Настройки программы” – здесь пользователь задает параметры авторизации и адрес сервера 1С, настраивает расписание автоматического обмена с сервером 1С.

      

В приложении будет реализовано 2 варианта получения данных от сервера 1С:

1. Отчет «Товары на складах». Формируется на сервере и компилируется как HTML документ, в мобильном приложении просто отображается.  Самый простой вариант, форма отчета фиксирована и не может быть изменена.

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

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

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

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

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

«Показатель» – тестовое представление показателя отчета, строка (250)
«Значение» – числовое значение показателя, число (15.2)

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

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

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

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

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

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

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

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

Нажмите Создать,  шаблон Android-проекта будет сгенерирован.

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Если СокрЛП(МобильноеПриложение.Код) = "SAMPLE_REPORT_HEAD" Тогда
 
    Если ИмяТаблицы = "РапортРуководителю" Тогда
        //фиктивные данные отчета
        СписокТемп = fbaОбщий.ИзСтрокиСРазделителями("Денежные средства,Расчеты с подотчетными лицами,Общая дебиторская задолженность,Остатки товаров,Кредиторская задолженность,Объем продаж");
        ГСЧ = Новый ГенераторСлучайныхЧисел(123456789);
 
        Для каждого ЭлементСписка Из СписокТемп Цикл
            НоваяСтрока = ВнешняяТаблица.Добавить();
            НоваяСтрока.Показатель = ЭлементСписка.Значение;
            НоваяСтрока.Значение = ГСЧ.СлучайноеЧисло(0,999999) + Sin(ГСЧ.СлучайноеЧисло(0,999));
        КонецЦикла;
    КонецЕсли;
КонецЕсли;
Если СокрЛП(МобильноеПриложение.Код) = "SAMPLE_REPORT_HEAD" Тогда

    Если ИмяТаблицы = "РапортРуководителю" Тогда
        //фиктивные данные отчета
        СписокТемп = fbaОбщий.ИзСтрокиСРазделителями("Денежные средства,Расчеты с подотчетными лицами,Общая дебиторская задолженность,Остатки товаров,Кредиторская задолженность,Объем продаж");
        ГСЧ = Новый ГенераторСлучайныхЧисел(123456789);

        Для каждого ЭлементСписка Из СписокТемп Цикл
            НоваяСтрока = ВнешняяТаблица.Добавить();
            НоваяСтрока.Показатель = ЭлементСписка.Значение;
            НоваяСтрока.Значение = ГСЧ.СлучайноеЧисло(0,999999) + Sin(ГСЧ.СлучайноеЧисло(0,999));
        КонецЦикла;
    КонецЕсли;
КонецЕсли;

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ДД = Неопределено;
 
Если СокрЛП(МобильноеПриложение.Код) = "SAMPLE_REPORT_HEAD" Тогда
 
    Если Идентификатор = "REPORT_PRODUCTS_IN_STOK" Тогда
 
        ИмяФайла = ПолучитьИмяВременногоФайла("html");
        Отчет = Отчеты.ТоварыНаСкладах.Создать();
        Если Отчет.СохранитьОтчетВHTML(ИмяФайла) Тогда
            ДД = Новый ДвоичныеДанные(ИмяФайла);
            УдалитьФайлы(ИмяФайла);
        КонецЕсли;
    КонецЕсли;
 
КонецЕсли;
 
Возврат ДД;
ДД = Неопределено;

Если СокрЛП(МобильноеПриложение.Код) = "SAMPLE_REPORT_HEAD" Тогда

    Если Идентификатор = "REPORT_PRODUCTS_IN_STOK" Тогда

        ИмяФайла = ПолучитьИмяВременногоФайла("html");
        Отчет = Отчеты.ТоварыНаСкладах.Создать();
        Если Отчет.СохранитьОтчетВHTML(ИмяФайла) Тогда
            ДД = Новый ДвоичныеДанные(ИмяФайла);
            УдалитьФайлы(ИмяФайла);
        КонецЕсли;
    КонецЕсли;

КонецЕсли;

Возврат ДД;

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

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

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

Похожие записи: