Recuperar cOperatId do Menu ou FwExecView

Essa dúvida tenho já faz um tempo, nas rotinas mais antigas (antes do MVC) no menu a gente tinha a variável nOpc que nos dizia qual opção foi escolhida pelo usuário, e permitia fazer algumas operações além das básicas visualizar, incluir, alterar, excluir e saber qual exatamente foi clicada.

Com o advento do MVC não encontrei como saber qual opção foi escolhida, apenas a operação do modelo, assim ficando restrito apenas as operações mapeadas. Nas documentações encontrei citações a um elemento cOperatId, que dá a entender que tem exatamente essa função de permitir ter mais opções para a mesma operação, e assim distinguir uma da outra. Não encontrei como recuperar essa informação no objeto MVC para poder utilizá-la. A citação que encontrei foi no FWExecView (https://tdn.totvs.com/display/public/framework/FWExecView)

Alguém saberia dizer como faço para recuperar essa propriedade ?

3 curtidas

@dadinel Será que você conseguiria me dar uma força com isso aqui ? sempre preciso criar rotinas com esse tipo de situação, inclui, altera, aprova, reprova, etc.

2 curtidas

@cirilorocha Se você utilizar GetOperation do Model consegue distinguir qual operação (incluir, alterar, excluir, visualizar) foi selecionada.
No caso é essa sua necessidade?

Local nOperation := oModel:GetOperation()
If nOperation == MODEL_OPERATION_INSERT
MsgInfo(‘Incluindo’)
ElseIf nOperation == MODEL_OPERATION_UPDATE
MsgInfo(‘Atualizando’)
ElseIf nOperation == MODEL_OPERATION_DELETE
MsgInfo(‘Deletando’)
ElseIf nOperation == MODEL_OPERATION_VIEW
MsgInfo(‘Visualizando’)
Endif

2 curtidas

Não o caso é mais específico, por exemplo tem várias sub-operações todas como Alterar (aprovar, desaprovar, etc.). Antigamente as funções executadas via menu recebiam o nOpc que era qual opção do menu estava sendo executada, então no mesmo menu a gente teria várias operações todas com ALTERA, mas pela posição do item do menu clicado dava para identificar se era a 4 ou 5, ou a 6 operação e assim processar conforme o que foi clicado.

ADD OPTION aRotina TITLE "Laudo"	 	ACTION "VIEWDEF.RCGA160" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Aprova" 		ACTION "VIEWDEF.RCGA160" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Desaprova" 	ACTION "VIEWDEF.RCGA160" OPERATION 4 ACCESS 0

Na documentação até cita que existe, só não achei como recupera essa informação no MVC.

2 curtidas

Você quer recuperar a opção que o usuário escolheu pra montar a view? Porque é por ai mesmo, usando o FWExecView e passando a opção escolhida ao cOperatId. Você não está conseguindo usar a ExecView?

1 curtida

Estou dentro do Objeto MVC fazendo os processamentos, como vou saber qual foi a opção escolhida no menu ? Só tenho disponível o GetOperation() não achei algo semelhante para o cOperatID.
Porque tenho mais de uma operação de alteração, e preciso saber qual foi clicada para proceder o que precisa ser feito.

2 curtidas

Para resolver essa situação estou criando User Functions diferentes para cada operação, e elas chamam o ExecView do MVC. Assim pela função chamadora eu sei que tipo de operação está sendo executada, porém queria ver se achava uma solução mais adequada usando propriamente o MVC e a posição do menu.

Não consegui recuperar o cOperatID da função FwExecView, mas achei o método oMod:GetProcess() que me retorna exatamente qual opção de menu foi clicada o que resolve o meu problema.
Para usar com o FwExecView antes precisaria instanciar o Model e setar a operação com SetOperation() para que ele entenda, mas também funcionou assim.

2 curtidas