Udostępnij przez


Informacje dotyczące odwołań do rekordów i wyszukiwań polimorficznych w aplikacjach kanwy

Kiedy napisałeś dokument badawczy w szkole, prawdopodobnie podałeś listę Twoich odwołań na końcu. Nie dołączyłeś kopii rzeczywistego użytego materiału tła, ale raczej linku internetowego, tytułu książki i autora ani innych informacji, aby ktoś mógł prześledzić oryginalne źródło. Mieszasz różne rodzaje źródeł na jednej liście, artykuły prasowe obok nagrań audio, z których każdy ma własne szczegółowe informacje na temat odpowiedniego cytatu. Na przykład artykuły w Wikipedii często zawierają długą listę odwołań.

W przypadku aplikacji kanwy często pracujesz z kopiami rekordów pobranych ze źródeł danych. Funkcje LookUp i Filter oraz właściwość Selectedkontrolki Galeria służą do identyfikowania żądanego rekordu. Wszystkie rekordy z filtru lub Wybrane będą tego samego typu tabeli, więc można użyć pól z prostą notacją .Pola. Kopie te często zawierają informacje referencyjne, dzięki czemu można użyć funkcji Patch do zaktualizowania oryginalnego źródła.

Aplikacje kanwy obsługują również odwołania do rekordów. Podobnie jak odwołanie do artykułu badawczego, odwołanie do rekordu odnosi się do rekordu bez dołączania pełnej kopii. Takie odwołanie może odwoływać się do rekordu w dowolnej tabeli. Podobnie jak w przypadku odwołań do artykułu badawczego, można mieszać rekordy z różnych tabel w jednej kolumnie.

Wiele operacji dotyczących odwołań do rekordów jest identycznych jak podczas pracy z rekordami. Można porównać odwołania do rekordów ze sobą i z pełnymi rekordami. Wartość odwołania do rekordu można ustawić za pomocą funkcji Patch tak samo, jak w przypadku wyszukiwania pełnego rekordu.

Istnieje jedna ważna różnica użycia: nie można bezpośrednio uzyskać dostępu do pól odwołania do rekordu bez uprzedniego ustalenia, do której tabeli się odwołuje. Wynika to z faktu, że aplikacje kanwy wymagają, aby wszystkie typy były znane podczas pisania formuł. Ponieważ nie znasz typu odwołania do rekordu, zanim aplikacja zostanie uruchomiona, nie możesz użyć prostej notacji pola bezpośrednio. Najpierw należy dynamicznie określić typ tabeli za pomocą funkcji IsType, a następnie użyć notacji .Field na wyniku funkcji AsType.

Typ tabeli odnosi się do schematu każdego rekordu w tabeli. Każda tabela ma unikatowy zestaw pól o różnych nazwach i typach danych. Każdy rekord tabeli dziedziczy strukturę; dwa rekordy mają ten sam typ tabeli, jeśli pochodzą z tej samej tabeli.

Uwaga / Notatka

Można wybrać jeden z wielu różnych łączników, aby łączyć się z różnymi typami źródeł danych dla aplikacji kanw. Jednak podczas pracy z aplikacjami canvasowymi w Power Apps Studio kolumny w usłudze Microsoft Dataverse są określane jako pola podobnie jak we wszystkich innych źródłach danych. Kolumna jest używana tylko podczas odwoływania się do kolumny wewnątrz Dataverse. Więcej informacji: Aktualizacje terminologii usługi Dataverse

Wyszukiwania polimorficzne

Usługa Microsoft Dataverse obsługuje relacje między rekordami. Każdy rekord w tabeli Accounts ma kolumnę odnośnika Podstawowy kontakt do rekordu w tabeli Kontakty . Wyszukiwanie może odnosić się tylko do rekordu w Kontakty i nie może odnosić się do rekordu w tabeli Teams. Ten ostatni szczegół jest ważny, ponieważ zawsze wiesz, jakie kolumny będą dostępne dla wyszukiwania.

Usługa Dataverse obsługuje również wielomorficzne wyszukiwania, które mogą odwoływać się do rekordu z dowolnej tabeli w zestawie. Na przykład kolumna Właściciel może odwoływać się do rekordu w tabeli Users lub tabeli Teams . Ta sama kolumna odnośnika w różnych rekordach może odwoływać się do rekordów w różnych tabelach. W takim przypadku nie zawsze wiadomo, jakie kolumny będą dostępne.

Odwołania do rekordów kanwy zostały zaprojektowane do pracy z wyszukiwaniami polimorficznymi w Dataverse. Można również używać odwołań do rekordów poza tym kontekstem, co odróżnia te dwa pojęcia.

W następnej sekcji zaczniesz zapoznawać się z tymi koncepcjami, pracując z wyszukiwaniem typu Właściciel.

Pokaż kolumny właściciela rekordu

Każda tabela w usłudze Dataverse zawiera kolumnę Właściciel . Nie można usunąć tej kolumny, nie można dodać innej kolumny i zawsze wymaga wartości.

Aby wyświetlić kolumnę w tabeli Konto :

  1. Zaloguj się do usługi Power Apps.

  2. Na pasku okienka po lewej stronie wybierz pozycję Tabele danych>.

  3. Na liście tabel wybierz pozycję Konto.

  4. W prawym górnym rogu otwórz listę filtrów (która jest domyślnie ustawiona na Wartość domyślna ), a następnie wybierz pozycję Wszystkie.

  5. Przewiń w dół, aż zostanie wyświetlona kolumna Właściciel .

    Kolumna Właściciel w tabeli 'Account'.

Ta kolumna odnośnika może odwoływać się do rekordu z tabeli Teams lub tabeli Users . Nie każdy rekord w tych tabelach ma uprawnienia właściciela; sprawdź obsługiwane role, jeśli wystąpi problem.

Grafika pokazuje prostą galerię Accounts, w której tabela Accounts została dodana do aplikacji jako źródło danych.

Konta wyświetlane w kontrolce Galeria.

Ważne

W tym temacie grafika przedstawia niektóre nazwy i inne wartości, które nie są częścią przykładowych danych dostarczanych z usługą Dataverse. Kroki dokładnie prezentują sposób konfigurowania kontrolek dla konkretnego wyniku, ale niektóre wyniki mogą się różnić w zależności od danych organizacji.

Aby pokazać właściciela każdego konta w galerii, możesz być skuszony, aby użyć formuły ThisItem.Owner.Name. Jednak pole nazwy w tabeli Team to Nazwa zespołu, a pole nazwy w tabeli User to Pełna nazwa. Aplikacja nie może wiedzieć, z jakim typem wyszukiwania pracujesz, dopóki nie uruchomisz aplikacji, i może się różnić między rekordami w tabeli Accounts .

Potrzebujesz formuły, która może dostosować się do tej wariancji. Należy również dodać źródła danych dla typów tabel, którymi może być właściciel (w tym przypadku użytkownicy i zespoły). Dodaj te trzy źródła danych do aplikacji:

Tabele Konta, Zespoły i Użytkownicy w panelu danych.

Po utworzeniu tych źródeł danych użyj tej formuły, aby wyświetlić nazwę użytkownika lub zespołu:

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

Konta wyświetlane w kontrolce Galeria z wyświetlonym polem Właściciel.

W tej formule funkcja IsType testuje pole Właściciel względem tabeli Teams . Jeśli jest to ten typ tabeli, funkcja AsType rzutuje go na rekord Team. W tym momencie możesz uzyskać dostęp do wszystkich pól tabeli Teams, w tym Nazwa Zespołu, przy użyciu notacji .Field. Jeśli isType określa, że właściciel nie jest rekordem w tabeli Teams , to pole musi być rekordem w tabeli Users , ponieważ pole Właściciel jest wymagane (nie może być puste).

Aby użyć dowolnych pól odwołania do rekordu, należy najpierw użyć funkcji AsType , aby rzutować ją do określonego typu tabeli. Nie można uzyskać dostępu do pól bezpośrednio z pola Właściciel , ponieważ system nie wie, jakiego typu tabeli chcesz użyć.

Funkcja AsType zwraca błąd, jeśli pole Właściciel nie pasuje do żądanego typu tabeli, więc możesz użyć funkcji IfError , aby uprościć tę formułę. Najpierw włącz eksperymentalne zarządzanie błędami na poziomie formuły:

Przełącznik eksperymentalny, aby włączyć zarządzanie błędami na poziomie formuły.

Następnie zastąp poprzednią formułę następującym:

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

Filtrowanie na podstawie właściciela

Gratulacje — ukończono najtrudniejszy aspekt pracy z odwołaniem do rekordu. Inne przypadki użycia są prostsze, ponieważ nie mają dostępu do pól rekordu. W tym przypadku należy wziąć pod uwagę filtrowanie, które poznasz w tej sekcji.

Dodaj kontrolkę Pole wyboru nad galerią i ustaw następujące właściwości nowej kontrolki.

  • Elementy: Users
  • Wybierz wiele pozycji: false

Dodana kontrolka pola kombi nad galerią z właściwością Elementy ustawioną na Użytkownicy.

Aby filtrować galerię według określonego użytkownika wybranego w tym polu kombi, ustaw właściwość Items galerii na następującą formułę:

Filter( Accounts, Owner = ComboBox1.Selected )

Odfiltrowana galeria oparta na wartości ustawionej w kontrolce pola kombi.

Ważne

Instrukcje w tym temacie są dokładne, jeśli dokładnie wykonasz kroki. Jednak każda formuła odwołująca się do kontrolki o jej nazwie kończy się niepowodzeniem, jeśli kontrolka ma inną nazwę. Jeśli usuniesz i dodasz kontrolkę tego samego typu, liczba na końcu nazwy kontrolki zmieni się. W przypadku każdej formuły, która pokazuje błąd, upewnij się, że zawiera ona poprawne nazwy wszystkich kontrolek.

Nie musisz używać parametru IsType ani AsType , ponieważ porównujesz odwołania rekordów do innych odwołań do rekordów ani do pełnych rekordów. Aplikacja zna typ tabeli ComboBox1.Selected , ponieważ pochodzi z tabeli Users . Konta, dla których właściciel jest zespołem, nie będą zgodne z kryterium filtrowania.

Możesz uczynić to bardziej zaawansowanym, obsługując filtrowanie przez użytkownika lub zespół.

  1. Zwolnij miejsce u góry ekranu, zmieniając rozmiar galerii i przesuwając pole kombi, wstaw kontrolkę Przycisk radiowy nad galerią, a następnie ustaw te właściwości dla nowej kontrolki:

    • Elementy: [ "All", "Users", "Teams" ]
    • Układ: Layout.Horizontal
  2. Dla kontrolki Pole kombi ustaw tę właściwość (jeśli pole kombi zniknie, wybierz pozycję Użytkownicy w kontrolce radiowej):

    • Widoczne: Radio1.Selected.Value = "Users"
  3. Skopiuj i wklej kontrolkę Pole kombi, przenieś kopię bezpośrednio na oryginał, a następnie ustaw następujące właściwości kopii:

    • Elementy: Teams
    • Widoczne: Radio1.Selected.Value = "Teams"

    W zależności od stanu kontrolki przycisku radiowego aplikacja będzie wyświetlać tylko jedno pole kombi w danym momencie. Ponieważ znajdują się one bezpośrednio nad sobą, będą wyglądać jak ta sama kontrolka ze zmienioną zawartością.

  4. Na koniec ustaw właściwość Items kontrolki Galeria na następującą formułę:

    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)
    )
    

    Przefiltrowana galeria przedstawiająca wszystkie rekordy lub określony użytkownik lub zespół.

Dzięki tym zmianom można wyświetlić wszystkie rekordy lub filtrować je na podstawie użytkownika lub zespołu:

Animacja pokazująca różne wyniki filtrowania w zależności od kontrolki przycisku radiowego i pól kombi.

Formuła jest w pełni delegowalna. Część porównująca wartości przycisku radiowego jest stałą we wszystkich rekordach i jest obliczana przed wysłaniem pozostałej części filtru do usługi Dataverse.

Jeśli chcesz filtrować według typu właściciela, możesz użyć funkcji IsType , ale nie jest jeszcze delegowalna.

Filtruj według typu właściciela przy użyciu typu IsType.

Aktualizowanie właściciela za pomocą funkcji Patch

Możesz zaktualizować pole Właściciel w taki sam sposób, jak każde inne wyszukiwanie. Aby ustawić właściciela aktualnie wybranego konta na pierwszy zespół:

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

Takie podejście nie różni się od normalnego wyszukiwania, ponieważ aplikacja zna typ First( Teams ). Jeśli zamiast tego chcesz pierwszego użytkownika, zastąp ten fragment wartością First( Users ). Funkcja Patch wie, że można ustawić pole Właściciel na jeden z tych dwóch typów tabel.

Aby dodać tę możliwość do aplikacji:

  1. W okienku Widok drzewa wybierz kontrolkę Przycisk radiowy i dwie kontrolki Pole kombi w tym samym czasie.

  2. W menu wielokropka wybierz pozycję Kopiuj te elementy.

    Kopiowanie wielu kontrolek przy użyciu widoku drzewa.

  3. W tym samym menu wybierz pozycję Wklej.

    Wklejanie wielu elementów sterujących przy użyciu widoku drzewa.

  4. Przenieś skopiowane kontrolki na prawą stronę galerii.

    Przeniesione skopiowane kontrolki po prawej stronie galerii.

  5. Wybierz skopiowaną kontrolkę Przycisk radiowy , a następnie zmień następujące właściwości:

    • Elementy: [ "Users", "Teams" ]
    • Ustawienie domyślne: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Usunięto opcję 'Wszystko' z kontroli radiowej.

  6. W kontrolce Przycisk radiowy wybierz pozycję Użytkownicy, tak aby kontrolka Pole kombi wyświetlająca listę użytkowników była widoczna.

  7. Wybierz widoczną kontrolkę Pole kombi, a następnie ustaw właściwość DefaultSelectedItems na tę formułę:

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

    Właściwość domyślna ustawiona dla pola kombi Użytkownicy.

  8. W kontrolce Przycisk radiowy wybierz pozycję Zespoły, tak aby kontrolka Pole kombi wyświetlająca listę zespołów była widoczna.

  9. Wybierz kontrolkę Przycisk radiowy, aby uniemożliwić wybieranie przy użyciu kontrolki Pole kombi niewidocznej teraz dla użytkowników.

  10. Wybierz widoczną kontrolkę Pole kombi dla zespołów, a następnie ustaw jej właściwość DefaultSelectedItems na tę formułę:

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

    Właściwość domyślna ustawiona dla pola kombi Zespoły.

  11. Wstaw kontrolkę Przycisk, przenieś ją pod kontrolkę Pole kombi, a następnie ustaw właściwość Tekst na wartość "Patch Owner".

  12. Ustaw właściwość OnSelect przycisku na następującą formułę:

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

    Formuła ustawiona na kontrolce przycisku.

Skopiowane kontrolki Przyciski radiowe i Pole kombi pokazują właściciela aktualnie wybranego konta w galerii. Za pomocą tych samych kontrolek można ustawić właściciela konta na dowolny zespół lub użytkownika, wybierając przycisk:

Animacja pokazująca poprawkę pola Właściciel i ustawienie jej na wartość Użytkownik lub Zespół.

Pokazywanie właściciela przy użyciu formularza

Możesz wyświetlić pole Właściciel w formularzu, dodając kartę niestandardową. W tym zapisie nie można zmienić wartości pola za pomocą kontrolki formularza.

  1. Wstaw kontrolkę Formularz edycji , a następnie zmień jej rozmiar i przenieś ją do prawego dolnego rogu.

  2. Na karcie Właściwości w prawej części ekranu otwórz listę Źródło danych , a następnie wybierz pozycję Konta.

    Kontrolka formularza przedstawiająca dodatkowe pola z pustymi wartościami.

  3. Ustaw właściwość Item formularza na Gallery1.Selected.

    Kontrolka formularza przedstawiająca dodatkowe pola wypełnione z wybranego elementu w galerii.

  4. Na karcie Właściwości w prawej części ekranu wybierz pozycję Edytuj pola.

  5. W okienku Pola wybierz wielokropek, a następnie wybierz pozycję Dodaj kartę niestandardową.

    Polecenie dodawania karty niestandardowej.

    Nowa karta jest wyświetlana w dolnej części kontrolki formularza.

  6. Zmień rozmiar karty zgodnie z potrzebami, aby wyświetlić cały tekst.

    Wstawiona karta niestandardowa, pusta.

  7. Wstaw kontrolkę Etykieta na karcie niestandardowej, a następnie ustaw właściwość Tekst etykiety na formułę używaną w galerii:

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

    Karta niestandardowa pokazująca pole Właściciel w kontrolce etykiety.

Dla każdego zaznaczenia w galerii w formularzu pojawiają się dodatkowe pola konta, w tym pole właściciela rekordu. Jeśli zmienisz właściciela za pomocą przycisku Patch , kontrolka formularza będzie również wyświetlać zmianę.

Animacja przedstawiająca kontrolkę formularza odpowiadającą na zmiany w galerii.

Pokaż kolumny klienta

W Dataverse kolumna wyszukiwania Klient jest innym wyszukiwaniem polimorficznym, które jest bardzo podobne do Właściciel.

Właściciel może zawierać tylko jedną kolumnę wyszukiwania Klient i może zawierać zero, jedną lub więcej kolumn wyszukiwania Klient. Tabela systemowa Kontakty zawiera kolumnę Nazwa firmy , która jest kolumną odnośnika Klient .

Tabela kontaktów przedstawiająca kolumnę Nazwa firmy jako typ danych klienta, który nie jest wymagany.

Wybierając typ danych Klient dla nowej kolumny, można dodać do tabeli kolejne kolumny wyszukiwania Klienci.

Typ danych klienta z listy typów danych podczas tworzenia kolumny.

Pole wyszukiwania Klienta może odnosić się do rekordu z tabeli konta lub tabeli kontakty. Użyjesz funkcji IsType i AsType z tymi tabelami, więc teraz warto dodać je jako źródła danych (możesz pozostawić usługę Teams i Użytkownicy na miejscu).

Tabele Konta, Zespoły, Użytkownicy i Kontakty w panelu Dane.

Traktowanie pól Klient i Właściciel jest tak podobne, że można dosłownie skopiować aplikację (Zapisz jako>, a następnie określić inną nazwę) i wprowadzić następujące proste zamiany:

Lokalizacja Właściciel — przykład Przykład klienta
Wszędzie Owner "Nazwa klienta"
Wszędzie Users Klienci
Wszędzie Zespoły Kontakty
Właściwość Items galerii Klienci Kontakty
Właściwość Items formularza Klienci Kontakty
Pierwszy argument Patch
we właściwości OnSelect przycisku
Klienci Kontakty
Właściwość Elementy przycisku radiowego filtru [ "Wszystkie", "Użytkownik", "Zespoły" ] [ "Wszystkie", "Konta", "Kontakty" ]
Właściwość Elementy przycisku radiowego funkcji Patch [ "Użytkownicy", "Zespoły" ] [ "Konta", "Kontakty" ]
Właściwość Visible pola kombi "Użytkownicy" i "Teams" "Konta" i "Kontakty"

Na przykład nowa galeria powinna mieć tę właściwość 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)
)

Aplikacja klienta pochodząca z aplikacji Właściciel z zastosowanymi prostymi zmianami.

Dwie ważne różnice między klientem a właścicielem wymagają aktualizacji formuł w galerii i formularza:

  1. Relacje jeden do wielu między Kontami i Kontaktami mają pierwszeństwo, jeśli odwołujesz się do tych typów tabel według nazwy. Zamiast Konta użyj [@Accounts]; zamiast Kontakty użyj [@Contacts]. Korzystając z globalnego operatora rozróżniania, upewnij się, że odwołujesz się do typu tabeli w IsType i AsType. Ten problem istnieje tylko w kontekście rekordów w galerii i w kontrolkach formularza.

  2. Pole Właściciel musi mieć wartość, ale pola Klient mogą być puste. Aby wyświetlić prawidłowy wynik bez nazwy typu, przetestuj ten przypadek za pomocą funkcji IsBlank i zamiast tego pokaż pusty ciąg tekstowy.

Obie te zmiany są w tej samej formule, która jest wyświetlana na karcie niestandardowej w formularzu, a także we właściwości Tekst kontrolki etykiety galerii:

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'
)

Aktualizacja do właściwości Tekst kontrolki etykiety podtytułu w galerii.

Dzięki tym zmianom można wyświetlić i zmienić pole Nazwa firmy w tabeli Kontakty .

Animacja przedstawiająca sposób wybierania kontaktu zmienia inne kontrolki i formularz.

Opis kolumn wyszukiwania "Informacje"

Kolumna wyszukiwania Dotyczy różni się nieco od tej, która została już temat. Zaczniesz od zastosowania wzorców opisanych wcześniej w tym temacie, a następnie poznasz inne sztuczki.

Możesz zacząć prosto od tabeli Faksy. Ta tabela zawiera polimorficzną kolumnę odnośnika Dotyczy, która może odwoływać się do kont, kontaktów i innych tabel. Możesz pobrać aplikację dla klientów i zmodyfikować ją dla faksów.

Lokalizacja Przykład klienta Przykład faksów
Wszędzie "Nazwa klienta" Dotyczy
Właściwość Items galerii Kontakty Faksy
Właściwość Items formularza Kontakty Faksy
Pierwszy argument Patch
we właściwości OnSelect przycisku
Kontakty Faksy

Ponownie musisz dodać źródło danych: tym razem dla encji Faksy. Na karcie Widok wybierz pozycję Źródła danych:

Okienko danych przedstawiające tabele Konta, Zespoły, Użytkownicy, Kontakty i Faksy.

Ważną różnicą w funkcji Dotyczy jest to, że nie jest ona ograniczona tylko do kont i kontaktów. W rzeczywistości lista tabel jest rozszerzalna za pomocą tabel niestandardowych. Większość aplikacji może pomieścić ten punkt bez modyfikacji, ale należy zaktualizować formułę etykiety w galerii i formularzu:

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',
    ""
)

Zaktualizowana właściwość Tekst kontrolki podtytułu dla wyszukiwań typu Dotyczy.

Po wprowadzeniu tych zmian będziesz pracować z wyszukiwaniem typu Dotyczy tak samo jak w przypadku wyszukiwań Właściciel i Klient.

Animacja przedstawiająca sposób wybierania elementu w galerii zmienia inne kontrolki i formularz.

Informacje o relacjach typu Dotyczy

Pole Dotyczy różni się pól Właściciel i Klient, ponieważ te ostatnie są relacjami typu wiele-do-jednego. W definicji odwrotna relacja jeden-do-wielu pozwala na zapisanie elementu First( Accounts ).Faxes.

Utwórzmy kopię zapasową i przyjrzyjmy się definicjom tabeli. W usłudze Dataverse tabele, takie jak faksy, zadania, wiadomości e-mail, notatki, połączenia telefoniczne, listy i czaty są wyznaczone jako działania. Możesz również utworzyć własne niestandardowe tabele działań. Podczas wyświetlania lub tworzenia tabeli działań jej ustawienia są wyświetlane w obszarze Więcej ustawień.

Ustawienie tabeli działań podczas tworzenia tabeli.

Inne tabele mogą być powiązane z tabelą działań, jeśli są one włączone jako zadanie działania w ustawieniach tabeli. Konta, kontakty i wiele innych standardowych tabel są tak wyznaczone (ponownie w obszarze Więcej ustawień).

Ustawienie zadania działania podczas tworzenia tabeli.

Wszystkie tabele działań i tabele zadań działań mają relację pomiędzy czynnościami a zadaniami. Jeśli filtr zostanie zmienić na Wszystkie u góry ekranu, wybierz tabelę Faksy, a następnie wybierz kartę relacje, zostaną wyświetlone wszystkie tabele, które mogą być elementem docelowym wyszukiwania Dotyczy.

Relacje w tabeli Faksy przedstawiające relacje wiele-do-jednego.

Jeśli pokażesz relacje dla tabeli Konta, pojawią się wszystkie tabele, które mogą być źródłem pola odnośnika Dotyczy.

Relacje w tabeli Konto przedstawiające Relacje jeden-do-wielu.

Co to wszystko oznacza?

  • Podczas pisania formuł należy wziąć pod uwagę, że lista tabel działań nie jest stała i można utworzyć własną. Formuła musi odpowiednio obsługiwać tabelę działań, której nie oczekiwano.
  • Zadania działań i działania mają relacje typu jeden-do-wielu. Możesz łatwo poprosić o wszystkie faksy, które odnoszą się do konta.

Aby zapoznać się z tą koncepcją w aplikacji:

  1. Dodaj kolejny ekran.

    Wstaw pusty ekran.

  2. Wstaw kontrolkę galerii, zmień jej rozmiar, a następnie przenieś ją do lewej strony ekranu.

  3. Na karcie Właściwości znajdującej się obok prawej strony ekranu ustaw właściwość Elementy galerii na Konta.

    Ustaw elementy do kont w okienku właściwości.

  4. Ustaw układ galerii na Tytuł, a następnie ustaw pole tytułu na Nazwa konta.

    Ustawianie elementu Układ na Tytuł dla kontrolki galerii w okienku właściwości.

  5. Dodaj drugą galerię, zmień jej rozmiar, a następnie przenieś ją do prawej strony ekranu.

  6. Ustaw właściwość Items nowej galerii na Gallery2.Selected.Faxes.

    Ten krok zwraca filtrowaną listę faksów dla danego konta.

    Ustaw właściwość Items galerii, która pokazuje faksy.

  7. Ustaw układ galerii na Tytuł i podtytuł, a następnie ustaw pole, aby wyświetlało zawartość pola Temat (które może być zapisane małymi literami jako subject).

    Ustaw tytuł na pole tematu.

Po wybraniu elementu na liście kont lista faksów zawiera faksy tylko dla tego konta.

Animacja pokazująca wybór w galerii kont wpływający na listę faksów.

Tabela działań

Jak opisano w poprzedniej sekcji, można wyświetlić wszystkie faksy dla konta. Można jednak również wyświetlić wszystkie działania dla konta, w tym faksy, wiadomości e-mail, połączenia telefoniczne i inne interakcje.

W tym przypadku należy użyć tabeli Aktywność. Tę tabelę można wyświetlić, włączając pozycję Wszystkie w prawym górnym rogu, aby usunąć filtr z listy tabel.

Lista tabel przedstawiających tabelę Działania.

Tabela Activity jest szczególna. Za każdym razem, gdy dodasz rekord do tabeli Faksy , system tworzy również rekord w tabeli Activity z kolumnami, które są wspólne dla wszystkich tabel działań. Spośród tych kolumn temat jest jednym z najbardziej interesujących.

Wszystkie działania można wyświetlić, zmieniając tylko jeden wiersz w poprzednim przykładzie. Zamień Gallery2.Selected.Faxes na Gallery2.Selected.Activities.

Zmiana właściwości Elementy dla drugiej galerii, zmienianie z faksów na działania.

Rekordy pochodzą z tabeli Działanie , ale można jednak użyć funkcji IsType , aby określić, jakiego rodzaju działania są. Ponownie, zanim użyjesz właściwości IsType z typem tabeli, musisz dodać źródło danych.

Okienko danych z wyświetlonymi wszystkimi tabelami wymaganymi dla funkcji IsType.

Korzystając z tej formuły, możesz wyświetlić typ rekordu w kontrolce etykiety w galerii:

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

Ustaw właściwość

Możesz również użyć astype , aby uzyskać dostęp do pól określonego typu. Na przykład ta formuła określa typ każdego działania, a w przypadku połączeń telefonicznych pokazuje numer telefonu i kierunek połączenia z tabeli Numery telefonów :

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"
)

Rozszerzona właściwość tekstowa z więcej informacji na temat rozmowy telefonicznej.

W związku z tym aplikacja wyświetla pełną listę działań. Pole Temat jest wyświetlane dla wszystkich typów działań, niezależnie od tego, czy formuła bierze je pod uwagę, czy nie. W przypadku typów działań, o których wiesz, można wyświetlić ich nazwy typów i informacje specyficzne dla typu dotyczące poszczególnych działań.

Kompletny ekran pokazujący informacje dotyczące różnych rodzajów działań.

Tabela notatek

Do tej pory wszystkie przykłady w sekcji dotyczące zostały oparte na działaniach, ale tabela Notatki przedstawia inny przypadek.

Podczas tworzenia tabeli można włączyć załączniki.

Włączanie załączników i notatek podczas tworzenia tabeli.

Jeśli zaznaczysz pole wyboru umożliwiające załączniki, zostanie utworzeniu relacji Dotyczy w tabeli notatek, jak pokazano na ilustracji w tabeli Konta:

Tabela kont pokazująca relację z Notatkami poprzez relację jeden-do-wielu.

Poza tą różnicą wyszukiwanie Dotyczy jest używane tak samo jak w przypadku korzystania z działań. Tabele z włączonymi załącznikami mają relację jeden do wielu z notatkami, tak jak w poniższym przykładzie:

First( Accounts ).Notes

Uwaga / Notatka

Podczas pisania tego zapisu wyszukiwania dotyczy jest niedostępne w tabeli notatek. Nie można odczytać ani filtrować na podstawie kolumny Dotyczy i nie można ustawić kolumny przy użyciu funkcji Patch.

Dostępna jest jednak odwrotna relacja encji Notatki, więc można filtrować listę notatek dla rekordu, dla którego włączono obsługę załączników. Możesz również użyć funkcji Relate, aby dodać notatkę do tabeli notatek rekordu, ale notatka musi być utworzona najpierw, jak w tym przykładzie:

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

Strony działania

W trakcie pisania tej dokumentacji aplikacje kanwy nie obsługiwały stron działań.