Pular para conteúdo

Referência técnica AdvPL e TLPP (TOTVS Protheus)

Levantamento para preenchimento de wiki interno. Base: apenas as afirmações verificadas do run 20261022T112840Z-1074879. Cada fato técnico leva a URL da fonte em [n]. Legenda usada nas afirmações (a letra vai junto ao número da fonte, ex.: [28 · F]): [F] fato documentado em fonte oficial TOTVS/TDN; [S] fonte secundária (blog, fórum, comunidade), ou seja, opinião ou exemplo e não norma; [unverified] sem fonte que sustente.

Sumário executivo

A verificação entregou 102 afirmações sobre AdvPL e TLPP, das quais 100 têm citação e 2 ficaram marcadas como não sustentadas. As fontes são majoritariamente primárias: 40 das 52 URLs citadas vêm da TDN ou de domínios TOTVS. Os oito eixos pedidos estão cobertos, com três ressalvas que este relatório carrega explicitamente: parâmetros variadic em TLPP e padrões TTALK não têm fonte oficial localizada e entram como lacuna declarada; a nomenclatura "Modelo 1/Modelo 3" é convenção de comunidade, não termo do manual oficial. Duas divergências entre páginas TOTVS estão registradas e ponderadas. O único material bloqueado foram cinco artigos do Medium TOTVS Developers (HTTP 403).


(a) Linguagem AdvPL

Escopo de variáveis

  • AdvPL tem quatro identificadores de escopo: LOCAL, STATIC, PRIVATE e PUBLIC.[11 · F]
  • Variável LOCAL pertence só à função onde foi declarada e precisa ser declarada explicitamente.[10 · F]
  • A declaração de locais tem de vir antes de qualquer comando ou de declarações PRIVATE/PUBLIC; caso contrário é erro de compilação.[10 · F]
  • Atribuir valor a uma variável não declarada cria a variável como PRIVATE — o escopo é dinâmico.[11 · F]
  • Consequência prática: erro de digitação no nome de uma variável não gera erro de compilação nem de execução.[11 · F]

Funções: FUNCTION / STATIC / USER FUNCTION

  • Duas visibilidades: funções públicas, declaradas por FUNCTION, visíveis em qualquer parte da aplicação; funções estáticas, visíveis apenas por outras funções do mesmo arquivo .PRW.[18 · F]
  • USER FUNCTION declara função de usuário que não pertence ao padrão do Protheus e pode ser invocada por qualquer outra função do Protheus.[18 · F]
  • Armadilha de nome: o nome pode ter qualquer tamanho, mas só os 10 primeiros caracteres identificam a função.[18 · F]
  • Parâmetro não recebido recebe NIL automaticamente, e o parâmetro pode ser enviado por valor ou por referência.[18 · F]

Controle de fluxo e tratamento de erro

  • O tratamento de erro clássico é BEGIN SEQUENCE ... RECOVER ... END SEQUENCE, com desvio explícito por BREAK.[19 · F]
  • Dentro do bloco é permitido RETURN, mas não LOOP ou EXIT de WHILE/ENDDO ou FOR/NEXT externos; entre RECOVER e END SEQUENCE é permitido LOOP, EXIT ou BREAK.[19 · F]

Workareas DBF

  • A camada "Controle de Arquivos" reúne as funções de workarea: DBSelectArea, DBSeek, DBSkip, DBSetOrder, DBSetFilter, RecLock, DBRLock, MsUnlock, DbUseArea, DbStruct, Posicione e xFilial.[37, 70 · F]
  • O padrão de leitura documentado pela própria TOTVS é salvar a área, selecionar o alias, posicionar por xFilial() + chave, iterar com DbSkip e restaurar a área.[54 · F]
  • Boa prática obrigatória: salvar as workareas com GetArea() e restaurar com RestArea().[31 · F]
  • Ao atualizar campos é obrigatório travar o registro e liberar depois; esquecer MsUnLock() deixa o registro travado para os processos padrão.[31 · F]
  • RecLock(<alias>,.T.) cria registro em branco com lock exclusivo; com (.F.) trava o registro posicionado para update.[29 · F]

Convenções de código

  • Não reutilizar nomes de rotinas nem de funções do padrão em código customizado: nem rotinas como MATA010, MATA460 ou FINA040, nem funções como A460Dupl ou A460Process.[31 · F]
  • Não reaproveitar variáveis públicas padrão — nOpc e dDataBase são os exemplos citados pela TOTVS — para outra finalidade dentro de função específica.[31 · F]

(b) TLPP

Extensão, includes e o que a linguagem é

  • TLPP é a evolução do AdvPL; a extensão dos fontes é .tlpp, os includes passam a usar .th e arquivos .ch continuam aceitos.[13, 3 · F]
  • Para usar TLPP basta incluir tlpp-core.th; os includes vivem dentro do tlpp.rpo e só existem a partir da versão 01.02.02 do RPO.[25 · F]
  • Em .tlpp, função STATIC só é acessível por funções ou métodos do mesmo fonte.[13 · F]

Matriz oficial TLPP × AdvPL

  • A TDN publica uma matriz comparativa. São exclusivos de TLPP, marcados como proibidos em AdvPL: identificadores com nomes longos, namespace, annotation e reflection, tipagem de variáveis, funções e parâmetros, try-catch, parâmetros nomeados, json inline, classes com propriedades públicas/privadas/protegidas, métodos de objeto e métodos estáticos de classe, sobrecarga de operadores, interfaces abstratas e StaticCall.[2 · F]
  • A mesma matriz lista o que as duas linguagens compartilham: escopo de variáveis local/private/public/static, escopo de funções function/static function/main function/user function, estruturas de controle if/else/while/for/case, blocos de código, macro-execução, acesso a base de dados, execução de jobs e processamento em threads, e error block.[2 · F]
  • O blog oficial da TOTVS resume a mesma lista em prosa: nomes longos, namespaces, parâmetros nomeados, tipagem forte, orientação a objetos e tratamento de erros com try/catch.[33 · S]

Versão mínima por recurso

Recurso Versão mínima declarada Fonte
Namespace «O recurso de namespace foi liberado na versão 17.3.0.0 para a linguagem TLPP» [41]
JSON inline «Abrangência Versão 17.3.0.7 e superiores. A partir da versão 17.3.0.7 será possível definir um objeto Json dentro do fonte TL++» [14]
Parâmetros nomeados «A partir da versão 20.3.2.0 do Application Server, será possível chamar funções ou métodos em TLPP utilizando o recurso de passagem de parâmetros pelo nome.» [43]
Motor de documentação REST (OpenAPI) «será disponibilizada a partir do tlppCore 01.04.02 + AppServer 20.3.1.10» [5]
MVC em fonte .tlpp «a partir do release 12.1.2410 o MVC já é suportado em TLPP» [46]
Includes do tlppCore (tlpp-core.th) «os includes estão disponíveis a partir da versão 01.02.02 do RPO (tlpp.rpo)» [25]
  • Nomes iniciados por tlpp. são reservados ao tlppCore e qualquer uso fora desse domínio é bloqueado em tempo de compilação.[41 · F]
  • Sintaxe do JSON inline com acesso por índice: local varJson := {"teste": {"var1":"oioi"}} as json seguido de varJson['teste']['var1'].[14 · F]
  • Parâmetros variadic em TLPP: nenhuma das duas lanes obteve fonte oficial que documente declaração, sintaxe ou limitações. Não incluir no wiki sem nova coleta. [unverified]

Try / Catch / Finally

  • Em TLPP, uma exceção implícita ou explícita desvia imediatamente para o CATCH; diferente do BEGIN SEQUENCE, que só desvia com BREAK.[4 · F]
  • A captura ocorre pela classe ErrorClass(), que contém em seus parâmetros o conteúdo do erro informado.[4 · F]
  • Sintaxe completa: TRY ... [THROW ...] CATCH ... FINALLY ... ENDTRY, e o THROW exige instância de ErrorClass ou de classe que herde dela.[4 · F]
  • FINALLY executa com ou sem exceção lançada.[4 · F]

(c) MVC

  • As três funções reservadas: ModelDef constrói a definição do Model, que contém as regras de negócio; ViewDef constrói a View, ou seja, a interface; MenuDef define as operações disponíveis para o modelo de dados.[69 · F]
  • Cada fonte MVC em .PRW só pode conter uma ModelDef, uma ViewDef e uma MenuDef.[69 · F]
  • A cadeia completa inclui BrowseDef(); ModelDef devolve FWFormModel (regras de negócio) e ViewDef devolve FWFormView (layout visual).[50 · F] — instruções oficiais do repositório TOTVS engpro-advpl-tlpp-skills, documento escrito para agentes de IA, não a página canônica do framework.
  • "Modelo 1" é uma entidade/tabela; "Modelo 3" é mestre-detalhe com cabeçalho e grid; existe ainda "Modelo X" com três níveis — o exemplo citado é SBM (Modelo 1), SBM+SB1 (Modelo 3) e SBM+SB1+SB2 (Modelo X).[62 · S] — blog de comunidade; a nomenclatura Modelo 1/3 não aparece no manual oficial do MVC[69] nem na página "Fontes em MVC"[32]. Tratar como convenção de mercado, não como termo normativo.
  • FWFormView fornece interface gráfica para um model (FWFormModel/MPFormModel) e suporta formulário do tipo FormField, com um registro por vez, e do tipo FormGrid.[30 · F]
  • Padrão de ViewDef: FWFormView():New(), FWFormStruct(2,"SA1"), SetModel(oModel) e AddField(...).[30 · F]
  • No ModelDef usa-se FWFormStruct(1, alias), e em fonte existente FWLoadModel("MATA010_MVC") carrega o model pronto.[30 · F]
  • FWFormStruct faz a carga dos campos do dicionário para a estrutura.[30 · F]
  • Rotinas MVC padrão declaram Model e componentes (master mais grid), o que evidencia o padrão mestre-detalhe: TECA080 com AddFields AA6MASTER e AddGrid AA6GRID.[32 · F]

(d) REST e APIs

  • O REST do tlppCore roda dentro do AppServer, usa annotations e reflection, serviços dinâmicos, documentação OpenAPI nativa e hooks de fluxo e log.[15 · F]
  • O endpoint é declarado por annotation acima da função ou método, vinculando a rota (URN) e o verbo HTTP pertinente (@Get, @Post, @Put, @Delete ou @Patch).[16 · F]
  • Propriedades da annotation: endpoint é obrigatória e define a rota; description é opcional e fornece uma descrição informativa.[44 · F]
  • Includes obrigatórios são tlpp-core.th e tlpp-rest.th, ambos já presentes nativamente no tlpp.rpo; a resposta sai por oRest:setResponse().[16 · F]
  • O objeto oRest expõe getPathParamsRequest() para os path params em JSON, getQueryRequest(), GetBodyRequest(), setResponse(), setStatusCode() e setFault().[17 · F]
  • A annotation independe de classes e pode ser usada diretamente em uma User Function, sem WSRESTFUL ou WSMETHOD do modelo legado.[17 · F]
  • Comparativo de verbos: o FWREST legado cobre GET, POST, PUT e DELETE; o TLPP Core cobre GET, POST, PUT, PATCH e DELETE.[17 · F]
  • Regra de sobrescrita de path params: com o mesmo caminho base, o nome da variável é o da primeira rota registrada, e nomes divergentes em rotas posteriores são ignorados.[17 · F]
  • O motor de documentação REST_DOC/OpenAPI do tlppCore fica disponível a partir do tlppCore 01.04.02 com AppServer 20.3.1.10.[5, 45 · F]
  • Cliente REST em AdvPL: FWRest():new(cUrlBase), headers em array, e o token no cabeçalho Authorization com o valor Bearer mais o token de acesso.[27 · F]
  • Autenticação por Bearer token está disponível a partir da LIB 20190705; o token é obtido por POST no endpoint de token com grant_type=password, o access token expira em uma hora e o refresh em vinte e quatro horas.[27 · F]
  • A exigência de autenticação no serviço é ligada com SECURITY=1 na seção [HTTPREST] do .ini; a partir da LIB 20201019, se a chave não for informada, os serviços sobem exigindo autenticação de usuário.[58 · F]
  • Existem repositórios oficiais TOTVS de exemplo REST e de documentação OpenAPI.[7, 8 · F]
  • "Padrões TTALK": nenhuma fonte primária foi localizada pelas duas lanes. Não incluir no wiki como se fosse TOTVS. [unverified]

(e) Pontos de Entrada

  • Pontos de entrada personalizam rotinas padrão, recebem parâmetros pela variável PARAMIXB e retornam valores como uma função AdvPL; se o retorno for diferente do especificado na documentação, a rotina poderá ser abortada.[20 · F]
  • Em fontes MVC existe um único ponto de entrada, e o nome dele é o ID do Model definido em ModelDef — diferente do modelo convencional, com vários PEs.[20 · F]
  • Assinatura canônica: User Function JURA001(), com Local aParam := PARAMIXB e Local xRet := .T., retornando xRet.[20 · F]
  • PARAMIXB traz um vetor cujos três primeiros elementos são comuns a todos os IDs: o objeto do formulário ou do modelo, o ID do local de execução do ponto de entrada e o ID do formulário.[20 · F]
  • O conjunto de IDs de momento inclui MODELPRE, MODELPOS, FORMPOS, FORMLINEPRE, FORMLINEPOS, MODELCOMMITTTS, MODELCOMMITNTTS, FORMCOMMITTTSPRE, FORMCOMMITTTSPOS, MODELCANCEL e BUTTONBAR.[56 · F]
  • O ID do Model não pode ser igual ao nome do fonte.[20 · F]
  • Exemplo completo de PE MVC com aClone(PARAMIXB), DbSeek por filial mais chave, RecLock/MsUnlock e Return .T..[54 · F]

(f) Dicionário de Dados (SX)

  • O Dicionário de Dados é uma coleção de metadados que contém definições e representações de elementos de dados do sistema.[22 · F]
  • Mapa oficial das tabelas SX: SX1 perguntas do usuário; SIX índices das tabelas do sistema; SX2 tabelas do sistema; SX3 estrutura de campos; SX5 tabelas genéricas; SX6 parâmetros do sistema; SX7 gatilhos de campos; SX9 relacionamento das tabelas; SXA pastas e agrupamentos dos campos; SXB lookups; SXE controle de numeração utilizados; SXF próximos números; SXG grupo de campos; XXA regras de dependência entre campos.[22 · F]
  • SIX tem as colunas-chave INDICE, ORDEM, CHAVE — conjunto de campos separados por + —, DESCRICAO, PROPRI, NICKNAME e SHOWPESQ, que quando preenchido com "S" faz o índice aparecer no Browse do sistema.[23 · F]
  • Toda tabela precisa de pelo menos um índice com SHOWPESQ = "S" para poder ser exibida dentro de um browse.[23 · F]
  • Campos de controle DBAccess: R_E_C_N_O_ como chave primária do registro, D_E_L_E_T_ como flag de exclusão lógica com branco para linha ativa e asterisco para linha excluída, e R_E_C_D_E_L_.[28 · F]
  • A recomendação da TOTVS é usar sempre que possível SQL em vez de varredura ISAM/DbSkip, porque a query descarta eficientemente as linhas excluídas logicamente.[28 · F]
  • As duas regras obrigatórias de leitura: filtrar a filial igualando o campo filial ao xFilial da tabela correspondente, nunca comparando _FILIAL de uma tabela com o de outra; e filtrar as linhas excluídas comparando D_E_L_E_T_=' ', que é mais rápido que D_E_L_E_T_<>'*'.[28 · F]
  • Em INSERT, o registro nasce com valores vazios por tipo — caractere com espaços, numérico com 0, data vazia, booleano .F. — e só é definitivo ao soltar o lock.[29 · F]
  • Representação física: campos DATA são armazenados como caractere de 8 dígitos e campos numéricos como FLOAT.[28 · F]
  • Lacuna de detalhe: o detalhamento coluna-a-coluna de SX2, SX3, SX5, SX6, SX7, SX1, SX9 e SXB não foi coletado. Para o wiki, só o mapa geral[22] e o detalhe de SIX[23] estão prontos para uso.

(g) Build e compilação

  • Os compiladores Protheus (AdvPL, AdvPL Asp, 4GL e 4GLP) suportam apenas arquivos com código de página CP1252.[24 · F]
  • No TDS, o bloco "Text file encoding" da workspace deve estar ajustado para "Cp1252".[24 · F]
  • Enquanto houver erro de codificação, o arquivo não será salvo.[24 · F]
  • O repositório oficial de skills repete a regra como norma: todo fonte AdvPL/TLPP (.prw, .prg, .prx, .tlpp, .ch, .aph) deve usar CP-1252, e o compilador RDMake/AppServer espera Windows-1252.[50 · F]
  • Os includes do TLPP são extraídos com tlpp.environment.getIncludesTLPP, que gera o diretório includes dentro do RootPath do ambiente.[25 · F]
  • No appserver.ini, recomenda-se que o nome do binário e o do arquivo de configuração sejam idênticos e comecem por "appserver".[26 · F]
  • A nomenclatura varia por produto: appserver.ini no TOTVS Application Server, totvsappserver.ini no TOTVS Application Server e mp8srv.ini no Microsiga Protheus Server.[26 · F]
  • A partir da build 17.3.0.14 existe um ini customizado que sobrepõe o ini tradicional, o IniCustomization.[26 · F]
  • Sobre qual include usar: RWMAKE.ch é a mais antiga e não é mais recomendada; PROTHEUS.ch e TOTVS.ch são as atuais.[57 · F]
  • Arquitetura de uma instalação Protheus 12.1.2510 com PostgreSQL em Docker: WebAgent, AppServer, DBAccess (TopConnect), PostgreSQL e License Server.[36 · S] — blog de terceiro, útil como visão de conjunto, não como norma TOTVS.
  • Lacuna: o procedimento oficial de compilação RDMake passo a passo via TDS ou linha de comando não foi coletado; só existem a FAQ de includes[57] e o guia de ambiente TLPP[25].

(h) Migração AdvPL → TLPP

  • A migração mecânica é: o fonte vira .tlpp, abandonando .prw, .prg e .prx, e recebe #include "tlpp-core.th".[13, 25 · F]
  • Armadilha central: em fontes .tlpp, funções STATIC só podem ser acessadas por funções ou métodos do mesmo fonte, e por isso rotinas que usam StaticCall não funcionam em TLPP.[46 · F]
  • O blog oficial TOTVS diz o mesmo em prosa para o caso indireto: rotinas com MVC e outras que usam StaticCall não são compatíveis com TLPP e precisam ficar em .prw.[33 · S]
  • MVC só passa a funcionar em .tlpp a partir do release 12.1.2410; até a release 12.1.2310 o MVC padrão AdvPL não funciona em fontes .TLPP.[46, 34 · F]
  • Armadilha de nome: nome de função com mais de 10 caracteres compila em AdvPL, mas só os 10 primeiros são registrados no RPO, o que faz funções longas só fazerem sentido em TLPP com namespace.[18 · F]
  • Funções TLPP podem ser chamadas de AdvPL desde que tenham namespace, na forma namespace.suafuncao(), e nesse caso nomes longos são reconhecidos.[59 · F]
  • Existe trilha oficial "Migração WsRESTful para REST tlppCore", de FWREST para annotations, com tabela De/Para.[17 · F]
  • Não há migração forçada: produtos atuais feitos em AdvPL seguem suportados.[2 · F]
  • Quando não migrar, na prática: rotinas com StaticCall direto e rotinas MVC de ambientes anteriores ao 12.1.2410 permanecem em .prw[46][33]. Para código novo, TLPP é a recomendação do próprio repositório oficial.[50 · S]

Recência e versões

  • O release anunciado como próximo em outubro de 2026 é o 12.1.2610, e a página do TDN está marcada "Em construção", com última modificação em 23 de julho de 2026.[38 · F]
  • O 12.1.2510 foi comunicado oficialmente pela TOTVS.[1, 9 · F]
  • As páginas de release notes do TDN têm data de modificação rastreável: 12.1.2510 em 17 de outubro de 2025 e 12.1.2410 em 6 de dezembro de 2024.[39, 40 · F]
  • O conteúdo funcional do 12.1.2610 — Reforma Tributária com IBS-CBS, pontos de atenção mandatórios e migração do TSS para banco de dados — só aparece em blog de consultoria, não em release notes oficiais. Tratar como opinião de terceiro, não como nota de release.[52 · S]
  • O repositório oficial de skills AdvPL/TLPP teve primeiro release público em 25 de maio de 2026, trazendo as skills advpl-to-tlpp-migration, data-dictionary-lookup, mvc-generator e entry-point-designer.[6 · F]

Conflitos entre fontes

1. Até qual release o MVC Protheus depende de StaticCall? A página TDN sobre StaticCall[46] diz, na mesma frase, "até o release 12.1.2410" e "a partir do release 12.1.2410". A Central de Atendimento TOTVS[34] é inequívoca: até a release 12.1.2310 o MVC padrão AdvPL não funciona em .TLPP, e a partir da release 12.1.2410 passa a funcionar. Peso maior para [34], coerente com o "a partir de 12.1.2410" dos dois documentos; a formulação do TDN é provável erro de redação. No wiki, escrever "até 12.1.2310 não funciona; a partir de 12.1.2410 funciona" e citar as duas.

2. O que exatamente o TLPP descontinuou. O blog TOTVS[33] fala em incompatibilidade de rotinas com StaticCall no uso indireto; a TDN[46] é mais precisa: StaticCall não é palavra-chave removida, o que muda é que funções STATIC ficam restritas ao próprio fonte, e por isso a chamada de função estática de outro fonte deixa de funcionar. Peso maior para [46]. A formulação "o TLPP descontinuou o StaticCall" não existe no blog e deve ser evitada.


Lacunas de cobertura

Lane web

  1. Cinco artigos do Medium TOTVS Developers ficaram bloqueados por HTTP 403 durante toda a verificação e nenhum foi lido verbatim; as afirmações que dependiam deles foram substituídas por TDN ou eliminadas.
  2. Parâmetros variadic em TLPP: nenhuma fonte oficial localizada, nem TDN nem blog.
  3. Padrões TTALK: nenhuma fonte localizada; não afirmar nada sobre o tema.
  4. Detalhamento campo a campo de SX2, SX3, SX5, SX6, SX7, SX1, SX9 e SXB: só o mapa de funções[22] e o detalhe de SIX[23].
  5. RDMake e compilação passo a passo: só a FAQ de includes[57] e o guia de ambiente TLPP[25].
  6. Páginas TDN próprias de FWFormModel, FWFormBrowse e FWFormStruct não foram lidas; a evidência de MVC vem de FWFormView[30] e do manual em PDF[69].
  7. Docker e migração dependem de blogs de terceiros; não há página TOTVS lida para "Protheus em Docker".

Lane news

  1. O fórum devforum.totvs.com.br redireciona (301) para forum.totvs.io e só o host novo serve RSS; o fórum não foi usado como fonte de fato, por ser Q&A de usuários.
  2. O RSS do blog TOTVS está desabilitado (HTTP 410).
  3. O release 12.1.2610 não tem data confirmada nem release notes técnicas, com a página "Em construção" em 22 de outubro de 2026.
  4. Nenhuma notícia de imprensa datada sobre TLPP/AdvPL fora de TDN e blogs de consultoria.

O que não bloqueia o wiki: os oito eixos estão cobertos; as lacunas listadas são de detalhe, exceto variadic e TTALK, que entram declarados como ausência de fonte.

Sources

[1] https://www.totvs.com/blog/erp/release-protheus — Release 12.1.2510 do TOTVS Backoffice - Linha Protheus (blog TOTVS) [2] https://tdn.totvs.com/display/tec/TLPP+x+AdvPL — TDN - TLPP x AdvPL (TOTVSTEC) [3] https://tdn.totvs.com/display/tec/TLPP+-+Sobre — TDN - TLPP - Sobre (TOTVSTEC) [4] https://tdn.totvs.com/display/tec/Try...Catch — TDN - Try...Catch (TOTVSTEC) [5] https://tdn.totvs.com/display/tec/Downloads — TDN - TLPP Downloads (tlpp.rpo / REST DOC) [6] https://github.com/totvs/engpro-advpl-tlpp-skills/blob/main/CHANGELOG.md — totvs/engpro-advpl-tlpp-skills CHANGELOG [7] https://github.com/totvs/tlpp-sample-rest — totvs/tlpp-sample-rest (GitHub) [8] https://github.com/totvs/tlpp-sample-rest-documentation — totvs/tlpp-sample-rest-documentation (GitHub) [9] https://produtos.totvs.com/totvs-backoffice-linha-protheus/totvs-backoffice-linha-protheus-12-1-2510 — Novidades TOTVS Backoffice - Linha Protheus 12.1.2510 [10] https://tdn.totvs.com/pages/viewpage.action?pageId=6063100 — TDN – Variáveis Locais (AdvPL) [11] https://tdn.totvs.com/pages/viewpage.action?pageId=6063098 — TDN – O Contexto de Variáveis dentro de um Programa [13] https://tdn.totvs.com/display/tec/TLPP — TDN – A Linguagem TLPP [14] https://tdn.totvs.com/display/tec/Json — TDN – Json inline (TLPP) [15] https://tdn.totvs.com/display/tec/REST — TDN – REST (tlppCore) [16] https://tdn.totvs.com/pages/viewpage.action?pageId=553334698 — TDN – Criando primeiro serviço REST (Hello World) [17] https://tdn.totvs.com/pages/viewpage.action?pageId=553337101 — TDN – Migração WsRESTful para REST tlppCore [18] https://tdn.totvs.com/display/framework/FUNCTION — TDN – Comando FUNCTION (AdvPL) [19] https://tdn.totvs.com/display/public/framework/BEGIN+SEQUENCE+...+END — TDN – BEGIN SEQUENCE ... END [20] https://tdn.totvs.com/pages/releaseview.action?pageId=208345968 — TDN – Ponto de Entrada Padrão do MVC [22] https://tdn.totvs.com/pages/releaseview.action?pageId=22479539 — TDN – Dicionário de Dados (tabelas SX) [23] https://tdn.totvs.com/pages/releaseview.action?pageId=22479575 — TDN – SIX - Índice das Tabelas [24] https://tdn.totvs.com/pages/viewpage.action?pageId=56132455 — TDN – Gravação de arquivos-fontes (CP1252) [25] https://tdn.totvs.com/pages/viewpage.action?pageId=619741238 — TDN – Ambiente de compilação do TLPP [26] https://tdn.totvs.com/pages/viewpage.action?pageId=6064745 — TDN – Application Server: arquivo de configuração (appserver.ini) [27] https://tdn.totvs.com/pages/releaseview.action?pageId=465383509 — TDN – API de token de acesso às APIs REST (Bearer) [28] https://tdn.totvs.com/display/framework/Desenvolvendo+queries+no+Protheus — TDN – Desenvolvendo queries no Protheus (D_E_L_E_T_ etc.) [29] https://tdn.totvs.com/pages/viewpage.action?pageId=393367190 — TDN – Comportamento: inserção de registros 'deletados' [30] https://tdn.totvs.com/display/framework/FWFormView — TDN – FWFormView (MVC) [31] https://tdn.totvs.com/pages/releaseview.action?pageId=43550104 — TDN – Pontos de Atenção (GetArea/RestArea, RecLock/MsUnlock) [32] https://tdn.totvs.com/display/public/PROT/Fontes+em+MVC — TDN – Fontes em MVC (rotinas padrão) [33] https://www.totvs.com/blog/developers/tlpp — TOTVS Blog – Tudo sobre a linguagem TLPP [34] https://centraldeatendimento.totvs.com/hc/pt-br/articles/360037714554-Cross-Segmentos-TOTVS-Backoffice-Linha-Protheus-ADVPL-MenuDef-em-arquivo-TLPP — Central TOTVS – MenuDef em arquivo TLPP (StaticCall) [36] https://www.goldendados.com.br/blog/instalacao-protheus-122510 — Golden Dados – Protheus 12.1.2510 com PostgreSQL no Docker [37] https://tdn.totvs.com/display/public/framework/Controle+de+Arquivos — TDN – Controle de Arquivos (funções DB* / RecLock) [38] https://tdn.totvs.com/pages/viewpage.action?pageId=1067056859 — TDN - Release 12.1.2610 - Expedição em Outubro/2026 (Em construção) [39] https://tdn.totvs.com/display/public/PROT/Release+12.1.2510 — TDN - Release 12.1.2510 (Linha Microsa Protheus) [40] https://tdn.totvs.com/display/public/PROT/Release+12.1.2410 — TDN - Release 12.1.2410 (Linha Microsiga Protheus) [41] https://tdn.totvs.com/display/tec/Namespace — TDN - Namespace (TLPP) [43] https://tdn.totvs.com/pages/viewpage.action?pageId=776520543 — TDN - Parâmetros Nomeados (TLPP) [44] https://tdn.totvs.com/pages/viewpage.action?pageId=553333507 — TDN - REST: Verbos/Métodos disponíveis (@annotation) [45] https://tdn.totvs.com/pages/viewpage.action?pageId=745121740 — TDN - Gerador de documentação (REST_DOC / tlppCore) [46] https://tdn.totvs.com/display/tec/StaticCall+-+inibida+em+TLPP — TDN - StaticCall inibida em TLPP [50] https://github.com/totvs/engpro-advpl-tlpp-skills/blob/main/instructions/CLAUDE.md — totvs/engpro-advpl-tlpp-skills - instructions/CLAUDE.md [52] https://weepulse.com.br/blog/protheus-12-1-2610 — WeePulse - Protheus 12.1.2610: o que muda [54] https://tdn.totvs.com/display/public/PROT/DT+PE+MNTA420S+-+Grava+campos+da+tabela+SD4 — TDN – PE MNTA420S (grava SD4: RecLock/MsUnlock/xFilial) [56] https://tdn.totvs.com/display/public/PROT/ADV0041_PE_MVC_MATA010_P12 — TDN – PE MVC MATA010 (IDs de momento, PARAMIXB, User Function ITEM) [57] https://tdn.totvs.com/display/public/PROT/ADV0100_CH_TOTVS_RDMAKE_PROTHEUS — TDN – Qual include usar (RWMAKE.ch/PROTHEUS.ch/TOTVS.ch) [58] https://centraldeatendimento.totvs.com/hc/pt-br/articles/360053031634-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Fluxo-b%C3%A1sico-de-autentica%C3%A7%C3%A3o-Rest-no-protheus — Central TOTVS – Fluxo básico de autenticação REST (SECURITY=1) [59] https://centraldeatendimento.totvs.com/hc/pt-br/articles/16705515938711-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Uso-de-fun%C3%A7%C3%B5es-TLPP-no-AdvPL — Central TOTVS – Uso de funções TLPP no AdvPL (namespace) [62] https://terminaldeinformacao.com/2015/08/26/exemplos-de-rotinas-mvc-em-advpl — Terminal de Informação – Exemplos de rotinas MVC (FWMBrowse) [69] https://tdn.totvs.com/download/attachments/6814840/AdvPL%20utilizando%20MVC%20v2%20-%20POR.pdf — TDN - Manual AdvPL utilizando MVC v2 (PDF oficial) [70] https://tdn.totvs.com/pages/viewpage.action?pageId=6063423 — TDN - Funções genéricas (índice de funções AdvPL)