Árvore de páginas

Versões comparadas

Chave

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

O SmartClient Desktop é uma aplicação C++ monolítica (independente), enquanto o WebApp é executado á partir dos navegadores.

Os navegadores possuem características e medidas de segurança que podem trazer mudanças de comportamento ao WebApp durante o uso do ERP, este documento descreve essas características, para apoia-los durante a transição.

🚨 Um bom exemplo é o TWebEngine, no SmartClient Desktop este componente é um Chromium embutido na aplicação, enquanto no WebApp, ele é um iframe.

Onde encontro as informações consolidadas sobre o WebApp?


Neste link você terá acesso às informações de download, configuração e notas de release do WebApp:

1. Versão WebApp

Ao utilizar o TWebEngine (iframe):
Não é possível executar o método navigate para a página https://www.google.com/


A grande maioria dos sites, incluíndo o google, impede seu uso através de um iframe por questões de segurança, não existe contorno para essa questão, sendo apresentado o seguinte erro no console de seu navegador:

chromewebdata/:1  Refused to display 'https://www.google.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

Caso seja imprescindível para sua aplicação abrir um site com este bloqueio, pode utilizar a função ShellExecute, mais informações no link: TWebEngine:Navigate

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
// Exemplo de uso para Windows
ShellExecute( "open", "http://www.google.com.br", "", "", 1 )
 
// Exemplo de uso para Linux
shellExecute("Browser", "/usr/bin/firefox", "http://www.google.com.br", "/", 1 ) 

Ao utilizar o TWebEngine (iframe):
Não é possível executar o método navigate para um arquivo local, exemplo: file:///dir/arquivo


Esta também é uma medida de segurança dos navegadores, como contorno, recomendamos copiar o arquivo em questão para uma pasta temporária no Servidor através da função CpyF2Web, acessando este arquivo na sequencia, mais informações no link: TWebEngine:Navigate

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
DEFINE DIALOG oDlg TITLE "Contorno para file://" FROM 0,0 TO 800,1200 PIXEL

  // Copia o arquivo da Estacao para o Servidor, retornando seu caminho
  // Este exemplo foi esrito para Linux, ao utilizar em Windows,
  //   basta mudar o arquivo para "c:/dir/arquivo"
  cFilePath := CpyF2Web("l:/home/mansano/totvs/file.txt", .T., .F., .F., .F.)
  
  oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,,)
  oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT

  // Executa o Navigate para o arquivo temporario no Servidor
  oWebEngine:navigate(cFilePath)

ACTIVATE DIALOG oDlg CENTERED 

A importância do WebAgent para a integração com a estação de trabalho


Informações

Para uso das rotinas padrão, como cadastros e relatórios, não existe impedimento no uso do ERP sem a utilização do WebAgent.

O navegador não permite que você acesse arquivos locais, ou aplicações instaladas em sua estação de trabalho, mais uma vez, por questões de segurança.

Isso implica no bloqueio de funções importantes ao ERP, como por exemplo, a FCREATE(), para criar um arquivo, ou mesmo a integração com o Excel.

O WebAgent é um serviço websocket, seguro, que permite esses acessos bloqueados pelos navegadores, mais informações no link: 2. WebApp - WebAgent

WebApp em dispositivos móveis


O WebApp é homologado para Tablets, é possível navegar pelo ERP a partir de um celular, porém a experiência de navegação será muito prejudicada, motivo pelo qual não é homologado.

Mais informações no link: SmartClient HTML (WebApp) - Navegadores homologados

Passagem de parâmetros na abertura do ERP através do Navegador


O SmartClient Desktop permite a passagem de parâmetros quando executado em linha de comando, o WebApp permite a mesma ação, passando os parâmetros diretamente na URL de seu navegador, abaixo um exemplo:

http://10.173.9.215:5011?E=ambiente&P=SIGAFAT&A=param1&A=param2&A=param3

Mais informações no link: Parâmetros de Linha do SmartClient HTML

Passagem de parâmetros na abertura do ERP através do WebAgent (parâmetro launch)


É possível também executar o WebAgent passando parâmetros de abertura, uma característica importante caso queira automatizar algum processo customizado, sem precisar utilizar seu navegador para isso.

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
C:\Users\Administrator\AppData\Local\Programs\web-agent\web-agent.exe launch "http://10.173.9.215:5011?E=ambiente&P=SIGAFAT&A=param1&A=param2&A=param3" --browser="C:\Program Files\Google\Chrome\Application\chrome.exe" 

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Launch

Execução de rotina sem interface através do WebAgent (parâmetro launch com --headless)


Existem algumas rotinas de processamento que não necessitam de interface (tela), é possivel executar essas rotinas utilizando em conjunto os parâmetros launch e --headless.

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
C:\Users\Administrator\AppData\Local\Programs\web-agent\web-agent.exe launch "http://10.173.9.215:5011?E=ambiente&P=u_headless" --browser="C:\Program Files\Google\Chrome\Application\chrome.exe" --headless 

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Headless

Diferenças na aplicação de CSS (SetCSS) entre o WebApp e o SmartClient Desktop


Dadas as diferenças de tecnologia entre os dois Clients, a renderiação de estilo (CSS) também sofre diferenças de comportamento.

No ERP essas diferenças são tratadas pelas Squads responsaveis pelo produtos, e caso sua empresa possua customizações que utilizam CSS, podem ser necessários ajustes caso comece a utilizar o WebApp.

Mais informações nos links:

SetCSS no WebApp

SetCSS

Limite de conexões por browser


Todos os browsers no mercado possuem um limite máximo de conexões (paralelas) por domínio, no caso do ERP, não serão possiveis mais conexões com o Servidor de Aplicação quando este limite for atingido pelo mesmo navegador.

Mais informações no link: Limite de conexões por browser


BrowserNúmero de conexões simultâneas
Firefox®6
Chrome™6
Safari®6
Opera®6
Edge®6
Yandex®5
iOS®6
Android™6

Teclas de atalho bloqueadas pelos navegadores


Existe um conjunto de teclas bloqueadas pelos navegadores, impedindo seu uso através da função SetKey no WebApp.

Mais informações no link: SetKey no Webapp

Teclas de atalhoDescrição
Windows/LinuxMac
Ctrl+T⌘+tAbrir uma nova guia do navegador.
Ctrl+Shift+T ⌘+Shift+tReabrir guias fechadas anteriormente na ordem em que foram fechadas.
Ctrl+N⌘+nAbrir uma nova janela do navegador.
Ctrl+Shift+N⌘+Shift+nAbrir uma nova janela de navegação anônima.

Ctrl+Tab ou Ctrl+PgDn

⌘+Option+seta para a direita

Navegar entre as abas do navegador.

Ctrl+Shift+Tab ou Ctrl+PgUp

⌘+Option+seta para a esquerdaAcessar a guia aberta anterior
Alt+Home
Abrir a página inicial na guia atual
Ctrl+W ou Ctrl+F4⌘+wFechar a guia atual do navegador.
Ctrl+Shift+W ou Alt+F4⌘+Shift+wFechar a janela do navegador.
Alt+Espaço+n⌘+mMinimizar a janela atual
Alt+Espaço+x

Maximizar a janela atual

InactiveTimeout ao utilizar uma aplicação HTML através do componente TWebEngine


Para o WebApp confirmar se o usuário ainda esta utilizando o ERP, enquanto digita/navega em uma aplicação HTML carregada em um iframe, impedindo que o inactive timeout derrube esta sessão, precisamos executar um conjunto de scripts.

Porém, um iframe só permite a execução de scripts quando a página carregada nele possui o mesmo protocolo+host-name+porta da página onde se encontra este iframe.

Exemplo:

Se a página "mãe" é a http://www.totvs.com:8080/index.html

Seria possivel usar um iframe apontando para http://www.totvs.com:8080/app1.php

Mas seria bloqueada a execução de scripts no caso de utilizar a página https://www.totvs.com:8080/pag1.html, pois o protocolo foi alterado de HTTP para HTTPS.

Neste caso, esgotado o prazo do inactive timeout, mesmo que o usuário estivesse atualizando dados no iframe, sua sessão seria interrompida.

Mais informações no link: WebEngine+InactiveTimeout

Evolução do WebApp com a adoção de Web Components


A adoção da biblioteca LitElement permitiu uma grande evolução da camada de interface do WebApp.

Mais informações no link: WebApp - Web Components (Versão 9.0.0)

WebApp em telas sensíveis ao toque


É possível utilizar o WebApp em telas sensíveis ao toque, seja um notebook ou um tablet, mas existem algumas diferenças de comportamento para facilitar seu uso.

Mais informações no link: Telas de toque (touchscreen) / mobile - mudança de comportamento

Templatedocumentos