Entendendo e solucionando alguns problemas que podem ocorrer com o printer.exe

No artigo de hoje, vamos ver algumas coisas que podem impactar na geração de relatórios no Protheus através do printer.exe.

Se alguma vez, você programando um relatório em AdvPL, por exemplo, usando a classe FWMSPrinter já se deparou com mensagens de erro ou simplesmente o arquivo ficar com .rel e não gerar o .pdf, no artigo de hoje vamos detalhar alguns problemas que podem ocorrer.

Abaixo um print de erro de exemplo:

Mensagem de erro ao gerar relatório

Abaixo então listamos algumas coisas que podem impactar.

  1. Parâmetro MV_RELT

Esse parâmetro define a pasta dentro da Protheus Data para geração de relatórios, verifique se a pasta esta criada.

Geralmente é criado com o nome de \spool\ . Caso ela já esteja criada, verifique se ela esta com privilégio liberado para a escrita, o que também impacta no nosso item 2.

  1. Pasta inexistente ou pasta com restrição de acesso

Verifique se a pasta onde você esta apontando o relatório para gravar, se ela existe.

Se existir, verifique se ela esta marcada como somente leitura, se estiver pode ser esse o problema.

Para você verificar, no Windows clique com o botão direito na pasta e veja como que ta os privilégios dela de segurança e se esta marcado como Somente Leitura.

Propriedades da pasta marcadas como somente leitura

  1. Arquivo printer.exe nos binários

Verifique se o arquivo printer.exe esta atualizado nos binários (pastas AppServer e SmartClient).

Caso não esteja, baixe o arquivo mais atual no portal do cliente e atualize.

  1. Arquivos temporários (sc*)

Se houver muitos arquivos iniciados com o sc no nome dentro da system, é recomendado fazer uma limpeza.

Pois como são arquivos temporárias, pode impactar na geração de arquivos pelo Protheus (veja o terceiro link das referências mais abaixo).

  1. Ajustar no código fonte

Se mesmo revisando os 4 pontos acima o problema persistir, o ideal seria revisar o fonte, sendo que algumas coisas podem ser adicionadas como:

  • Se o nome da pasta não existir tente criar automaticamente com MakeDir()
  • Tente dar um nome de arquivo que não se repita, usando por exemplo data e hora, por exemplo, cArquivo := “relatorio_” + dToS(Date()) + “_” + StrTran(Time(), “:”, “-“)
  • Pode ser que ao tentar gerar o PDF, a rotina não finalizou ainda o processamento, então antes do método Preview / Print, adicione um Sleep() de alguns segundos
  • Se for impressão local, tente usar uma pasta temporária do S.O. através da GetTempPath()
  1. Testes e chamado

Se mesmo após revisar todos os pontos acima, o problema persistir, ai seria interessante a abertura de algum chamado, evidenciando o problema e os pontos testados.

Lembre-se de antes, de fazer um teste em outros computadores, outras versões de sistema operacional, se possível em outra base. Para assim tentar isolar o problema e achar um ponto em comum.

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação