Tabulky zákazníků (účet, kontakt a adresa zákazníka)

Microsoft Dataverse zákaznických tabulek (account, contacta customeraddress) ukládají vztahy se zákazníky, kontaktní údaje a informace o adrese a expedici. Tento článek vysvětluje, jak tyto tabulky souvisejí a jak spravovat vložené a prázdné záznamy adres zákazníků.

Tabulka účtů

Tabulka účtů je jednou z tabulek ve službě Dataverse, ke které je většina ostatních tabulek připojená nebo nadřazená. Ve službě Dataverse představuje účet společnost, se kterou má obchodní jednotka vztah. Informace, které jsou součástí účtu, jsou všechny relevantní kontaktní informace, informace o společnosti, kategorie, typ vztahu a informace o adrese. Další informace, které platí, zahrnují následující položky:

  • Účet může být nadřazený většině typů tabulek, včetně jiného účtu.
  • Účet může být samostatná tabulka.
  • Účet může mít jako nadřazený jenom jeden účet.
  • Účty mohou mít více dceřiných účtů a podřízených kontaktů.

Správa účtů je jedním z důležitých konceptů správy vztahů mezi firmami (Dynamics 365), protože organizace chce vidět všechny aktivity, které mají s jinou společností. Všechny tyto aktivity se setkávají na úrovni účtu. Zobrazení reference tabulky Účet.

Tabulka kontaktů

Kontakt ve službě Dataverse představuje osobu, obvykle osobu, se kterou má obchodní jednotka vztah, například zákazník, dodavatel nebo kolega. Tabulka kontaktů je jednou z tabulek, se kterými je propojena většina ostatních tabulek. Kontakt může být samostatná tabulka. Součástí této tabulky jsou profesionální, osobní a rodinné informace a více adres. Zobrazte odkaz na tabulku kontaktů.

Účty i kontakty jsou součástí správy zákazníků a vzájemně se vzájemně souvisejí následujícími způsoby:

  • Kontakt může být nadřazený pro všechny ostatní tabulky s výjimkou účtů a kontaktů.
  • Kontakt může mít jako nadřazený jenom jeden účet.
  • Kontakt může být označen jako primární kontaktní osoba pro účet nastavením Account.PrimaryContactId sloupce.

V tabulce kontaktů jsou uložené informace o osobě, jako je e-mailová adresa, poštovní adresa a telefonní čísla. Obsahuje také další související informace, jako jsou narozeniny nebo datum výročí osoby. V závislosti na typu zákazníků, které má obchodní jednotka, potřebuje buď jenom kontakty, nebo kontakty a účty, aby poskytla úplný přehled o svých zákaznících.

Propojení tabulek, jako jsou aktivity a poznámky k contact tabulce, umožňuje uživateli zobrazit veškerou komunikaci, kterou uživatel měl se zákazníkem, všechny akce, které uživatel provedl jménem zákazníka, a všechny informace, které uživatel potřebuje o zákazníkovi.

Tabulka CustomerAddress

Tato tabulka obsahuje další informace o adrese a expedici pro záznamy zákazníků (účet a kontakt). Dataverse ve výchozím nastavení vytvoří v této tabulce alespoň dva customeraddress záznamy, když vytvoříte nový záznam zákazníka, i když pro tyto záznamy nejsou žádná data. Zjistěte, jak toto chování změnit.

Ke všem customeraddress záznamům souvisejícím s klientem a záznamy kontaktů můžete přistupovat prostřednictvím vztahů Account_CustomerAddress a Contact_CustomerAddress vztahů. Obě relace používají vyhledávání závorek . Sloupec parentidtypecode označuje typ záznamu zákazníka, ke které adresa souvisí.

Data adres vložená do záznamů zákazníků

Data pro dva nebo tři vložené customeraddress záznamy můžete načíst nebo upravit pomocí záznamu zákazníka.

  • Záznamy účtů mají sloupce address1_addressid a address2_addressid.
  • Záznamy kontaktů mají sloupce address1_addressid, address2_addressida address3_addressid.

Tyto sloupce ukládají customeraddressid hodnoty. Ostatní sloupce zákazníka, které mají předponu address1*, address2*nebo address3*obsahují odpovídající informace o adrese z customeraddress tabulky.

Sloupec customeraddressaddressnumber označuje, která adresa se vztahuje na sloupce záznamů nadřazeného zákazníka. Nemůžete nastavit sloupec addressnumber na hodnotu, kterou používá jiný customeraddress záznam vztahující se ke stejnému nadřazenému zákazníkovi. Existující hodnotu addressnumber můžete nastavit na 0 nebo null a potom změnit hodnotu jiného záznamu, pokud chcete zaměnit relativní pozici záznamů v rámci záznamů zákazníka. Zatímco se hodnota addressnumber zvyšuje pro každý záznam vytvořený pro zákazníka, kromě řízení pozice vložené adresy v záznamu zákazníka (buď 1, 2, nebo 3), hodnota addressnumber se nepoužívá pro žádný jiný účel.

Dataverse tyto customeraddress záznamy aktualizuje pouze prostřednictvím odpovídajících sloupců záznamů zákazníka místo přímé aktualizace customeraddress řádků. Každý ale může tyto záznamy upravovat jako customeraddress záznamy nebo přidávat další customeraddress záznamy přidružené k nějakému account nebo contact záznamu, které nejsou propojené s účtem a záznamy kontaktů.

Odstranění řádků vložených adres zákazníka není povolené.

Pokud se ve výchozím nastavení pokusíte odstranit jeden z vložených customeraddress záznamů, které address1_addressidodkazuje na záznam zákazníka , address2_addressidaddress3_addressid zobrazí se chyba podobná následující chybové zprávě:

Název: CannotDeleteDueToAssociation
Kód: 0x80040227
Číslo: -2147220953
Zpráva: 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

Zjistěte, jak toto chování změnit.

Zakázání vytváření prázdných záznamů

Každý řádek v customeraddress tabulce se počítá s kapacitou Dataverse, za kterou platíte, takže můžete chtít minimalizovat tyto náklady.

Dataverse můžete říct, aby pro každý záznam klienta nevytvořil prázdné řádky customeraddress tabulky změnou nastavení Zakázat vytvoření prázdného záznamu adresy v centru pro správu Power Platform. Před změnou tohoto chování zvažte, jestli máte existující vlastní nastavení, která závisí na výchozím chování. Přečtěte si další informace o tomto nastavení.

I když je toto nastavení zapnuté, při vytváření nových záznamů zákazníků se nevytvořily žádné nové prázdné customeraddress řádky tabulky. Záznamy se vytvoří pouze v případě, že příchozí datová část obsahuje data adres. Datová část obvykle zahrnuje pouze sloupce, které mají data. Pokud pro sloupce nejsou žádná data, sloupce se do datové části nezahrnou a hodnoty mají při uložení záznamu hodnotu null. Pokud však datová část obsahuje sloupce adres s hodnotami nastavenými na hodnotu null, vytvoří se adresa s hodnotami null. Pokud se dál zobrazují prázdné záznamy, zkontrolujte, jak se vytvářejí a jestli klientská aplikace odesílá data sloupců s hodnotami null.

Pokud je vypnuto nastavení Zakázat vytvoření prázdného záznamu adresy , výchozí chování se obnoví. Zapnutím tohoto nastavení se neodstraní žádné existující customeraddress řádky tabulky. Když toto nastavení znovu zapnete, po vypnutí se znovu nevytvoří záznamy, které se nevytvořily.

Zjištění, jestli je zakázané vytvoření prázdného záznamu adresy

Tyto ukázkové funkce ukazují, jak zjistit, jestli je v prostředí povolené nastavení Zakázat vytvoření prázdného záznamu adresy .

Tato Test-IsEmptyAddressRecordCreationDisabled funkce PowerShellu používá příkaz rozhraní příkazového řádkupac env list-settings Microsoft Power Platform ke kontrole hodnoty ve sloupciOrganization.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')
}

Další informace o rozhraní příkazového řádku Microsoft Power Platform

Odstranění vložených záznamů adres

Ve výchozím nastavení nelze odstranit vložené customeraddress řádky tabulky, na které address1_addressidaddress2_addressidodkazují sloupce nebo address3_addressid sloupce v tabulkách zákazníků. Další informace najdete v tématu Odstranění řádků vložených adres zákazníka není povoleno.

Nastavení Povolit odstranění záznamů adres v Centru pro správu Power Platform toto chování změní. Přečtěte si další informace o tomto nastavení.

Zjištění, jestli je povolené odstranění záznamů adres

Tyto ukázkové funkce ukazují, jak zjistit, jestli je v prostředí povolené nastavení Povolit odstranění záznamů adres .

Tato Test-IsDeleteAddressRecordsEnabled funkce PowerShellu pomocí příkazu rozhraní příkazového řádkupac env list-settings Microsoft Power Platform zkontroluje EnableDeleteAddressRecords hodnotu ve sloupciOrganization.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')
}

Další informace o rozhraní příkazového řádku Microsoft Power Platform

Hromadné odstranění prázdných záznamů adres zákazníka

Po zakázání vytvoření prázdného záznamu adresy a povolení odstranění záznamů adres použijte následující ukázkové funkce k asynchronnímu odstranění prázdných customeraddress záznamů pomocí BulkDelete zprávy.

Příklady hromadného odstranění kódu

Tyto funkce jsou založené na zapisovatelných sloupcích nebo atributech Address (CustomerAddress) a neobsahují žádné vlastní sloupce, které by mohly být ve vašem prostředí. Tyto dotazy můžete chtít změnit, pokud potřebujete zahrnout vlastní sloupce.

Funkce Start-BulkDeleteEmptyCustomerAddressRecords PowerShellu vytvoří systémovou úlohu pro odstranění prázdných customeraddress záznamů pomocí příkazu Microsoft Power Platform CLIpac data bulk-delete schedule.

Tato funkce závisí na příkladu Test-IsDeleteAddressRecordsEnabled a Test-IsEmptyAddressRecordCreationDisabled funkcích popsaných v tématu Zjistit, jestli je povolené odstranění záznamů adres , a zjistit, jestli je zakázané vytvoření prázdného záznamu adresy. Funkce vytvoří úlohu pouze v případech, kdy obě nastavení umožňují odstranění všech prázdných záznamů adres zákazníků a zabránění vytvoření nových prázdných záznamů.

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