Поділитися через


Ознайомлення з посиланнями на записи та поліморфними підстановками у компонованих програмах

Якщо у школі ви колись писали реферат, скоріш за все наприкінці ви наводили список посилань на джерела. Ви не вкладали копії текстів, які слугували основою для дослідження, але використовували замість цього веб-посилання, вказували назву книги та ім’я автора або ж наводили інші відомості, за якими будь-хто міг відстежити першоджерело. У єдиному переліку ви вказували різні типи джерел, газетні статті поруч із аудіо записами, і для усіх матеріалів було наведено певні відомості, що дозволяли цитувати їх належним чином. Наприклад, статті у Вікіпедії часто мають довгий список посилань.

У компонованих програмах часто доводиться працювати із копіями записів, завантаженими з джерел даних. Для того, щоб визначити певний запис, використовуються функції LookUp та Filter, а також властивість Selected елемента керування Галерея. Усі записи з Фільтр або Вибрано належатимуть до однакового типу таблиці, тому ці поля можна використовувати із простим записом .Поле. Такі копії часто містять посилання на певні відомості, тому для оновлення вихідного джерела можна використовувати функцію Patch.

Компоновані програми підтримують також і посилання на записи. Подібно до списку джерел для реферату, посилання на запис лише посилається на запис, але не містить повної копії цього запису. Таке посилання може посилатися на запис у будь-якій таблиці. Крім того, як і у випадку із довідковими матеріалами у дослідних роботах, в одному стовпці можна змішувати записи з різних таблиць.

Велика кількість операцій із посиланнями співпадає із тими, що виконуються при роботі із записами. Ви можете порівнювати посилання на записи між собою, а також із повними записами. Можна задати значення для посилання на запис, використовуючи функцію Patch, так само, як це робиться для підстановки із повним записом.

Існує одна важлива різниця при використанні: ви не можете безпосередньо посилатися на поля у посиланні запису, не встановивши спочатку, на яку таблицю воно посилається. Це пояснюється тим, що у компонованих програмах необхідно, щоб усі типи були відомі під час написання формул. Оскільки не можна визначити тип посилання на запис, доки програма не запущена, можливість безпосередньо використовувати просту нотацію .Field відсутня. Спочатку необхідно динамічно визначити тип таблиці, використовуючи функцію IsType, а потім використовувати форму запису .Поле із результатом функції AsType.

Тип таблиці означає схему кожного запису таблиці. Кожна таблиця має унікальний набір полів із різними іменами та типами даних. Кожен запис таблиці успадковує цю структуру; два записи належать до однакового типу таблиці, якщо вони походять з однієї таблиці.

Примітка

Для підключення до різних типів джерел даних для компонованих програм ви можете обирати з-поміж багатьох різних з’єднувачів. Проте під час роботи із компонованими програмами в Power Apps Studio стовпці з Microsoft Dataverse називаються полями, як і в інших джерелах даних. Стовпець використовується лише коли мова йде про стовпець усередині Dataverse. Додаткові відомості: Оновлення термінології Dataverse

Поліморфні підстановки

Microsoft Dataverse підтримує зв'язки між записами. Кожен запис у таблиці Бізнес-партнери має стовпець підстановки Основна контактна особа з таблиці Контактні особи. Ця підстановка може посилатися лише на запис у Контактних особах і не може посилатися на записи, скажімо, у таблиці Робочі групи. Останнє зауваження важливе, оскільки ви завжди знаєте, які стовпці будуть доступні для цієї підстановки.

Dataverse також підтримує поліморфні підстановки, які можуть посилатися на записи з будь-якої таблиці в наборі. Наприклад, стовпець Відповідальний може посилатися на запис у таблиці Користувачі або у таблиці Робочі групи. Такий самий стовпець підстановки в різних записах може посилатися на записи в різних таблицях. У такому випадку ви не завжди знатимете, які стовпці будуть доступними.

Компоновані посилання на запис призначені для роботи з поліморфними підстановками у Dataverse. Крім того, посилання на сутності можна використовувати й за межами цього контексту, і це й становить різницю між двома концепціями.

У наступному розділі ми розпочнемо вивчення цих концепцій на прикладі підстановки Відповідальний.

Відображення стовпців відповідального за запис

Кожна таблиця Dataverse містить стовпець Відповідальний. Цей стовпець не можна видалити, не можна додати іще один такий стовпець, і у стовпці завжди повинні бути значення.

Щоб показати цей стовпець у таблиці Бізнес-партнер:

  1. Увійти до Power Apps.

  2. На області панелі ліворуч виберіть Дані > Таблиці.

  3. У списку таблиць виберіть Бізнес-партнер.

  4. У верхньому правому куті відкрийте список фільтрів (який за замовчуванням встановлено, як За замовчуванням), а потім виберіть Усе.

  5. Прокрутіть вниз, доки не відобразиться стовпець Відповідальний.

    Стовпець «Відповідальний» у таблиці «Бізнес-партнер».

Цей стовпець підстановки може посилатися на запис у таблиці Робочі групи або у таблиці Користувачі. Не кожен запис у цих таблицях має дозвіл на те, щоб використовуватись як Відповідальний; якщо виникає проблема, перевірте підтримувані ролі.

На рисунку нижче показано просту галерею Бізнес-партнерів, де таблицю Бізнес-партнери додано до програми в якості джерела даних.

Бізнес-партнери, що відображаються в елементі керування «галерея».

Важливо

У цьому розділі на зображеннях відображатимуться деякі імена та інші значення, які не входять до складу зразків даних, що постачаються з Dataverse. У покрокових інструкціях з налаштування елементів керування розповідається, як можна досягти певних результатів, але ж ваша ситуація, необхідні кроки та результати, які ви отримаєте, можуть бути різними та залежатимуть від даних вашої організації.

Щоб відобразити відповідальну особу для кожного бізнес-партнера у галереї, ви, можливо, схочете скористатися формулою ThisItem.Owner.Name. Проте поле імені в таблиці Робоча група — це Ім’я робочої групи, а поле імені в таблиці Користувач — Повне ім'я. Програма не може знати, з яким типом підстановки ви працюєте, доки її не буде запущено, і можуть використовуватися різні записи у таблиці Бізнес-партнери.

Щоб врахувати ці розбіжності, доведеться використовувати формулу. Також необхідно додати джерела даних для типів таблиць, які можуть встановлюватись як Відповідальний (у нашому випадку це Користувачі та Робочі групи). Додайте до програми три наведених нижче джерела даних.

Таблиці «Бізнес-партнери», «Робочі групи» та «Користувачі» в області «Дані».

Після цього, використовуйте наведену нижче формулу, щоб відобразити ім’я для робочої групи або користувача.

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Бізнес-партнери відображаються в елементі керування «Колекція», де показано поле «Відповідальний».

У цій формулі функція IsType перевіряє поле Відповідальний на належність до таблиці Робочі групи. Якщо це поле належить до таблиці такого типу, функція AsType перетворює його на запис Робоча група. На цьому етапі можна отримати доступ до всіх полів таблиці Робочі групи, включно з полем Ім’я робочої групи, використовуючи форму запису .Поле. Якщо IsType визначає, що Відповідальний не є записом у таблиці Робочі групи, це поле буде записом в таблиці Користувачі, оскільки поле Відповідальний є обов’язковим (не може бути пустим).

Щоб використовувати будь-які поля посилання на запис, спочатку потрібно скористатися функцією AsType для перетворення посилання на певний тип таблиці. Доступ до полів безпосередньо з поля Відповідальний неможливий, оскільки система не має відомостей щодо того, який тип таблиці потрібно використовувати.

Якщо поле Відповідальний не відповідає типу таблиці, який запитується, функція AsType повертає помилку, тому, щоб спростити цю формулу, можна скористатися функцією IfError. Перш за все, увімкніть експериментальну функцію Керування помилками на рівні формули.

Експериментальний перемикач для увімкнення керування помилками на рівні формули.

Потім замініть попередню формулу на наведену нижче.

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Фільтрація за відповідальним

Вітаємо — найважча частина, що стосується роботи із посиланням на запис, вже позаду. Інші випадки використання простіші, оскільки у них ми не звертатимемось до полів запису. У якості конкретного прикладу в цьому розділі ми розглянемо фільтрування.

Додайте елемент керування Поле зі списком понад колекцією і встановіть властивості нового елемента керування, як зазначено нижче.

  • Items: Users
  • SelectMultiple: false

Елемент керування «Поле зі списком», для якого властивість «Items» має значення «Користувачі», розташований над колекцією.

Щоб фільтрувати галерею за певним користувачем, який вибиратиметься у цьому полі зі списком, установіть для властивості колекції Items зазначену нижче формулу.

Filter( Accounts, Owner = ComboBox1.Selected )

Колекція, відфільтрована за значенням у елементі керування «Поле зі списком».

Важливо

Інструкції в цьому розділі працюватимуть, якщо ви ретельно виконаєте їх. Проте будь-яка формула, яка посилається на ім'я певного елемента керування, не працюватиме, якщо цей елемент керування має інше ім'я. Якщо ви видалите елемент керування і додасте замість нього інший елемент того ж типу, число наприкінці імені елемента керування зміниться. Для будь-якої формули, для якої відображається повідомлення про помилку, переконайтеся, що в ній використовуються правильні імена усіх елементів керування.

Немає потреби використовувати функції IsType або AsType, оскільки посилання на запис порівнюються із іншими посиланнями на запис або повними записами. Програма знає тип таблиці для ComboBox1.Selected, оскільки він отримується з таблиці Користувачі. Бізнес-партнери, для яких у якості «відповідального» вказано робочу групу, не відповідатимуть умові фільтра.

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

  1. Звільніть трохи простору у верхній частині екрана, змінивши розмір колекції і посунувши поле зі списком, а тоді вставте елемент керування Перемикач понад колекцією і задайте його властивості, як зазначено нижче.

    • Items: [ "All", "Users", "Teams" ]
    • Layout: Layout.Horizontal
  2. Для елемента Поле зі списком настройте зазначену нижче властивість (якщо поле зі списком зникає, виберіть Користувачі у перемикачі).

    • Visible: Radio1.Selected.Value = "Users"
  3. Скопіюйте та вставте елемент керування Поле зі списком, розташуйте копію безпосередньо поверх оригінала, а потім установіть для копії зазначені нижче властивості.

    • Items: Teams
    • Visible: Radio1.Selected.Value = "Teams"

    Програма відображатиме одночасно лише одне поле зі списком, залежно від стану елемента керування «Перемикач». Оскільки один з них точно накриває інший, вони виглядатимуть, як єдиний елемент керування, вміст якого змінюється.

  4. Нарешті, установіть для властивості Елементи Колекції наведену нижче формулу.

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

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

Змінивши програму таким чином, ви можете відображати усі записи або відфільтрувати їх за користувачем або робочою групою.

Анімація, що демонструє різні відфільтровані результати в залежності від положення перемикача і значень у полях зі списком.

Цю формула можна легко використати деінде. Та частина, що порівнює значення перемикачів, буде однаковою для різних записів і її значення обчислюється до того, як решта формули фільтрування надсилається в Dataverse.

Якщо потрібно фільтрувати за типом відповідального, ви можете скористатися функцією IsType, але вона поки що недоступна для делегування.

Фільтрування за типом відповідального із використанням функції IsType.

Оновлення відповідального за допомогою функції Patch

Поле Відповідальний можна оновлювати так само, як і будь-яку іншу підстановку. Щоб задати першу робочу групу в якості відповідального за вибраного бізнес-партнера, виконайте зазначені нижче дії.

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Такий підхід не відрізняється від підходу для звичайної підстановки, оскільки програма знає, який буде тип First( Робочі групи ). Якщо потрібно замість цього використати першого користувача, замініть цю частину на First( Користувачі ). Функція Patch знає, що для поля Відповідальний можна встановити один із цих двох типів таблиць.

Щоб додати цю можливість до програми, виконайте зазначені нижче дії.

  1. В області Подання дерева виберіть одночасно елемент керування Перемикач і два Поля зі списком.

  2. У меню «три крапки» виберіть Копіювати ці елементи.

    Копіювання кількох елементів керування у поданні дерева.

  3. У цьому ж меню виберіть Вставити.

    Вставлення кількох елементів керування у поданні дерева.

  4. Пересуньте елементи керування, що ви скопіювали, у праву частину колекції.

    Елементи керування, що ви скопіювали, переміщені у праву частину колекції.

  5. Виберіть скопійований елемент керування Перемикач, а потім змініть зазначені нижче властивості.

    • Items: [ "Users", "Teams" ]
    • За замовчуванням: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Видалено варіант вибору усіх елементів з елемента керування «Перемикач».

  6. У елементі керування Перемикач виберіть Користувачі, щоб відображався елемент керування Поле зі списком, який містить список користувачів.

  7. Виберіть видимий елемент керування Поле зі списком, а потім укажіть зазначену нижче формулу для його властивості DefaultSelectedItems.

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Властивість «за замовчуванням» задано для поля зі списком «Користувачі».

  8. У елементі керування Перемикач виберіть Робочі групи, щоб відображався елемент керування Поле зі списком, який містить список робочих груп.

  9. Виберіть елемент керування Перемикач, щоб зняти виділення з елемента керування Поле зі списком, який тепер невидимий.

  10. Виберіть видимий елемент керування Поле зі списком для робочих груп, а потім укажіть зазначену нижче формулу для його властивості DefaultSelectedItems.

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Властивість «за замовчуванням» задано для поля зі списком «Робочі групи».

  11. Вставте елемент керування Кнопка, розташуйте його попід елементом керування Поле зі списком, а потім настройте для властивості Text кнопки значення "Patch Owner" («Виправити відповідального»).

  12. Установить у властивості OnSelect кнопки зазначену нижче формулу.

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Формула, задана для елемента керування «Кнопка».

Елементи керування Перемикач та Поле зі списком, які ви скопіювали, відображають відповідального для бізнес-партнера, що вибраний у колекції. Використовуючи ті ж самі елементи керування, можна задати в якості відповідального для бізнес-партнера будь-яку робочу групу або користувача, просто натиснувши кнопку.

Анімація, що демонструє виправлення відповідального на певного користувача або робочу групу.

Відображення відповідального за допомогою форми

Поле Відповідальний можна відобразити всередині форми, якщо додати настроювану картку. На момент створення цього документу, змінювати значення цього поля у елементі керування «Форма» не можна.

  1. Вставте елемент керування Форма редагування, а потім змініть його розмір і перемістіть його в правий нижній кут.

  2. На вкладці Властивості у правій частині екрана відкрийте список Джерело даних, а потім виберіть Бізнес-партнери.

    Елемент керування «Форма», в якому відображаються додаткові поля з пустими значеннями.

  3. Установіть властивість Item форми як Gallery1.Selected.

    Елемент керування «Форма», в якому відображаються додаткові поля, заповнені даними з вибраного елемента в колекції.

  4. На вкладці Властивості поблизу до правої сторони екрана виберіть Редагувати поля.

  5. В області Поля виберіть три крапки, а потім виберіть Додати настроювану картку.

    Команда для додавання настроюваної картки.

    У нижній частині елемента керування «Форма» відобразиться нова картка.

  6. За необхідності, змініть розмір картки, щоб текст відображався повністю.

    Вставлена настроювана картка, пуста.

  7. Вставте елемент керування Текстовий підпис у настроювану картку, а потім настройте властивість Text підпису, вказавши формулу, яку ви використовували у колекції.

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Настроювана картка з полем «Відповідальний», що відображається в елементі керування «Текстовий підпис».

Для кожного вибору в колекції, у формі відображається більше полів для бізнес-партнера, включно з відповідальним за запис. Якщо ви зміните відповідального за допомогою кнопки Patch (Виправити), елемент керування «Форма» відобразить і цю зміну.

Анімація, яка демонструє елемент керування «Форма», що реагує на зміни в колекції.

Відображення стовпців клієнта

У Dataverse стовпець підстановки Клієнт — це ще одна поліморфна підстановка, дуже схожа на підстановку Відповідальний.

Відповідальний для однієї таблиці може бути лише один, проте в таблицях може бути нуль, один або багато стовпців підстановки Клієнт. Системна таблиця Контактні особи містить стовпець Назва компанії, що є стовпцем підстановки Клієнт.

Таблиця «Контактна особа» зі стовпцем «Назва компанії», що має тип даних «Клієнт» і не є обов’язковим.

Можна додати більше стовпців підстановки Клієнт до таблиці, вибравши тип даних Клієнт для нового стовпця.

Тип даних «Клієнт» зі списку типів даних під час створення стовпця.

Поле підстановки Клієнт може посилатися на запис у таблиці Бізнес-партнери або у таблиці Контактні особи. Ви використовуватиме із цими таблицями функції IsType і AsType, тому доцільно додати їх як джерела даних (можна не видаляти Робочі групи та Користувачі).

Таблиці «Бізнес-партнери», «Робочі групи», «Користувачі» та «Контактні особи» в області «Дані».

Робота із полями Клієнт і Відповідальний не відрізняється настільки, що можна просто скопіювати програму (Файл > Зберегти як, а потім вказати інше ім'я) і зробити зазначені нижче прості заміни:

Розташування Зразок Відповідальний Зразок Клієнт
Усюди Відповідальний 'Ім'’я клієнта'
Усюди Користувачі Бізнес-партнери
Усюди Робочі групи Контактні особи
Властивість колекції Items Бізнес-партнери Контактні особи
Властивість форми Items Бізнес-партнери Контактні особи
Перший аргумент функції Patch
у властивості кнопки OnSelect
Бізнес-партнери Контактні особи
Властивість Items перемикача фільтра [ "Усі", "Користувачі", "Робочі групи" ] [ "Усі", "Бізнес-партнери", "Контактні особи" ]
Властивість Items перемикача для Patch (Виправлення) [ "Користувачі", "Робочі групи" ] [ "Бізнес-партнери", "Контактні особи" ]
Властивість Visible поля зі списком "Користувачі" і "Робочі групи" "Бізнес-партнери" і "Контактні особи"

Наприклад, нова колекція повинна мати наведене нижче значення властивості Items.

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Програма Клієнт, отримана з програми Відповідальний, у якій виконано прості заміни.

Дві важливі різниці між Клієнт і Відповідальний потребують оновлення формул в колекції і у формі:

  1. При посиланні на таблиці Бізнес-партнери та Контактні особи за іменами пріоритет мають зв’язки «Один-до багатьох». Замість того, щоб використовувати Бізнес-партнери, виберіть [@Бізнес-партнери]; замість Контактні особи використовуйте [@Контактні особи]. Використовуючи глобальний оператор усунення неоднозначності, ви гарантуєте, що ви посилаєтесь саме на тип таблиці в IsType і AsType. Ця проблема існує лише в контексті запису в елементах керування «Колекція» та «Форма».

  2. Поле Відповідальний обов'язково містить значення, але поля Клієнт можуть бути пустими. Щоб показати правильний результат, якщо ім'я відсутнє, перевірте таку можливість за допомогою функції IsBlank і, замість цього, відображайте порожній текстовий рядок.

Обидві ці зміни виконуються у однаковій формулі, що використовується в настроюваній картці у формі, а також у властивості Text елемента керування «текстовий підпис» колекції.

If( IsBlank( ThisItem.'Company Name' ), "",
    IsType( ThisItem.'Company Name', Accounts ),
        "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Оновлення до властивості «Text» елемента керування «текстовий підпис» підзаголовка у колекції.

Із цими змінами ви можете переглядати та змінювати поле Назва компанії в таблиці Контактні особи.

Анімація, що демонструє, як вибір контактної особи впливає на інші елементи керування і форму.

Докладніше про стовпці підстановки «Стосовно»

Стовпець підстановки Стосовно дещо відрізняється від тих, із якими ви вже працювали в цьому розділі. Ми почнемо із застосування робочих шаблонів, що описувалися вище, а потім розповімо про деякі тонкощі.

Почати можна просто із таблиці Факси. У цій таблиці є стовпець підстановки Стосовно, що може посилатися на таблиці Бізнес-партнери, Контактні особи та інші. Можна скористатися програмою для сутності Клієнти і пристосувати її для сутності Факси.

Розташування Зразок Клієнт Зразок для сутності Факси
Усюди 'Ім'’я клієнта' Стосовно
Властивість колекції Items Контактні особи Факси
Властивість форми Items Контактні особи Факси
Перший аргумент функції Patch
у властивості кнопки OnSelect
Контактні особи Факси

Знову ж таки, необхідно буде додати джерело даних, цього разу для сутності Факси. На вкладці Подання виберіть Джерела даних.

Область «Дані», де показано таблиці «Бізнес-партнери», «Робочі групи», «Користувачі», «Контактні особи» та «Факси».

Важливою відмінністю для Стосовно є те, що це поле не обмежене лише Бізнес-партнерами і Контактними особами. Фактично, до цього списку можна додати й настроювані таблиці. Більша частина програми не вимагає змін для урахування цього факту, але потрібно оновити формулу для текстового підпису в колекції та формі.

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

Оновлена властивість «Text» для елемента керування підзаголовка для підстановок «Стосовно».

Після внесення цих змін ви працюватимете із підстановкою Стосовно так само, як працювали з підстановками Відповідальний та Клієнт.

Анімація, що демонструє, як вибір елемента у колекції впливає на інші елементи керування і форму.

Розуміння зв'язків «Стосовно»

Поле Стосовно відрізняється від полів Відповідальний та Клієнт, оскільки перше працює із зв'язком «багато до одного». За визначенням, зворотний зв'язок — «один до багатьох» — дозволяє написати First( Бізнес-партнери ).Факси.

Давайте повернемося трохи назад та погляньмо на визначення таблиць. У Dataverse такі таблиці, як Факси, Завдання, Повідомлення електронної пошти, Примітки, Виклики, Листи та Чати, визначаються як справи. Ви також можете створювати власні таблиці справ. Під час перегляду або створення таблиці справ її параметри відображаються в області Додаткові параметри.

Параметр таблиці справ під час створення таблиці.

Інші таблиці можуть бути пов’язані із таблицею справ, якщо в параметрах цих таблиць їх дозволено використовувати, як завдання справ. Так визначаються таблиці Бізнес-партнери, Контактні особи та багато інших стандартних таблиць (знову ж таки, у Додаткових параметрах).

Параметр завдання справ під час створення таблиці.

Усі таблиці справ і таблиці завдань справ мають неявний зв'язок. Якщо змінити фільтр у верхній частині екрана на Усі, вибрати таблицю Факси та перейти на вкладку Зв'язки, відкриються всі таблиці, які можуть використовуватись із підстановкою Стосовно.

Зв’язки «багато-до-одного» таблиці «Факси» з підстановкою «Стосовно».

Якщо відобразити усі зв’язки для таблиці Бізнес-партнери відобразяться всі таблиці, які можуть бути джерелом поля підстановки Стосовно.

Зв’язки «один-до-багатьох» таблиці «Бізнес-партнер» з підстановкою «Стосовно».

Що все це означає?

  • Під час написання формул слід враховувати, що список таблиць справ не є сталим, і ви можете створювати власні. Формула повинна належним чином обробляти таблиці справ, які ви, можливо, не передбачали.
  • Справи та завдання справ мають відношення «один-до-багатьох». Можна легко запитувати всі факси, пов'язані з бізнес-партнером.

Щоб побачити та спробувати цю концепцією в програмі, виконайте зазначені нижче дії.

  1. Додайте ще один екран.

    Вставлення порожнього екрана.

  2. Вставте елемент керування «Колекція», змініть його розмір, а потім перемістіть його в ліву частину екрана.

  3. На вкладці Властивості біля правої сторони екрана встановіть для властивості Items колекції значення Бізнес-партнери.

    Установіть для «Items» значення «Бізнес-партнери» у області «властивості».

  4. Укажіть макет колекції як Заголовок, а потім задайте поле заголовка як Ім'я бізнес-партнера.

    Установіть макет «Заголовок» для елемента керування «Колекція» в області «властивості».

  5. Додайте другу колекцію, змініть її розмір, а потім перемістіть її в праву частину екрана.

  6. Установіть властивість Items нової колекції як Gallery2.Selected.Faxes.

    На цьому кроці ми будемо повертати фільтрований список факсів для певного бізнес-партнера.

    Установіть значення для властивості «Items» колекції, яка відображатиме факси.

  7. Настройте макет колекції як Заголовок і підзаголовок, а потім задайте поле заголовка так, щоб там відображалося значення поля Тема поле теми (яке може бути й малими літерами, тема).

    Установіть заголовок на поле «Тема».

Якщо вибрати елемент у списку бізнес-партнерів, у списку факсів відобразяться факси лише для цього бізнес-партнера.

Анімація, що демонструє, як вибір, зроблений в колекції «Бізнес-партнери», виводить список факсів.

Таблиця справ

Як описано в попередньому розділі, можна відобразити всі факси для бізнес-партнера. Проте можна також показати всі справи для бізнес-партнера, зокрема факси, повідомлення електронної пошти, виклики та інші взаємодії.

Для останнього сценарію використовується таблиця Справи. Для відображення цієї таблиці слід увімкнути параметр Усі у верхньому правому куті, щоб зняти усі фільтри зі списку таблиць.

Список таблиць, де показано таблицю «Справи».

Таблиця Справи — особлива. Щоразу під час додавання запису до таблиці Факси система також створює у таблиці Справи запис зі стовпцями, які є загальними для всіх таблиць справ. З-поміж цих стовпців найбільш цікавим є стовпець Тема.

Можна показати всі справи, змінивши лише один рядок в попередньому прикладі. Замініть Gallery2.Selected.Faxes на Gallery2.Selected.Activities.

Змінення властивості «Items» для другої колекції з факсів на справи.

Записи походять з таблиці Справи, але за допомогою функції IsType можна визначити, до якого типу справи вони належать. Знову ж таки, перш ніж використовувати IsType із певним типом таблиці, необхідно додати джерело даних.

Область даних, в якій відображаються всі таблиці, необхідні для функції «IsType».

За допомогою наведеної нижче формули можна показати тип запису в елементі керування «Текстовий підпис» в колекції.

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Установіть властивість «Text» як формулу для відображення відомостей для факсів, викликів та інших справ.

Крім того, можна використовувати AsType, щоб отримувати доступу до полів певного типу. Наприклад, ця формула визначає тип кожної справи і, для викликів, показує номер телефону та напрямок виклику з таблиці Номери телефонів:

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Розкрита властивість «Text» із додатковими відомостями про виклик.

У результаті програма показує повний список справ. Поле Тема відображається для всіх типів справ, незалежно від того, чи бере їх до уваги формула, чи ні. Для типів справ, про які вам відомо, можна показати імена типів та спеціальні відомості про кожну справу.

Завершений екран з відомостями про різні види справ.

Таблиця «Примітки»

Поки що всі приклади Стосовно працювали на основі справ, але таблиця Примітки — це інший випадок.

При створенні таблиці можна дозволити вкладення.

Увімкнення вкладень і приміток під час створення таблиць.

Якщо встановити прапорець, що вмикає вкладення, буде створено зв'язок Стосовно із таблицею Примітки, як показано на рисунку нижче для таблиці Бізнес-партнери.

Зв’язок «один-до-багатьох» таблиці «Бізнес-партнер» із «Примітками».

За винятком цієї розбіжності, підстановка Стосовно використовується так само, як і зі справами. Таблиці, для яких дозволені вкладення, мають зв'язок «один-до-багатьох» із Примітками, як у прикладі нижче.

First( Accounts ).Notes

Примітка

На момент створення цієї статті, підстановка Стосовно для таблиці Примітки недоступна. Не можна зчитувати дані або фільтрувати за стовпцем Стосовно, і не можна задати стовпець, використовуючи Patch.

Проте, зворотній зв'язок Приміток «один-до-багатьох» доступний, тож ви можете відфільтрувати список приміток для запису, для якого дозволено вкладення. Крім того, можна скористатися функцією Relate, щоб додати примітку до таблиці Примітки, але примітку необхідно спочатку створити, як показано у наведеному нижче прикладі.

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Учасники справи

За станом на час створення цього документа, компоновані програми не підтримують учасників справи.

Примітка

Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)

Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).