Utilizar as propriedades SourceExpr e DestExpr
Na última secção, falámos sobre como adicionar instâncias de tabelas a um mapping. Nesta secção, veremos como aceder aos dados dos campos de uma tabela. E como utilizar valores constantes e filtros.
O módulo permite-lhe ler dados de campos de tabelas, sempre que exista uma propriedade SourceExpr (expressão de origem). O SourceExpr também pode ser utilizado para especificar valores constantes ou para chamar funções. Encontrará esta propriedade nas linhas de dados de mapping do tipo de formato NAV e nas linhas de dados dos mapeamentos de exportação. Mas esta propriedade também está disponível para parâmetros de funções personalizadas e para alargar as mensagens de erro. Existem mais opções, que serão abordadas um pouco mais adiante nesta secção.
Para escrever dados nos campos da tabela, existe outra propriedade chamada DestExpr (expressão de destino). Esta propriedade permite-lhe também verificar os dados em relação a um filtro especificado, em vez de os armazenar. Entraremos em pormenores dentro de momentos. É importante saber que é possível escrever dados em qualquer campo de uma instância de tabela, mesmo que o Mode da tabela esteja definido como Read. Escrever numa tabela em modo de leitura chamará a lógica de validação do NAV, mas não modificamos o registo. Nas nossas tabelas de buffers pode ser utilizado para armazenar um valor para um determinado momento no mapping. Noutras tabelas, dependerá da lógica de validação se é seguro utilizar uma tabela em modo de leitura para armazenar dados temporariamente.
A propriedade SourceExpr
O tipo de fonte especifica o tipo de dados que se pretende ler. Os valores permitidos são:
Um valor constante que é introduzido no mapping.
Um campo de uma instância de tabela, que é uma das linhas mapping pai desta linha mapping. Se quiser ler um campo de soma, tem de estar fora da instância da tabela, mas abaixo dela.
Pretende-se ler dados de uma função incorporada ou de uma função personalizada.
Esta propriedade foi adicionada no Anvaigo EDI Connect 4.00.
Esta propriedade só está disponível se o SrcType estiver definido como Const. Esta propriedade especifica o tipo de dados do valor constante. É necessário selecionar o tipo de dados, para evitar erros devido a diferentes localidades utilizadas durante a configuração e o tempo de execução. Na versão anterior, era necessário garantir que o local durante a configuração era o mesmo que durante o tempo de execução para evitar, por exemplo, que os números fossem interpretados de forma diferente.
É possível selecionar entre os seguintes tipos de dados:
Um valor de texto constante.
Um texto que pode conter caracteres especiais, como um retorno de carro<CR>. Existe uma lista de todos os caracteres especiais suportados.
Um valor booleano, como True ou False.
Um valor de opção. Deve utilizar o valor inteiro da opção na base de dados.
Um valor inteiro (32 bits).
Um valor decimal.
Um valor inteiro grande (64 bits).
O valor contém uma duração.
O valor é um valor de código Dinâmico (apenas em maiúsculas, não permite todos os caracteres).
Representa um valor de data.
Representa um valor temporal.
Representa um valor combinado de data e hora.
Uma fórmula de data.
Um ID global único (GUID).
Esta propriedade só está disponível se o SrcType estiver definido como Const. Representa o valor constante que se pretende utilizar.
Esta propriedade só está disponível se o SrcType estiver definido como Function. Pode utilizar o AssistEdit para especificar o objeto e a função. Se a função necessitar de parâmetros, estes também serão SourceExpr, mas não suportam o aninhamento de funções.
Esta propriedade só está disponível se o SrcType estiver definido como Field. Selecione a instância da tabela a partir da qual pretende ler os dados. A tabela tem de ser um dos pais da linha mapping atual, para ler os dados de um registo. Se quiser ler os campos de soma, tem de estar sob a instância da tabela, mas não ser um filho da mesma.
Esta propriedade só está disponível se o SrcType estiver definido como Field. Seleciona a coluna / campo a partir do qual pretende ler.
Pode especificar uma conversão de valores, para alterar o valor selecionado para um valor alvo diferente. Existe uma secção sobre como configurar traduções de valores.
O código da tradução de valores que deve ser utilizado.
O que deve acontecer se o valor não for encontrado na tradução de valores.
O módulo não faz nada se a tradução estiver em falta. Utiliza o valor original sem tradução.
Emite um valor vazio.
Adicionar uma entrada de registo de informações e utilizar o valor original.
Adicionar uma entrada de registo de aviso e utilizar o valor original.
Interromper imediatamente o mapping e registar um erro.
Criar uma entrada no registo de erros e não terminar com êxito o mapping, mas continuar com o processamento para encontrar também outros erros.
Esta propriedade está oculta por defeito. É possível especificar uma lista de valores permitidos e criar erros, caso se tente exportar outro valor.
A lista de valores permitidos. Pode utilizar o AssistEdit ou introduzir os termos separados por vírgulas.
O que deve acontecer se o valor de origem não constar da lista de valores permitidos.
Não utilizar a validação avançada e ignorar todos os valores da lista.
Criar uma entrada no registo de informações.
Criar uma entrada de registo de aviso.
Interromper imediatamente o mapping com uma mensagem de erro.
Devolve um erro na execução mapping, mas continua a processar o mapping, para encontrar também outros erros.
A propriedade DestExpr
Selecionar o destino de um valor. São válidos os seguintes valores:
Vazio significa que o valor é ignorado. Pode ser utilizado para ignorar campos nas importações ou, por exemplo, para ignorar o valor de retorno de uma função.
O valor deve ser verificado através de um filtro Dynamics. Se o filtro não corresponder, o valor não é aceite. Dependendo do conversor, isto resultará numa mensagem de erro ou na omissão de uma secção do mapping. Pode obter mais informações sobre a utilização de filtros para conversores específicos na documentação de cada conversor.
O valor deve ser escrito num campo de uma instância de tabela neste mapping.
Esta propriedade só está disponível se DestType estiver definido como Filter. O filtro Dinâmica em relação ao qual o valor é verificado. O valor será interpretado como um valor de texto para aplicar o filtro. Um exemplo típico seria “BY|IV”, para permitir os valores “BY” e “IV”.
Esta propriedade só está disponível se o DestType estiver definido como Field. Seleciona a instância da tabela em que o valor deve ser escrito. A instância da tabela tem de ser um dos pais da linha mapping atual.
Esta propriedade só está disponível se o DestType estiver definido como Field. O nome do campo/nome da coluna do campo de destino na tabela.
Esta propriedade só está disponível se o DestType estiver definido como Field. Esta propriedade só está disponível como uma propriedade avançada. Se definir esta propriedade como False, o acionador de validação Microsoft Dynamics NAV 2016 para esse campo será ignorado.
Ter muito cuidado ao utilizar o False. Só se deve desativar a validação depois de consultar um programador. Não deve desactivá-lo em nenhuma das tabelas Dynamics padrão, exceto se souber realmente o que está a fazer. É possível tornar Microsoft Dynamics NAV 2016 inutilizável, ignorando o código de validação.
Esta propriedade só está disponível se o DestType estiver definido como Field e se estiver a utilizar o conversor CHECK / NAV / PREPARE / PROCESS. Pode encontrar mais informações na página do conversor.
