Создание коллекции заказов в приложении на основе холста

Следуйте пошаговым инструкциям, чтобы создать коллекцию заказов в приложении на основе холста для управления вымышленными данными в базе данных Northwind Traders. Эта тема является частью серии, в которой объясняется, как построить бизнес-приложение на реляционных данных в Microsoft Dataverse. Для достижения наилучших результатов изучите эти темы в следующей последовательности:

  1. Создайте коллекцию заказов (данная тема).
  2. Создание сводной формы.
  3. Создание коллекции сведений.

Определение областей экрана.

Предварительные условия

Создание пустого приложения

Создайте пустое приложение на основе холста и дайте ему имя, например "Мои заказы Northwind (приложение на основе холста)".

Добавление данных

  1. В левой области выберите Данные > Добавить данные > которые требуется найти, и выберите таблицу Заказы.

    Выберите вид, источники данных, добавить источник данных.

    Таблица Заказы содержит множество полей различных типов:

    Список полей в таблице "Заказы".

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

  2. Так как мы будем работать с экранами и элементами управления дальше, в Power Apps Studio переключитесь обратно на Представление в виде дерева с левой стороны, нажав значок трех сложенных в стопку квадратов. Вы можете вернуться к пункту Источники данных в любое время, нажав на значок цилиндра.

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

    Вставка, Коллекция, Пустая вертикальная.

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

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

    Sort( Orders, 'Order Number', Descending )
    

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

    Сортировка заказов в коллекции.

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

    Задание свойства Items коллекции.

  4. На вкладке Свойства возле правого края откройте список Макет:

    Список параметров макета.

  5. В списке параметров выберите Заголовок и подзаговок:

    Выбор макета.

    Два элемента управления Метка добавляются в шаблон коллекции. По умолчанию эти элементы управления показывают два столбца таблицы Заказы, которые вы измените далее. Шаблон коллекции реплицируется вертикально для каждой записи в таблице.

  6. Выберите Изменить (рядом с пунктом Поля) на вкладке Свойства рядом с правым краем.

    Выберите редактирование для обновления полей.

  7. В области Данные выберите Title1 (или выберите верхнюю метку в шаблоне коллекции).

  8. В строке формул задайте для свойства Text метки следующее выражение:

    "Order " & ThisItem.'Order Number'
    

    Задание свойства Text метки заголовка.

    Номер заказа отображается в верхней части каждого элемента коллекции. В шаблоне коллекции ThisItem предоставляет доступ ко всем полям в таблице Заказ.

  9. В области Данные выберите Subtitle1 (или выберите нижнюю метку в шаблоне коллекции):

    Выберите метку подзаголовка.

  10. В строке формул задайте для свойства Text метки следующее выражение:

    ThisItem.Customer.Company
    

    Задание свойства Text метки подзаголовка.

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

    Когда вы указываете ThisItem.Customer, вы используете отношение "многие-к-одному" между таблицами Заказы и Клиенты и извлекаете записи клиента, который связан с каждым заказом. Из записи клиента вы извлекаете данные в столбце Компания для отображения.

    Вы можете показать все отношения из таблицы Заказы с другими таблицами, включая таблицу Клиент:

    Список отношений.

  11. Закройте область Данные, нажав значок закрытия (x) в ее правом верхнем углу.

Отображение статуса каждого заказа

В этой процедуре вы добавите пространство в коллекцию для метки и настроите ее для отображения статуса каждого заказа в другом цвете на основе данных.

  1. В шаблоне коллекции уменьшите ширину первой метки, Title1:

    Title1 в шаблоне коллекции.

  2. Повторите предыдущий шаг со второй меткой, Subtitle1:

    Subtitle1 в шаблоне коллекции.

  3. Выбрав шаблон коллекции (или элемент управления в шаблоне), выберите элемент Метка на вкладке Вставить:

    Добавление метки.

  4. Переместите новую метку в положение справа от метки Title1:

    Перемещение и изменение размеров метки.

  5. Задайте для свойства Text новой метки следующее выражение:

    ThisItem.'Order Status'
    

    Задание свойства Text.

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

    Набор выбора состояния заказов.

    У каждого параметра в наборе есть имя, которое появляется, если вы показываете его в метке. Эти имена могут быть локализованы, и приложение распознает тот же параметр, когда английский пользователь выбирает Apple (Яблоко), французский пользователь выбирает Pomme или испанский пользователь выбирает Manzana. По этой причине вы не можете создать формулу, которая полагается на жестко запрограммированную строку для параметра, как показано в этой теме позже.

    В формулах вы должны заключить имя Статус заказа в одинарные кавычки, потому что оно содержит пробел. Однако это имя работает так же, как и любое другое имя в Power Apps, такое как Клиент или Компания.

  6. На вкладке Главная увеличьте размер шрифта метки состояния до 20 точек и выровняйте текст по правому краю:

    Изменение размера шрифта и выравнивания.

  7. В строке формул установите для свойства Color метки состояния эту формулу:

    Switch( ThisItem.'Order Status',
        'Orders Status'.Closed, Green,
        'Orders Status'.New, Black,
        'Orders Status'.Invoiced, Blue,
        'Orders Status'.Shipped, Purple
    )
    

    Задание свойства Color метки состояния.

    Power Apps не позволяет создавать формулу, которая опирается на жестко запрограммированную строку для каждого параметра в наборе, поскольку такие формулы могут привести к неправильным результатам, если имена параметров локализованы. Вместо этого функция Switch определяет цвет в зависимости от того, какая строка появляется в метке, исходя из настроек пользователя.

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

Отображение итоговой суммы каждого заказа

  1. Выберите первый элемент в коллекции, который является шаблоном коллекции:

    Выберите шаблон коллекции.

  2. На вкладке Вставить выберите элемент Метка, чтобы добавить другую метку:

    Добавление другой подписи.

  3. Переместите новую метку, чтобы она появилась под меткой статуса:

    Изменение размера и перемещение новой метки.

  4. В строке формул задайте для свойства Text новой метки следующее выражение:

    Text( Sum( ThisItem.'Order Details', Quantity * 'Unit Price' ), "[$-en-US]$ #,###.00" )
    

    Формула для расчета общей стоимости заказа.

    В этой формуле функция Sum добавляет записи в таблицу Сведения о заказе, которые связаны с каждой записью в таблице Заказ через отношение "один-ко-многим". Эти позиции строки составляют каждый заказ, и вы будете использовать это же отношение "один ко многим", чтобы показывать и редактировать позиции в правой нижней части экрана.

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

    Функция Text в этой формуле добавляет символ валюты и форматирует результат с разделителем тысяч и десятичным разделителем. Как написано, формула включает языковой тег для английского языка США ([$-en-US]) и символ доллара ($). Если вы удалите языковой тег, он будет заменен на тег, основанный на ваших языковых настройках, и на ярлыке будут показаны соответствующие форматы для этого тега. Если вы оставите символ доллара, на метке будет отображаться соответствующий символ валюты в зависимости от настроек пользователя. Однако вы можете задать принудительное отображение другого символа, заменив символ доллара на тот, который вы предпочитаете.

  5. На вкладке Главная измените размер шрифта новейшей метки на 20 точек и выровняйте текст по правому краю:

    Измените размер шрифта и выравнивание метки.

  6. Переместите коллекцию к левому краю экрана и уменьшите ширину коллекции, чтобы закрыть некоторое пространство.

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

    Перемещение и изменение размера коллекции.

Cводка

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

  • Выражение для отображения номера заказа: "Orders " & ThisItem.OrderNumber
  • Поле в отношении "многие-к-одному": ThisItem.Customer.Company
  • Метка, которая показывает название параметра в наборе: ThisItem.'Order Status'
  • Метка, которая изменяет формат в зависимости от того, какой параметр в наборе показывает метка: Switch( ThisItem.'Order Status', 'Orders Status'.Closed, Green, ...
  • Сложная агрегатная функция для отношения "один ко многим": Sum( ThisItem.'Order Details', Quantity * 'Unit Price' )

Следующая тема

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

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).