Histórico da Página
...
Neste caso existe alguns quesitos a serem verificados. Primeiro, se a função StarJob pode ser executada sem antes chamar a função RpcSetEnv. Pois essa última faz a abertura de um novo ambiente, o que poderia causar lentidão.
Outra questão, se o job iniciado não terminar, qual procedimento deverá ser tomado, já que provavelmente entrará em um 'loop' infinito.
Nessa situação em que o número do documento será gerado por um Job, poderá e provavelmente ocorrerá de o número do documento não ser sequencial. Quais são ou existem restrições em relação a geração de números de documentos não sequenciais?
Não há necessidade de chamar a função RpcSetEnv. Na função StarJob, no segundo parâmetro, informar GetEnvServer(), assim o job será executado no mesmo ambiente (environment) da conexão (thread) atual. Informar no terceiro parâmetro, true, assim a conexão pai espera a finalização do job. Chamar como abaixo:
StarJob("cNomeJob", GertEnvServ(), .T., "Parâmetros a serem passados para o JOB" ).
Outra questão, se o job iniciado não terminar, qual procedimento deverá ser tomado, já que provavelmente entrará em um 'loop' infinito.
Existe a possibilidade finalizar a conexão de uma sessão com a função KillUser. A conexão principal pode esperar o término da execução do job, caso não termine tem a opção de finalizar o job com a função KillUser.
KillUser ("UserName", "ComputerName", "ThreadID", "ServerName") - para obter 3 os parâmetros dessa função utilize GetUserInfoArray. Esta retorna um vetor multidimensional com as informações de cada um dos processos em execução no server. Para obter o "ServerName" utilizar a GetSrvInfo que retorna um vetor com as informações do Server.Nessa situação em que o número do documento será gerado por um Job, poderá e provavelmente ocorrerá de o número do documento não ser sequencial. Quais são ou existem restrições em relação a geração de números de documentos não sequenciais?
Documentos não sequenciais - pendência PO.
...