nosso novo canal de tira dúvidas.
Tag: advpl
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:
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.
Uitlize Ctrl + ’ para abrir o prompt no vs code.
Prompt aberto no VS code
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
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.