# Etiquetas e relatórios

> Os dossiês Relatório, Etiquetas e Linhas no banco de dados de uma execução: cada registro, cada artefato e cada linha com as suas tentativas de entrega, o seletor de fila, Abrir PDF, Reenviar relatório, Imprimir e Reimprimir, Reenviar, e as duas maneiras de gravar um documento novo.

O registro guarda os documentos produzidos a partir da execução em dois dossiês, **Relatório** e
**Etiquetas**, entre os critérios julgados e as ocorrências. Os dois são evidência antes de tudo e
superfície de comando depois: todo artefato lista toda tentativa de entrega com a fila para onde foi
e a situação durável dela, e nenhum dos dois jamais chama de "impresso" um documento que está na
fila. Os dois carregam o mesmo par de gestos, distinguidos apenas pelo meio: gravar um documento
**novo** a partir da evidência congelada da execução, e **reemitir** um documento gravado sem compor
nada de novo. A visualização segue Ver históricos; os verbos nomeiam abaixo as suas próprias
exigências.

Uma permissão que o papel não carrega e um momento que recusa são duas coisas diferentes, e os
dossiês as respondem de maneiras diferentes. Um papel sem uma das permissões abaixo não recebe
desenhado nenhum dos controles que ela cobre: a linha de envio, o seu seletor de fila e o bloco que
grava um documento novo simplesmente não estão lá, um aviso no cabeçalho do dossiê diz por que
("Ações de etiqueta indisponíveis", "Ações de relatório indisponíveis"), e todo artefato, valor
resolvido e tentativa de entrega continua legível, que é para o que aquele papel veio. Um controle
que só o momento recusa fica onde está, cinza, dizendo em si mesmo o que falta.

Os dois dossiês oferecem um seletor de fila por artefato aos papéis que podem enviar um, semeado com
a fila em vigor na unidade da execução para aquele tipo e aquela fronteira de documento
([Impressoras](process-printers)) quando essa fila está instalada, e com "Escolha uma fila
instalada" quando não está. Sem nenhuma fila instalada, uma frase diz isso, e o seletor e o verbo
ficam cinzas com "Nenhuma fila de impressão do Windows está instalada nesta estação."

## Situações {#statuses}

| Situação | Significado |
| --- | --- |
| Não enviado | O artefato ou o registro existe e nenhuma tentativa foi gravada. |
| Enviado para a fila | O Windows aceitou o documento. Isso não confirma que saiu papel. |
| Falhou | A fila recusou; o erro é mostrado ao lado da tentativa. |
| Envio incerto | A aplicação parou depois de gravar a tentativa e antes de gravar a resposta da fila. Ela nunca é repetida automaticamente, porque a impressora pode já ter produzido o documento. |
| A geração falhou | Uma etiqueta cujos comandos não puderam ser gerados; o motivo é mostrado e não há nada para imprimir. |

Cada tentativa mostra a sua situação, a sua fila, a sua janela ("início → conclusão", ou "início →
sem resposta duradoura") e o seu erro.

## Relatório {#report}

O dossiê conta os relatórios registrados na execução: um por comando de relatório que optou por
imprimir automaticamente ou por guardar uma cópia, e nada para um comando que não pediu nenhum dos
dois, já que uma geração simples é uma exportação. Sem nenhum, ele diz "Nenhum relatório está
registrado nesta execução. O PDF de fim de execução é gravado aqui quando o procedimento guarda uma
cópia dele na execução ou o imprime automaticamente" e fecha com "; um novo sempre pode ser
renderizado abaixo." apenas para um papel que recebe desenhado o bloco que renderiza um.

Cada registro é uma seção recolhível encabeçada pelo nome do grupo, pelo nome do layout, pelo
instante e pela situação. Dentro dela: o nome do arquivo publicado, o que a execução guarda dele
("cópia guardada na execução · 312,4 KB" ou "somente referência", com uma dica dizendo o que um
reenvio vai submeter), o identificador do artefato e, em seguida:

| Controle | O que faz | Fica cinza quando | Exige |
| --- | --- | --- | --- |
| Abrir PDF (na estação) ou Baixar PDF (num navegador) | Abre no visualizador do sistema o PDF publicado na pasta de relatórios, ou, num navegador, o abre numa aba nova (um navegador que bloqueia a aba o baixa em vez disso). Um registro cujo nome guardado não é o de um relatório publicado nesta estação, que é o que uma execução importada de outra instalação traz, é recusado antes de ler qualquer coisa: "Este registro não nomeia nenhum relatório guardado nesta estação. Gere-o de novo em Históricos." Um nome que é mesmo o de um relatório publicado, mas cujo arquivo não está mais guardado, diz "O PDF do relatório não está mais guardado nesta estação. Gere-o de novo em Históricos." | Uma geração, um reenvio ou outra abertura está em andamento. | Ver históricos |
| Tentativas de fila | A lista de tentativas, da mais nova para a mais antiga. | | |
| Reenviar relatório | Submete um documento à fila escolhida e acrescenta uma tentativa a este registro, nunca um registro novo. Um registro com cópia guardada na execução submete essa cópia byte a byte; um com somente referência submete o PDF publicado como ele está, então uma renderização posterior é o que sai, e um PDF que sumiu é recusado ("O PDF do relatório não está mais guardado no diretório de relatórios. Gere-o de novo antes de reenviar."). | Nenhuma fila escolhida, outro verbo em andamento, a estação somente para leitura. | Ver históricos, Executar procedimentos |

Consultar o que a execução publicou é leitura, e produzir ou reemitir um documento não é, então
os três gestos são liberados em separado: a linha de arquivo aparece para todo papel que lê o
dossiê, um papel sem Executar procedimentos não recebe seletor de fila nem reenvio, e um sem
Exportar/importar históricos não recebe o bloco que renderiza um PDF novo. O que o momento
recusa é dito no próprio controle cinza: "Um relatório ainda está abrindo.", "Um relatório ainda está sendo enviado.", "Um relatório
ainda está sendo gerado.", "Runtime parado", "Nenhuma fila de impressão
do Windows está instalada nesta estação.", "Escolha a fila de impressão para onde este relatório
vai."

**Novo PDF com um relatório atual**, a seção recolhível sob a lista, é a outra metade do par: um
seletor de **Relatório** ("(relatório do procedimento)" ou qualquer layout da biblioteca) e **Gerar
relatório**, que renderiza de novo o PDF da execução a partir do arquivo dela, o republica na pasta
de relatórios sob o nome simples da execução, não registra nada e não chega a fila nenhuma. A seção
inteira é desenhada apenas para um papel com Exportar/importar históricos e, enquanto a execução
ainda grava, ela carrega o aviso "Um relatório é gerado assim que a execução termina e a
evidência final dela é congelada." sobre um seletor e um verbo cinzas com "Esta execução ainda está
gravando, então ela ainda não tem snapshot congelado."; essa mesma renderização é o Gerar PDF da
faixa, que também abre o resultado ([Exportar uma execução](histories-export#pdf)). Um layout
excluído enquanto o dossiê está aberto sai do seletor, que volta para o do próprio procedimento.

## Etiquetas {#labels}

O dossiê conta os artefatos guardados na execução, do mais novo para o mais antigo: as etiquetas que
o procedimento emitiu no Início e na Conclusão, e toda etiqueta gravada depois, cujo nome diz por
qual caminho ela veio: `<group> · Generated from Histories` para uma renderizada por
**Nova etiqueta**, na faixa, e só `Generated from Histories` para uma renderizada por
**Nova etiqueta com um modelo atual**, que não pertence a grupo nenhum. O nome é gravado em inglês,
qualquer que seja o idioma da tela. Sem nenhum, ele diz "Nenhum artefato de etiqueta está guardado
nesta execução. As ações automáticas e toda etiqueta emitida para ela depois aparecem aqui."

Cada artefato é uma seção recolhível encabeçada pelo nome do grupo, pelo nome do modelo de
documento, pela fronteira (Início ou Conclusão), pelo instante e pela situação. Dentro dela: o erro
de geração, quando há um; a faixa RAW (a contagem de bytes congelada ou "SEM CONTEÚDO", o arquivo de
origem do modelo de documento, o SHA-256 da versão do modelo usada, o identificador do artefato);
**Valores resolvidos**, uma linha por marcador com o valor substituído e a origem de onde ele veio
("Nenhum marcador neste arquivo de comandos fixos." para uma etiqueta fixa); **Tentativas de fila**;
e, para um artefato com comandos, a linha de envio:

| Controle | O que faz | Fica cinza quando | Exige |
| --- | --- | --- | --- |
| Imprimir (Reimprimir depois que existe uma tentativa) | Submete à fila escolhida os bytes congelados exatos e acrescenta uma tentativa. Nenhum marcador é resolvido de novo e o modelo de documento nunca é lido, então a fila recebe este artefato byte a byte, tenha mudado o que tiver mudado desde então. | Nenhuma fila escolhida, outro envio em andamento, a estação somente para leitura. | Ver históricos, Executar procedimentos |

Um papel sem as duas permissões não recebe linha de envio nenhuma, e nem bloco de composição: ele lê
os artefatos, os valores resolvidos deles e as tentativas deles, e o dossiê não lhe oferece nada
para acionar. O que o momento recusa é dito no próprio controle cinza: "Uma etiqueta ainda está
sendo enviada.", "Runtime parado", "Nenhuma fila de impressão do Windows está
instalada nesta estação.", "Escolha a fila de impressão para onde este artefato vai."

Uma etiqueta nova para a execução é gravada de duas maneiras, e nenhuma delas a envia: o artefato
novo aparece no topo do dossiê assim que é gravado, e você o imprime depois pela entrada dele.

- **Nova etiqueta**, na faixa acima do registro, renderiza uma das etiquetas que o procedimento da
  execução configura, a qual já casa um modelo de documento com os mapeamentos de marcador
  confirmados dele, então nenhum formulário é preciso. O seletor dela vem em "(etiqueta do
  procedimento)", a primeira etiqueta de conclusão na ordem de emissão (a primeira etiqueta de
  início num procedimento que não emite nenhuma na Conclusão), e lista todo comando de etiqueta do
  procedimento nomeado pelo seu grupo (com "· no Início" ou "· na Conclusão" quando um grupo tem
  várias). Uma escolha cujo modelo de documento saiu da biblioteca diz "· sem modelo", uma cujo
  modelo não tem comandos diz "· sem comandos"; as duas continuam listadas e não podem ser geradas.
  O filtro de veredito do comando é ignorado: você pediu esta etiqueta. Uma execução cujo
  procedimento sumiu, e uma execução importada, não configuram etiqueta nenhuma ("O procedimento
  desta execução não configura nenhuma etiqueta."). Só uma execução terminada gera.
- **Nova etiqueta com um modelo atual**, a seção recolhível sob os artefatos, toma qualquer modelo
  de documento da biblioteca que tenha comandos e mapeia à mão cada marcador a partir de evidência
  já congelada nesta execução. Para cada marcador: um seletor de **origem** listando os valores
  congelados com a sua prévia ("Identidade da execução · Nome do modelo: Câmara climática",
  "Metadados · Série: A12", "Critério · Sobressinal · ciclo 1 · Resultado: OK"), um formato para uma
  origem de data (Data e hora da estação, Data da estação, Hora da estação, ISO 8601) ou um número
  de casas decimais para uma origem numérica ("Como foi registrado", 0 a 9), e uma caixa **Confirmar
  o mapeamento**. A linha sob as linhas conta "n de m marcadores confirmados explicitamente", e
  **Gerar etiqueta** fica cinza com "Confirme antes cada marcador contra uma origem congelada."
  até que todo marcador esteja confirmado com uma origem de verdade; um modelo sem marcadores gera
  comandos fixos, e um sem comandos é recusado ("Este modelo ainda não tem comandos de
  impressora."). Os valores oferecidos são apenas os congelados: nada ao vivo é lido, e uma execução
  que ainda grava não tem snapshot terminal para gerar a partir dele ("Snapshot final
  indisponível", com o verbo cinza em "Esta execução ainda está gravando, então ela ainda não tem
  snapshot congelado.").

As duas maneiras exigem Ver históricos e Executar procedimentos, sem os quais nenhuma delas é
desenhada, e uma estação que aceite escritas, que apenas as deixa cinzas ("Runtime parado"); o artefato que elas gravam é imutável, e o desfecho cai no feed de ações ("Nova
etiqueta registrada · modelo").

## Linhas no banco de dados {#database-rows}

Uma execução cujas ações gravam num banco de dados da fábrica
([comandos de linha no banco de dados](process-actions#database-row-commands)) carrega um terceiro
dossiê, **Linhas no banco de dados**, abaixo dos outros dois; uma execução sem uma linha assim não
desenha nenhum. Ele conta as linhas que a execução gravou ou tentou gravar ("1 linha", "`<n>`
linhas"). Cada linha é um item recolhível encabeçado pelo nome do grupo, pela tabela e pelo
dispositivo para onde foi ("`<table>` por `<device>`"), pelo momento e pelo instante, e pela
situação da última tentativa dela. Dentro, **Valores** lista uma linha por coluna com o valor que a
execução congelou quando o comando dela disparou ("(sem valor)" para um vazio), e **Tentativas**
lista cada tentativa com a situação, a janela e a resposta do banco de dados.

| Situação | Significado |
| --- | --- |
| Linha gravada | O banco de dados aceitou a linha. |
| Linha não gravada | O banco de dados a recusou, não respondeu a tempo ou não pôde ser alcançado; o motivo está ao lado da tentativa, nas palavras do driver. |
| Gravação incerta | A estação parou depois de gravar a tentativa e antes de o banco de dados responder. Ela nunca é reenviada sozinha, porque o banco de dados talvez já tenha a linha. |
| Nunca enviada | A linha está gravada e nenhuma tentativa foi feita. |

| Controle | O que faz | Fica cinza quando | Exige |
| --- | --- | --- | --- |
| Reenviar | Envia os valores que esta execução congelou, sem mudança, à mesma tabela pelo dispositivo como ele está configurado agora, e acrescenta uma tentativa a esta linha. Nada é resolvido de novo a partir da configuração. Uma linha que o banco de dados já aceitou é acrescentada uma segunda vez. | Uma linha ainda está sendo enviada, a estação somente para leitura. | Ver históricos, Executar procedimentos |

Um papel sem as duas permissões lê as linhas e as tentativas delas e não recebe a fileira de envio;
o cabeçalho do dossiê diz "Reenviar uma linha precisa do acesso a Históricos e da permissão Executar
procedimentos. As linhas e as tentativas delas continuam disponíveis para consulta." O resultado de
um envio chega ao registro de ações: "A linha foi gravada em `<table>`." ou "A linha não foi
gravada: `<reason>`".

## O que os dossiês não fazem {#what-the-dossiers-do-not-do}

Eles nunca renderizam de novo uma etiqueta ou um relatório gravado para reemiti-lo: uma reimpressão
envia bytes congelados e um reenvio envia o documento registrado. Eles nunca mudam um artefato mais
antigo. Eles não imprimem a página de teste de um modelo de documento (isso é a própria página do
modelo, em [Modelos de documento](process-labels#test-send)), e não decidem por qual fila um
procedimento imprime: o seletor daqui é por artefato e por envio.
