Desenvolvendo em ADVPL no Visual Studio CODE

 

Para desenvolver em ADVPL no visual studio CODE é necessário instalar a extensão advpl-vscode e configurar o ambiente. Para configurar o ambiente é necessário a configuração de algumas chaves. Essas chaves podem estar tanto na WorkSpace Settings (Configuração especifica para cada projeto) ou na User Settings( Configuração especifica para cada perfil )

Abaixa está a documentação oficial do repositório do projeto no github mostrando como configurar o ambiente corretamente, farei apenas algumas observações e alguns adendos.

Para instalar a extensão:

Executar o VS Code Quick Open (atalho Ctrl + P), cole o seguinte comando e pressione enter.

ext install advpl-vscode

Maiores informações sobre instalações de extensões podem ser encontradas em:

VsCode webSite

Requisitos para utilização

Para utilizar os recursos de compilação e debug é necessário que o AppServer esteja na build 131227A ou superior, tendo essa versão de binário tanto o Protheus 11 e 12 são suportados. Essa extensão ainda não está disponível no Linux. Em OSX o suporte do editor e do debug já esta funcional.

Configurações da extensão

Essa extensão contribui com as seguintes configurações.

  • advpl.smartClientPath: Caminho completo para o diretório do smartclient. Esse diretório precisa possuir o apppre.exe e o smartclient.exe.

Exemplo: C:\\Protheus\\smartclient\\ No caso de OSX: Exemplo: /Applications/

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • selectedEnvironmentAmbiente atualmente selecionado
  • startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Patchs

  • advpl.pathPatchBuild : Patch do cliente que deve existir para geracao de patchs. Caso o arquivo ja exista, será sobrescrito.

Debug

  • advpl.debug_multiThread : Caso seja colocado com true, habilita o debug multi Thread.
  • advpl.debug_ignoreSourceNotFound : Ignorar os fontes não encotrados no debug.
  • advpl.debug_showTables : Mostra as tabelas abertas.
  • advpl.debug_showPrivates : Mostra as variaveis Privates.
  • advpl.debug_showPublic : Mostra as variaveis Publicas.
  • advpl.debug_showStatics : Mostra as variaveis Estaticas .

 

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • advpl.selectedEnvironment Ambiente atualmente selecionado
  • advpl.startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Encode dos arquivos.

O Visual Code padrão utiliza utf8 como encode dos arquivos abertos. O TDS utiliza como padrão o windows1252, caso você utilize fontes nos dois ambientes é recomendando mudar o encode do utf8 para windows1252.

Para proceder isso va em Files -> Preferences -> WorkSpace Será aberto na direta os valores default, e na esquerda os seus valores.

{ “files.encoding”: “windows1252” }

Comandos adicionados ao visual code

Gerar senha de acesso ao um ambiente.

Para gerar uma chave devemos usar o VS Code Quick Open (atalho Ctrl + P) e digitar:

>cipher Será apresentado um inputbox para digitar a senha. Ao confirmar o VsCode ira apresentar a senha criptografada. que deve ser colocada no advpl.passwordCipher.

Pegando o código de liberação autorização TOTVS

Caso você utilize liberação de compilação e necessite de uma para o VS code, abra o VS Code Quick Open (atalho Ctrl + P),e digitar:

>Código Autorização para ser solicitada pela Totvs

Ao começar a digitar o comando o VS code ira já sugerir as correspondências, não sendo necessário digitar o comando inteiro.

Exemplo de arquivo de configuração:

{

“advpl.environments”:[{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “fluig”,

“includeList”: “D:\\LIB120\\INCLUDE\\;D:\\LIB120\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1201”,

“user”: “Admin”,

“passwordCipher”: ” TDBXQzYWZoTm92NTlmTFFKbi9DTzROVjY5Q0FUVmFlb1JNN28=”

},{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “amb1”,

“includeList”: “D:\\TOTVS\\LIB110\\INCLUDE\\;D:\\TOTVS\\LIB110\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1101”,

“user”: “Admin”,

“passwordCipher”: “elhlY3FxQTJKNTZDR0xiK2VWa1ZrbVRGaDhVWXFrTjYvM2JiUnc=”

}],

//Chave

“advpl.authorization_generation”: “20160831”,

 

// Data de validade da chave no formato yyyymmdd

“advpl.authorization_validation”: “20161129”,

 

// 1 – Para permitir substiuir fontes TOTVS, 0 para Não

“advpl.authorization_permission”: “1”,

 

// Chave de compilação

“advpl.authorization_code”: “013SPL032RFRR74F1E7671310”,

 

}

Selecionando o Ambiente em execução

Após configurar os ambientes, no canto inferior direito, do lado do esquilo é possível visualizar o ambiente corrente. Caso queira muda-lo basta clicar sobre a barra , será apresentando uma lista de ambientes configurados.

 

Configurando appserver e dbaccess no CMD VSCODE

Pra quem estiver fazendo teste em ambiente local uma saída interessante é configurar o appserver e o dbaccess no prompt no vs code que nada mais é que o mesmo prompt do Windows. Pra isso pra configurar as variáveis de ambientes.

01

Uitlize Ctrl + ’ para abrir o prompt no vs code.

02

Prompt aberto no VS code

03

Utilize o comando appserver -console  depois abra mais um terminal no sinal de  “ + ” no prompt do vscode e rode dbaccess -console e pronto, a partir deste ponto vc já teve estar apto a desenvolver em ADVPL utilizando o VS code.

Teclas de Atalho padrões

  • F5 – Inicia o Debug
  • CTRL + F5 – Inicia o SmartClient sem debugar
  • CTRL + F9 – Compila o fonte atual
  • CTRL + F11 – Executa o smartClient sem configuração e mostrando o parametro,

No Debug

Utilizada as teclas padrões do VsCode

  • F5 – Run/Contiue
  • F10 – Step Into
  • F11 – Step Over

    06

 05

 

Esse projeto é muito recente e pode surgir diversos problemas ao utiliza-lo, mas essa versão já está bem funcional e aconselho sua utilização para ajudar no amadurecimento do projeto, pois é uma ótima iniciativa e precisa de mais apoiadores.  

 

Link GitHub do projeto.