Fiz um grid MVC para a tabela SA5 - Amarração Produto x Fornecedor.
Preecho este grid com dados do xml da nota fiscal (prodfor, descricao, ncm), o usuário apenas informa qual o código do produto no Protheus.
Quando o produto não existe no protheus, o usuário cadastra a partir do botão incluir da consulta F3. Pra facilitar foi solicitado que seja preenchido automaticamente os campos descrição e NCM, com dados que já estão no grid.
Pra fazer isto preciso acessar a linha do grid e alimentar o campos na tela a partir do inicializador padrão da tabela SB1.
Como faço para acessar a linha do grid no inicializador padrão de uma tela de inclusão chamada por consulta F3?
Boa tarde Marco,
Esse acesso que você deseja não é possível.
O que pode ser feito, é criar uma função no inicializador padrão desses campos, sendo que essa função verifica a origem da inserção e então preenche os dados com base no grid anterior, ainda sim, não é uma tarefa simples, sua consulta no F3 precisará ser customizada também, para salvar os dados atuais da posição do grid MVC anterior.
Como acessar o grid do MVC anterior, tem algum exemplo?
Você já estaria no grid antes de chamar a função do F3, então a função FWModelActive acredito que lhe atenda, cuidado, ela retorna uma referência, se você matar ela (freeobj), sua rotina vai gerar exceção.
bacana, vou testar, grato DAniel
só mais uma dúvida, não tem algo semelhante a acols, que já traz os dados do grid e a variavel n com a linha que está posicionada?
Não que eu me recorde… Para saber a linha, você pode utilizar o método GetLine, porém se você não passar a linha no método GetValue, por padrão ele já retorna o valor da linha atual, claro, tudo isso em um formgridmodel.
ou então, através da pilha de chamadas eu chego no programa anterior e pego o model, sabes os comandos pra isto?
Através da pilha você chega na rotina, não no modelo, para verificar a pilha de ADVPL, você utiliza ProcName, ProcLine.