× Linguagem de Programação ADVPL

Perguntas Dúvidas POSICIONE

  • ddsalvador
  • Autor do Tópico
  • Visitante
  • Visitante
10 anos 11 meses atrás #19480 por ddsalvador
Dúvidas POSICIONE foi criado por ddsalvador
Bom dia Senhores,

Já fiz alguns POSICIONE, mas gora o negocio não vai;

01 - Criei um campo DTC_X_SPA onde coloco uma informação do FRETE (TAM 14, caracter, real).
Também criei um índice DTC_FILIAL+DTC_DOC+DTC_X_SPA (letra D = 13)

02 - Criei no financeiro um campo E1_X_TRANS (TAM 14 caracter, real), onde deverá receber a informação do DTC_X_SPA.

Vou explicar a rotina: Ao criar um documento de frete e calcular o mesmo, ele gera um número de conhecimento no campo (DTC_DOC), após isso ele gera um título a receber no financeiro com o mesmo número do DTC_DOC mas no campo (E1_NUM). ao Consultar o meu campo que criei ele não recebeu a informação do DTC_X_SPA, onde estou errando... Segue código no ini Padrao do E1_X_TRANS

POSICIONE("DTC",13,XFILIAL("DTC")+SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM,"DTC_X_SPA")

Obrigado a todos...abs

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #19482 por kanaamlrr
Respondido por kanaamlrr no tópico Dúvidas POSICIONE
Você está colocando o prefixo em sua chave de busca sendo que ele não faz parte do documento de frete, além disso, você adicionou o campo filial 2 vezes

tente assim:

POSICIONE("DTC",13,XFILIAL("DTC")+M->E1_NUM,"DTC_X_SPA")

Outro detalhe é que você está utilizando o alias da tabela diretamente, sendo que no caso o ideal seria utilizar a variável de memória.

Faça o teste, caso não funcione, mude o "M" para SE1
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

  • ddsalvador
  • Autor do Tópico
  • Visitante
  • Visitante
10 anos 11 meses atrás #19483 por ddsalvador
Respondido por ddsalvador no tópico Dúvidas POSICIONE
Bom dia Kanaam, sempre vc na área.

Cara desculpa, mas não entendi direito, poderia me orientar melhor, sobre colocar SE1 eu já até coloquei anteirmente.

Abs

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #19490 por kanaamlrr
Respondido por kanaamlrr no tópico Dúvidas POSICIONE
Vamos lá.
O posicione nada mais é que a seguinte estrutura de comandos:

DbSetOrder
DbSeek
Return <campo>

Como funciona:

POSICIONE(alias,index,chave de busca,retorno)

alias = Alias da tabela onde será realizada a busca
index = nº do indice para realizar a busca
chave = chave de pesquisa na tabela que deve atender a ordem do indice
retorno = campo da tabela que deve retornar o valor

No seu caso, o indice 13 é o seguinte conforme você mesmo disse:
DTC_FILIAL+DTC_DOC+DTC_X_SPA

Então em sua chave de busca, deve conter FILIAL+DOC+SPA

Como o campo E1_NUM armazena o seu DOC você deve realizar a busca da seguinte forma:

xFilial("DTC")+(alias)->E1_NUM

Ai que vem a questão, esse seu E1_NUM já está preenchido fisicamente na tabela no momento em que o inicializador padrão é executado?
Caso positivo, deve utilizar SE1->E1_NUM, pois ele estará buscando diretamente na tabela SE1 o valor desejado.

Caso contrário, você deve utilizar M->E1_NUM, pois o alias "M" referencia às variáveis de memória que o sistema cria na hora do preenchimento de tela, dessa forma, o DOC constante no campo E1_NUM ainda não estará gravado na tabela, apenas na memória.

Sacou a diferença?
Agora tem que ver como é que está sendo criado esse título no financeiro, porém pelo que me parece, o mais correto seria utilizar o "M".

Por favor Acessar ou Registrar para participar da conversa.

  • ddsalvador
  • Autor do Tópico
  • Visitante
  • Visitante
10 anos 11 meses atrás #19515 por ddsalvador
Respondido por ddsalvador no tópico Dúvidas POSICIONE
Bom dia Kanaam,

Cara agradeço muito tua atenção e disposição de querer ajudar mas não funciona de forma alguma. Não tem nada que faça esse posicione chegar ao seu destino.

Muito obrigado assim mesmo.

Abs

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #19522 por kanaamlrr
Respondido por kanaamlrr no tópico Dúvidas POSICIONE
Boa tarde Douglas,
Como eu disse abaixo, tem que ver como esse título está sendo criado no financeiro e em que momento do processo esse posicione está sendo gerado.

Agora analisando um pouco melhor a descrição que você fez do processo, o gatilho está no inicializador padrão do campo, sendo que este é acionado no momento da inclusão de um documento de frete correto?

A geração do título no financeiro é executada após a gravação do documento de frete correto?

Então não tem como o campo capturar o valor da SE1 no momento da inclusão do documento de frete para o título que ainda não foi gerado.

O que você poderia fazer é utilizar um ponto de entrada na inclusão do título para realizar a gravação desse campo.

Depois dê uma analisada nisso.
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.104 segundos
Joomla templates by a4joomla