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:
Abaixo então listamos algumas coisas que podem impactar.
- 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.
- 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.
- 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.
- 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).
- 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()
- 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:
- Central de Atendimento TOTVS – Sistema só cria arquivo .rel e não realize a impressão
- Central de Atendimento TOTVS – Arquivo .REL não é convertido em PDF
- Central de Atendimento TOTVS – Ao imprimir gera um arquivo com a extensão .REL
- TOTVS DevForum – FwmsPrinter só gera arquivo .rel
Bom pessoal, por hoje é só.
Abraços e até a próxima.