oStDetail:SetProperty('B1_DESC' , MODEL_FIELD_INIT ,{|| CADZE2():fPegadescri('B1_DESC', oModel:GetOperation())})
oStDetail:AddTrigger('ZE2_PRODUT','B1_DESC',{||.T.},{|| CADZE2():fPegadescri('B1_DESC', oModel:GetOperation())})
a função:
METHOD fPegadescri(cCampo,cOp) CLASS CADZE2
Local oModel := FWModelActive()
Local cRet := ''
Local cCod := ''
if cCampo == "B1_DESC"
if valtype(oModel) = 'O'
cCod := oModel:GetValue( 'GRIDDETAIL', 'ZE2_PRODUT' )
cRet := POSICIONE("SB1",1,xFilial('SB1') + cCod,"B1_DESC")
else
cCod := ZE2->ZE2_PRODUT
cRet := POSICIONE("SB1",1,xFilial('SB1') + cCod,"B1_DESC")
endif
endif
Return cRet
Quando é executado pela trgger ok, mas se for uma inclusão no Browse, ele pegar o valor do cadigo da linha de cima.
Silfar, uma observação quanto ao seu processo, para os blocos de inicializador, when e validação precisa usar a função FwBuildFeature para que o sistema padrão monte o bloco com todos os tratamentos MVC corretamente. No seu caso ficaria assim: oStDetail:SetProperty('B1_DESC',MODEL_FIELD_INIT,FwBuildFeature(STRUCT_FEATURE_INIPAD,"CADZE2():fPegadescri('B1_DESC',oModel:GetOperation())")) Tentei testar usando o inicializador padrão da forma que você colocou e só deu erros, infelizmente não vi como corrigir para lhe ajudar, pelo menos fica a dica do FwBuildFeature.
— Cirilo Rocha 13 de Feb de 2023