SobreCarga de metodo de carga não recomendado

Tenho um fonte no code analysis que deu esse erro: SobreCarga de metodo de carga não recomendado. Deu esse erro no bCommit(). Alguém sabe o que pode ser e como consertar? Vou deixar uma parte do código para análise abaixo:


Static Function ModelDef()
    Local oStruPai := FWFormStruct(1, cTabPai)
    Local oStruFilho := FWFormStruct(1, cTabFilho)
    Local aRelation := {}
    Local oModel
    Local bPre := Nil
    Local bPos := Nil
    Local bCommit := Nil
    Local bCancel := Nil
    Local bVldPos := {|| u_ValidPrio()} //Validação ao clicar no Confirmar

    //Cria o modelo de dados para cadastro
    oModel := MPFormModel():New("zCodBarM", bPre, bVldPos, bCommit, bCancel) => ERRO NESSA LINHA
    oModel:AddFields("SB1MASTER", /*cOwner*/, oStruPai)
    oModel:AddGrid("SLKDETAIL","SB1MASTER",oStruFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/)
    oModel:SetDescription("Modelo de dados - " + cTitulo)
    oModel:GetModel("SB1MASTER"):SetDescription( "Dados de - " + cTitulo)
    oModel:GetModel("SLKDETAIL"):SetDescription( "Grid de - " + cTitulo)
    oModel:SetPrimaryKey({})

    //Fazendo o relacionamento
    aAdd(aRelation, {"LK_FILIAL", "FWxFilial('SLK')"} )
    aAdd(aRelation, {"LK_CODIGO", "B1_COD"})
    oModel:SetRelation("SLKDETAIL", aRelation, SLK->(IndexKey(1)))

Return oModel

Anne, a recomendação para resolver seria usar NIL mesmo no método MPFormModel():New(), ao invés de passar variáveis que o sistema interpreta como sobrecarga.

Ficaria mais ou menos assim: MPFormModel():New("zCodBarM", /bPre/,/bVldPos/, /bCommit/,/bCancel/)

Deixei apenas comentado para facilitar a identificação de qual bloco é qual, caso precise usar basta retirar o comentário, ou mesmo já escrever o bloco diretamente no parâmetro ao invés de usar uma variável. Ex.: MPFormModel():New("zCodBarM", /bPre/,{|| VldPos() }, /bCommit/,/bCancel/).

Quanto bloco Commit ele sempre critica se for informado, a recomentação é usar a classe FWModelEvent (https://tdn.totvs.com/pages/releaseview.action?pageId=269552294). Porém por experiência própria tem casos que essa situação é realmente necessária, eu mesmo uso isso aqui por conta de processamentos que podem ter erros e seja necessário não gravar os dados e retornar a tela ao usuário. Isso não é possível usando o FWModelEvent:InTTS() ela não permite interromper a operação senão de forma forçada fazendo o usuário perder toda a digitação.

Muito obrigada, Cirilo! Fiz desta maneira e deu certo.