No ecrã
SQL Studio do PHC GO (
menu Menu > Definições > Monitor de Sistema > SQL Studio ), é possível executar códigos implementados nas linguagens
Transact SQL e
Visual Basic .NET. Esta ferramenta funciona como um terminal da aplicação.
Com esta ferramenta, podemos facilmente simular a execução de um comando que queremos implementar em uma peça da Framework, antes de efetivamente implementá-lo. Ou seja, podemos rapidamente validar se o código está funcional e também identificar erros no código.
Vamos supor que estamos a implementar um desenvolvimento que utiliza a função
GenerateReport da classe
SDK Report, cujo objetivo é gerar um ficheiro pdf de um determinado documento utilizando uma configuração de relatório.
sticky_note_2Notas
Neste artigo poderá obter informações detalhadas sobre as funções da classe
Report.
Vamos então simular o funcionamento desta função com o SQL Studio, de forma a perceber rapidamente se teremos o resultado desejado.
Esta função recebe 5 parâmetros de entrada:
- O nome da entidade
- O stamp do relatório que será utilizado
- O stamp do registo que será impresso
- O número da série do documento (caso a entidade utilizar séries de documento
- A via do documento, sendo este parâmetro opcional
Neste exemplo, vamos gerar a segunda via de um documento de faturação da série Fatura (ndoc igual a 1) cujo stamp é z202103181624060190137781.
O relatório que será utilizado será o
PHC GO Documentos Faturação, cujo stamp é
z202102180826521220071603.
No ecrã
SQL Studio do PHC GO (
menu Menu > Definições > Monitor de Sistema > SQL Studio ), selecionar o tipo de comando
Visual Basic .NET e executar o comando abaixo.
Dim relatorio As PHCResult = SDK.Report.GenerateReport(Ft.getTableName, "z202102180826521220071603", "z202103181624060190137781", 1, ReportSeries.VIA2)
Após a execução deste comando, será apresentada a mensagem “O comando foi executado no servidor mas não produziu resultados.”. No entanto, com esta mensagem não sabemos se o comando falhou ou se o ficheiro foi gerado com sucesso.
Esta mensagem foi despoletada pois não foi feito nenhum
Return no código executado.
O
SQL Studio, quando selecionado o tipo de comando
Visual Basic .NET, espera um
Return de um
Objeto.
Por exemplo, se executarmos o comando abaixo no
SQL Studio, será apresentado no ecrã a estrutura do objeto
MessageVO, contento um registo com a mensagem “Hello World” na sua propriedade
messageCode:
return New MessageVO("Hello World")

Isso porque estamos a retornar um objeto do tipo
MessageVO.
Vamos então alterar o nosso código inicial que possui a função
GenerateReport de forma que o objeto
relatório seja retornado:
Dim relatorio As PHCResult = SDK.Report.GenerateReport(Ft.getTableName, "z202102180826521220071603", "z202103181624060190137781", 1, ReportSeries.VIA2)
Return relatorio
O resultado apresentará a estrutura de um objeto do tipo
PHCResult. Como sua estrutura possui apenas três propriedades, sendo todas elas do tipo Object, não conseguimos ainda chegar a uma conclusão se o comando foi de facto executado com sucesso:

No entanto, esta informação é útil para passarmos para o próximo passo da análise desta função: vamos então retornar os objetos da propriedade
result do
PHCResult.
Assim, ao executar o código abaixo, já conseguimos chegar a valores mais legíveis, e podemos identificar que a propriedade
relatorio.result.phcString carrega a informação do nome do ficheiro que foi gerado pela função
GenerateReport, ou seja, o ficheiro foi de facto gerado.
Dim relatorio As PHCResult = SDK.Report.GenerateReport(Ft.getTableName, "z202102180826521220071603", "z202103181624060190137781", 1, ReportSeries.VIA2)
Return relatorio.result

Vamos agora forçar um erro na execução desta função, alterando o stamp do relatório para um valor que não existe:
Dim relatorio As PHCResult = SDK.Report.GenerateReport(Ft.getTableName, "XXXXXXX", "z202103181624060190137781", 1, ReportSeries.VIA2)
Return relatorio
Após analisar o retorno deste comando, podemos perceber que a propriedade
result do
PHCResult já não possui dados, enquanto que a propriedade
messages tem informação.

Se no comando acima, retornarmos o valor
relatorio.messages, já poderemos verificar o que se passou e qual foi o erro retornado pela aplicação ao executar a função
GenerateReport:

Este exemplo mostrou como podemos utilizar o
SQL Studio para analisar código VB.NET na aplicação. Conseguimos perceber com detalhes como funciona a função
GenerateReport e validamos o seu funcionamento.
Neste artigo, no separador
GenerateReport, poderá verificar um exemplo prático desta função aplicado a uma Regra de negócio
Após Gravar da entidade
Faturação, cujo objetivo é enviar por e-mail o documento de faturação para o cliente após a sua introdução.
No ecrã
Logs e Erros do PHC GO (
menu Menu > Definições > Monitor de Sistema > Logs e Erros ), é possível verificar o conteúdo dos últimos registos existentes no ficheiro OnErrorLog.txt da instalação.
Quando existe um erro na aplicação, a informação detalhada do erro fica registada neste ficheiro de log.
No entanto, podemos executar código de forma a escrever informação neste ficheiro, simulando um “print na consola”.
As funções SDK da classe
Debug são responsáveis por escrever mensagens no ficheiro OnErrorLog.txt da aplicação permitindo debugar código durante a sua execução.
sticky_note_2Notas
Neste artigo poderá obter informações detalhadas sobre as funções da classe Debug.
Vamos supor que estamos a implementar um desenvolvimento complexo que é bem compilado, mas na prática não tem o resultado resperado. Ao longo do código, poderemos implementar a função
LogInfo para nos ajudar a debugar esta situação e perceber o que correu mal.
Podemos facilmente entender como essa estratégia poderá ser feita implementando por exemplo uma regra de negócio
Ao Introduzir para a entidade
Clientes, com o seguinte código:
SDK.Debug.LogInfo("Hello World")
Depois de instalar o addon que contém a peça desenvolvida, ao aceder ao ecrã de Clientes e clicar no botão
Introduzir, a mensagem "Hello World" será gravada no ficheiro OnErrorLog.txt e no ecrã
Logs e Erros poderemos verificar em que momento esta ação foi efetuada:

Assim, se necessário, podemos “printar” valores de variáveis e analisar cronologicamente os seus valores ao longo do nosso código VB.NET de forma a identificar possíveis erros existentes.