Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft Dataverse Kundentabellen (accountund contactcustomeraddress) Kundenbeziehungen, Kontaktdetails und Adress- und Versandinformationen speichern. In diesem Artikel wird erläutert, wie diese Tabellen zusammenhängen und wie eingebettete und leere Kundenadressdatensätze verwaltet werden.
Kontentabelle
Die Kontotabelle ist eine der Tabellen in Dataverse, an die die meisten anderen Tabellen angefügt oder übergeordnet sind. In Dataverse stellt ein Konto ein Unternehmen dar, mit dem die Geschäftseinheit eine Beziehung hat. Informationen, die in einem Konto enthalten sind, sind alle relevanten Kontaktinformationen, Unternehmensinformationen, Kategorie, Beziehungstyp und Adressinformationen. Weitere Informationen, die gelten, umfassen die folgenden Elemente:
- Ein Konto kann ein übergeordnetes Element für die meisten Tabellentypen sein, einschließlich eines anderen Kontos.
- Ein Konto kann eine eigenständige Tabelle sein.
- Ein Konto kann nur ein übergeordnetes Konto haben.
- Firmen können mehrere untergeordnete Firmen und untergeordnete Kontakte aufweisen.
Die Kontoverwaltung ist eines der wichtigen Konzepte des Business-to-Business Customer Relationship Management (Dynamics 365), da eine Organisation alle Aktivitäten sehen möchte, die sie mit einem anderen Unternehmen haben. All diese Aktivitäten kommen auf Kontoebene zusammen. Rufen Sie den Verweis auf die Kontotabelle ab.
Kontakttabelle
In Dataverse stellt ein Kontakt eine Person dar, in der Regel eine Person, mit der eine Geschäftseinheit eine Beziehung hat, z. B. ein Kunde, ein Lieferant oder ein Kollege. Die Kontakttabelle ist eine der Tabellen, mit denen die meisten anderen Tabellen verknüpft sind. Ein Kontakt kann eine eigenständige Tabelle sein. In dieser Tabelle sind professionelle, persönliche und Familieninformationen sowie mehrere Adressen enthalten. Kontakttabellenverweis anzeigen.
Sowohl Konten als auch Kontakte sind Teil der Verwaltung von Kunden und stehen auf folgende Weise miteinander in Zusammenhang:
- Ein Kontakt kann jeder anderen Tabelle, mit Ausnahme von Konten und Kontakten, übergeordnet sein.
- Ein Kontakt kann nur eine einzige Firma als übergeordnetes Element haben.
- Ein Kontakt kann durch Festlegen der
Account.PrimaryContactIdSpalte als primäre Kontaktperson für ein Konto gekennzeichnet werden.
In der Kontakttabelle werden Informationen zu einer Person wie E-Mail-Adresse, Straße und Telefonnummern gespeichert. Sie enthält auch andere verwandte Informationen, z. B. den Geburtstag oder Hochzeitstag der Person. Abhängig von der Art der Kunden, über die eine Geschäftseinheit verfügt, benötigt sie entweder nur Kontakte oder Kontakte und Konten, um einen vollständigen Überblick über ihre Kunden zu erhalten.
Wenn Sie Tabellen wie Aktivitäten und Notizen mit der contact Tabelle verknüpfen, können Benutzer alle Kommunikationen anzeigen, die der Benutzer mit einem Kunden hatte, alle Aktionen, die der Benutzer im Namen des Kunden ausgeführt hat, und alle Informationen, die der Benutzer über den Kunden benötigt.
CustomerAddress-Tabelle
Diese Tabelle enthält weitere Adress- und Versandinformationen für Kundendatensätze (Konto und Kontakt). Dataverse erstellt standardmäßig mindestens zwei customeraddress Datensätze in dieser Tabelle, wenn Sie einen neuen Kundendatensatz erstellen, auch wenn keine Daten für diese Datensätze vorhanden sind.
Erfahren Sie, wie Sie dieses Verhalten ändern können.
Sie können über die Account_CustomerAddress Und-Beziehungen Contact_CustomerAddress auf alle customeraddress Datensätze im Zusammenhang mit Konto- und Kontaktdatensätzen zugreifen. Beide Beziehungen verwenden die übergeordnete Suche . Die parentidtypecode Spalte gibt den Typ des Kundendatensatzes an, mit dem die Adresse verknüpft ist.
Adressdaten, die in Kundendatensätze eingebettet sind
Sie können die Daten für die zwei oder drei eingebetteten customeraddress Datensätze mit dem Kundendatensatz abrufen oder ändern.
- Kontodatensätze verfügen über Spalten
address1_addressidundaddress2_addressid. - Kontaktdatensätze verfügen über Spalten
address1_addressid,address2_addressidundaddress3_addressid.
Diese Spalten speichern customeraddressid Werte. Andere Kundenspalten, die jeweils mit dem Präfix , address2*oder address3*, versehen address1*sind, enthalten die entsprechenden Adressinformationen aus der customeraddress Tabelle.
Die customeraddressaddressnumber Spalte gibt an, welche Adresse für die übergeordneten Kundendatensatzspalten gilt. Sie können die addressnumber Spalte nicht auf einen Wert festlegen, der von einem anderen customeraddress Datensatz im Zusammenhang mit demselben übergeordneten Kunden verwendet wird. Sie können einen vorhandenen addressnumber Wert auf 0 oder NULL festlegen und dann den Wert eines anderen Datensatzes ändern, wenn Sie die relative Position der Datensätze für die Kundendatensätze austauschen möchten. Während der addressnumber-Wert für jeden Datensatz erhöht wird, der für einen Kunden erstellt wurde, dient er dazu, die jeweilige eingebettete Adressposition im Kundendatensatz zu steuern (entweder 1, 2 oder 3). Darüber hinaus wird der Spaltenwert addressnumber nicht für einen anderen Zweck verwendet.
Dataverse aktualisiert diese customeraddress Datensätze nur über die entsprechenden Kundendatensatzspalten, anstatt die customeraddress Zeilen direkt zu aktualisieren. Jeder kann diese Datensätze jedoch als customeraddress Datensätze bearbeiten oder weitere customeraddress Datensätze hinzufügen, die mit dem account oder contact Datensatz zugeordnet sind, der nicht mit den Konto- und Kontaktdatensätzen verknüpft ist.
Das Löschen eingebetteter Kundenadresszeilen ist nicht zulässig.
Wenn Sie versuchen, einen der eingebetteten customeraddress Datensätze zu löschen, die die address1_addressid, address2_addressidoder address3_addressid Verweise für einen Kundendatensatz enthalten, wird eine Fehlermeldung wie die folgende Fehlermeldung angezeigt:
Name:
CannotDeleteDueToAssociation
Code:0x80040227
Zahl:-2147220953
Meldung: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
Erfahren Sie, wie Sie dieses Verhalten ändern können.
Leere Datensatzerstellung deaktivieren
Jede Zeile in der customeraddress Tabelle zählt mit der Dataverse-Kapazität, für die Sie bezahlen, sodass Sie diese Kosten minimieren möchten.
Sie können Dataverse anweisen, keine leeren customeraddress Tabellenzeilen für jeden Kundendatensatz zu erstellen, indem Sie die Einstellung Deaktivieren der Erstellung leerer Adressendatensätze im Power Platform-Verwaltungszentrum ändern. Bevor Sie dieses Verhalten ändern, überlegen Sie, ob Sie über vorhandene Anpassungen verfügen, die vom Standardverhalten abhängig sind.
Erfahren Sie mehr über diese Einstellung.
Während diese Einstellung aktiviert ist, werden keine neuen leeren customeraddress Tabellenzeilen erstellt, wenn neue Kundendatensätze erstellt werden. Datensätze werden nur erstellt, wenn die eingehende Nutzlast Adressdaten enthält. Normalerweise enthält die Nutzlast nur Spalten mit Daten. Wenn keine Daten für die Spalten vorhanden sind, sind die Spalten nicht in der Nutzlast enthalten, und die Werte sind null, wenn der Datensatz gespeichert wird. Wenn die Nutzlast jedoch Adressspalten mit Werten enthält, die auf NULL festgelegt sind, wird die Adresse mit NULL-Werten erstellt. Wenn weiterhin leere Datensätze erstellt werden, überprüfen Sie, wie sie erstellt werden, und ob diese Clientanwendung Spaltendaten mit NULL-Werten sendet.
Wenn die Einstellung zum Deaktivieren der Erstellung leerer Adressdatensätze ausgeschaltet wird, wird das Standardverhalten wiederhergestellt. Wenn Sie diese Einstellung aktivieren, werden keine vorhandenen customeraddress Tabellenzeilen gelöscht. Wenn Sie diese Einstellung wieder aktivieren, nachdem sie ausgeschaltet wurde, werden keine Datensätze neu erstellt, die nicht erstellt wurden.
Erkennen, ob die Erstellung leerer Adressdatensatz deaktiviert ist
Diese Beispielfunktionen zeigen, wie Sie erkennen können, ob die Einstellung zur Deaktivierung der Erstellung leerer Adressdatensätze in der Umgebung aktiviert ist.
Diese Test-IsEmptyAddressRecordCreationDisabled PowerShell-Funktion verwendet den Befehl Microsoft Power Platform CLIpac env list-settings, um einen Wert in der Organization.OrgDbOrgSettings Spalte zu überprüfen.
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')
}
Löschen eingebetteter Adressdatensätze
Standardmäßig können Sie keine eingebetteten customeraddress Tabellenzeilen löschen, auf die bzw. die address3_addressidaddress1_addressidaddress2_addressidspalten in Kundentabellen verweisen. Weitere Informationen finden Sie unter "Löschen eingebetteter Kundenadresszeilen" ist nicht zulässig.
Die Einstellung " Löschen von Adressdatensätzen aktivieren " im Power Platform Admin Center ändert dieses Verhalten. Erfahren Sie mehr über diese Einstellung.
Ermitteln, ob das Löschen von Adressdatensätzen aktiviert ist
Diese Beispielfunktionen zeigen, wie Sie erkennen, ob die Einstellung " Löschen von Adressdatensätzen aktivieren " in der Umgebung aktiviert ist.
Diese Test-IsDeleteAddressRecordsEnabled PowerShell-Funktion verwendet den Befehl Microsoft Power Platform CLIpac env list-settings, um einen EnableDeleteAddressRecords Wert in der Organization.OrgDbOrgSettings Spalte zu überprüfen.
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')
}
Massenlöschung leerer Kundenadressdatensätze
Nachdem Sie die Erstellung leerer Adressdatensätze deaktiviert und das Löschen von Adressdatensätzen aktiviert haben, verwenden Sie die folgenden Beispielfunktionen, um leere customeraddress Datensätze mithilfe der BulkDelete Nachricht asynchron zu löschen.
Massenlöschcodebeispiele
Diese Funktionen basieren auf den editierbaren Spalten/Attributen "Address (CustomerAddress)" und schließen keine benutzerdefinierten Spalten ein, die möglicherweise in Ihrer Umgebung vorhanden sind. Sie möchten diese Abfragen möglicherweise ändern, wenn Sie Ihre benutzerdefinierten Spalten einbinden möchten.
Die Start-BulkDeleteEmptyCustomerAddressRecords PowerShell-Funktion erstellt einen Systemauftrag zum Löschen leerer customeraddress Datensätze mithilfe des befehls Microsoft Power Platform CLIpac data bulk-delete schedule.
Diese Funktion hängt von dem beispiel Test-IsDeleteAddressRecordsEnabled und Test-IsEmptyAddressRecordCreationDisabled den Funktionen ab, die unter "Erkennen" beschrieben werden, ob das Löschen von Adressdatensätzen aktiviert ist , und erkennen Sie, ob die Erstellung leerer Adressdatensätze deaktiviert ist. Die Funktion erstellt den Auftrag nur, wenn beide Einstellungen zulassen, dass alle leeren Kundenadressdatensätze gelöscht werden, und es wird verhindert, dass neue leere Datensätze erstellt werden.
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'
}