Post-Image

Проверено на себе: Power Apps

Рвав-рвав, собака Смайл открывает новые горизонты!

Как вы уже поняли, прочитав заголовок, в данной статье речь пойдет не о Power BI, а о Power Apps. Наконец-то дошли лапы проверить на практике, каково это: создать “с нуля” приложение, не обладая глубоким техническим бэкграундом. Не могу сказать, что это было легко, даже учитывая простоту необходимых расчетов, поскольку Power Apps – это совсем другая история, отличная от Power BI, в пасть мне лапы…

Так же заранее скажу, что, скорее всего, сделанное мной можно было бы смонстрячить как-то более оптимально, но это мой первый подобный опыт, и опыт честный. Теперь я собака гордый, с большой буквы “Г”.

Задача:

Необходимо разработать приложение, позволяющее рассчитать размер бонуса сотрудникам, а также записывать данные во внешний источник (сохранять историю).

Составляющие решения:

  • Приложение разработано при помощи Power Apps (нужна лицензия).

  • В качестве внешнего источника применяются SharePoint Lists (нужна лицензия).

    Рвав-рвав, увы, но в отличии от Power BI Desktop, здесь понадобятся лицензии, это многих опечалит, но что есть, то есть.

    Создание внешних источников данных:

  • Перед началом разработки приложения необходимо определиться с тем, а куда, собственно, мы будем данные записывать, или откуда брать. При этом указанные вещи можно совместить, например, использовав занесенную при помощи приложения информацию в качестве справочных данных. Поэтому, в SharePoint было создано 3 сущности – это списки “Staff”, “Dataset” и “Parameters”:

    art_014_screen_01

  • Список “Staff” имеет следующую структуру:

    art_014_screen_02

  • Список “Dataset” имеет следующую структуру:

    art_014_screen_03

  • Список “Parameters” имеет следующую структуру:

    art_014_screen_04

    Процесс разработки:

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

    art_014_screen_05

  • Определившись с вариантом, в нашем случае это приложение на основе холста с нуля, необходимо выбрать указанные вариант, и заполнить в появившемся окне необходимые параметры, а именно имя и формат приложения:

    art_014_screen_06

  • После этого при нажатии кнопки “Создать”, откроется интерфейс создания приложения с автоматически созданным элементом “Экран” (“Screen1”), состоящий из нескольких частей, которые можно условно разделить на панель элементов приложения (левая часть), полотно разработки (центр) и панель свойств элементов приложения (правая часть):

    art_014_screen_07

    Рвав-рвав, Power Apps, на мой взгляд, представляет собой некий конструктор, где путем создания необходимых элементов, группировки их непосредственно на холсте и добавлением дополнительных расчетов можно добиться нужного результата. Элементы, добавляемые пользователем, имеют дефолтное название (например, автоматически созданный элемент “Экран” имеет название “Screen1”). Однако, чтобы лучше понимать, а что вообще происходит, лучше переименовывать используемые элементы, давая им более осмысленные названия, например, “Screen_Home”.

  • Элемент “Экран” в Power Apps является базовым элементом, поскольку именно на нем размещается все остальное, например, поля ввода, поля расчета, функциональные элементы, и элементы дизайна. При наличии хотя бы одного экрана можно приступать к разработке приложения, например, украсить его каким-нибудь изображением. Для этого необходимо перейти в раздел “Мультимедиа”, нажать кнопку “Передать”, выбрать файл, а затем поместить его на экран, растянув получившееся изображение:

    art_014_screen_08

  • Следующим важным элементом любого приложения является “Кнопка”, поскольку она позволяет пользователю выполнить какое-либо действие. Вставить кнопку можно выбрав соответствующее действие в разделе “Вставка”, либо перейдя на одноименную закладку, и таки нажав соответствующую вставке кнопки кнопку:

    art_014_screen_09

    Рвав-рвав, извините за тавтологию выше, но, во-первых, “из песни слова не выкинешь”, а во-вторых, вредная собакен просто не мог удержаться от этой веселой фразы :-)

  • В Power Apps существуют широкие возможности по дизайну элементов, поэтому, потратив небольшое количество времени, можно добиться следующих результатов:

    art_014_screen_10

    На картинке выше были выполнены следующие действия:

    – произведено переименование всех созданных объектов экрана “Screen_Home”;

    – выбрана тема приложения, отличная от темы “по умолчанию” (Закладка “Главная” → Кнопка “Тема”);

    – под каждый экран, планируемый в приложении, создана отдельная кнопка (Закладка “Вставка” → Кнопка “Кнопка”), которой присвоено определенное название, отражающее назначение экрана;

    – указано название приложения;

    – для акцентирования названия приложения под текст была подложена фигура “Прямоугольник” (Закладка “Вставка” → Кнопка “Значки” → Прямоугольник);

    – в качестве дополнительного украшения в левую часть заголовка помещена тематическая иконка (Закладка “Вставка” → Кнопка “Значки” → Главная).

  • Для того, чтобы навесить на кнопку определенное действие (обычно это переход на другой экран), необходимо предварительно создать указанный элемент. Вставка нового экрана производится при помощи кнопки “Новый экран”, расположенной на закладках “Вставка” или “Главная”.

  • Далее новому экрану можно присвоить другое имя, например, “Screen_Information”. И связать кнопку “Информация” с добавленным экраном.

  • У каждого элемента Power Apss есть свойства и доступные функции. Например, для кнопки, при ее вставке, “по умолчанию” прописано свойство “OnSelect” со значением “false”:

    art_014_screen_11

  • Для того, чтобы осуществить переход по нажатию кнопки на другой экран, надо изменить поведение элемента, и при помощи функции “Navigate” указать имя соответствующего экрана:

    Navigate (Screen_Information)

  • Проверка поведения приложения осуществляется при помощи кнопки “Предварительный просмотр приложения” (“F5”), расположенной в правом верхнем углу. При помощи данной кнопки можно отслеживать вид и поведения приложения для конечного пользователя.

  • Аналогичным образом нужно создать все необходимы экраны, связать их с соответствующими кнопками и оформить должным образом, в результате получится 8 экранов (по одному на каждую кнопку), включая главный экран “Screen_Home”:

    art_014_screen_12

  • Следующим шагом можно подключить источники данных, которые будет использовать приложение. Для этого необходимо перейти в раздел “Данные”, нажать кнопку “Добавить данные”, зайти в раздел “Соединители”, выбрать “SharePoint”:

    art_014_screen_13

  • После указания действующей учетной записи, в правой части экрана появится список источников, доступных для подключения:

    art_014_screen_14

  • Далее необходимо указать ссылку для подключения источника, например, на список “Dataset”, а затем нажать ставшую активной кнопку “Подключение”. При этом, можно подключить несколько источников сразу, если они из одной области, проставив соответствующие флаги:

    art_014_screen_15

  • Отметив все нужные списки, необходимо еще раз нажать кнопку “Подключение”, после чего в левой панели в разделе “Данные” отобразятся подключенные источники данных (списки “Dataset”, “Parameters” и “Staff”):

    art_014_screen_16

  • Поскольку списки SharePoint стали связаны с приложением, появляется возможность либо что-то оттуда взять, либо что-то туда положить. Для примера, ниже будет проиллюстрировано создание формы ввода данных в разрезе конкретного сотрудника и величины его бонуса, указанного в процентах, связанной со списком “Staff”. Вставка формы производится при помощи кнопки “Форма”, расположенной на закладке “Вставка”, при этом форма доступна в варианте “Изменить”, или “Отображать”. Поскольку данные для работы приложения планируется в том числе и заносить, в нашем случае это вариант “Изменить”:

    art_014_screen_17

  • Вставленную форму необходимо подключить к нужному набору данных, которым является список “Staff”. Для этого можно воспользоваться правой панелью свойств элемента, указав в поле “Источник данных” указанный список:

    art_014_screen_18

    В результате на форме появятся карточки, аналогичные столбцам, содержащимся в списке “Staff”, но с двумя отличиями:

    – столбцу “List label” соответствует карточка “Title” – это первый дефолтный столбец списка с системным именем;

    – появилась дополнительная карточка “Вложения”, а такого столбца в списке “Staff” нет.

    Рвав-рвав, по результатам собственных изысканий менять свойства столбца “Title” нужно аккуратно, эксперименты были проведены разнообразные, и в процессе часто что-то ломалось, поэтому хитрая собака рекомендует просто не трогать данный системный столбец, а использовать созданные вручную. Карточка “Вложения”, насколько я понял, обязана своим появлением функционалу списков SharePoint.

  • Поля, появившиеся на форме можно отредактировать при помощи панели свойств, поскольку элемент “Форма”, как и любой другой элемент, также имеет свои свойства. Из основных возможностей можно отметить работу по добавлению или удалению карточек, отображенных на форме, при чем существует большое количество системных полей, скрытых от пользователя, например, “Created” (“Дата создания записи”). Операции с полями производятся при помощи ссылки “Изменить поля”, и осуществления каких-либо дополнительных действий при нажатии “…”:

    art_014_screen_19

  • Так как карточка “Вложения” использоваться не будет, ее можно удалить, используя функционал, описанный выше:

    art_014_screen_20

  • При первоначальной загрузке карточки на форму, она имеет блокировку, которую можно снять через контекстное меню мыши, или через панель свойств элемента (см. вкладку “Дополнительно”):

    art_014_screen_21

    При разблокировке карточки значок замка должен исчезнуть.

  • Если какая-то карточка не требует заполнения пользователем, но при этом она нужна в расчетах, или просто для информации, ее можно скрыть, используя соответствующий переключатель “Видимый” (см. вкладку “Свойства”). По умолчанию на любой карточке переключатель имеет положение “Включено”.

  • Также при помощи свойств карточки можно задать ее дизайн, отображаемое название (Вкладка “Дополнительно” → Свойство “DisplayName”), значение по умолчанию (Вкладка “Дополнительно” → Свойство “Default”). По итогам обработки экран примет вид, указанный ниже:

    art_014_screen_22

    На форме “Form1” сделаны следующие изменения:

    – форма переименована в “Screen_Staff_Enter”;

    – изменены названия карточек: карточка “Title” переименована в “Метка списка”, карточка “Name” переименована в “Сотрудник”, карточка “Bonus percentage” переименована в “Процент бонуса”;

    – карточка “Title” скрыта от просмотра для пользователя, в качестве значения “по умолчанию” было указано значение “Staff”;

    – в карточке “Процент бонуса” было изменено поведение элемента таким образом, чтобы при вводе данных значение сразу отображалось в процентах:

    Parent.Default / 100 & "%"

    Рвав-рвав, при создании столбца в списке SharePoint, в его свойствах можно поставить “Показывать в процентах”, соответственно, при вводе значения “10” оно превратится в “10%”, а вот в Power Apps пытливый собакен такой возможности не нашел, так как “по умолчанию” ввести можно значение “0,1”, что, согласитесь, не совсем удобно для конечного пользователя. Поэтому и пришлось выдумывать достойную альтернативу.

  • Для того, чтобы введенные поля отображались при активации функции просмотра, которой мы проводим, в том числе, и конечное тестирование приложения, в свойствах формы необходимо переопределить значение “Изменить” на “Создать”:

    art_014_screen_23

  • В принципе, экран для ввода данных можно считать практически готовым, поскольку необходимые поля определены и отформатированы нужным образом, однако еще необходимо обеспечить сохранение внесенных данных в соответствующий список. Для этого на экран “Screen_Staff_Enter” необходимо добавить кнопку, обеспечивающую при нажатии запись данных в список “Staff”:

    art_014_screen_24

    На кнопке “Button8” сделаны следующие изменения:

    – кнопка переименована в “Button_Staff_Save_Enter”;

    – текст надписи изменен на “Сохранить”;

    – на кнопку добавлена иконка, соответствующая функции кнопки;

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

    SubmitForm (Form_Staff_Enter); ; NewForm (Form_Staff_Enter)

  • Как уже упоминалось выше, при нажатии кнопки “Просмотр” можно протестировать функционал создаваемого приложения. То же самое можно сделать и при помощи кнопки “Alt”. При использовании режима просмотра приложение разворачивается на весь экран, и карточки становятся доступны для ввода:

    art_014_screen_25

  • При нажатии кнопки “Сохранить” экран приложения примет первоначальную форму, очистив соответствующие поля ввода, а в списке SharePoint “Staff” отобразится запись со внесенным значением, а также значениями, указанными “по умолчанию” (в столбце “List label” стоит значение “Staff”, хотя ручного ввода осуществлено не было):

    art_014_screen_26

  • Если ввод данных на форме не нужен, а существует необходимость только просмотра данных из источника, тогда такую возможность можно реализовать, например, при помощи вставки элемента “Таблица данных” или “Коллекция”. Для просмотра данных можно создать отдельный экран, с названием “Screen_Staff_View”, и аналогичным оформлением в части цветов, заголовка, и пользовательских названий элементов. Вставка таблицы для просмотра данных, внесенных в список “Staff” производится при помощи кнопки “Таблица данных”, расположенной на закладке “Вставка”:

    art_014_screen_27

  • Столбцы таблицы можно настраивать под свои потребности, например, вывести дату создания записи (системное поле “Created”), или скрыть часть информации, как это было сделано с системным столбцом “Title” (“Метка списка”). Также можно переопределить порядок следования столбцов. В результате конечный пользователь увидит на данном экране только необходимую ему информацию:

    art_014_screen_28

  • Подобным образом можно создать экран “Screen_Parameters_Enter” для ввода параметров, необходимых при расчете бонуса:

    art_014_screen_29

  • Экран для просмотра параметров “Screen_Parameters_View”:

    art_014_screen_30

  • Теперь можно приступить к самому интересному, а именно, созданию дополнительных расчетов и записи итоговых результатов в список SharePoint “Dataset”. После всех предварительных манипуляций экран “Screen_Dataset_Enter” выглядит следующим образом:

    art_014_screen_31

  • Карточка “Сотрудник”: здесь поле ввода заменено на выпадающий список, формирующийся из столбца “Name” списка SharePoint “Staff”. Данный элемент можно вставить при помощи пункта меню “Раскрывающийся список”, используя кнопку “Ввод” на закладке “Вставка”. После этого в свойствах данного элемента указать нужный источник и соответствующий столбец:

    art_014_screen_32

  • Переключатель “Метод расчета бонуса”: в приложении заложена некоторая логика, зависящая от состояния данного переключателя. Состояние переключателя влияет на механизм расчета бонуса по сотрудникам.

  • Карточка “Процент бонуса”: если переключатель “Метод расчета бонуса” находится в положении “Выключено”, процент бонуса рассчитывается равномерно между всеми участниками распределения. В положении “Включено” процент бонуса берется пропорционально, согласно внесенной информации в списке SharePoint “Staff”. Формула, обеспечивающая такое поведение, выглядит следующим образом:

    If (Toggle_Dataset_Enter.Value = true;
    LookUp (Staff; Name = Dropdown_Dataset.Selected.Name; 'Bonus percentage') * 100; 
    RoundUp (100 / CountRows (Staff.Name); 2)) & "%"

    Поведение переключателя описано через функцию “If”, произведено округление полученного результата и перевод его в процентный формат.

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

    Last (Parameters.Revenue).Revenue – Last (Parameters.Rate).Rate * Last (Parameters.Cost).Cost

    Расчет описан через функцию “Last”, которая отбирает последнюю запись в списке SharePoint “Parameters”, и соответствующие математические операторы.

  • Карточка “Сумма бонуса”: расчетный показатель, представляющий собой результат перемножения значений показателей “Маржа” и “Процент бонуса”.

  • Карточка “Комментарий”: поле для ручного ввода текста.

  • После того, как разработка приложения завершена, необходимо провести итоговое тестирование, поскольку помимо расчетов, здесь многое зависит от взаимодействия элементов друг с другом. Результатом работы приложения является заполненный список SharePoint “Dataset” c размером бонуса каждого сотрудника:

    art_014_screen_33

  • Для снижения потока вопросов о том, как пользоваться приложением, можно вставить инструкцию:

    art_014_screen_34

    Рвав-рвав, на этом разработка приложения завершена. Напоследок, хотелось бы рассказать свои личные впечатления об использовании такого инструмента, как Power Apps. Поскольку пытливый собакен не в состоянии однозначно разделить все моменты на “плюсы” и “минусы”, ниже представлен просто некий поток мыслей и впечатлений.

    Мнение автора:

  • Как уже говорилось выше, для разработки требуются лицензии, но базовая лицензия “Офис365” включает в себя и данный инструмент, что, безусловно, радует.

  • Разработка сильнее завязана на среду клиента, в отличии от того же Power BI, по крайней мере в рамках рассмотренного примера. Если в BI достаточно подключить источники, и затем вести разработку в Power BI Desktop практически независимо, то для повторения подобного фокуса в рамках использования Power Apps после окончания разработки необходимо перенести клиенту структуру источников данных, помимо самого приложения.

  • Синтаксис: он просто другой, поэтому это некоторая данность.

  • Безусловный положительный момент заключается в том, что приложение позволяет активно вносить данные и сохранять, в случае с Power BI все не так радужно.

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

  • В отличии от Power BI, связей между данными нет.

  • Порадовали большие возможности в части оформления, в том числе разнообразные элементы (переключатели и прочие мульки). Переключателя “Метод расчета бонуса” не было в начальном замысле, он возник случайно при поиске другой информации о синтаксисе.

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

  • Документирован Power Apps хорошо, в том числе есть много материалов на русском языке.

    Рвав-рвав, гордый собой собакен надеется, что вам понравилось.

    Ваш Смайл