Problema ao passar parâmetros para User Function

Boa tarde!

Prezados, estou com um problema muito estranho.

Desenvolvi uma função que recebe um parâmetro em sua inicialização, segue exemplo:


User Function ELFINJ03(lRunTmk)

    RpcSetEnv('01','01')

        fProcess(lRunTmk)

    RpcClearEnv()

Return

Quando chamo a rotina simplesmente como U_ELFINJ03(), a mesma executa normalmente. Quando executo a mesma como U_ELFINJ03(.T.) ou U_ELFINJ03(.F.), a mesma retorna um erro no console.log antes mesmo de executar o RpcSetEnv:

Exception code: C0000005 ACCESS_VIOLATION Fault address: 00A6A554 01:00669554 c:\Totvs12\bin\appserver\AppServer.exe

Estranhamente, quando passo algum conteúdo numérico ou caractere, por exemplo: U_ELFINJ03('TESTE'), a rotina executa mas a variável lRunTmk recebe nulo.

Testei com versões de Lib diferente e também usando as bibliotecas TopConn e TbiConn e não surtiu efeito.

Alguém já passou por situação parecida e tem alguma sugestão de como corrigir?

Agradeço pela atenção.

Acredito que não seja um problema de código, mas sim de IDE.

Qual IDE você está utilizando? Fiz o teste no Visual Studio Code e no TOTVS Developer Studio 11.3 (atualizado) e não tive o mesmo erro.

Sei que não é o melhor cenário, mas você pode chamar uma função que chame esta sua, assim você terá como passar parâmetros corretamente ou então usa essa função que eu coloquei em anexo para executar funções.

Ela é parecida com o antigo Fórmulas do Protheus.

(obs: eu não a criei, eu a achei em um blog)

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Boa tarde!

Estou usando o TDS 11.3.10.201812061821. Acredito que seja a mais recente.

Boa tarde, Guilherme! Obrigado pela sugestão mas acredito que não seria o ideal, pois este fonte irá executar via Schedule.

Boa tarde. Access Violation é um erro gerado no appserver. Mude o appserver para um mais atual e refaça o teste. Caso o access violation continue abra um chamado para a equipe de TECNOLOGIA para que a causa do violation seja encontrada.

Giordano, o fonte foi apenas uma dica para você sempre executar a função. Por isso eu citei que ele é parecido com o antigo Fórmulas.

Bom dia! Em contato com a TOTVS, fui informado que não devem ser passados parâmetros para User Functions nas chamadas via SmartClient e DevStudio, por este motivo estava ocorrendo o erro.

Em contato com a TOTVS, fui informado que não devem ser passados parâmetros para User Functions nas chamadas via SmartClient e DevStudio, por este motivo estava ocorrendo o erro.

Se for chamar diretamente do programa inicial na tela do smartclient ele não vai deixar. Se for chamar o smartclient via linha de comandos, utilize o parametro -A= porém ele irá ser reconhecido como caracter e não lógico. Pelo TDS há opção de chamar com -A também, porém aqui no meu teste ao enviar .T. ele deixou apenas T e do tipo caracter também. Em nenhum teste que eu fiz ocorreu erro de ACCESS VIOLATION.

Pode ser chamada User Function na tela inicial do Protheus ( invés de SIGAADV ou SIGAMDI por exemplo ). Eu executo diversas rotinas, inclusive compatibilizadores !