Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Dataverse kundtabeller (account, contactoch customeraddress) lagrar kundrelationer, kontaktuppgifter samt adress- och leveransinformation. Den här artikeln förklarar hur dessa tabeller relaterar och hur du hanterar inbäddade och tomma kundadressposter.
Kontotabell
Kontotabellen är en av tabellerna i Dataverse som de flesta andra tabeller är kopplade till eller överordnad till. I Dataverse representerar ett konto ett företag som affärsenheten har en relation med. Information som ingår i ett konto är all relevant kontaktinformation, företagsinformation, kategori, relationstyp och adressinformation. Annan information som gäller omfattar följande:
- Ett konto kan vara överordnat till de flesta tabelltyper, inklusive ett annat konto.
- Ett konto kan vara en fristående tabell.
- Ett konto kan bara ha ett konto som överordnat konto.
- Konton kan ha flera underordnade konton och underordnade kontakter.
Kontohantering är ett av de viktiga begreppen för hantering av kundrelationer mellan företag (Dynamics 365) eftersom en organisation vill se alla aktiviteter de har med ett annat företag. Alla dessa aktiviteter samlas på kontonivå. Visa referensen för kontotabellen.
Kontakttabell
I Dataverse representerar en kontakt en person, vanligtvis en person, med vilken en affärsenhet har en relation, till exempel en kund, en leverantör eller en kollega. Kontakttabellen är en av de tabeller som de flesta andra tabeller är länkade till. En kontakt kan vara en fristående tabell. I den här tabellen ingår professionell, personlig information och familjeinformation samt flera adresser. Visa referensen för tabellen Kontakt.
Både konton och kontakter ingår i hanteringen av kunder och är relaterade till varandra på följande sätt:
- En kontakt kan vara överordnad till alla andra tabeller förutom konton och kontakter.
- En kontakt kan bara ha ett konto som överordnat konto.
- En kontakt kan markeras som den primära kontaktpersonen
Account.PrimaryContactIdför ett konto genom att ange kolumnen.
I kontakttabellen lagras information om en person, till exempel en e-postadress, gatuadress och telefonnummer. Den innehåller även annan relaterad information, till exempel personens födelsedags- eller jubileumsdatum. Beroende på vilken typ av kunder en affärsenhet har behöver den antingen bara kontakter eller kontakter och konton för att ge en fullständig överblick över sina kunder.
Genom att länka tabeller som aktiviteter och anteckningar till contact tabellen kan användaren se all kommunikation som användaren hade med en kund, alla åtgärder som användaren vidtog för kundens räkning och all information som användaren behöver om kunden.
CustomerAddress-tabell
Den här tabellen innehåller mer adress- och leveransinformation för kundposter (konto och kontakt). Som standard skapar Dataverse minst två customeraddress poster i den här tabellen när du skapar en ny kundpost, även om det inte finns några data för dessa poster.
Lär dig hur du kan ändra det här beteendet.
Du kan komma åt alla customeraddress poster som är relaterade till konto- och kontaktposter via Account_CustomerAddress relationerna och Contact_CustomerAddress . Båda relationerna använder parentid-sökningen . Kolumnen parentidtypecode anger vilken typ av kundpost adressen är relaterad till.
Hantera data som är inbäddade med kundposter
Du kan hämta eller ändra data för de två eller tre inbäddade customeraddress posterna tillsammans med kundposten.
- Kontoposter har kolumner
address1_addressidochaddress2_addressid. - Kontaktposter har kolumner
address1_addressid,address2_addressidochaddress3_addressid.
Dessa kolumner lagrar customeraddressid värden. Andra kundkolumner, var och en med prefixet address1*, address2*eller address3*, innehåller motsvarande adressinformation från customeraddress tabellen.
Kolumnen customeraddressaddressnumber anger vilken adress som gäller för de överordnade kundpostkolumnerna. Du kan inte ange addressnumber kolumnen till ett värde som används av en annan customeraddress post som är kopplad till samma huvudkund. Du kan ange ett befintligt addressnumber värde till 0 eller null och sedan ändra värdet för en annan post om du vill växla posternas relativa position för kundposterna. Även om addressnumber värdet ökar för varje post som skapats för en kund, används kolumnvärdet 1 inte för något annat syfte än att styra respektive inbäddade adressposition i kundposten (antingen 2, 3 eller addressnumber).
Dataverse uppdaterar endast dessa customeraddress poster via motsvarande kundpostkolumner i stället för att direkt uppdatera raderna customeraddress. Någon kan dock redigera dessa poster som customeraddress-poster eller lägga till fler customeraddress-poster som är associerade med account- eller contact-posten som inte är inbäddade i konto- och kontaktposterna.
Borttagning av inbäddade kundadressrader tillåts inte
Om du som standard försöker ta bort en av de inbäddade customeraddress posterna som address1_addressidrefererar till , address2_addressideller address3_addressid för en kundpost får du ett felmeddelande som liknar följande felmeddelande:
Namn:
CannotDeleteDueToAssociation
Kod:0x80040227
Nummer:-2147220953
Meddelande: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
Lär dig hur du kan ändra det här beteendet
Inaktivera skapande av tomma uppgifter
Varje rad i customeraddress tabellen räknas mot den Dataverse-kapacitet som du betalar för, så du kanske vill minimera den här kostnaden.
Du kan be Dataverse att inte skapa tomma customeraddress tabellrader för varje kundpost genom att ändra inställningen Inaktivera skapande av tom adresspost i administrationscentret för Power Platform. Innan du ändrar det här beteendet bör du överväga om du har befintliga anpassningar som är beroende av standardbeteende.
Läs mer om den här inställningen.
När den här inställningen är aktiverad skapas inga nya tomma customeraddress tabellrader när nya kundposter skapas. Register skapas endast om den inkommande nyttolasten innehåller adressdata. Normalt innehåller nyttolasten endast kolumner som har data. Om det inte finns några data för kolumnerna inkluderas inte kolumnerna i nyttolasten och värdena är null när posten sparas. Men om nyttolasten innehåller adresskolumner med värden inställda på null skapas adressen med null-värden. Om du fortsätter att se tomma poster som skapas kontrollerar du hur de skapas och om klientprogrammet skickar kolumndata med null-värden.
Om inställningen Inaktivera skapande av tom adresspost är inaktiverad återupptas standardbeteendet. Om du aktiverar den här inställningen tas inga befintliga customeraddress tabellrader bort. Om du slår på den här inställningen igen när den har stängts av återskapas inte poster som inte har skapats.
Avgör om skapandet av tom adressregistrering är inaktiverat
Dessa exempelfunktioner visar hur du identifierar om inställningen Inaktivera skapande av tom adresspost är aktiverad i miljön.
Den här Test-IsEmptyAddressRecordCreationDisabled PowerShell-funktionen använder kommandot Microsoft Power Platform CLIpac env list-settings för att kontrollera ett värde i Organization.OrgDbOrgSettings kolumnen.
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')
}
Ta bort inbäddade adressposter
Som standard kan du inte ta bort inbäddade customeraddress tabellrader som refererar till kolumnerna address1_addressid, address2_addressideller eller address3_addressid i kundtabeller. Mer information finns i Borttagning av inbäddade kundadressrader tillåts inte.
Inställningen Aktivera borttagning av adressposter i administrationscentret för Power Platform ändrar det här beteendet. Läs mer om den här inställningen.
Identifiera om borttagning av adressposter är aktiverat
De här exempelfunktionerna visar hur du identifierar om inställningen Aktivera borttagning av adressposter är aktiverad i miljön.
Den här Test-IsDeleteAddressRecordsEnabled PowerShell-funktionen använder kommandot Microsoft Power Platform CLIpac env list-settings för att kontrollera ett EnableDeleteAddressRecords värde i Organization.OrgDbOrgSettings kolumnen.
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')
}
Massborttagning av tomma kundadressposter
När du har inaktiverat skapandet av tomma adressposter och aktiverat borttagning av adressposter använder du följande exempelfunktioner för att asynkront ta bort tomma customeraddress poster med hjälp av meddelandet BulkDelete .
Exempel på massborttagningskod
De här funktionerna baseras på de skrivbara kolumnerna/attributen Adress (CustomerAddress) och innehåller inga anpassade kolumner som kan finnas i din miljö. Du kanske vill ändra dessa frågor om du behöver inkludera dina anpassade kolumner.
Start-BulkDeleteEmptyCustomerAddressRecords PowerShell-funktionen skapar ett systemjobb för att ta bort tomma customeraddress poster med hjälp av kommandot Microsoft Power Platform CLIpac data bulk-delete schedule.
Den här funktionen beror på exemplet Test-IsDeleteAddressRecordsEnabled och Test-IsEmptyAddressRecordCreationDisabled funktionerna som beskrivs i Identifiera om borttagning av adressposter är aktiverat och Identifiera om tom adresspost skapas är inaktiverat. Funktionen skapar bara jobbet när båda inställningarna tillåter att alla tomma kundadressposter tas bort och förhindrar att nya tomma poster skapas.
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'
}