Boa noite, Anderson!
================
Efetuei um teste em uma rotina minha e o refresh no grid de baixo funcionou normalmente. Este problema ocorre apenas ao incluir? Segue como realizei meu relacionamento:
Static Function ModelDef
Local oModel := Nil
Local oStruSB1 := FwFormStruct(1,'SB1', {|cCampo| Alltrim(cCampo) $ 'B1_FILIAL|B1_COD|B1_GRUPO|B1_DESC|'})
Local oStruSBM := FwFormStruct(1,'SBM', {|cCampo| Alltrim(cCampo) $ 'BM_FILIAL|BM_GRUPO|BM_DESC|'})
Local oStruSLK := FwFormStruct(1,'SLK')
//Monta o modelo principal
oModel := MpFormModel():New('FATA36MVC',/*PreValidacao*/,/*Validação*/,/*PosValidacao*/)
//Monta os dados do formulário
oModel:AddFields('FormSBM',, oStruSBM)
oModel:SetPrimaryKey({'BM_FILIAL','BM_GRUPO'})
oModel:GetModel('FormSBM'):SetDescription('Grupo')
//Monta os dados do primeiro grid
oModel:AddGrid('GridSB1','FormSBM',oStruSB1,,/*bLinOk*/,/*bPreGrid*/,/*bProsGrid*/)
oModel:SetRelation('GridSB1',{ {'B1_FILIAL','BM_FILIAL'},{'B1_GRUPO','BM_GRUPO'} }, SBM->(IndexKey(4)) )
oModel:GetModel('GridSB1'):SetDescription('Produtos')
//Monta os dados do segundo grid
oModel:AddGrid('GridSLK','GridSB1',oStruSLK,,/*bLinOk*/,/*bPreGrid*/,/*bProsGrid*/)
oModel:SetRelation('GridSLK',{ {'LK_CODIGO','B1_COD'} }, SLK->(IndexKey(2)) )
oModel:GetModel('GridSLK'):SetDescription('Código de Barras')
//Seta o nome da rotina na enchoice
oModel:SetDescription('Exemplo de Rotina de Consulta')
Return(oModel)
Segue exemplo da rotina:
=========================
Para manter o grid como apenas leitura, você pode fazer o seguinte procedimento na ViewDef:
Static Function ViewDef
Local oView := Nil
Local oModel := ModelDef()
Local oStruSB1 := FwFormStruct(2,'SB1', {|cCampo| Alltrim(cCampo) $ 'B1_FILIAL|B1_COD|B1_GRUPO|B1_DESC|'})
Local oStruSBM := FwFormStruct(2,'SBM', {|cCampo| Alltrim(cCampo) $ 'BM_FILIAL|BM_GRUPO|BM_DESC|'})
Local oStruSLK := FwFormStruct(2,'SLK')
oView := FwFormView():New()
oView:SetModel(oModel)
//Não permite a edição dos campos do cabeçalho
oStruSLK:SetProperty('*', MVC_VIEW_CANCHANGE, .F.)
No exemplo acima, estou deixando o grid de código de barras (Tabela SLK) apenas como visualização.