Comandos que permitem a integração de códigos ADVPL com códigos Javascript. Repositório com exemplos
Esse recurso funciona apenas quando a aplicação é executada pelo Protheus. Para mais informações, clique aqui. |
Para garantir melhor performance e boas práticas da aplicação, recomenda-se converter as informações disponibilizadas em serviços web. |
Pré-requisitosPara desenvolver essa integração, é necessário: - Na aplicação web, criar o arquivo advpltojs.js em assets/preload. Esse arquivo irá receber e tratar as instruções ADVPL que foram enviadas.
- No fonte que chama a aplicação (utilizando a FwCallApp), criar uma Static Function com o nome JsToAdvpl. Essa função irá receber e tratar as instruções Javascript que foram enviadas. Importante: o fonte não pode ser tlpp, pois em tlpp não existe a chamada de funções estáticas.
Arquivo advpltojs.js na aplicação webEsse arquivo deve conter uma função e javascript para receber e tratar as instruções ADVPL enviadas. Essa função deve receber dois parâmetros: codeType que indica qual o código da ação que foi definido e content que fornece a informação que deve ser tratada. function(codeType, content) {
// Se a interação que recebi for igual a mensagemProtheus
if (codeType == 'mensagemProtheus') {
// Eu dou um alert com a informação que recebi para trabalhar
alert('Mensagem recebida do Protheus: ' + content);
}
} |
Static Function JsToAdvplEssa função recebe três parâmetros: oWebChannel que é o objeto do TWebEngine, cType que indica qual o código da ação que foi definido e cContent que fornece a informação que deve ser tratada. Function callAppExample()
FwCallApp('nome-do-app.app')
Return Nil
Static Function JsToAdvpl(oWebChannel,cType,cContent)
Do Case
// Se a interação que recebi for igual a mensagemJavascript
Case cType == 'mensagemJavascript'
// Imprimo no server a informação que recebi para trabalhar
Conout(cContent)
End
Return .T. |
Enviando interações- Para enviar as interações desejadas da aplicação web para o Protheus, utilizamos a função jsToAdvpl() do serviço ProJsToAdvplService disponibilizado pela biblioteca;
- Para enviar as interações desejadas do Protheus para a aplicação web, utilizamos o método AdvplToJs() disponibilizado pelo oWebChannel.

function(codeType, content) {
// Se a interação que recebi for igual a mensagemProtheus
if (codeType == 'mensagemProtheus') {
// Eu dou um alert com a informação que recebi para trabalhar
alert('Mensagem recebida do Protheus: ' + content);
}
} |
import { Component } from '@angular/core';
import { ProJsToAdvplService } from '@totvs/protheus-lib-core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'doc-lib-core';
constructor(private proJsToAdvplService: ProJsToAdvplService) {}
click1(): void {
this.proJsToAdvplService.jsToAdvpl('mensagemJavascript', 'Comando Javascript')
}
click2(): void {
this.proJsToAdvplService.jsToAdvpl('receberProtheus', '')
}
} |
Function doclibcore()
FwCallApp("doc-lib-core")
Return
Static Function JsToAdvpl(oWebChannel,cType,cContent)
Do Case
// Se a interação que recebi for igual a mensagemJavascript
Case cType == 'mensagemJavascript'
// Imprimo a informação que recebi para trabalhar
alert('O que veio do JS: ' + cContent)
// Se a interação que recebi for igual a receberProtheus
Case cType == 'receberProtheus'
// Envio um comando ADVPL para minha aplicação Web
oWebChannel:AdvPLToJS('mensagemProtheus', 'Comando ADVPL')
End
Return .T. |
|