Pular para o conteúdo principal

Postagem em destaque

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu

Protheus :: ADVPL utilizando MVC

ADVPL com MVC "é o que há". Por muito tempo a totvs não implementava melhoria significativa em sua linguagem ADVPL (à despeito das melhorias implementadas por outros fornecedores de linguagens no padrão CodBase Harbour, xHarbour dentre outras) mas MVC foi a campeã. Muito fácil programar agora: vou ensinar ao meu filho e curtir um bom e merecido descanso em Dubai ou começar a programar em Assembly me distraindo com o MenuetOS porque em ADVPL com MVC está muito, mas muito fácil.

Não deixem de baixar o "Tutorial" e mais ainda, não deixem de utilizar.

[]s
иαldσ dj

Comentários

  1. Ainda bem que eu sigo o seu blog... valeu Naldo por compartilhar essa belíssima informação.

    Saudações Nordestinas mais especificamente de Alagoas.

    Abraço.

    ResponderExcluir
  2. Muito bom o material. Bem mais organizado que as formas tradicionais de desenvolvimento ADVPL. Pena que não tem funções para desenvolvimento de relatórios.

    ResponderExcluir
  3. Para relatórios, ultimamente, utilizo o IReport baseado no JasperReports.

    Afinal, o protheus não é uma aplicação especializada na emissão de relatórios.

    []s
    иαldσ dj

    ResponderExcluir
  4. Você tem algum material ou algum post relacionado aqui no blog?

    ResponderExcluir
  5. Tenho planos para uma série de 'posts' sobre o IReports. Ainda não tive tempo para monta-la. Acho que tenho uma documentação em algum lugar. Se acha-la te passo o link.

    []s
    иαldσ dj

    ResponderExcluir
  6. Estou estudando o material mas não encontro a include FWMVCDEF
    Onde posso encontra-la?
    Poderia me envia-la por email?
    Att,
    Henrique
    henrique@esdeva.com.br

    ResponderExcluir
  7. Só com o pessoal da Totvs.

    []s
    иαldσ dj

    ResponderExcluir
  8. Boa tarde Naldo.

    Você pode me tirar uma dúvida por favor?!

    O conceito MVC funciona na versão 10?

    Outra coisa, seguindo a apostila, como eu faço para que dentro do meu fonte exemplo: ( User Function teste01() ) as funções Static Function ModelDef, ViewDef sejam usadas, pergunto isso pois fiz a declaração dessas duas funções dentro da minha User function e não funcionou, mais também não apresentou nenhum erro.

    Desculpa te incomodar e obrigado por responder.

    Abraço.

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. Bom dia Talvane.
      Não sei se ainda está com dúvidas, mas respondendo a sua pergunta o MVC funciona sim na versão 10, mas precisa baixas os arquivos include (.ch) no portal.
      Sobre as funções ModelDef e ViewDef, você não precisa chamar elas na sua função... Elas são chamadas automaticamente se você fizer a declaração correta do menu no array aRotina, que deve estar declarado da seguinte forma na função Static Function MenuDef()

      // ----------------------------------------
      User Function myFunction()
      Private aRotina := MenuDef()
      .
      .
      .
      Return Nil

      // ----------------------------------------
      Static Function MenuDef()
      Local aRotina := {}

      ADD OPTION aRotina
      Title 'nome_do_item_no_menu'
      Action 'VIEWDEF.nome_do_arquivo_fonte'
      OPERATION valor_que_define_a_operacao_a_ser_executada(inclusão,alteração,etc)
      ACCESS valor_que_define_o_nivel_de_acesso

      Return aRotina

      // ----------------------------------------
      Static Function ViewDef()
      Local oView
      Local oModel := FWLoadModel("nome_do_arquivo_fonte")
      .
      .
      .
      Return oView
      // ----------------------------------------

      Por definição o sistema vai chamar a rotina ViewDef do arquivo fonte definido no array aRotina Action 'VIEWDEF.nome_do_arquivo_fonte', que por sua vez usará as definições do ModelDef do arquivo fonte definido na função ViewDef (oModel := FWLoadModel("nome_do_arquivo_fonte"))

      Espero ter ajudado.

      Excluir
  9. Talvane,

    Acredito que sim, mas só a Totvs para ratificar. Provavelmente dependerá da atualização de algum Framework. Entre em contato com eles.

    []s
    иαldσ dj

    ResponderExcluir
  10. Não está mais disponivel o download do tutorial ...

    ResponderExcluir
    Respostas
    1. Leonardo, o "link" foi corrigido. Apontava para o antigo TDN

      Excluir
  11. Naldo,

    Soube o que era MVC através dessa pagina. Muito interessante.
    Li toda a apostila, e fiz alguns programinhas.
    Agora estou tentando usar o comando NEW MODEL, e não tem funcionado direito.
    Voce poderia me dizer o que há de errado com o codigo abaixo?
    User Function COMP043_MVC()
    Local oBrowse
    NEW MODEL ;
    TYPE 3 ;
    DESCRIPTION "Pedidos" ;
    BROWSE oBrowse ;
    SOURCE "COMP043_MVC" ;
    MODELID "MDCOMP043" ;
    MASTER "SC5" ;
    DETAIL "SC6" ;
    RELATION { { 'C6_FILIAL', 'xFilial( "SC6" )' }, { 'C6_NUM' , 'C5_NUM' } } ;
    ORDERKEY SC6->( IndexKey( 1 ) )
    Return NIL

    ResponderExcluir
  12. O problema era q eu estava testando pelo cadastro de formulas, so funciona se adicionar ao menu.

    Valeu!

    ResponderExcluir
  13. Naldo, procurei em vários lugares e inclusive com a Totvs, como realizo o doubleclick com o MVC?

    ResponderExcluir
    Respostas
    1. Daniel a classe especializada em tratar a interação com o usuário é a TControl. Nela encontramos as propriedades:

      DATA bLClicked
      DATA bLDblClick
      DATA bRClicked

      As classes de interface TDialog, TWindow, TBitMap, Tetc... herdam essas propriedades e podem implementar controles específicos. Considerando que a interface MVC tem interação com o usuário é possível sim utilizar, se implementado pela TOTVS, os eventos acima relacionados. Então terá que identificar em que momento quer usar o evento relacionado a bLDblClick e implementá-lo.

      Excluir
    2. Também estou precisando disso.
      Naldo! Por acaso, você teria um exemplo de como fazer isso?

      Excluir
  14. Naldo, muito bom seu site, contrui uma app mvc aqui e gostei muito, mas tem uma coisa que estou apanhando um bocado, na tabela do browse tenho campo virtuais que são preenchidos de acordo com uma consulta padrão na hora da edição.

    Porem quando volto para consultar o cadastro ele não traz os dados, mesmo eu usando o "inic Browse" no configurador do campo.

    Como eue trago estes valores ?

    ResponderExcluir
  15. Boa tarde!

    Gelera, oque MODELID está esperando, sei que é uma string mas oque devo passar?
    não tem na documentação. algem aberia me informar?






    cid:421714164268
    STRING
    STRING


    ResponderExcluir
  16. Boa tarde. Não sei se vc vai poder me ajudar. Criei um programa em MVC para o modelo3 com duas tabelas customisadas. As duas são exclusivas. Ai vem a duvida. somente na tabela PAI é que é gravada a filial na tabela filha não. Detalhe o relacionamente entre as duas é a filial e um codigo, que digito na tabela PAI. Esse codigo via pra tabela Filha, mas a filial não

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

BlackTDN :: RLeg ~ Desvendando a Função ParamBox

Para quem precisar desenvolver uma interface de entrada de dados, coisa rápida, e não quer ter aquele trabalhão danado que todos já sabemos, o Protheus tem uma função que ajuda muito, é uma interface semelhante a função Pergunte, porém com muito mais opção de objeto de entrada de dados, alias até colocar o scrollbox desta interface com todos os objetos em outra MsDialog ou Wizard é simples. Vejam o exemplo abaixo, boa sorte! Rleg. //---------------------------------------------------------- // Função exemplo utilizando a função ParamBox() //---------------------------------------------------------- User Function xParamBox() Local aRet := {} Local aParamBox := {} Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"} Local i := 0 Private cCadastro := "xParambox" // ---------------

BlackTDN :: Customizando a interface de Login no Protheus e by You

A publicação “ BlackTDN :: By You e sua nova tela de login ”  de nosso amigo OBona deu o que falar e, em função disso, esse que a muito não vos escreve resolveu criar uma versão onde será possível personalizar, “por completo”, a tela de login no Protheus/by You. Considerando que OBona já havia “mapeado, identificado e customizado” as imagens peguei-as emprestadas para o exemplo que se segue: O primeiro passo para a customização “total” da interface de login do Protheus/by You será implementar o “Ponto de Entrada” ChgPrDir (Diretório de impressão) . Usaremos esse PE juntamente como programa U_FindMsObject.prg (apresentado pela primeira vez em: Protheus :: ADVPL : The Container : Presents Pandora's box ). Diferente do exemplo proposto por OBona, que substitui, durante o processo de compilação, as imagens padrões do sistema (excluindo-as) por imagens customizadas (com o mesmo nome) este novo exemplo mantém, no RPO, as imagens padrões adicionando novas imagens customizadas que serã

Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login

Ferne$ perguntou: "...é possível abrir alguma rotina do sistema sem solicitar login ao usuário, como por exemplo a rotina MATA010..." Sim Ferne$, é possível sim. Abaixo um Exemplo para a Chamada à função MATA010 sem a necessidade de Login no sistema. #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" /*/ Funcao: MATA010Ex Data: 30/04/2011 Autor: Marinaldo de Jesus Descricao: Executar a Funcao MATA010 diretamente sem a necessidade de LOGIN no Protheus Sintaxe: 1 ) U_MATA010Ex ( Chamada diretamente na Tela de Entrada do Sistema ) ; ou 2 ) totvsclient.exe -q -p=u_MATA010Ex -a=01;01 -c=rnp_local -e=rnp -m -l ( Chamada Via Linha de Comando ) /*/ User Function MATA010Ex( cEmpFil ) Local aEmpFil Local bWindowInit := { || __Execute( "MATA010()" , "xxxxxxxxxxxxxxxxxxxx" , "MATA010" , "SIGAFAT" , "SIGAFAT", 1 , .T. ) } Local cEmp Local cFil Local cMod Local cModName := "SIGAFAT" DEFA