Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Microsoft Dataverse tabele klientów (account, contacti customeraddress) przechowują relacje klientów, dane kontaktowe oraz informacje o adresie i wysyłki. W tym artykule wyjaśniono, jak te tabele są powiązane i jak zarządzać osadzonymi i pustymi rekordami adresów klientów.
Tabela kont
Tabela kont jest jedną z tabel w usłudze Dataverse, do których większość innych tabel jest dołączona lub nadrzędna. W usłudze Dataverse konto reprezentuje firmę, z którą jednostka biznesowa ma relację. Informacje zawarte na koncie to wszystkie istotne informacje kontaktowe, informacje o firmie, kategoria, typ relacji i informacje o adresie. Inne informacje, które mają zastosowanie, obejmują następujące elementy:
- Konto może być elementem nadrzędnym dla większości typów tabel, w tym innego konta.
- Konto może być tabelą autonomiczną.
- Konto może mieć tylko jedno konto jako nadrzędne.
- Konta mogą mieć wiele subkont i kontaktów podrzędnych.
Zarządzanie kontami jest jednym z ważnych pojęć związanych z zarządzaniem relacjami między klientami biznesowymi (Dynamics 365), ponieważ organizacja chce zobaczyć wszystkie działania, które mają w innej firmie. Wszystkie te działania łączą się na poziomie konta. Wyświetl informacje dotyczące tabeli Konto.
Tabela kontaktów
W usłudze Dataverse kontakt reprezentuje osobę, zazwyczaj osobę, z którą jednostka biznesowa ma relację, taką jak klient, dostawca lub współpracownik. Tabela kontaktów jest jedną z tabel, z którymi są połączone większość innych tabel. Kontakt może być tabelą samodzielną. W tej tabeli znajdują się informacje profesjonalne, osobiste i rodzinne oraz wiele adresów. Wyświetl odwołanie do tabeli Kontakt.
Zarówno konta, jak i kontakty są częścią zarządzania klientami i są ze sobą powiązane w następujący sposób:
- Kontakt może być jednostką nadrzędną dla każdej innej tabeli, z wyjątkiem kont i kontaktów.
- Kontakt może mieć tylko jedno konto jako nadrzędne.
- Kontakt można oznaczyć jako podstawową osobę kontaktową dla konta, ustawiając kolumnę
Account.PrimaryContactId.
Tabela kontaktów zawiera informacje o osobie, takiej jak adres e-mail, adres i numery telefonów. Zawiera również inne powiązane informacje, takie jak urodziny osoby lub data rocznicy. W zależności od typu klientów, które ma jednostka biznesowa, potrzebuje tylko kontaktów lub kontaktów i kont, aby zapewnić pełny widok swoich klientów.
Łączenie takich tabel jak działania i notatki z tabelą contact pozwala użytkownikowi zobaczyć całą komunikację, jaką miał z klientem, wszelkie akcje wykonane w imieniu klienta oraz wszystkie informacje potrzebne na temat klienta.
Tabela CustomerAddress
Ta tabela zawiera więcej informacji o adresach i wysyłkach dla rekordów klientów (konto i kontakt). Domyślnie usługa Dataverse tworzy co najmniej dwa customeraddress rekordy w tej tabeli podczas tworzenia nowego rekordu klienta, nawet jeśli nie ma żadnych danych dla tych rekordów.
Dowiedz się, jak zmienić to zachowanie.
Dostęp do wszystkich customeraddress rekordów powiązanych z rekordami konta i kontaktów można uzyskać za pośrednictwem Account_CustomerAddress relacji i Contact_CustomerAddress . Obie relacje używają odnośnika parentid . Kolumna parentidtypecode wskazuje typ rekordu klienta, z który jest powiązany.
Dane adresowe osadzone w rekordach klientów
Możesz pobrać lub zmodyfikować dane dla dwóch lub trzech osadzonych customeraddress rekordów przy użyciu rekordu klienta.
- Rekordy kont mają kolumny
address1_addressidiaddress2_addressid. - Rekordy kontaktów mają kolumny
address1_addressid,address2_addressidiaddress3_addressid.
Te kolumny przechowują customeraddressid wartości. Inne kolumny klienta, z których każdy ma address1*prefiks , address2*lub address3*, zawierają odpowiednie informacje o adresie z customeraddress tabeli.
Kolumna customeraddressaddressnumber wskazuje, który adres ma zastosowanie do kolumn rekordu nadrzędnego klienta. Nie można ustawić kolumny addressnumber na wartość używaną przez inny customeraddress rekord związany z tym samym klientem nadrzędnym. Możesz ustawić istniejącą addressnumber wartość na 0 lub null, a następnie zmienić wartość innego rekordu, jeśli chcesz zamienić względną pozycję rekordów dla rekordów klienta. Podczas gdy wartość addressnumber zwiększa się dla każdego rekordu utworzonego dla klienta, oprócz kontrolowania odpowiedniej osadzonej pozycji adresu w rekordzie klienta (1, 2 lub 3), wartość kolumny addressnumber nie jest używana do żadnego innego celu.
Usługa Dataverse aktualizuje te customeraddress rekordy tylko za pomocą odpowiednich kolumn rekordów klienta zamiast aktualizować customeraddress wiersze bezpośrednio. Jednak każda osoba może edytować te customeraddress rekordy lub dodać więcej customeraddress rekordów powiązanych z rekordem account lub contact, które nie są powiązane z rekordami konta i kontaktów.
Usuwanie osadzonych wierszy adresów klienta nie jest dozwolone
Domyślnie, jeśli próbujesz usunąć jeden z osadzonych customeraddress rekordów, address2_addressidktóre address1_addressid, lub address3_addressid odwołuje się do rekordu klienta, zostanie wyświetlony błąd podobny do następującego komunikatu o błędzie:
Nazwa:
CannotDeleteDueToAssociation
Kod:0x80040227
Numer:-2147220953
Wiadomość:Customer Address can not be deleted because it is associated with another object. Address Id = 4f33c2e4-d5a3-4b03-b050-21984c0e4c15, AddressNumber=2, ParentId=4b757ff7-9c85-ee11-8179-000d3a9933c9, ObjectTypeCode=1
Dowiedz się, jak zmienić to zachowanie
Wyłączanie tworzenia pustego rekordu
Każdy wiersz w customeraddress tabeli jest liczone względem pojemności usługi Dataverse, za którą płacisz, więc możesz zminimalizować ten koszt.
Możesz zakazać usłudze Dataverse tworzenia pustych wierszy tabeli dla każdego rekordu klienta, zmieniając ustawienie customeraddress w centrum administracyjnym Power Platform. Przed zmianą tego zachowania należy rozważyć, czy masz istniejące dostosowania, które zależą od zachowania domyślnego.
Dowiedz się więcej o tym ustawieniu.
Gdy to ustawienie jest włączone, nie są tworzone nowe puste customeraddress wiersze tabeli podczas dodawania nowych rekordów klientów. Rekordy są tworzone tylko wtedy, gdy przychodzący ładunek zawiera dane adresowe. Zwykle ładunek zawiera tylko kolumny, które zawierają dane. Jeśli nie ma danych dla kolumn, kolumny nie są uwzględniane w danych przesyłanych, a po zapisaniu rekordu wartości są null. Jeśli jednak ładunek zawiera kolumny adresów z wartościami ustawionymi na wartość null, adres jest tworzony z wartościami null. Jeśli nadal widzisz tworzone puste rekordy, sprawdź, jak są one tworzone i czy aplikacja kliencka wysyła dane kolumn z wartościami null.
Jeśli ustawienie Wyłącz tworzenie pustego rekordu adresu zostanie wyłączone, zachowanie domyślne zostanie wznowione. Włączenie tego ustawienia nie powoduje usunięcia żadnych istniejących customeraddress wierszy tabeli. Przełączenie tego ustawienia z powrotem po wyłączeniu nie powoduje ponownego utworzenia rekordów, które nie zostały utworzone.
Wykrywanie, czy tworzenie pustego rekordu adresu jest wyłączone
Te przykładowe funkcje pokazują, jak wykryć, czy ustawienie Wyłącz tworzenie pustego rekordu adresu jest włączone w środowisku.
Ta Test-IsEmptyAddressRecordCreationDisabled funkcja programu PowerShell używa polecenia interfejsu wiersza poleceniapac env list-settings Microsoft Power Platform, aby sprawdzić wartość w kolumnieOrganization.OrgDbOrgSettings.
function Test-IsEmptyAddressRecordCreationDisabled {
$orgdborgsettings = pac env list-settings `
--filter orgdborgsettings `
| Where-Object { $_ -match '^orgdborgsettings\s+' } `
| ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }
$xml = [xml]$orgdborgsettings
$element = $xml.SelectSingleNode("//CreateOnlyNonEmptyAddressRecordsForEligibleEntities")
# Return true only when the element exists and has the value of 'true'
return ($null -ne $element) -and ($element.InnerText -eq 'true')
}
Dowiedz się więcej o interfejsie wiersza polecenia Microsoft Power Platform
Usuwanie osadzonych rekordów adresów
Domyślnie nie można usuwać osadzonych customeraddress wierszy tabeli, do których address1_addressidodwołują się kolumny , address2_addressidlub address3_addressid w tabelach klientów. Aby uzyskać więcej informacji, zobacz Usuwanie osadzonych wierszy adresów klienta nie jest dozwolone.
Ustawienie Włącz usuwanie rekordów adresów w centrum administracyjnym Power Platform zmienia to zachowanie. Dowiedz się więcej o tym ustawieniu.
Wykrywanie, czy usuwanie rekordów adresów jest włączone
Te przykładowe funkcje pokazują, jak wykryć, czy ustawienie Włącz usuwanie rekordów adresów jest włączone w środowisku.
Ta Test-IsDeleteAddressRecordsEnabled funkcja programu PowerShell używa polecenia interfejsu wiersza poleceniapac env list-settings Microsoft Power Platform w celu sprawdzenia EnableDeleteAddressRecords wartości w kolumnieOrganization.OrgDbOrgSettings.
function Test-IsDeleteAddressRecordsEnabled {
$orgdborgsettings = pac env list-settings `
--filter orgdborgsettings `
| Where-Object { $_ -match '^orgdborgsettings\s+' } `
| ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }
$xml = [xml]$orgdborgsettings
$element = $xml.SelectSingleNode("//EnableDeleteAddressRecords")
# Return true only when the element exists and has the value of 'true'
return ($null -ne $element) -and ($element.InnerText -eq 'true')
}
Dowiedz się więcej o interfejsie wiersza polecenia Microsoft Power Platform
Zbiorcze usuwanie pustych rekordów adresów klienta
Po wyłączeniu tworzenia pustych rekordów adresów i włączeniu usuwania rekordów adresów użyj poniższych przykładowych funkcji, aby asynchronicznie usunąć puste customeraddress rekordy przy użyciu komunikatu BulkDelete .
Przykłady kodu usuwania zbiorczego
Funkcje te są oparte na zapisywalnych kolumnach/atrybutach adresowych (CustomerAddress) i nie zawierają żadnych kolumn niestandardowych, które mogą istnieć w Twoim środowisku. Jeśli musisz uwzględnić kolumny niestandardowe, możesz zmienić te zapytania.
Funkcja Start-BulkDeleteEmptyCustomerAddressRecords programu PowerShell tworzy zadanie systemowe do usuwania pustych customeraddress rekordów przy użyciu polecenia interfejsu wiersza poleceniapac data bulk-delete schedule Microsoft Power Platform.
Ta funkcja zależy od przykładu i funkcji opisanych w artykule Wykryj, czy usuwanie rekordów adresów jest włączone, i Wykryj, czy tworzenie pustego rekordu adresu jest wyłączone, odpowiednio.Test-IsEmptyAddressRecordCreationDisabledTest-IsDeleteAddressRecordsEnabled Funkcja tworzy zadanie tylko wtedy, gdy oba ustawienia zezwalają na usunięcie wszystkich pustych rekordów adresów klienta i uniemożliwienie tworzenia nowych pustych rekordów.
function Start-BulkDeleteEmptyCustomerAddressRecords {
if (!(Test-IsDeleteAddressRecordsEnabled)) {
Write-Host 'Enable deletion of address records before running this function.'
return
}
if (!(Test-IsEmptyAddressRecordCreationDisabled)) {
Write-Host 'Disable empty address record creation before running this function.'
return
}
$fetchXml = @(
'<fetch>'
"<entity name='customeraddress'>"
"<attribute name='customeraddressid' />"
"<filter type='and'>"
"<condition attribute='city' operator='null' />"
"<condition attribute='country' operator='null' />"
"<condition attribute='county' operator='null' />"
"<condition attribute='fax' operator='null' />"
"<condition attribute='freighttermscode' operator='null' />"
"<condition attribute='latitude' operator='null' />"
"<condition attribute='line1' operator='null' />"
"<condition attribute='line2' operator='null' />"
"<condition attribute='line3' operator='null' />"
"<condition attribute='longitude' operator='null' />"
"<condition attribute='postalcode' operator='null' />"
"<condition attribute='postofficebox' operator='null' />"
"<condition attribute='primarycontactname' operator='null' />"
"<condition attribute='shippingmethodcode' operator='null' />"
"<condition attribute='stateorprovince' operator='null' />"
"<condition attribute='telephone1' operator='null' />"
"<condition attribute='telephone2' operator='null' />"
"<condition attribute='telephone3' operator='null' />"
"<condition attribute='upszone' operator='null' />"
"<condition attribute='utcoffset' operator='null' />"
'</filter>'
'</entity>'
'</fetch>'
) -join ''
pac data bulk-delete schedule `
--entity customeraddress `
--fetchxml $fetchXml `
--job-name 'Delete Empty Customer Address Records'
}