Impressão padrão (sem filtros)
Nesse documento você encontra informações sobre:
Importante
É imprescindível que seja verificado o tópico que trata sobre o conceito de impressão via PrintService para entendimento do processo de impressão como um todo, e verificação dos pré-requisitos para que o processo seja executado com sucesso
Em um processo de impressão padrão (sem utilização de filtros de impressão), o Monitor e o Serviço do eDocspodem se comunicar com um ou mais PrintServices, no entanto, não é possível definir a impressão em mais de uma impressora em cada PrintService. Como não há como o sistema identificar diferenças nos documentos fiscais para escolher a impressora que irá atender a requisição, a impressão sempre será enviada para a impressora padrão definida no PrintService (guia PrintService do Configurador).
A parametrização de impressão possibilita a definição de apenas um PrintService para cada tipo de documento a ser impresso em cada filial. Desta forma, quando indicamos neste modelo de impressão, que o Monitor e o Serviço do eDocs podem se comunicar com mais de um PrintService, entende-se, por exemplo, que um PrintService tenha sido parametrizado para impressão de DANFE (NF-e), e outro PrintService tenha sido parametrizado para impressão de DAMDFE (MDF-e).
Componentes do processo:
- Monitor: o Monitor poderá efetuar comunicação diretamente com um ou mais PrintServices, para enviar requisições de impressão que são acionadas através do acionamento do botão Imprimir. Quando o envio da impressão ao PrintService for efetuado com sucesso, o status do indicativo de impressão no Monitor (primeira coluna presente nas telas de monitoramento dos documentos eletrônicos) é atualizado para Documento eletrônico enviado para impressão ().
Importante
O Monitor disponibiliza eventos que auxiliam na identificação de falha no processo de impressão e solicitações de impressão automática, e registra eventos de impressão manual que ocorreram com sucesso.
- Serviço eDocs: é responsável por verificar os registros marcados na base de dados do eDocs para serem impressos. A cada ciclo de execução da rotina, o eDocs envia os registros para o PrintService para que sejam impressos. Neste momento ele marca o status do indicativo de impressão no Monitor (primeira coluna presente nas telas de monitoramento dos documentos eletrônicos) como Documento eletrônico enviado para impressão ().
Importante
Existem outros status que podem ser definidos para a impressão dos documentos auxiliares: Falha, Impressão Não Realizada, Impressão pendente e Impressão em Contingência. Para maiores informações sobre estes status, consulte o tópico específico de cada documento no Manual do usuário.
O Monitor e o serviço do eDocs encaminham uma requisição ao PrintService solicitando que o mesmo envie o documento para a impressora. No momento em que o Monitor ou o serviço do eDocs conseguem conexão com PrintService e enviam com sucesso esta requisição ao mesmo, o indicativo de impressão é atualizado no Monitor. No entanto, isso não garante que o documento tenha sido impresso, pois a impressão ainda depende do sucesso da comunicação do PrintService com a impressora.
- PrintService: é o componente responsável por receber as requisições de impressão enviadas pelo Monitor e pelo Serviço do eDocs e encaminhar a impressão para as impressoras. O PrintService possui uma fila própria (fila mantida em memória) e executa o envio das impressões para as impressões em intervalos de execução pré-definidos.
- Impressoras: são as impressoras que estão instaladas no sistema operacional Windows e estão disponíveis para receber a requisição de impressão encaminhada pelos PrintServices.
Abaixo são indicadas as parametrizações necessárias para ativar a impressão via PrintService, levando em conta que não serão utilizados filtros de impressão.
Importante
Qualquer alteração de parametrização só terá efeito após o reinício dos serviços do eDocs e PrintService.
As parametrizações são efetuadas na guia Print Service do Configurador (Configurador da instância que possui o componente PrintService instalado):
- Campo Impressora Local: deve ser definida a impressora padrão do PrintService. Em um ambiente onde não serão utilizados filtros de impressão, todas as requisições de impressão recebidas por este PrintService são enviadas para esta impressora.
Observação
O campo é definido como Impressora local porque, apesar de ser possível enviar a impressão para uma impressora de rede, ela deve estar instalada no sistema operacional Windows onde o PrintService foi instalado.
- Campo Porta: neste campo é definido o número da Porta em que o serviço do PrintService receberá as requisições no computador/servidor onde ele está instalado. A Porta deve estar liberada para comunicação externa por eventual Firewall ou Antivirus, e nenhum outro aplicativo poderá utilizar esta porta. A porta padrão é 1024.
Observação
Outros campos disponíveis para parametrização do PrintService se referem a outras formas de impressão ou configurações adicionais e não serão tratadas neste tópico.
As parametrizações a serem efetuadas no Monitor são efetuadas na parametrização de cada dilial e no tipo de documento emitido por cada Filial.
- Guia Filial da tela Configuração de Filial:
Campo Ativar impressão em arquivo PDF: este parâmetro deverá estar definido como Não. Ele só é utilizado caso seja utilizada a funcionalidade de impressão em PDF (tipo de impressão tratada em outro tópico específico). Se ele for definido como Sim e a funcionalidade de Impressão em PDF não estiver configurada, as impressões não são realizadas.
- Configuração > Filial > aba Filial > aba <Documento_Eletrônico> (onde <Documento_Eletrônico> é cada tipo de documento gerenciado pelo DE – NF-e, NFS-e, CT-e, MDF-e, NFC-e, CF-e).
Para exemplificar a parametrização, é utilizado como exemplo a parametrização para NF-e (guia NF-e).
DANFE automático
Define se será impresso o DANFE da NF-e automaticamente após a NF-e ter sido autorizada (em ambiente normal ou em contingência). Caso o parâmetro seja definido como Não, as impressões deverão ser solicitadas através do Monitor (botão Imprimir);
URL serviço de impressão
Neste campo deve ser definida a URL para comunicação do serviço do eDocs e do Monitor com o PrintService que será utilizado por padrão pela filial para impressão de NF-e. A URL deve estar no formato endereço:porta, sem definição de protocolo http na frente. Exemplo: SERVBNU:1024. Por padrão, este campo é inicializado como “localhost:1024”. Neste caso, leva-se em consideração que o PrintService estaria instalado no mesmo computador que o Monitor e o Serviço do DE (por isso o endereço “localhost”), e estaria utilizando a porta 1024. O endereço poderá ser substituído pelo IP do servidor, desde que haja garantia da comunicação e de que o IP não é dinâmico.
Template:
Para definir qual será o template utilizado na geração dos documentos auxiliares (tanto na geração do PDF para ser efetuado o download pelo Monitor, quanto na geração do PDF que será enviado ao PrintService ou enviado por e-mail), basta acessar Configurações > Filiais > selecionar a aba Documento Eletrônico desejado (NF-e, NFS-e, CT-e, MDF-e, NFC-e, CF-e ou GNRE) > Impressão > Campo Templates > Configurar.
Dica
Campos a serem parametrizados para impressão de outros tipos de documento (NFS-e, CT-e, MDF-e, NFC-e, CF-e) podem ser consultadas no Manual do usuário de cada tela. No entanto, os conceitos de comunicação com PrintService e definição de templates são padrões para todos os tipos de documento.
Abaixo são indicadas as parametrizações adicionais que podem ser efetuadas com base em necessidades específicas de cada ambiente:
Campo Intervalo entre impressões (em milissegundos): indica ao PrintService quanto tempo deve aguardar entre as impressões. Em alguns casos, para que a impressora siga corretamente a ordem de impressão é necessário esse intervalo entre as impressões. O padrão desse campo é 0 (zero) e cada ambiente pode apresentar diferenças que influenciem no valor a ser atribuído, porém a recomendação é sempre informar o valor mais próximo de zero possível. O tempo informado deve estar em milissegundos, ou seja, se você quer inserir uma pausa de 1 segundo deve informar 1000. Para uma pausa de meio segundo, devo informar 500. Este parâmetro é utilizado em conjunto com o campo Quantidade de processamentos paralelos para impressão, da guia Filial da tela Configuração de Filial.
Observação
Informações sobre impressão em arquivo PDF, impressão em Cloud e funcionalidade de seleção de impressora serão tratados em tópicos específicos.
- Parametrização na seção Impressão da guia Filial na tela Configuração de Filial.
Campo Quantidade de processamentos paralelos para impressão: indica quantas impressões paralelas serão executadas. Por padrão, este campo vem preenchido com 5. Quando este campo estiver parametrizado com um valor maior que 1, a impressão dos documentos eletrônicos não é impressa em ordem numérica, pois as impressões ocorrem paralelamente. Para que os documentos eletrônicos sejam impressos em ordem, este campo deve ser parametrizado com 1 e o campo Intervalo entre impressões (em milissegundos) da guia Print Service do Configurador, deve estar configurado de acordo com o ambiente, porém neste caso a impressão dos documentos pode levar mais tempo. Este parâmetro influencia tanto no processo de impressão quanto no processo de reimpressão.
Importante
Esse parâmetro permite ligar ou desligar o paralelismo no momento de enviar as impressões ao PrintService, que posteriormente fará o envio ao sistema operacional e à impressora. O fato de o paralelismo estar desligado faz com o que o Manual do usuário busque os documentos (em situação de impressão no momento) ordenados pelo número da nota, porém há como garantir que essa mesma ordenação seja respeitada pelo sistema operacional e driver da impressora.
Campos Quantidade de tentativas de impressão (apenas comunicação): indica quantas tentativas serão realizadas de envio da impressão ao PrintService (tentativa de comunicação a partir do serviço Manual do usuário – não aplicado a impressão manual via Monitor). Após ultrapassar a quantidade de tentativas, em que não tenha havido sucesso na comunicação, o sistema marca a impressão como Falha. Caso seja informado o valor 0 (zero) neste campo, o sistema tenta recorrentemente realizar o envio e não marca como Falha. O valor padrão deste campo é 0 (zero), no entanto, é indicado definir um limite de tentativas, pois em eventual problema no processo de impressão, pode ocorrer sobrecarga no servidor do serviço do Manual do usuário, pois o serviço tenta infinitamente enviar documentos pendentes para a impressão.
Observação
Informações sobre utilização de filtros de impressão e diretórios extras de integração serão tratadas em tópicos específicos.
Verificando a imagem do processo presente no início deste documento, é possível perceber de que o Monitor e o serviço do Manual do usuário se comunicam diretamente com o PrintService para enviar uma solicitação de impressão. Desta forma, a primeira verificação a ser realizada é descobrir se a comunicação entre os componentes está ocorrendo corretamente.
Observação
Para exemplificar as verificações a serem realizadas, foi utilizado como base a impressão de DANFE de uma NF-e. No entanto, as verificações valem para outros tipos de documentos cujas impressões são realizadas pelo sistema Manual do usuário.
Quando houve a comunicação do Monitor ou do Serviço do Manual do usuário com o PrintService e tenha sido enviada a requisição de impressão ao PrintService corretamente, o registro é marcado como Documento eletrônico enviado para impressão () (ou o equivalente para impressão em contingência ). Na imagem abaixo é possível verificar este indicativo em destaque na coluna D.
Se a comunicação com o PrintService não tenha sido realizada com sucesso, o registro ficará como Pendente de impressão (),caso o parâmetro Quantidade de tentativas de impressão (apenas comunicação) esteja definido como zero, ou como Falha de impressão (), caso o parâmetro Quantidade de tentativas de impressão (apenas comunicação) esteja definido com um valor maior que zero e todas as tentativas de comunicação já tenham sido esgotadas.
Eventuais erros de comunicação entre o serviço do DE e o PrintService para processo de reimpressão ou impressão automática, estarão registrados no log, indicando problemas de impressão do documento.
Importante
Documentos que não foram autorizados, não serão enviados para impressão. Portanto, a análise não pode se basear em um documento que ainda não tenha sido autorizado.
Em um processo de impressão manual, caso o indicativo de impressão já esteja como Documento eletrônico enviado para impressão (), uma eventual falha no processo de impressão manual não alter a situação da impressão do documento, permanecendo ele com o status de Documento eletrônico enviado para impressão ().
O botão Imprimir, presente no Monitor, faz com que ele envie uma requisição de impressão diretamente para o PrintService. Para confirmar a comunicação com o PrintService, pode ser solicitada a impressão através do botão Imprimir.
Caso ocorra um erro de comunicação do Monitor com o PrintService é gerada uma mensagem ao usuário indicando que não foi possível enviar o documento para impressão (Exemplo: Não foi possível imprimir a NFe número 302205 (sequência 1749). Verifique o arquivo de log para maiores informações.). Neste caso, o motivo de não ter havido a comunicação será registrado no log.
Se a comunicação com o PrintService não ocorra com sucesso:
- Verifique se o PrintService está iniciado.
Para verificar se o serviço do PrintService está iniciado, pode ser utilizado o Configurador ou o Console de Serviços do Windows (services.msc). No console, o nome do serviço é Senior Documentos Eletrônicos PrintService - <Instância_Instalação> (onde <Instância_Instalação> é o nome dado a instalação no momento que o sistema foi instalado).
No Log do PrintService também é possível identificar se ele foi iniciado com sucesso. Se a inicialização ocorreu com sucesso, será possível encontrar este trecho no log (data e hora irão variar de acordo com a data e hora de inicialização do serviço):
2016-06-15 13:41:17,332 [5] WARN Senior.SapiensNfe.Processos.Sistema.Aplicacao - Aplicação inicializada
2016-06-15 13:41:17,999 [5] WARN Senior.SapiensNfe.Processos.Service.Impressao.ImpressaoControlador - Serviço escutando no endereço: net.tcp://servidor:1024/Impressao.
2016-06-15 13:41:18,089 [5] WARN Senior.SapiensNfe.PrintServer.MainService - Serviço iniciado
Onde:
servidor: é o nome do servidor onde o PrintService está instalado;
1024: é a porta parametrizada no Configurador (porta que o PrintService utilizará para receber requisições).
Importante
Para garantir de que seja verificado o log atual do PrintService, convém parar o serviço do PrintService, para então efetuar a limpeza dos Logs do PrintService (logs antigos), e somente então iniciar o PrintService novamente, para somente então verificar no log se ele foi iniciado com sucesso.
- Verifique se o PrintService está respondendo.
Um teste simples que pode ser efetuado para garantir que o PrintService esteja respondendo as requisições, é executar uma conexão telnet ao PrintService.
Se tivermos como exemplo um PrintService sendo executado na porta 1024 de um servidor que tenha o nome de PCBNU00006, nosso comando telnet será: telnet PCBNU00006 1024. O comando pode ser executado a partir do Prompt de Comando do Windows (cmd.exe).
Abaixo segue imagem de exemplo do resultado do teste quando há um problema de comunicação com o PrintService:
Abaixo segue imagem de exemplo do resultado do teste quando a conexão com o PrintService foi realizada com sucesso:
É possível notar que, quando a comunicação é estabelecida com sucesso, o retorno do teste em telnet será a tela sem nenhuma mensagem, apenas com um cursor piscando no canto superior esquerdo.
Importante
Para efetuar uma conexão telnet, é necessário que o componente Telnet esteja instalado no Windows. Caso o componente não esteja instalado, verifique junto ao responsável pela TI a instalação do componente.
O teste via telnet também pode ser utilizado para garantir a comunicação com o PrintService que esteja sendo executado em um computador/servidor diferente do computador/servidor onde o Monitor ou o Serviço do eDocs estão instalados. Neste caso, a partir do comutador/servidor onde o serviço do eDocs esteja instalado (Exemplo: SERVIDORSENIOR) é executada uma conexão telnet apontando para o computador/servidor onde o PrintService está instalado (Exemplo: SERVIDORIMPRESSAO). A porta do PrintService é a 1024. O comando telnet será executado a partir do servidor SERVIDORSENIOR com a seguinte sintaxe telnet SERVIDORIMPRESSAO 1024.
- Verifique se a parametrização do PrintService está correta no Monitor (endereço e porta) para a filial que está solicitando impressão.
Em casos em que o serviço PrintService estiver respondendo corretamente (inclusive no teste via telnet), mas ao ser solicitada a impressão pelo Monitor seja gerada mensagem de erro de comunicação, é necessário identificar as parametrizações presentes no Monitor para comunicação da filial com o PrintService, pois elas devem estar incorretas (Exemplo: apontando para a porta errada do PrintService). Detalhes sobre a parametrização podem ser verificados em tópicos anteriores desta documentação.
Conforme informado no tópico Avaliar se a comunicação com o PrintService ocorreu com sucesso, quando houve a comunicação do Monitor com o PrintService e tenha sido enviada a requisição de impressão ao PrintService corretamente, o registro é marcado como Documento eletrônico enviado para impressão ().
A partir deste momento a responsabilidade de enviar a impressão para a impressora é do serviço do PrintService.
Eventuais erros de envio da impressão a partir do PrintService para a Impressora serão registrados no Log. Quando o nível de log definido no PrintService for WARN, só serão registradas mensagens da inicialização do serviço do PrintService ou mensagens de erro da execução da rotina de impressão.
Muitos erros ocorrem porque, no momento em que o PrintService se comunica com a impressora, ela não esta disponível. Neste caso, no Log é possível encontrar uma mensagem de erro indicando este problema.
Para mais detalhes dos processos executados pelo PrintService, é necessário alterar o nível de log do mesmo para DEBUG (alteração efetuada através do Configurador). A partir desta alteração, é possível identificar detalhes nos processos executados pelo componente PrintService.
Tendo em vista o processo de impressão como um todo, para comprovar de que o PrintService está enviando corretamente a requisição de impressão para a impressora, poderão ser adotados os procedimentos:
- Defina o nível do log do PrintService como Debug.
Antes de definir o log como DEBUG, convém efetuar a limpeza dos logs, para garantir que os logs a serem avaliados são atuais. Para isso, o serviço do PrintService deve estar parado. Lembrando que a alteração do log é efetuada pelo Configurador e só terá efeito após a reinicialização do serviço do PrintService.
- Coloque a impressora que irá receber a impressão em Pausa;
Este processo é executado através do console de administração de impressoras do Windows do computador/servidor onde o PrintService está instalado. Para isso, acesse o menu Impressora do console e selecione a opção Pausar Impressora.
Importante
O processo para Pausar Impressão poderá variar de acordo com a versão do Windows utilizada. Da mesma forma, permissões de ambiente poderão bloquear o processo de pausa de uma impressora. Para estas situações, o administrador de TI deverá ser acionado para apoiar a execução do processo.
- Solicite a impressão de um documento pelo Monitor do sistema, utilizando a funcionalidade de seleção de impressora.
Neste caso, tem-se como pré-requisito que a comunicação do Monitor com o PrintService está ocorrendo corretamente. Caso contrário, é necessário avaliar as informações presentes no tópico Avaliar se a comunicação com o PrintService ocorreu com sucesso deste documento.
A solicitação de impressão ocorre através do acionamento do botão Imprimir das telas do Monitor. Para exemplificar o processo, utilizaremos a solicitação de impressão de um DANFE de NF-e através da guia Notas Fiscais da tela de emissão de NF-e.
Ao solicitar a impressão, o Monitor retorna a mensagem Documento eletrônico enviado para impressão.
Para exemplificar o processo, teremos como exemplo a solicitação de impressão do DANFE da NF-e número 302167 (chave: 42151280680093000181553290003021671227036836).
- Verifique os registros no Log
No Log é possível encontrar as seguintes informações, conforme imagem abaixo
No trecho destacado em vermelho, é possível identificar a inicialização do processo de impressão pelo PrintService, no entanto, neste momento (às 16:55:46), o PrintService ainda não possuía nenhum arquivo pendente em sua fila para encaminhar a impressão para impressora.
No trecho destacado em verde, é possível identificar uma nova a inicialização do processo de impressão pelo PrintService (o processo é executado a cada 30 segundos, por padrão), no entanto, neste momento o PrintService já possui a solicitação de impressão do DANFE da NF-e 302167 em sua fila. Com isso, é possível identificar que a impressão foi enviada para a impressora Brother DPC-116C.
Importante
Em ambientes onde há restrições de acesso aos recursos de rede e de infraestrutura, no Log em modo DEBUG pode ser possível identificar que o envio da impressão a impressora foi encaminhado, no entanto, a impressão não chega até a impressora. Nestas situações, é necessário verificar as credenciais definidas para instanciar o serviço do PrintService.
- Consulte o console da Impressora para verificar as impressões pendentes.
Ao verificar o console da Impressora (O que está sendo impresso), é possível identificar que a solicitação de impressão chegou à impressora (pelo menos no Spooler de impressão do Windows). Conforme imagem abaixo:
Quando temos o registro da solicitação de impressão no console da impressora, temos a garantia de que todo o processo executado pelo eDocs está correto, sendo de inteira responsabilidade do sistema operacional Windows e da infraestrutura do cliente garantir que o documento seja efetivamente impresso na impressora. Caso não seja identificada a solicitação de impressão no console da impressora, é necessário avaliar em qual ponto da comunicação Monitor/Serviço de eDocs > PrintService > Impressora está ocorrendo o problema, com base nos procedimentos indicados anteriormente neste documento.