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