Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft Dataverse klanttabellen (account, contacten ) customeraddressklantrelaties, contactgegevens en adres- en verzendgegevens opslaan. In dit artikel wordt uitgelegd hoe deze tabellen zich verhouden en hoe u ingesloten en lege klantadresrecords beheert.
Accounttabel
De account-tabel is een van de tabellen in Dataverse waaraan de meeste andere tabellen zijn gekoppeld of als oudertabel fungeren. In Dataverse vertegenwoordigt een account een bedrijf waarmee de bedrijfseenheid een relatie heeft. Informatie die in een account is opgenomen, bestaat uit alle relevante contactgegevens, bedrijfsgegevens, categorie, relatietype en adresgegevens. Andere informatie die van toepassing is, omvat de volgende items:
- Een account kan overkoepelend zijn voor de meeste tabeltypen, inclusief een ander account.
- Een account kan een zelfstandige tabel zijn.
- Een account kan slechts één account hebben als bovenliggend account.
- Accounts kunnen meerdere onderliggende accounts en onderliggende contactpersonen hebben.
Accountbeheer is een van de belangrijke concepten van business-to-business customer relationship management (Dynamics 365), omdat een organisatie alle activiteiten wil zien die ze met een ander bedrijf hebben. Al deze activiteiten komen samen op accountniveau. Bekijk de naslaginformatie voor de accounttabel.
Contacttabel
In Dataverse vertegenwoordigt een contactpersoon een persoon, meestal een persoon, met wie een bedrijfseenheid een relatie heeft, zoals een klant, een leverancier of een collega. De tabel met contactpersonen is een van de tabellen waaraan de meeste andere tabellen zijn gekoppeld. Een contact kan een zelfstandige tabel zijn. Deze tabel bevat professionele, persoonlijke en gezinsgegevens en meerdere adressen. Bekijk de referentie van de tabel Contact.
Zowel accounts als contactpersonen maken deel uit van het beheren van klanten en zijn op de volgende manieren gerelateerd aan elkaar:
- Een contact kan bovenliggend zijn voor elke andere tabel, behalve accounts en contacten.
- Een account kan slechts één account hebben als bovenliggend account.
- Een contactpersoon kan worden gemarkeerd als de primaire contactpersoon voor een account door de kolom in te
Account.PrimaryContactIdstellen.
In de tabel met contactpersonen worden gegevens opgeslagen over een persoon, zoals een e-mailadres, adres en telefoonnummers. Het bevat ook andere gerelateerde informatie, zoals de verjaardag of jubileumdatum van de persoon. Afhankelijk van het type klanten dat een business unit heeft, heeft deze alleen contacten of contacten en accounts nodig om een volledig beeld te geven van de klanten.
Door tabellen zoals activiteiten en notities aan de contact tabel te koppelen, kan de gebruiker alle communicatie zien die de gebruiker had met een klant, alle acties die de gebruiker heeft uitgevoerd namens de klant en alle informatie die de gebruiker nodig heeft over de klant.
Tabel CustomerAddress
Deze tabel bevat meer adres- en verzendgegevens voor klantrecords (account en contactpersoon). Dataverse maakt standaard ten minste twee customeraddress records in deze tabel wanneer u een nieuwe klantrecord maakt, zelfs als er geen gegevens voor deze records zijn.
Meer informatie over hoe u dit gedrag kunt wijzigen.
U hebt toegang tot alle customeraddress records met betrekking tot account- en contactpersoonrecords via de Account_CustomerAddress en Contact_CustomerAddress relaties. Beide relaties maken gebruik van de bovenliggende id-zoekactie . De parentidtypecode kolom geeft het type klantrecord aan waaraan het adres is gerelateerd.
Geïntegreerde adresgegevens in klantrecords
U kunt de gegevens voor de twee of drie ingesloten customeraddress records ophalen of wijzigen met de klantrecord.
- Accountrecords hebben kolommen
address1_addressidenaddress2_addressid. - Records voor contactpersonen bevatten kolommen
address1_addressid,address2_addressidenaddress3_addressid.
In deze kolommen worden waarden opgeslagen customeraddressid . Andere klantkolommen, elk voorafgegaan door address1*, address2*of address3*, bevatten de bijbehorende adresgegevens uit de customeraddress tabel.
De customeraddressaddressnumber kolom geeft aan welk adres van toepassing is op de kolommen van de bovenliggende klantrecord. U kunt de addressnumber kolom niet instellen op een waarde die wordt gebruikt door een andere customeraddress record die is gerelateerd aan dezelfde bovenliggende klant. U kunt een bestaande addressnumber waarde instellen op 0 of null en vervolgens de waarde van een andere record wijzigen als u de relatieve positie van de records voor de klantrecords wilt wisselen. Hoewel de addressnumber waarde wordt verhoogd voor elke record die voor een klant is gemaakt, behalve het beheren van de respectieve ingesloten adrespositie in de klantrecord (ofwel 1, 2of 3), wordt de addressnumber kolomwaarde niet gebruikt voor een ander doel.
Dataverse werkt deze customeraddress records alleen bij via de bijbehorende kolommen voor klantrecords in plaats van de customeraddress rijen rechtstreeks bij te werken. Iedereen kan deze records echter bewerken als customeraddress records of meer customeraddress records toevoegen die zijn gekoppeld aan de account of contact record die niet zijn ingesloten met het account en contactpersonenrecords.
Het verwijderen van ingesloten klantadresrijen is niet toegestaan
Als u probeert een van de ingesloten customeraddress records te verwijderen die door de address1_addressid, address2_addressidof address3_addressid verwijzingen naar een klantrecord worden verwezen, krijgt u standaard een foutmelding zoals in het volgende foutbericht:
Naam:
CannotDeleteDueToAssociation
Code:0x80040227
Getal:-2147220953
Bericht: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
Meer informatie over hoe u dit gedrag kunt wijzigen
Het maken van lege records uitschakelen
Elke rij in de customeraddress tabel telt mee voor de Dataverse-capaciteit waarvoor u betaalt, dus u kunt deze kosten minimaliseren.
U kunt Dataverse laten weten dat er geen lege customeraddress tabelrijen voor elke klantrecord moeten worden gemaakt door de instelling Lege adresrecordcreatie uitschakelen in het Power Platform-beheercentrum te wijzigen. Voordat u dit gedrag wijzigt, moet u overwegen of u bestaande aanpassingen hebt die afhankelijk zijn van het standaardgedrag.
Meer informatie over deze instelling.
Hoewel deze instelling is ingeschakeld, worden er geen nieuwe lege customeraddress tabelrijen gemaakt wanneer er nieuwe klantrecords worden gemaakt. Records worden alleen gemaakt als de binnenkomende nettolading adresgegevens bevat. Normaal gesproken bevat de nettolading alleen kolommen met gegevens. Als er geen gegevens voor de kolommen zijn, worden de kolommen niet opgenomen in de gegevensset en zijn de waarden null wanneer het record wordt opgeslagen. Als de nettolading echter adreskolommen bevat met waarden die zijn ingesteld op null, wordt het adres gemaakt met null-waarden. Als u lege records blijft maken, controleert u hoe deze worden gemaakt en of die clienttoepassing kolomgegevens verzendt met null-waarden.
Als de instelling Uitschakeling van de creatie van lege adresrecords is uitgeschakeld, wordt het standaardgedrag hervat. Als u deze instelling inschakelt, worden geen bestaande customeraddress tabelrijen verwijderd. Als u deze instelling weer inschakelt nadat deze is uitgeschakeld, worden records die niet zijn gemaakt, niet opnieuw gemaakt.
Detecteren of het maken van een lege adresrecord is uitgeschakeld
Deze voorbeeldfuncties laten zien hoe u kunt detecteren of de instelling voor het uitschakelen van lege adresrecords in de omgeving is ingeschakeld.
Deze Test-IsEmptyAddressRecordCreationDisabled PowerShell-functie gebruikt de Microsoft Power Platform CLI-opdrachtpac env list-settings om een waarde in de Organization.OrgDbOrgSettings kolom te controleren.
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')
}
Ingesloten adresrecords verwijderen
Standaard kunt u geen ingesloten customeraddress tabelrijen verwijderen waarnaar de address1_addressid, address2_addressidof address3_addressid kolommen in klanttabellen verwijzen. Zie Het verwijderen van ingesloten klantadresrijen is niet toegestaan voor meer informatie.
De instelling Verwijderen van adresrecords inschakelen in het Power Platform-beheercentrum wijzigt dit gedrag. Meer informatie over deze instelling.
Detecteren of het verwijderen van adresrecords is ingeschakeld
Deze voorbeeldfuncties laten zien hoe u kunt detecteren of de instelling Verwijdering van adresrecords inschakelen is ingeschakeld in de omgeving.
Deze Test-IsDeleteAddressRecordsEnabled PowerShell-functie gebruikt de Microsoft Power Platform CLI-opdrachtpac env list-settings om een EnableDeleteAddressRecords waarde in de Organization.OrgDbOrgSettings kolom te controleren.
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')
}
Bulksgewijs verwijderen van lege klantadresrecords
Nadat u het maken van lege adresrecords hebt uitgeschakeld en het verwijderen van adresrecords hebt ingeschakeld, gebruikt u de volgende voorbeeldfuncties om lege customeraddress records asynchroon te verwijderen met behulp van het BulkDelete bericht.
Voorbeelden van bulksgewijs verwijderen van code
Deze functies zijn gebaseerd op de beschrijfbare kolommen/kenmerken van Address (CustomerAddress) en bevatten geen aangepaste kolommen die zich mogelijk in uw omgeving bevinden. U kunt deze query's wijzigen als u uw aangepaste kolommen wilt opnemen.
Met Start-BulkDeleteEmptyCustomerAddressRecords de PowerShell-functie maakt u een systeemtaak om lege customeraddress records te verwijderen met behulp van de Microsoft Power Platform CLI-opdrachtpac data bulk-delete schedule.
Deze functie is afhankelijk van het voorbeeld Test-IsDeleteAddressRecordsEnabled en Test-IsEmptyAddressRecordCreationDisabled de functies die worden beschreven in Detect of het verwijderen van adresrecords is ingeschakeld en Detecteren of het maken van lege adresrecords respectievelijk is uitgeschakeld. De functie maakt de taak alleen wanneer beide instellingen toestaan dat alle lege klantadresrecords worden verwijderd en voorkomen dat nieuwe lege records worden gemaakt.
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'
}