Lucas Manoel Posted April 12, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Report Posted April 12, 2021 Olá pessoal. Estou tentando desenvolver uma fórmula visual que valide o cancelamento de um movimento do RM Nucleos. A ideia é que o usuário consiga cancelar somente os movimentos que ele próprio criou. Consegui desenvolver a FV e ela está funcionando. Porém, só funciona corretamente quando seleciono um único movimento para cancelar. Se eu selecionar dois movimentos, sendo que no primeiro sou o usuário criador, e no segundo, não sou o usuário criador, o sistema não aplica a validação corretamente, e acaba cancelando ambos movimentos. É como se no processo de cancelamento o sistema estivesse ignorando o meu ForEach da FV. Já viram algo parecido? Segue em anexo a FV que desenvolvi. Nos meus testes, vinculei a FV no evento "Antes da Execução" do MovCancelMovProc. Obrigado! ValidaCancelamento.TotvsWF
luisgustavogomes Posted April 13, 2021 Topic Count: 5 Topics Per Day: 0.00 Content Count: 535 Content Per Day: 0.18 Reputation: 184 Achievement Points: 3,568 Solved Content: 0 Days Won: 77 Status: Offline Age: 37 Device: Windows Report Posted April 13, 2021 @Lucas Manoel, bom dia! Por favor, efetue o teste com as seguintes alterações. Eu não efetuei o teste, mas acredito que o erro esteja o local que está fazendo o loop, por que o JOB de cancelamento não é um dataset... <MovimentosACancelar> <MovimentosCancelar z:Id="i3"> <ApagarMovRelac>false</ApagarMovRelac> <CancelarMovimentosGeradosSimultFaturamento>false</CancelarMovimentosGeradosSimultFaturamento> <CancelarMovimentosGeradosSimultReabriCotacao>false</CancelarMovimentosGeradosSimultReabriCotacao> <CodColigada>1</CodColigada> <CodSistemaLogado>T</CodSistemaLogado> <CodUsuarioLogado>x.x</CodUsuarioLogado> <DataCancelamento>2021-04-12T00:00:00-03:00</DataCancelamento> <ExcluirItensDaCotacao>false</ExcluirItensDaCotacao> <IdExercicioFiscal>1</IdExercicioFiscal> <IdMov>6568669</IdMov> <MotivoCancelamento>CC INCORRETO</MotivoCancelamento> <NumeroMov>112842</NumeroMov> </MovimentosCancelar> <MovimentosCancelar z:Id="i4"> <ApagarMovRelac>false</ApagarMovRelac> <CancelarMovimentosGeradosSimultFaturamento>false</CancelarMovimentosGeradosSimultFaturamento> <CancelarMovimentosGeradosSimultReabriCotacao>false</CancelarMovimentosGeradosSimultReabriCotacao> <CodColigada>1</CodColigada> <CodSistemaLogado>T</CodSistemaLogado> <CodUsuarioLogado>x.x</CodUsuarioLogado> <DataCancelamento>2021-04-12T00:00:00-03:00</DataCancelamento> <ExcluirItensDaCotacao>false</ExcluirItensDaCotacao> <IdExercicioFiscal>1</IdExercicioFiscal> <IdMov>6580204</IdMov> <MotivoCancelamento>CC INCORRETO</MotivoCancelamento> <NumeroMov>113044</NumeroMov> </MovimentosCancelar> </MovimentosACancelar> Terias que descobrir como efetuar um loop nessa estrutura... Porém, eu, Luis, iria efetuar outro teste, caso essa chamada efetua em tela e não via WS... iria criar uma FV na TMOV fazendo o loop no dataset e verificando o status do registro e posteriormente efetuando essa validação (antes de salvar o registro). Espero que consigas efetuar essa consistencia. Abraços. 2
Lucas Manoel Posted April 13, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Author Report Posted April 13, 2021 Bom dia @luisgustavogomes! Obrigado pelo comentário e orientações. Tentei deixar o fluxo da forma conforme seu print, porém não sei se estou usando corretamente o rmsExpressionActivity. Fiz um teste parametrizando ele dessa forma (imagem). Está correto? Se sim, infelizmente não resolveu. O comportamento continua o mesmo, funcionando na validação de somente um movimento, e falhando quando uso multiseleção. Vou tentar montar a FV da outra forma que você sugeriu, validando antes de salvar o registro na TMOV. Abraço!
luisgustavogomes Posted April 14, 2021 Topic Count: 5 Topics Per Day: 0.00 Content Count: 535 Content Per Day: 0.18 Reputation: 184 Achievement Points: 3,568 Solved Content: 0 Days Won: 77 Status: Offline Age: 37 Device: Windows Report Posted April 14, 2021 Sim, a expressão está correta e aconteceu juntamente o erro do FOREACH, assim sendo, abri um chamado com a TOTVS e o pessoal do framework ajudou.... Logo, em anexo, o seu exemplo com loop na tabela dos parâmetros da execução do JOB... p/s nesse exemplo, efetuei o teste efetuando o envio do IDMOV via e-Mail. Agora é só alterar para a sua regra de negócio e testar, eu testei via formulário - ok , vou testar via WS e depois lhe informo abraços Resposta da TOTVS FV.CMP.08.TotvsWF 1 1
Lucas Manoel Posted April 14, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Author Report Posted April 14, 2021 @luisgustavogomes, muito obrigado! Realmente o ponto chave pra resolução foi a forma de parametrizar o ForEach. Ajustei de acordo com minha regra de negócio e funcionou perfeitamente!! Muito obrigado. Abraço
Bruno Italo Posted October 12, 2023 Topic Count: 0 Topics Per Day: 0 Content Count: 2 Content Per Day: 0.00 Reputation: 0 Achievement Points: 10 Solved Content: 0 Days Won: 0 Status: Offline Report Posted October 12, 2023 Boa noite Lucas, estou com o mesmo problema, exatamente com o mesmo tipo de fórmula, quando seleciono vários registros para cancelamento na visão de dados, somente o primeiro que foi selecionado é validado. Já tentei vincular vários campos no meu ForEach, até o campo que o suporte de framework me passou, mas mesmo assim não funciona... Ficaria grato se você compartilhasse como parametrizou o seu... Segue minha FV. FV CANCELAMENTO MOV.TotvsWF
caiiomonteiro Posted October 13, 2023 Topic Count: 12 Topics Per Day: 0.00 Content Count: 184 Content Per Day: 0.06 Reputation: 92 Achievement Points: 1,204 Solved Content: 0 Days Won: 33 Status: Offline Age: 28 Device: Windows Report Posted October 13, 2023 @Bruno Italo bom dia O problema está na sua ligação dos parâmetros da consulta SQL, no caso o próprio IDMOV que está sendo passado O correto é você pegar ele do ForEach e não da atividade que faz a leitura dos parâmetros, pois dessa forma o ForEach está lendo cada movimento selecionado, porém a consulta SQL só está pegando como parâmetro o 1º IDMOV Já o CODCOLIGADA, como é o mesmo valor para todas as linhas não tem problema você deixar dessa forma, mas também pode pegar ele do ForEach ou até mesmo do contexto O correto seria dessa forma 1
Bruno Italo Posted October 13, 2023 Topic Count: 0 Topics Per Day: 0 Content Count: 2 Content Per Day: 0.00 Reputation: 0 Achievement Points: 10 Solved Content: 0 Days Won: 0 Status: Offline Report Posted October 13, 2023 @caiiomonteiro Bom dia! Era exatamente isso. Coloquei uma expressão no ForEach pegando o idmov de cada loop, e apontei o parâmetro do SQL para a expressão. Funcionou perfeitamente. Obrigado!
TiagoTalf Posted November 24, 2025 Topic Count: 0 Topics Per Day: 0 Content Count: 1 Content Per Day: 0.00 Reputation: 0 Achievement Points: 5 Solved Content: 0 Days Won: 0 Status: Offline Age: 39 Device: Windows Report Posted November 24, 2025 @Bruno Italo Boa tarde! Tudo bem? Você poderia compartilhar como conseguiu resolver sua FV? Por favor. Estou selecionando mais de um movimento e a FV só busca UM idmov. Pois utilizo o IDMOV para inserir em uma API de terceiro. Ao cancelar no RM, tem que cancelar um registro no sistema terceiro. Mas quando seleciono dois, só cancela um no sistema terceiro.
Jair - Fórmula Posted November 25, 2025 Topic Count: 946 Topics Per Day: 0.13 Content Count: 9,184 Content Per Day: 1.25 Reputation: 460 Achievement Points: 109,776 Solved Content: 0 Days Won: 267 Status: Offline Age: 54 Device: Windows Report Posted November 25, 2025 Manda a sua FV que pode ser que com ela fique mais fácil entender a sua situação e ajudá-lo. 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now