Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Button
TextoVoltar
Linkhttps://tdn.totvs.com/pages/releaseview.action?pageId=857586913



API de Integração entre Progress e Microsoft Word (001)


Nome Físico: utp/utapi012.p

Nome do Include com Parâmetros: utp/utapi012.i

Versão de Integração: 001

Objetivo: 

Criação de arquivos, baseados em formulários, para o Microsoft Word.

Pré-requisitos: 

É necessário ter o MS-WORD com uma versão compatível com o produto. Para mais detalhes consulte a documentação localizada em: https://tdn.totvs.com/pages/releaseview.action?pageId=195301010




Considerações Gerais


  • O procedimento interno pi-execute recebe como parâmetros valores, que serão utilizados para o preenchimento de campos de formulário existentes no documento. Caso não seja possível criar o arquivo, será retornado uma Temp-Table com os possíveis erros;
  • A include {utp/utapi012.i} contém as definições das Temp-Table´s que devem ser passadas como parâmetro para o procedimento interno pi-execute. Sendo que a chamada desta include, a inclusão de valores e a execução da api em modo persistente deve ser feita antes da chamada ao procedimento interno pi-execute;


Parâmetros de Entrada 



Temp-table tt-configuracao2: possui as definições, gerais, do arquivo a ser criado.

TEMP-TABLE tt-configuracao2

Atributo

Tipo

Formato

Valor Inicial

versao-integracao

integer

>>9


arquivo

character

x(255)

c:\tmp\utapi012.doc

modelo

character

x(255)


senha-modelo

character



exibir-construcao

logical


No

abrir-word-termino

logical


No

imprimir

Logical


No

* ver Principais Validações da Temp-Table tt-configuracao2

Atributo

Descrição

versao-integracao

Versão de Integração da API

arquivo

Nome do arquivo a ser criado

modelo

Nome do modelo a ser utilizado para criação do arquivo

senha-modelo

Senha para desproteger o modelo a ser utilizado

exibir-construcao

Exibir construção do arquivo durante o processo

abrir-word-termino

Abrir Microsoft Word após término do processo

imprimir

Imprime o documento



Temp-Table tt-dados: possui as definições, gerais, sobre cada um dos campos a serem preenchidos no documento.

TEMP-TABLE tt-dados

Atributo

Tipo

Formato

Valor Inicial

campo-nome

character



campo-tipo

integer

9


campo-valor

character



* ver Principais Validações da Temp-Table tt-dados

* ver Referência sobre Tipo Campo

Atributo

Descrição

campo-nome

Nome do campo de formulário

campo-tipo

Tipo do campo

campo-valor

Valor a ser inserido no campo





Execução


O programa utp/utapi012.p  irá executar 2 validações básicas:




1º Validação:

Versão de Integração

O programa irá verificar se o programa chamador está íntegro com a API, e isto ocorre através da verificação da versão de integração passada como parâmetro. Caso a versão esteja incompatível, a API abortará a execução retornando o código de erro 3941.



2ª Validação:

Inconsistência ou Insuficiência dos Dados

O programa irá verificar a inconsistência e/ou insuficiência dos dados, e isto ocorre através da verificação dos dados passados como parâmetros. Caso os dados sejam inconsistentes ou insuficientes, a API abortará a execução retornando o código de erro 8646.



Cabe ao programa de origem, verificar os registros que estão com erro.

* ver Principais Validações da Temp-Table tt-configuracao2
* ver Principais Validações da Temp-Table tt-dados




Parâmetros de Saída


No retorno da execução do utp/utapi012.p, será retornado um dos valores via RETURN-VALUE:


NOK: 

Criação do arquivo sem sucesso, pois os dados passados como parâmetros, através das Temp-Tables, são inconsistentes ou foram insuficientes;

OK: 

Criação do arquivo com sucesso.







Outras Informações


Abaixo se encontram as principais validações a serem executadas em cada uma das Temp-Tables de entrada utilizadas pelo procedimento interno pi-execute.

Principais Validações da Temp-Table tt-configuracao2:

  • Existência de dados na Temp-Table tt-configuracao2;
  • Se os parâmetros enviados para a API indicarem que o documento deve ser impresso e não existe nenhuma impressora cadastrada no Windows a Api retornará o erro 25001.
  • Inexistência do arquivo a ser criado, sendo passado como parâmetro no campo: tt-configuracao2.arquivo;
  • Existência do modelo a ser utilizado, sendo passado como parâmetro no campo: tt-configuracao2.modelo;
  • Integridade dos dados.


Principais Validações da Temp-Table tt-dados :

  • Existência de dados na Temp-Table tt-dados;
  • Compatibilidade entre os valores dos campos e seus respectivos tipos de campos;
  • Integridade dos dados.


A seguir se encontram referências sobre os valores que alguns campos podem assumir:


Referência Tipo Campo

01 -  Check-Box

02 -  Drop-Down

03 -  Text-Input



Atributo imprimir

Quando o atributo imprimir for YES, o documento será impresso. O formulário será enviado para a impressora padrão do windows.

Pode-se usar a linha de comando SYSTEM-DIALOG PRINTER-SETUP para alterar a impressora que será utilizada na impressão (veja exemplo abaixo). É importante ressaltar que a única informação utilizada pela API, é o nome da impressora selecionada. Todos os demais parâmetros, da caixa de dialogo exibida, serão desconsiderados pela API.



Caso o nome da impressora retornada pelo Progress, utilizando o comando session:printer-name não seja uma impressora válida para o ms-word foram disponibilizadas as procedures:

pi-getImpressora  .


Retorna uma String com a impressora atualmente configurada. Ex:

  • run pi-getImpressora in h-utapi012 (output cImpressora)



pi-setImpressora 

É possível atribuir um valor qualquer a impressora, este valor será repassado ao ms-word como destino da impressão. Ex:

  • run pi-setImpressora in h-utapi012 (input session:printer-name + “ on “ + session:printer-port).



Exemplo


Abaixo programa exemplo de utilização da API.

Instruções:

  • Crie um formulário no Word com três campos texto, os campos precisam ter os nomes (nome, endereço, telefone) e grave como um modelo do Word no diretório c:\tmp com o nome de  a_modelo.dotdocx.
  • Execute o programa abaixo:
Expandir
titleClique aqui para visualizar...
Bloco de código
languageruby
{utp/utapi012.i}              
run utp/utapi012.p persistent set h-utapi012.                                                  
SYSTEM-DIALOG PRINTER-SETUP.  /*seleciona impressora*/
os-delete value("c:\tmp\a.docdocx").

create tt-configuracao2.       
assign tt-configuracao2.versao-integracao = 1
       tt-configuracao2.arquivo = "c:\tmp\a.docdocx" /*arquivo que será gerado*/
       tt-configuracao2.modelo  = "c:\tmp\a_modelo.dotdocx" /*arquivo que contem o formulário*/
       tt-configuracao2.senha-modelo = ""
       tt-configuracao2.exibir-construcao = no
       tt-configuracao2.abrir-word-termino = no
       tt-configuracao2.imprimir = yes. /*imprime o documento*/

create tt-dados.
assign tt-dados.campo-nome = "Nome"
       tt-dados.campo-tipo = 3
       tt-dados.campo-valor = "Datasul - Tecnologia".         
create tt-dados.
assign tt-dados.campo-nome = "Endereco"
       tt-dados.campo-tipo = 3
       tt-dados.campo-valor = "Santos Dummond, 831".         
create tt-dados.
assign tt-dados.campo-nome = "telefone"
       tt-dados.campo-tipo = 3
       tt-dados.campo-valor = "(47) 441-7000".        

/*-------------------------------------------------------------------*/
run pi-execute in h-utapi012 (input-output table tt-configuracao2,
                  input-output table tt-dados,
                  input-output table tt-erros).
/*-------------------------------------------------------------------*/


if return-value = "NOK" then do: 
    for each tt-erros: 
        disp tt-erros with 1 col width 500. 
    end.
end. 
/*-------------------------------------------------------------------*/                 
Delete procedure h-utapi012.    
/*-------------------------------------------------------------------*/             
    

 

 




Técnica de exportação de dados:

 

Incluída na release 12.1.23, esta técnica visa facilitar as simulações dos problemas sem a necessidade de efetuar parametrizações de negócio (ou dados de negócio).

            Para gerar os dados necessários para a simulação é necessário que a API tenha a técnica implementada e esteja com o extrato de versão ativo. Seguindo isto, serão gerados no diretório temporário da sessão, alguns arquivos com extensão .json e nomeados de acordo com as temp-tables recebidas como parâmetro para gerar o relatório.

Estando com estes arquivos gerados (ex..: “tt-temp-table.json”), para simular o problema, basta efetuar a execução da API lendo estes registros e os passando como parâmetro.



Técnica de importação dos dados:

 

Simulação com os arquivos .Json oriundos da técnica acima, abaixo um exemplo de código para a utapi012 efetuando um input desses registros:



Bloco de código
languageruby
{utp/utapi012.i}             

run utp/utapi012.p persistent set h-utapi012.                                                 




os-delete value("c:\tmp\a.docdocx").




TEMP-TABLE tt-configuracao2:READ-JSON("file", "C:\tmp\tt-configuracao2.json", "empty").

TEMP-TABLE tt-dados:READ-JSON("file", "C:\tmp\tt-dados.json", "empty").




run pi-execute in h-utapi012 (input-output table tt-configuracao2,

                              input-output table tt-dados,

                              input-output table tt-erros).




if return-value = "NOK" then do:

    for each tt-erros:

        disp tt-erros with 1 col width 500.

    end.

end.                 

Delete procedure h-utapi012.