Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As tabelas de clientes do Microsoft Dataverse (account, contact, e customeraddress) armazenam relações com clientes, dados de contacto e informações de morada e envio. Este artigo explica como estas tabelas se relacionam e como gerir registos de endereços de clientes embutidos e vazios.
Tabela de contas
A tabela de conta é uma das tabelas no Dataverse à qual a maioria das outras tabelas são anexadas ou associadas como primárias. No Dataverse, uma conta representa uma empresa com a qual a unidade de negócios tem um relacionamento. As informações incluídas em uma conta são todas as informações de contato relevantes, informações da empresa, categoria, tipo de relacionamento e informações de endereço. Outras informações aplicáveis incluem os seguintes itens:
- Uma conta pode ser principal para a maioria dos tipos de tabela, incluindo outra conta.
- Uma conta pode ser uma tabela independente.
- Uma conta só pode ter uma conta como conta principal.
- As contas podem ter várias contas subordinadas e contactos subordinados.
O gerenciamento de contas é um dos conceitos importantes do gerenciamento de relacionamento com o cliente entre empresas (Dynamics 365) porque uma organização quer ver todas as atividades que tem com outra empresa. Todas estas atividades reúnem-se ao nível da conta. Consultar a referência da tabela de contas.
Tabela de contactos
No Dataverse, um contato representa uma pessoa, geralmente um indivíduo, com quem uma unidade de negócios tem um relacionamento, como um cliente, um fornecedor ou um colega. A tabela de contatos é uma das tabelas às quais a maioria das outras tabelas está vinculada. Um contacto pode ser uma tabela autónoma. Nesta tabela estão incluídas informações profissionais, pessoais e familiares, além de vários endereços. Exiba a referência da tabela de contatos.
Tanto as contas como os contactos fazem parte da gestão de clientes e estão relacionados entre si das seguintes formas:
- Um contacto pode ser um principal de qualquer outra tabela, exceto de contas e contactos.
- Um contacto pode ter apenas uma conta como o seu principal.
- Um contacto pode ser marcado como a pessoa principal de contacto de uma conta ao definir a
Account.PrimaryContactIdcoluna.
A tabela de contatos armazena informações sobre uma pessoa, como endereço de e-mail, endereço e números de telefone. Também inclui outras informações relacionadas, como o aniversário da pessoa ou a data de aniversário. Dependendo do tipo de clientes que uma unidade de negócio tem, ela precisa apenas de contatos, ou contatos e contas, para dar uma visão completa de seus clientes.
Vincular tabelas como atividades e notas à tabela permite que o contact usuário veja toda a comunicação que o usuário teve com um cliente, todas as ações que o usuário tomou em nome do cliente e todas as informações que o usuário precisa sobre o cliente.
Tabela Endereço do Cliente
Esta tabela contém mais informações de endereço e envio para registros de clientes (conta e contato). Por defeito, o Dataverse cria pelo menos dois customeraddress registos nesta tabela quando se cria um novo registo de cliente, mesmo quando não há dados para esses registos.
Aprenda como pode mudar este comportamento.
Pode aceder a todos os customeraddress registos relacionados com registos de contas e contactos através das Account_CustomerAddress relações e.Contact_CustomerAddress Ambas as relações usam a consulta parent. A parentidtypecode coluna indica o tipo de registo do cliente a que o endereço está relacionado.
Dados de endereço incorporados aos registros de clientes
Pode obter ou modificar os dados dos dois ou dos três registos customeraddress incorporados no registo do cliente.
- Os registros de conta têm colunas
address1_addressideaddress2_addressid. - Os registros de contato têm colunas
address1_addressid,address2_addressideaddress3_addressid.
Estas colunas armazenam customeraddressid valores. Outras colunas do cliente, cada uma com prefixo address1*, address2*, ou address3*, contêm a informação de endereço correspondente da customeraddress tabela.
A customeraddressaddressnumber coluna indica qual o endereço aplicável às colunas do registo do cliente principal. Não é possível definir a addressnumber coluna como um valor usado por outro customeraddress registro relacionado ao mesmo cliente pai. Você pode definir um valor existente addressnumber como 0 ou nulo e, em seguida, alterar o valor de outro registro se quiser trocar a posição relativa dos registros pelos registros do cliente. Embora o valor addressnumber seja incrementado para cada registo criado para um cliente, além de controlar a respetiva posição de endereço incorporado no registo do cliente (1, 2 ou 3), o valor da coluna addressnumber não é usado para nenhuma outra finalidade.
O Dataverse apenas atualiza esses customeraddress registros por meio das colunas de registro de cliente correspondentes, em vez de atualizar as customeraddress linhas diretamente. No entanto, qualquer pessoa pode editar estes registos como registos customeraddress ou adicionar mais registos customeraddress associados ao registo account ou contact que não estejam incorporados nos registos de conta e contacto.
A exclusão de linhas de endereço do cliente incorporadas não é permitida
Por defeito, se tentar eliminar um dos registos incorporados customeraddress que o address1_addressid, address2_addressid, ou address3_addressid referenciam para um registo de cliente, recebe um erro como a seguinte mensagem de erro:
Nome:
CannotDeleteDueToAssociation
Código:0x80040227
Número:-2147220953
Mensagem: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
Saiba como pode alterar este comportamento
Desativar a criação de registros vazios
Cada linha na customeraddress tabela conta para a capacidade do Dataverse pela qual paga, por isso talvez queiras minimizar este custo.
Você pode dizer ao Dataverse para não criar linhas de tabela vazias customeraddress para cada registro de cliente alterando a configuração Desabilitar criação de registro de endereço vazio no centro de administração da Power Platform. Antes de alterar este comportamento, considere se já tem personalizações que dependam do comportamento padrão.
Saiba mais sobre este cenário.
Enquanto essa configuração estiver ativada, nenhuma nova linha de tabela vazia customeraddress será criada quando novos registros de clientes forem criados. Os registros só são criados se a carga de entrada contiver dados de endereço. Normalmente, a carga útil inclui apenas colunas com dados. Se não houver dados para as colunas, as colunas não serão incluídas no payload e os valores serão nulos quando o registo for guardado. No entanto, se a carga contiver colunas de endereço com valores definidos como nulos, o endereço será criado com valores nulos. Se você continuar a ver registros vazios sendo criados, verifique como eles são criados e se esse aplicativo cliente está enviando dados de coluna com valores nulos.
Se a configuração Desabilitar criação de registro de endereço vazio estiver desativada, o comportamento padrão será retomado. Ativar essa configuração não exclui nenhuma linha de tabela existente customeraddress . Voltar a ativar esta definição depois de ter sido desativada não recria registos que não foram criados.
Detetar se a criação de registro de endereço vazio está desabilitada
Estas funções de exemplo mostram como detetar se a configuração Desabilitar criação de registro de endereço vazio está habilitada no ambiente.
Esta Test-IsEmptyAddressRecordCreationDisabled função PowerShell utiliza o comando CLIpac env list-settingsda Microsoft Power Platform para verificar um valor na Organization.OrgDbOrgSettings coluna.
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')
}
Excluir registros de endereço incorporados
Por defeito, não pode eliminar linhas de tabelas embutidas customeraddress que o address1_addressid, address2_addressid, ou address3_addressid as colunas nas tabelas do cliente referenciam. Para mais informações, veja Não é permitida a eliminação de linhas de endereços de cliente incorporadas.
A configuração Habilitar exclusão de registros de endereço no centro de administração da Power Platform altera esse comportamento. Saiba mais sobre este cenário.
Detetar se a exclusão de registros de endereço está habilitada
Estas funções de exemplo mostram como detetar se a configuração Habilitar exclusão de registros de endereço está habilitada no ambiente.
Esta Test-IsDeleteAddressRecordsEnabled função PowerShell utiliza o comando CLIpac env list-settings da Microsoft Power Platform para verificar um EnableDeleteAddressRecords valor na Organization.OrgDbOrgSettings coluna.
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')
}
Exclusão em massa de registros de endereço de cliente vazios
Depois de desativar a criação de registos de endereço vazio e permitir a eliminação de registos de endereço, use as seguintes funções de exemplo para eliminar assíncronamente registos vazios customeraddress usando a BulkDelete mensagem.
Exemplos de código de eliminação em massa
Estas funções baseiam-se nas Colunas/atributos graváveis de Endereço (CustomerAddress) e não incluem colunas personalizadas que possam estar no seu ambiente. Talvez você queira alterar essas consultas se precisar incluir suas colunas personalizadas.
A Start-BulkDeleteEmptyCustomerAddressRecords função PowerShell cria um trabalho de sistema para apagar registos vazios customeraddress usando o comando CLIpac data bulk-delete scheduleda Microsoft Power Platform.
Esta função depende do exemplo Test-IsDeleteAddressRecordsEnabled e Test-IsEmptyAddressRecordCreationDisabled das funções descritas em Detetar se a eliminação de registos de endereço está ativada e Detectar se a criação de registos de endereço vazio está desativada, respetivamente. A função só cria o trabalho quando ambas as definições permitem que todos os registos de endereço de cliente vazios sejam eliminados e impedem a criação de novos registos vazios.
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'
}