Inspecionar o componente de ER configurado para evitar problemas de runtime
Todos os formatos de Relatório eletrónico (ER) e componentes de mapeamento de modelos podem ser validados no momento do design. Durante esta validação, é executada uma verificação de consistência para ajudar a prevenir problemas de runtime que possam ocorrer, tais como erros de execução e degradação do desempenho. Para cada problema encontrado, a verificação fornece o caminho de um elemento problemático. Para alguns problemas, está disponível uma correção automática.
Por predefinição, a validação é aplicada automaticamente nos seguintes casos para uma configuração ER que contém os componentes ER anteriormente mencionados:
- importar uma nova versão de uma configuração ER para a sua instância do Microsoft Dynamics 365 Finance.
- alterar o estado da configuração ER editável de Rascunho para Concluído.
- volta a basear uma configuração ER editável ao aplicar uma nova versão base.
Pode executar explicitamente esta validação. Selecione uma das três opções seguintes e siga os passos que são fornecidos:
Opção 1:
- Aceda a Administração da organização > Relatórios eletrónicos > Configurações.
- Na árvore de configurações no painel esquerdo, selecione a configuração ER desejada que contém o formato ER ou o componente de mapeamento do modelo ER.
- No Separador Rápido Versões, selecione a versão desejada da configuração ER selecionada.
- No Painel de Ações, selecione Validar.
Opção 2, para um formato ER:
- Aceda a Administração da organização > Relatórios eletrónicos > Configurações.
- Na árvore de configurações no painel esquerdo, selecione a configuração ER desejada que contém o componente do formato ER.
- No Separador Rápido Versões, selecione a versão desejada da configuração ER selecionada.
- No Painel de Ações, selecione Estruturador.
- Na página Estruturador de formato, no painel de Ações, selecione Validar.
Opção 3, para um mapeamento de modelo ER:
- Aceda a Administração da organização > Relatórios eletrónicos > Configurações.
- Na árvore de configurações no painel esquerdo, selecione a configuração ER desejada que contém o componente de mapeamento do modelo ER.
- No Separador Rápido Versões, selecione a versão desejada da configuração ER selecionada.
- No Painel de Ações, selecione Estruturador.
- Na página Mapeamento de modelo para origem de dados, no Painel de Ações, selecione Estruturador.
- Na página Estruturador do mapeamento de modelo, no Painel de Ações, selecione Validar.
Para saltar a validação quando a configuração for importada, siga estes passos.
- Aceda a Administração da organização > Relatórios eletrónicos > Configurações.
- Na página Configurações, no Painel de Ações, no separador Configurações, no grupo Definições avançadas, selecione Parâmetros de utilizador.
- Defina a opção Validar a configuração após a importação para Não.
Para saltar a validação quando alterar ou voltar a basear o estado da versão, siga estes passos.
- Aceda a Administração da organização > Relatórios eletrónicos > Configurações.
- Na página Configurações, no Painel de Ações, no separador Configurações, no grupo Definições avançadas, selecione Parâmetros de utilizador.
- Defina a opção Saltar validação ao alterar e voltar a basear o estado da configuração para Sim.
O ER utiliza as seguintes categorias para agrupar inspeções de verificação de consistência:
- Executável – inspeções que detetam problemas críticos que podem ocorrer em runtime. Estes problemas estão sobretudo no nível de Erro.
- Desempenho – inspeções que detetam problemas que podem causar uma execução ineficiente de componentes ER configurados. Estes problemas estão sobretudo no nível de Aviso.
- Integridade dos dados – inspeções que detetam problemas que podem causar perda de dados ou problemas de runtime. Estes problemas estão sobretudo no nível de Aviso.
Lista de inspeções
A tabela seguinte fornece uma visão geral das inspeções que o ER fornece. Para obter mais informações sobre estas inspeções, utilize as ligações da primeira coluna para ir às secções relevantes deste tópico. Estas secções explicam os tipos de componentes a que o ER fornece inspeções e como pode reconfigurar componentes ER para ajudar a prevenir problemas.
Nome | Categoria | Nível | Mensagem |
---|---|---|---|
Conversão tipo | Executável | Erro |
Não é possível converter a expressão do <tipo> tipo para o campo do <tipo> tipo. Erro de runtime: exceção para tipo |
Compatibilidade tipo | Executável | Erro |
A expressão configurada não pode ser utilizada como o enlace do elemento de formato atual para uma origem de dados, uma vez que esta expressão devolve valor do <tipo> tipo de dados que está fora do âmbito dos tipos de dados que são suportados pelo elemento atual de formato de <tipo> tipo. Erro de runtime: exceção de tipo |
Elemento de configuração em falta | Executável | Erro |
Caminho não encontrado <caminho>. Erro de runtime: elemento do <caminho> de configuração não encontrado |
Executável de uma expressão com a função FILTER | Executável | Erro |
A expressão da lista da função FILTER não é consultável. Erro de runtime: a filtragem não é suportada. Valide a configuração para obter mais detalhes sobre isto. |
Executável de uma origem de dados GROUPBY | Executável | Erro | O <caminho> caminho não suporta a consulta. |
Executável | Erro |
Agrupar por função não pode ser executado com consulta. Erro de runtime: agrupar por função não pode ser executado com consulta. |
|
Executável de uma origem de dados JOIN | Executável | Erro |
Não é possível associar um <caminho> de lista que não é um filtro de consulta. Erro de runtime: a função origem de dados adicionada deve ser um campo calculado da expressão de filtro que foi incorretamente chamado. |
Preferência da função FILTER vs WHERE | Desempenho | Aviso | A utilização da função FILTER para a expressão é preferível do que WHERE do ponto de vista do desempenho. Selecione Corrigir para a substituir automaticamente. |
Preferência da função ALLITEMSQUERY vs ALLITEMS | Desempenho | Aviso | A utilização da função ALLITEMSQUERY para a expressão é preferível do que ALLITEMS do ponto de vista do desempenho. Selecione Corrigir para a substituir automaticamente. |
Consideração de casos de lista vazia | Executável | Aviso |
O <caminho> de lista não tem qualquer verificação para o caso da lista vazia, o que pode resultar num erro de runtime. Adicione uma verificação para o caso da lista vazia. Erro de runtime: a lista está vazia no <caminho> Potencial problema: a linha está a ser povoada enquanto uma origem de dados é povoada a partir de vários registos |
Executável de uma expressão com a função FILTER (colocação em cache) | Executável | Erro |
A função FILTER não pode ser aplicada ao tipo selecionado de origem de dados. Uma origem de dados do tipo de registos de tabela só é aplicável quando não está em cache e não tem origens de dados aninhadas e manualmente adicionadas. Erro de runtime: a filtragem não é suportada. Valide a configuração para obter mais detalhes sobre isto. |
Enlace em falta | Executável | Aviso |
O <caminho> caminho não tem enlace a qualquer origem de dados na utilização do mapeamento do modelo. Erro de runtime: O <caminho> caminho não é dependente |
Modelo não associado | Integridade dos dados | Aviso | O <nome> do ficheiro está ligado a nenhum componente de ficheiro e será removido após alterar o estado da versão de configuração. |
Formato não sincronizado | Integridade dos dados | Aviso | O <nome do componente> de nome definido não existe no <nome da folha> da folha de excel |
Formato não sincronizado | Integridade dos dados | Aviso |
A etiqueta <Controlo de conteúdo da palavra etiquetada> não existe no ficheiro do modelo do Word Erro de runtime: A etiqueta <Controlo de conteúdo da palavra etiquetada> não existe no ficheiro do modelo do Word. |
Sem mapeamento predefinido | Integridade dos dados | Erro |
Existe mais de um modelo de mapeamento para o modelo de dados <nome do modelo (descritor de raiz)> nas configurações <nomes de configuração separados por vírgula>. Defina uma das configurações como predefinição Erro de runtime: existe mais de um modelo de mapeamento para o modelo de dados <nome do modelo (descritor de raiz)> nas configurações <nomes de configuração separados por vírgula>. Defina uma das configurações como predefinição. |
Definição inconsistente dos componentes do Cabeçalho ou do Rodapé | Integridade dos dados | Erro |
Cabeçalhos/rodapés (<tipo de componente: Cabeçalho ou Rodapé>) são inconsistentes Runtime: o último componente configurado é utilizado em runtime se a versão de rascunho do formato ER configurado for executada. |
Definição inconsistente do componente de página | Integridade dos dados | Erro | Existem mais de dois componentes de intervalo sem replicação. Remova os componentes desnecessários. |
Executável de uma expressão com a função ORDERBY | Executável | Erro |
A expressão da lista da função ORDERBY não é consultável. Erro de runtime: a ordenação não é suportada. Valide a configuração para obter mais detalhes sobre isto. |
Conversão tipo
O ER verifica se o tipo de dados de um campo de modelo de dados é compatível com o tipo de dados de uma expressão que é configurada como o enlace desse campo. Se os tipos de dados forem incompatíveis, ocorre um erro de validação no estruturador de mapeamento do modelo ER. A mensagem que recebe diz que o ER não pode converter uma expressão do tipo A para um campo do tipo B.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar simultaneamente o modelo de dados ER e os componentes de mapeamento do modelo ER.
Na árvore do modelo de dados, adicione um campo chamado X e selecione Número inteiro como o tipo de dados.
No estruturador de mapeamento do modelo, no painel de Origem de dados, adicione uma origem de dados do tipo Campo calculado.
Nomeie a nova origem de dados Y e configure-a de modo a que contenha a expressão
INTVALUE(100)
.Vincule X a Y.
No estruturador de modelos de dados, altere o tipo de dados do campo X de Número inteiro para Int64.
Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página do Estruturador de mapeamento do modelo.
Selecione Validar para inspecionar o componente de mapeamento do modelo da configuração ER selecionado na página Configurações.
Note que ocorre um erro de validação. A mensagem afirma que o valor do tipo Número inteiro que a expressão
INTVALUE(100)
da origem de dados Y devolve não pode ser armazenado no campo modelo de dados X do tipo Int64.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar um formato configurado para utilizar o mapeamento do modelo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Atualizar a estrutura do modelo de dados pela alteração do tipo de dados do campo do modelo de dados de modo a que corresponda ao tipo de dados da expressão configurada para o enlace desse campo. Para o exemplo anterior, o tipo de dados do campo X deve ser alterado de novo para Número inteiro.
Opção 2
Atualizar o mapeamento do modelo pela alteração da expressão da origem de dados que está dependente do campo do modelo de dados. Para o exemplo anterior, a expressão da origem de dados Y deve ser alterada para INT64VALUE(100)
.
Compatibilidade tipo
O ER verifica se o tipo de dados de um elemento de formato é compatível com o tipo de dados de uma expressão que é configurada como o enlace desse elemento de formato. Se os tipos de dados forem incompatíveis, ocorre um erro de validação no Estruturador de operações ER. A mensagem que recebe afirma que a expressão configurada não pode ser utilizada como o enlace do elemento de formato atual para uma origem de dados, porque a expressão devolve um valor do tipo de dados A que está fora do âmbito dos tipos de dados que são suportados pelo elemento atual de formato de tipo B.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar simultaneamente o modelo de dados ER e os componentes de formato ER.
Na árvore do modelo de dados, adicione um campo chamado X e selecione Número inteiro como o tipo de dados.
Na árvore de estrutura de formato, adicione um elemento de formato do tipo Numérico.
Nomeie o novo elemento de formato Y. No campo Tipo numérico, selecione Número inteiro como o tipo de dados.
Vincule X a Y.
Na árvore de estrutura de formato, altere o tipo de dados do elemento formato Y de Número inteiro para Int64.
Selecione Validar para inspecionar o componente de formato editável na página do Estruturador de formato.
Note que ocorre um erro de validação. A mensagem afirma que a expressão configurada só pode aceitar valores Int64. Portanto, o valor do campo de modelo de dados X do tipo Número inteiro não pode ser introduzido no elemento de formato Y.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Atualizar a estrutura do formato pela alteração do tipo de dados do elemento de formato Numérico de modo a que corresponda ao tipo de dados da expressão que configurou para o enlace desse elemento. No exemplo anterior, o valor Tipo numérico do elemento de formato X deve ser alterado de novo para Número inteiro.
Opção 2
Atualize o mapeamento de formato do elemento do formato X alterando a expressão de model.X
para INT64VALUE(model.X)
.
Elemento de configuração em falta
O ER verifica se as expressões de enlace contêm apenas origens de dados configuradas no componente ER editável. Para cada enlace que contenha uma origem de dados em falta no componente ER editável, ocorre um erro de validação no estruturador de operações ER ou no estruturador de mapeamento do modelo ER.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar simultaneamente o modelo de dados ER e os componentes de mapeamento do modelo ER.
Na árvore do modelo de dados, adicione um campo chamado X e selecione Número inteiro como o tipo de dados.
No estruturador de mapeamento do modelo, no painel de Origem de dados, adicione uma origem de dados do tipo Campo calculado.
Nomeie a nova origem de dados Y e configure-a de modo a que contenha a expressão
INTVALUE(100)
.Vincule X a Y.
No estruturador de mapeamento de modelos, no painel Origens de dados, elimine a origem de dados Y.
Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página do Estruturador de mapeamento do modelo.
Note que ocorre um erro de validação. A mensagem afirma que o enlace do campo do modelo de dados X contém o caminho que se refere à origem de dados Y, mas esta origem de dados não foi encontrada.
Resolução automática
Selecione Desvincular para corrigir automaticamente este problema pela remoção do enlace da origem de dados em falta.
Resolução manual
Opção 1
Desvincule o campo do modelo de dados X para parar de se referir à origem de dados Y inexistente.
Opção 2
No estruturador de mapeamento de modelos, no painel Origens de dados, adicione novamente a origem de dados Y.
Executável de uma expressão com a função FILTER
A função incorporada FILTER de ER é utilizada para aceder a tabelas de aplicações, vistas ou entidades de dados, colocando uma única chamada SQL para obter os dados necessários como uma lista de registos. Uma origem de dados do tipo Lista de registos é utilizada como argumento desta função e especifica a origem da aplicação para a chamada. O ER verifica se uma consulta SQL direta pode ser estabelecida a uma origem de dados que é referida na função FILTER
. Se não for possível estabelecer uma consulta direta, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe diz que a expressão ER que inclui a função FILTER
não pode ser executada em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Campo calculado.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
FILTER(Vendor, Vendor.AccountNum="US-101")
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a expressão
FILTER(Vendor, Vendor.AccountNum="US-101")
na origem de dados Fornecedor pode ser consultada.Modifique a origem de dados do Fornecedor adicionando um campo aninhado do tipo Campo calculado para obter o número de conta de fornecedor aparado.
Nomeie o novo campo aninhado $AccNumber e configure-o de modo a que contenha a expressão
TRIM(Vendor.AccountNum)
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a expressão
FILTER(Vendor, Vendor.AccountNum="US-101")
na origem de dados Fornecedor pode ser consultada.Note que ocorre um erro de validação, porque a origem de dados do Fornecedor contém um campo aninhado do tipo Campo calculado que não permite que a expressão da origem de dados FilteredVendor seja traduzida para a instrução direta do SQL.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar um formato configurado para utilizar o mapeamento do modelo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Em vez de adicionar um campo aninhado do tipo Campo calculado à origem de dados Fornecedor, adicione o campo aninhado $AccNumber à origem de dados FilteredVendor e configure-o de modo a que contenha a expressão TRIM(FilteredVendor.AccountNum)
. Desta forma, a expressão FILTER(Vendor, Vendor.AccountNum="US-101")
pode ser executada ao nível SQL e calcular o campo aninhado $AccNumber depois.
Opção 2
Altere a expressão da origem de dados FilteredVendor de FILTER(Vendor, Vendor.AccountNum="US-101")
para WHERE(Vendor, Vendor.AccountNum="US-101")
. Não recomendamos que altere a expressão para uma tabela que tenha um grande volume de dados (tabela transacional), porque todos os registos serão recolhidos e a seleção dos registos necessários será feita na memória. Portanto, esta abordagem pode causar um fraco desempenho. Para mais informações, consulte a função WHERE ER.
Executável de uma origem de dados GROUPBY
A origem de dados GROUPBY divide o resultado da consulta em grupos de registos, geralmente com o objetivo de fazer uma ou mais agregações em cada grupo. Todas as origens de dados GROUPBY podem ser configuradas de modo a que sejam executadas ao nível da base de dados ou na memória. Quando uma origem de dados GROUPBY é configurada de modo a ser executada ao nível da base de dados, o ER verifica se uma consulta direta do SQL pode ser estabelecida a uma origem de dados que é referida nessa origem de dados. Se não for possível estabelecer uma consulta direta, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe afirma que a origem de dados configurada GROUPBY não pode ser executada em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Trans. No campo Tabela, selecione VendTrans para especificar que esta origem de dados irá solicitar a tabela VendTrans.
Adicione uma origem de dados do tipo Agrupar por.
Nomeie a nova origem de dados GroupedTrans e configure-a da seguinte forma:
- Selecione a origem de dados Trans como a origem de registos que devem ser agrupados.
- No campo Localização de execução, selecione Consulta para especificar que pretende executar esta origem de dados ao nível da base de dados.
Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a origem de dados configurada GroupedTrans pode ser consultada.
Modifique a origem de dados Trans adicionando um campo aninhado do tipo Campo calculado para obter o número de conta de fornecedor aparado.
Nomeie a nova origem de dados $AccNumber e configure-a de modo a que contenha a expressão
TRIM(Trans.AccountNum)
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a origem de dados configurada GroupedTrans pode ser consultada.
Note que ocorre um erro de validação, porque a origem de dados do Trans contém um campo aninhado do tipo Campo calculado que não permite que a chamada para a origem de dados GroupedTrans seja traduzida para a instrução direta do SQL.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar um formato configurado para utilizar o mapeamento do modelo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Em vez de adicionar um campo aninhado do tipo Campo calculado à origem de dados Trans, adicione o campo aninhado $AccNumber ao item GroupedTrans.lines da origem de dados GroupedTrans e configure-o de modo a que contenha a expressão TRIM(GroupedTrans.lines.AccountNum)
. Desta forma, a origem de dados GroupedTrans pode ser executada ao nível SQL e calcular o campo aninhado $AccNumber depois.
Opção 2
Altere o valor do campo Localização de execução para a origem de dados GroupedTrans de Consulta para Na memória. Não recomendamos que altere valor para uma tabela que tenha um grande volume de dados (tabela transacional), porque todos os registos serão recolhidos e o agrupamento e agregação serão feitos na memória. Portanto, esta abordagem pode causar um fraco desempenho.
Executável de uma origem de dados JOIN
A origem de dados JOIN combina registos de duas ou mais tabelas de bases de dados, com base em campos relacionados. Todas as origens de dados JOIN podem ser configuradas de modo a que sejam executadas ao nível da base de dados ou na memória. Quando uma origem de dados JOIN é configurada de modo a ser executada ao nível da base de dados, o ER verifica se uma consulta direta do SQL pode ser estabelecida a origens de dados que são referidas nessa origem de dados. Se não for possível estabelecer uma consulta direta de SQL com, pelo menos, uma origem de dados referenciada, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe afirma que a origem de dados configurada JOIN não pode ser executada em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Trans. No campo Tabela, selecione VendTrans para especificar que esta origem de dados irá solicitar a tabela VendTrans.
Adicione uma origem de dados do tipo de Campo calculado como o campo aninhado da origem de dados Fornecedor.
Nomeie a nova origem de dados FilteredTrans e configure-a de modo a que contenha a expressão
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
.Adicione uma origem de dados do tipo Associar.
Nomeie a nova origem de dados JoinedList e configure-a da seguinte forma:
- Adicione a origem de dados Fornecedor como o primeiro conjunto de registos a associar.
- Adicione a origem de dados Vendor.FilteredTrans como o segundo conjunto de registos a associar. Selecione INTERNO como o tipo.
- No campo Executar, selecione Consulta para especificar que pretende executar esta origem de dados ao nível da base de dados.
Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a origem de dados configurada JoinedList pode ser consultada.
Altere a expressão da origem de dados Vendor.FilteredTrans de
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
paraWHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a origem de dados configurada JoinedList pode ser consultada.
Note que ocorre um erro de validação, porque a expressão da origem de dados VendorFileteredTrans não pode ser traduzida para a chamada direta do SQL. Além disso, a chamada direta do SQL não permite que a chamada para a origem de dados da JoinedList seja traduzida para a instrução direta do SQL.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar um formato configurado para utilizar o mapeamento do modelo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Altere a expressão da origem de dados Vendor.FilteredTrans de WHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
de novo para FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
, tal como aconselhado pelo aviso.
Opção 2
Altere o valor do campo Executar para a origem de dados JoinedList de Consulta para Na memória. Não recomendamos que altere valor para uma tabela que tenha um grande volume de dados (tabela transacional), porque todos os registos serão recolhidos e a associação ocorre na memória. Portanto, esta abordagem pode causar um fraco desempenho. É mostrado um aviso de validação para o informar sobre estr risco.
Preferência da função FILTER vs WHERE
A função incorporada FILTER de ER é utilizada para aceder a tabelas de aplicações, vistas ou entidades de dados, colocando uma única chamada SQL para obter os dados necessários como uma lista de registos. A função WHERE recolhe todos os registos da origem de dados e regista a seleção na memória. Uma origem de dados do tipo Lista de registos é utilizada como argumento de ambas as funções e especifica a origem de obtenção dos registios. O ER verifica se uma chamada SQL direta pode ser estabelecida para uma origem de dados que é referida na função WHERE. Se não for possível estabelecer uma chamada direta, ocorre um aviso de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe recomenda que utilize a função FILTER em vez da função WHERE para ajudar a melhorar a eficiência.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Trans. No campo Tabela, selecione VendTrans para especificar que esta origem de dados irá solicitar a tabela VendTrans.
Adicione uma origem de dados do tipo de Campo calculado como o campo aninhado da origem de dados Fornecedor.
Nomeie a nova origem de dados FilteredTrans e configure-a de modo a que contenha a expressão
WHERE(Trans, Trans.AccountNum="US-101")
.Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Campo calculado.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
WHERE(Vendor, Vendor.AccountNum="US-101")
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página do Estruturador de mapeamento do modelo.
Note que os avisos de validação recomendam que utilize a função FILTER em vez da função WHERE para as origens de dados FilteredVendor e FilteredTrans.
Resolução automática
Selecione Corrigir para substituir automaticamente a função WHERE pela função FILTER na expressão de todas as origens de dados que aparecem na grelha no separador Avisos para este tipo de inspeção.
Em alternativa, pode selecionar a linha para um único aviso na grelha e, em seguida, selecionar a Correção selecionada. Neste caso, a expressão é automaticamente alterada apenas na origem de dados que é mencionada no aviso selecionado.
Resolução manual
Pode ajustar manualmente as expressões de todas as origens de dados na grelha de validação substituindo a função WHERE pela função FILTER.
Preferência da função ALLITEMSQUERY vs ALLITEMS
As funções ER integradas ALLITEMS e ALLITEMSQUERY devolvem um valor achatado da Lista de registos que consiste de uma lista de registos que representam todos os itens que correspondem ao caminho especificado. O ER verifica se uma chamada SQL direta pode ser estabelecida para uma origem de dados que é referida na função ALLITEMS. Se não for possível estabelecer uma chamada direta, ocorre um aviso de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe recomenda que utilize a função ALLITEMSQUERY em vez da função ALLITEMS para ajudar a melhorar a eficiência.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Campo calculado para obter registos de vários fornecedores.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
FILTER(Vendor, OR(Vendor.AccountNum="US-101",Vendor.AccountNum="US-102"))
.Adicione uma origem de dados do tipo Campo calculado para obter as transações de todos os fornecedores filtrados.
Nomeie a nova origem de dados FilteredVendorTrans e configure-a de modo a que contenha a expressão
ALLITEMS(FilteredVendor.'<Relations'.'VendTrans.VendTable_AccountNum')
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página do Estruturador de mapeamento do modelo.
Note que ocorre um aviso de validação. A mensagem recomenda que utilize a função ALLITEMSQUERY em vez da função ALLITEMS para a origem de dados FilteredVendorTrans.
Resolução automática
Selecione Corrigir para substituir automaticamente a função ALLITEMS pela função ALLITEMSQUERY na expressão de todas as origens de dados que aparecem na grelha no separador Avisos para este tipo de inspeção.
Em alternativa, pode selecionar a linha para um único aviso na grelha e, em seguida, selecionar a Correção selecionada. Neste caso, a expressão é automaticamente alterada apenas na origem de dados que é mencionada no aviso selecionado.
Resolução manual
Pode ajustar manualmente as expressões de todas as origens de dados mencionadas na grelha de validação substituindo a função ALLITEMS pela função ALLITEMSQUERY.
Consideração de casos de lista vazia
Pode configurar o seu formato ER ou componente de mapeamento de modelo para obter o valor de campo de uma origem de dados do tipo Lista de registos. O ER verifica se o seu design considera o caso em que uma origem de dados chamada não contém registos (isto é, está vazia), para evitar erros de runtime quando um valor é obtido de um campo de registo inexistente.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar simultaneamente o modelo de dados ER, os componentes de mapeamento do modelo ER e os componentes de formato ER.
Na árvore modelo de dados, adicione um item raiz que se chama Root3.
Modifique o item Root3 adicionando um item aninhado do tipo Lista de registos.
Nomeie o novo item aninhado Fornecedor.
Modifique o item Fornecedor da seguinte forma:
- Adicione um campo aninhado do tipo Cadeia, e nomeie-o Nome.
- Adicione um campo aninhado do tipo Cadeia, e nomeie-o AccountNumber.
No estruturador de mapeamento do modelo, no painel de Origens de dados, adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabela.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Geral \ Parâmetro de entrada de utilizador para procurar uma conta de fornecedor na caixa de diálogo de runtime.
Nomeie a nova origem de dados RequestedAccountNum. No campo Etiqueta, introduza Número de conta de fornecedor. No campo Nome do tipo de dados de Operações, deixe o valor predefinido Descrição.
Adicione uma origem de dados do tipo Campo calculado para filtrar um fornecedor sobre o qual é questionado.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Vincule os itens do modelo de dados a origens de dados configuradas da seguinte forma:
- Vincule FilteredVendor a Fornecedor.
- Vincule FilteredVendor.AccountNum a Vendor.AccountNumber.
- Vincule FilteredVendor.'name()' a Vendor.Name.
Na árvore da estrutura de formato, adicione os seguintes itens para gerar um documento de saída no formato XML que contenha os detalhes do fornecedor:
Adicione o elemento XML raiz Instrução.
Para o elemento XML Instrução, adicione o elemento XML aninhado Parte.
Para o elemento XML Parte, adicione os seguintes atributos XML aninhados:
- Nome
- AccountNum
Vincule elementos de formato a origens de dados fornecidas da seguinte forma:
- Vincule o elemento de formato Instrução\Parte\Nome ao campo de origem de dados model.Vendor.Name.
- Vincule o elemento de formato Instrução\Parte\AccountNum ao campo de origem de dados model.Vendor.AccountNumber.
Selecione Validar para inspecionar o componente de formato editável na página do Estruturador de formato.
Note que ocorre um erro de validação. A mensagem indica que pode ser lançado um erro para os componentes do formato Instrução\Parte\Nome e Instrução\Parte\AccountNum em runtime se a lista
model.Vendor
estiver vazia.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso, selecione Executar para executar o formato e selecione o número de conta de um fornecedor inexistente. Como o fornecedor solicitado não existe, a lista model.Vendor
estará vazia (ou seja, não contem registos).
Resolução automática
Para a linha selecionada na grelha no Avisos, pode selecionar Desvincular. O enlace apontado para a coluna Caminho é automaticamente removido dos elementos de formato.
Resolução manual
Opção 1
Pode vincular o elemento de formato Statement\Party\Name ao item de origem de dados model.Vendor
. No runtime, este enlace chama primeiro a origem de dados model.Vendor
. Quando model.Vendor
devolve uma lista de registos vazios, os elementos de formato aninhados não são executados. Portanto, não ocorrem avisos de validação para esta configuração de formato.
Opção 2
Altere o enlace do elemento de formato Instrução\Parte\Nome de model.Vendor.Name
para FIRSTORNULL(model.Vendor).Name
. O enlace atualizado converte condicionalmente o primeiro registo da origem de dados model.Vendor
do tipo Lista de registos para uma nova origem de dados do tipo Registo. Esta nova origem de dados contém o mesmo conjunto de campos.
- Se pelo menos um registo estiver disponível na origem de dados
model.Vendor
, os campos desse registo são preenchidos com os valores dos campos do primeiro registo da origem de dadosmodel.Vendor
. Neste caso, o enlace atualizado devolve o nome do fornecedor. - Caso contrário, todos os campos do registo que são criados são preenchidos com o valor predefinido para o tipo de dados desse campo. Neste caso, a cadeia em branco é devolvida como o valor predefinido do tipo de dados de Cadeia.
Portanto, não ocorrem avisos de validação para o elemento de formato Instrução\Parte\Nome quando está dependente da expressão FIRSTORNULL(model.Vendor).Name
.
Opção 3
Se pretender especificar explicitamente os dados que são introduzidos num documento gerado quando a origem de dados model.Vendor
do tipo Lista de registos não devolve registos (o texto Indisponível neste exemplo), altere o enlace do elemento de formato Instrução\Parte\Nome de model.Vendor.Name
para IF(NOT(ISEMPTY(model.Vendor)), model.Vendor.Name, "Not available")
. Também pode utilizar a expressão IF(COUNT(model.Vendor)=0, model.Vendor.Name, "Not available")
.
Considerações adicionais
A inspeção também o avisa sobre outro potencial problema. Por predefinição, quando vincula dos elementos do formato Instrução\Parte\Nome e Instrução\Parte\AccountNum aos campos apropriados da origem de dados model.Vendor
do tipo Lista de registos, esses enlaces são executados e irão tomar os valores dos campos adequados do primeiro registo da origem de dados model.Vendor
, se essa lista não estiver vazia.
Como não tornou dependente o elemento de formato o Instrução\Parte com a origem de dados model.Vendor
, o elemento Instrução\Parte não será iterado para cada registo da origem de dados model.Vendor
durante a execução do formato. Em vez disso, será preenchido um documento gerado com informações apenas do primeiro registo da lista de registos, se essa lista contiver vários registos. Portanto, pode haver um problema se o formato se destina a preencher um documento gerado com informações sobre todos os fornecedores a partir da origem de dados model.Vendor
. Para corrigir este problema, vincule o elemento Instrução\Parte à origem de dados model.Vendor
.
Executável de uma expressão com a função FILTER (colocação em cache)
Várias funções ER incorporadas, incluindo FILTER e ALLITEMSQUERY são usadas para aceder a tabelas de aplicações, vistas ou entidades de dados, colocando uma única chamada SQL para obter os dados necessários como uma lista de registos. Uma origem de dados do tipo Lista de registos é utilizada como argumento de cada uma destas funções e especifica a origem de uma aplicação para a chamada. O ER verifica se uma chamada SQL direta pode ser estabelecida para uma origem de dados que é referida numa destas funções. Se não for possível estabelecer uma chamada direta porque a origem de dados foi marcada como colocada em cache, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe diz que a expressão ER que contém uma destas funções não pode ser executada em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Geral \ Parâmetro de entrada de utilizador para procurar uma conta de fornecedor na caixa de diálogo de runtime.
Nomeie a nova origem de dados RequestedAccountNum. No campo Etiqueta, introduza Número de conta de fornecedor. No campo Nome do tipo de dados de Operações, deixe o valor predefinido Descrição.
Adicione uma origem de dados do tipo Campo calculado para filtrar um fornecedor sobre o qual é questionado.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Marque a origem de dados do Fornecedor configurada como colocada em cache.
Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página do Estruturador de mapeamento do modelo.
Note que ocorre um erro de validação. A mensagem afirma que a função FILTRO não pode ser aplicada na origem de dados Fornecedor em cache.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar o formato.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Retire a bandeira Em cache da origem de dados Fornecedor. A origem de dados FilteredVendor torna-se então executável, mas a origem de dados Fornecedor que é referida na tabela VendTable será acedida sempre que a origem de dados FilteredVendor for chamada.
Opção 2
Altere a expressão da origem de dados FilteredVendor de FILTER(Vendor, Vendor.AccountNum="US-101")
para WHERE(Vendor, Vendor.AccountNum="US-101")
. Neste caso, a origem de dados Fornecedor que é referida na tabela VendTable só será acedida durante a primeira chamada da origem de dados Fornecedor. No entanto, a seleção dos registos será feita na memória. Portanto, esta abordagem pode causar um fraco desempenho.
Enlace em falta
Ao configurar um componente de formato ER, o modelo de dados ER base é oferecido como origem de dados predefinido para o formato ER. Quando o formato ER configurado é executado, o mapeamento de modelo predefinido para o modelo base é utilizado para preencher o modelo de dados com dados de aplicação. O estruturador de formato ER mostra um aviso se vincular um elemento de formato a um item do modelo de dados que não está dependente de nenhuma origem de dados no mapeamento do modelo que está atualmente selecionado como mapeamento de modelo predefinido para o formato editável. Este tipo de enlace não pode ser executado em runtime, porque o formato que é executado não pode preencher um elemento dependente com dados da aplicação. Portanto, ocorre um erro em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar simultaneamente o modelo de dados ER, os componentes de mapeamento do modelo ER e os componentes de formato ER.
Na árvore modelo de dados, adicione um item raiz que se chama Root3.
Modifique o item Root3 adicionando um novo item aninhado do tipo Lista de registos.
Nomeie o novo item aninhado Fornecedor.
Modifique o item Fornecedor da seguinte forma:
- Adicione um campo aninhado do tipo Cadeia, e nomeie-o Nome.
- Adicione um campo aninhado do tipo Cadeia, e nomeie-o AccountNumber.
No estruturador de mapeamento do modelo, no painel de Origens de dados, adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabela.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Geral \ Parâmetro de entrada de utilizador para inquirir sobre uma conta de fornecedor na caixa de diálogo de runtime.
Nomeie a nova origem de dados RequestedAccountNum. No campo Etiqueta, introduza Número de conta de fornecedor. No campo Nome do tipo de dados de Operações, deixe o valor predefinido Descrição.
Adicione uma origem de dados do tipo Campo calculado para filtrar um fornecedor sobre o qual é questionado.
Nomeie a nova origem de dados FilteredVendor e configure-a de modo a que contenha a expressão
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Vincule os itens do modelo de dados a origens de dados configuradas da seguinte forma:
- Vincule FilteredVendor a Fornecedor.
- Vincule FilteredVendor.AccountNum a Vendor.AccountNumber.
Nota
O campo de modelo de dados Vendor.Name permanece desvinculado.
Na árvore da estrutura de formato, adicione os seguintes itens para gerar um documento de saída no formato XML que contenha os detalhes dos fornecedores sobre os quais são inquiridos:
Adicione o elemento XML raiz Instrução.
Para o elemento XML Instrução, adicione o elemento XML aninhado Parte.
Para o elemento XML Parte, adicione os seguintes atributos XML aninhados:
- Nome
- AccountNum
Vincule os elementos de formato a origens de dados fornecidas da seguinte forma:
- Vincule o elemento de formato Statement\Party ao item de origem de dados
model.Vendor
. - Vincule o elemento de formato Instrução\Parte\Nome ao campo de origem de dados model.Vendor.Name.
- Vincule o elemento de formato Instrução\Parte\AccountNum ao campo de origem de dados model.Vendor.AccountNumber.
- Vincule o elemento de formato Statement\Party ao item de origem de dados
Selecione Validar para inspecionar o componente de formato editável na página do Estruturador de formato.
Note que ocorre um aviso de validação. A mensagem afirma que o campo de origem de dados model.Vendor.Name não está dependente de nenhuma origem de dados no mapeamento do modelo configurado para ser utilizado pelo formato. Portanto, o elemento do formato Instrução\Parte\Nome pode não ser preenchido em runtime, podendo ocorrer uma exceção de runtime.
A seguinte ilustração mostra o erro de runtime que ocorre se ignorar o aviso e selecionar Executar para executar o formato.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Modifique o mapeamento do modelo configurado adicionando um enlace para o campo de origem de dados model.Vendor.Name.
Opção 2
Modifique o formato configurado removendo o enlace para o elemento de formato Instrução\Parte\Nome.
Modelo não associado
Quando configura manualmente um componente de formato ER para utilizar um modelo para gerar um documento de saída, deve adicionar manualmente o elemento Ficheiro\Excel, adicionar o modelo necessário como um anexo do componente editável e selecionar esse acessório no elemento Ficheiro\Excel adicionado. Desta forma, indica que o elemento adicionado irá preencher o modelo selecionado em runtime. Quando configura uma versão de componente de formato no estado Rascunho, pode adicionar vários modelos ao componente editável e, em seguida, selecionar cada modelo no elemento Ficheiro\Excel para executar o formato ER. Desta forma, pode ver como diferentes modelos são preenchidos em runtime Se tiver modelos que não estejam selecionados em elementos Ficheiro\Excel, o estruturador de formato ER avisa que esses modelos serão eliminados da versão componente do formato ER editável quando o seu estado for alterado de Rascunho para Concluído.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de formato ER.
Na árvore de estrutura de formato, adicione o elemento Ficheiro\Excel.
Para o elemento Ficheiro\Excel que acaba de adicionar, adicione um ficheiro de livro do Excel, A.xlsx, como anexo. Use o tipo de documento que está configurado nos Parâmetros ER para especificar o armazenamento de modelos de formato ER.
Para o elemento Ficheiro\Excel, adicione outro ficheiro de livro do Excel, B.xlsx, como anexo. Utilize o mesmo tipo de documento que é utilizado para o ficheiro A do livro.
No elemento Ficheiro\Excel, selecione o ficheiro A do livro.
Selecione Validar para inspecionar o componente de formato editável na página do Estruturador de formato.
Note que ocorre um aviso de validação. A mensagem afirma que o ficheiro do livro B.xlsx não está ligado a nenhum componente e que será removido após a alteração do estado da versão de configuração.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Modifique o formato configurado removendo todos os modelos que não estejam ligados a nenhum elemento Ficheiro\Excel.
Formato não sincronizado
Quando configura um componente de formato ER para utilizar um modelo de Excel para gerar um documento de saída, pode adicionar manualmente o elemento Ficheiro\Excel, adicionar o modelo necessário como um anexo do componente editável e selecionar esse anexo no elemento Ficheiro\Excel adicionado. Desta forma, indica que o elemento adicionado irá preencher o modelo selecionado em runtime. Como o modelo Excel adicionado foi criado externamente, o formato ER editável pode conter nomes Excel que estão em falta no modelo adicionado. O estruturador de formato ER avisa-o sobre quaisquer inconsistências entre as propriedades dos elementos do formato ER que se referem a nomes que não estão incluídos no modelo Excel adicionado.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de formato ER.
Na árvore de estrutura de formato, adicione o elemento Ficheiro\Excel Relatório.
Para o elemento Ficheiro\Excel que acaba de adicionar, adicione um ficheiro de livro do Excel, A.xlsx, como anexo. Use o tipo de documento que está configurado nos Parâmetros ER para especificar o armazenamento de modelos de formato ER.
Importante
Certifique-se de que o livro Excel adicionado não contém o nome ReportTitle.
Adicione o elemento Célula\Excel Título como elemento aninhado do elemento Relatório. No campo Intervalo de Excel, introduza ReportTitle.
Selecione Validar para inspecionar o componente de formato editável na página do Estruturador de formato.
Note que ocorre um aviso de validação. A mensagem diz que o nome ReportTitle não existe na folha Folha1 do modelo Excel que está a usar.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Modifique o formato configurado removendo todos os elementos que se referem aos nomes Excel que faltam no modelo.
Opção 2
Atualize o formato ER editável importando um modelo Excel. A estrutura do formato editável de ER será sincronizada com a estrutura do modelo Excel importado.
Considerações adicionais
Para saber como a estrutura do formato pode ser sincronizada com um modelo ER no editor de modelo da Gestão do documento empresarial, consulte Atualizar a estrutura de um modelo de documento empresarial.
Não sincronizado com um formato de modelo do Word
Quando configura um componente de formato ER para utilizar um modelo de Word para gerar um documento de saída, pode adicionar manualmente o elemento Ficheiro\Excel, adicionar o modelo Word necessário como um anexo do componente editável e selecionar esse anexo no elemento Ficheiro\Excel adicionado.
Nota
Quando o documento Word é anexado, o estruturador de formato ER apresenta o elemento editável como Ficheiro\Word.
Desta forma, indica que o elemento adicionado irá preencher o modelo selecionado em runtime. Como o modelo Word adicionado foi criado externamente, o formato ER editável pode conter nomes referências a controlos de conteúdo do Word que estão em falta no modelo adicionado. O estruturador de formato ER avisa-o sobre quaisquer inconsistências entre as propriedades dos elementos do formato ER que se referem a controlos de conteúdo que não estão incluídos no modelo Word adicionado.
Para um exemplo que mostre como este problema pode ocorrer, consulte Configurar o formato editável para suprimir a secção de resumo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Modifique o formato configurado eliminando a fórmula Removido do elemento de formato mencionado no aviso de validação.
Opção 2
Modifique o modelo de Word ao adicionar a etiqueta necessária ao controlo de conteúdo do Word relevante.
Sem mapeamento predefinido
Quando a inspeção Enlace em falta é feita, os enlaces do formato inspecionado são avaliados em comparação com os enlaces do componente de mapeamento do modelo relevante. Como pode importar várias configurações de mapeamento de modelo ER para a sua instância Financeira e cada configuração pode conter o componente de mapeamento do modelo aplicável, uma configuração deve ser selecionada como a configuração predefinida. Caso contrário, quando tentar executar, editar ou validar o formato ER inspecionado, vai ocorrer uma exceção e recebe a seguinte mensagem: "Existe mais do que um modelo de mapeamento para o modelo de dados <model name (root descriptor)> nas configurações <configuration names separated by comma>. Defina uma das configurações como predefinição."
Para um exemplo que mostra como este problema pode ocorrer e como pode ser corrigido, consulte Gerir vários mapeamentos derivados para uma raiz de modelo único.
Definição inconsistente dos componentes do Cabeçalho ou do Rodapé
Quando configurar um componente de formato ER para utilizar um modelo Excel para gerar um documento de saída, pode adicionar o componente Cabeçalho\Exce para preencher cabeçalhos na parte superior de uma folha de cálculo num livro do Excel. Também pode adicionar o componente Rodapé\Excel para preencher os rodapés na parte inferior de uma folha de cálculo. Para cada componente Cabeçalho\Excel ou Rodapé\Excel que adicionar, tem de definir a propriedade de Aparência do cabeçalho/rodapé para especificar as páginas para as quais o componente é executado. Uma vez que pode configurar vários componentes de Cabeçalho\Excel ou Rodapé\Excel para um único Folha e pode gerar diferentes cabeçalhos ou rodapés para diferentes tipos de páginas numa folha de cálculo do Excel, tem de configurar um único componente Cabeçalho\Excel ou Rodapé\Excel para um valor específico da propriedade aparência do cabeçalho/rodapé. Se mais de um componente Cabeçalho\Excel ou Rodapé\Excel estiver configurado para um valor específico da propriedade aparência do cabeçalho/rodapé, ocorre um erro de validação e recebe a seguinte mensagem de erro: "Cabeçalhos/rodapés (<tipo componente: Cabeçalho ou rodapé>) são inconsistentes."
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Modifique o formato configurado eliminando um dos componentes inconsistentes do Cabeçalho\Excel ou do Rodapé\Excel.
Opção 2
Modifique o valor da propriedade da aparência do cabeçalho/rodapé para um dos componentes inconsistentes Cabeçalho\Excel ou Rodapé\Excel.
Definição inconsistente do componente de página
Quando configurar um componente de formato ER para utilizar um modelo Excel para gerar um documento de saída, pode adicionar o componente Página\Excel para paginar um documento gerado utilizando fórmulas ER. Para cada componente Página\Excel que adicionar, pode adicionar muitos componentes Intervalo aninhados e continuar conforme a seguinte estrutura:
- O primeiro componente de Intervalo aninhado ser configurado de modo a que a propriedade Direção de replicação seja definida para Sem replicação. Este intervalo é usado para fazer cabeçalhos de página em documentos gerados.
- Pode adicionar muitos outros componentes Intervalo aninhados onde a propriedade Direção de replicação está definida para Vertical. Estes intervalos são usadas para preencher documentos gerados.
- O último componente Intervalo aninhado pode ser configurado de modo a que a propriedade Direção de replicação seja definida para Sem replicação. Este intervalo é usado para fazer rodapés de página em documentos gerados e para adicionar as quebras de página necessárias.
Se não seguir esta estrutura para um formato ER no estruturador de formato ER no momento do design, ocorre um erro de validação e recebe a seguinte mensagem de erro: "Existem mais de dois componentes de intervalo sem replicação. Remova os componentes desnecessários."
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Modifique o formato configurado alterando a propriedade Direção de replicação para todos os componentes inconsistentes do Intervalo\Excel.
Executável de uma expressão com a função ORDERBY
A função ER ORDERBY incorporada é utilizada para ordenar os registos de uma origem de dados ER do tipo Lista de registos que é especificado como argumento da função.
Os argumentos da função ORDERBY
podem ser especificados para ordenar registos de tabelas de aplicações, vista ou entidades de dados, colocando uma única chamada de base de dados para obter os dados ordenados como uma lista de registos. Uma origem de dados do tipo Lista de registos é utilizada como argumento da função e especifica a origem da aplicação para a chamada.
O ER verifica se uma consulta direta da base de dados pode ser estabelecida a uma origem de dados que é referida na função ORDERBY
. Se não for possível estabelecer uma consulta direta, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe diz que a expressão ER que inclui a função ORDERBY
não pode ser executada em runtime.
Os passos seguintes mostram como este problema pode ocorrer.
Comece a configurar o componente de mapeamento do modelo ER.
Adicione uma origem de dados do tipo Dynamics 365 for Operations \ Registos de tabelas.
Nomeie a nova origem de dados Fornecedor. No campo Tabela, selecione VendTable para especificar que esta origem de dados irá solicitar a tabela VendTable.
Adicione uma origem de dados do tipo Campo calculado.
Nomeie a nova origem de dados OrderedVendors e configure-a de modo a que contenha a expressão
ORDERBY("Query", Vendor, Vendor.AccountNum)
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a expressão na origem de dados OrderedVendors pode ser consultada.
Modifique a origem de dados do Fornecedor adicionando um campo aninhado do tipo Campo calculado para obter o número de conta de fornecedor aparado.
Nomeie o novo campo aninhado $AccNumber e configure-o de modo a que contenha a expressão
TRIM(Vendor.AccountNum)
.Selecione Validar para inspecionar o componente de mapeamento do modelo editável na página Estruturador de mapeamento do modelo e verificar se a expressão na origem de dados Fornecedor pode ser consultada.
Note que ocorre um erro de validação, porque a origem de dados do Fornecedor contém um campo aninhado do tipo Campo calculado que não permite que a expressão da origem de dados OrderedVendor seja traduzida para a instrução direta da base de dados. O mesmo erro ocorre em runtime se ignorar o erro de validação e selecionar Executar para executar este mapeamento de modelo.
Resolução automática
Não está disponível nenhuma opção para corrigir automaticamente este problema.
Resolução manual
Opção 1
Em vez de adicionar um campo aninhado do tipo Campo calculado à origem de dados Fornecedor, adicione o campo aninhado $AccNumber à origem de dados FilteredVendors e configure os campos de modo a que contenham a expressão TRIM(FilteredVendor.AccountNum)
. Desta forma, a expressão ORDERBY("Query", Vendor, Vendor.AccountNum)
pode ser executada ao nível da base de dados e o cálculo do campo aninhado $AccNumber pode ser feito depois.
Opção 2
Altere a expressão da origem de dados FilteredVendors de ORDERBY("Query", Vendor, Vendor.AccountNum)
para ORDERBY("InMemory", Vendor, Vendor.AccountNum)
. Não recomendamos que altere a expressão para uma tabela que tenha um grande volume de dados (tabela transacional), porque todos os registos serão recolhidos e a ordenação dos registos necessários será feita na memória. Portanto, esta abordagem pode causar um fraco desempenho.
Recursos adicionais
Rastrear a execução de formatos ER para resolver problemas de desempenho
Visão global da gestão de documentos empresariais
Suprimir controlos de conteúdo do Word em relatórios gerados
Gerir vários mapeamentos derivados para uma única raiz de modelo