Pular para o conteúdo principal

Postagens

Mostrando postagens de setembro, 2011

Postagem em destaque

BlackTDN :: Social :: Rifa Festival da Arte Capoeira Projeto Eu Sou Ninja

Angariar fundos para cobrir os custos logísticos do "Festival da Arte Capoeira" e apoiar o projeto Eu Sou Ninja em sua missão de promover a integração social e cultural na comunidade de Jacaraípe. Com a criação da rifa, buscamos envolver a comunidade de forma ativa no financiamento do evento, permitindo que todos contribuam para o sucesso do festival e para a continuidade das atividades do projeto. Prêmio: Copia da minha biblioteca pessoal de AdvPL/TLpp ..etc Participe da Rifa Eu já contribui. Só falta você! ```cmd Pasta de C:\GitHub\naldodj-tlpp 13/04/2024 19:17 . 19/03/2024 13:49 .. 05/01/2024 12:22 2.742 .gitattributes 14/11/2023 16:02 83 .gitignore 02/12/2023 20:08 .vscode 05/01/2024 12:05 bin 13/04/2024 19:18 4.121 ChangeLog.txt 27/12/2023 02:05 include 14/11/2023 16:02 27.030 LICENSE.txt 14/11/2023 16:02 0 makepatch.lst 14/11/2

Protheus :: Advpl :: Usando GetFuncArray, GetApoInfo e VarInfo

Função: GetFuncArray : Retorna um ou mais arrays contendo os dados das funções contidas no RPO - Repositório Portável de Objetos, a partir de uma máscara. (fonte: tdn:GetFuncArray ); Função: GetAPOInfo : Retorna um array com informações (nome, linguagem, modo de compilação, data de compilação e hora/minuto/segundo) de um determinado arquivo de código-fonte (*.PRW) (fonte: tdn:GetAPOInfo ); A utilidade básica dessas duas funções é retornar informações do RPO. Podemos usá-las, em separado ou em conjunto, para obter, por exemplo, informações da “versão” do último fonte MATA010 “aplicado” ao RPO. Normalmente, quando queremos obter esse tipo de informação, utilização o “Inspetor de Objetos” do “totvsDevelopment Studio”. Função: VarInfo : A Função VARINFO() gera um texto ASCII e/ou Html , com possibilidade de ECHO para o Console do Protheus Server ( caso habilitado ) , com as informações sobre o conteúdo de uma variável de memória Advpl , de qualquer tipo. (fonte: tdn:Varinfo ). Já, Var

Protheus :: Advpl :: Entendendo RPCSetEnv

GTalk: Sergio E. S. Souza para mim 10:32 Sergio: eae naldo, bom dia. posso te fazer uma pergunta, que ninguem soube me responder ate agora? 6 minutos 10:38 eu: diga-la 10:39 ?? 10:40 Sergio: vou te explicar calma, rs 10:42 é a respeito do RPCSETENV em um job. faço a preparacao do ambiente e inicio a leitura de um arquivo e ao fazer a leitura desse arquivo eh que fico sabendo a filial que devo logar para gerar o pedido de venda, entao aqui vai a pergunta: É possivel executar o rpcsetenv em uma determinada filial e depois na mesma execução mudar a filial invocando novamnete o rpcsetenv para que o execauto inclua na filial correta? 10:43 eu: sim garoto é possível desde que vc utilize via StartJob 10:44 hehe mania de garoto .. garota... ehehehe devia falar rapa hehe ... mas funfa sim exemplo... … #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" Static __cCRLF    := CRLF /*/     Funcao:        U_Wally()     Autor:        Marinaldo de Jesus (Sharing the Experience

Dica de Leitura :: Certificação: sim ou não? Parte II « Profissão: TI

Certificação: sim ou não? Parte II « Profissão: TI : "Certificação: sim ou não? Parte II" 'via Blog this'   “A certificação serve apenas para cerficarmo-nos de que somos certificados naquilo ao qual estamos nos certificando. Sou certificado em não ser certificado. Certifique-se!” []s иαldσ dj

Dica de Leitura :: Certificação: sim ou não? Parte I | Bruno H. Paes - Consultoria em TI, Desenvolvimento Web, Gestão do Conhecimento

Certificação: sim ou não? Parte I | Bruno H. Paes - Consultoria em TI, Desenvolvimento Web, Gestão do Conhecimento : "Certificação: sim ou não? Parte I" 'via Blog this' “A certificação serve apenas para cerficarmo-nos de que somos certificados naquilo ao qual estamos nos certificando. Sou certificado em não ser certificado. Certifique-se!”     []s иαldσ dj

Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo V : Excel Chart

Finalizando esse conjunto de “Posts”, vamos demonstrar a geração de Planilhas com informação de Gráfico. Utilizaremos, para isso, o script Export-Xls , desenvolvido por Luc Dekens (com uma pequena alteração. por padrão, logo após executado ele encerrava todos os processos “Excel” abertos). Uma técnica interessante que Luc Dekens utiliza e “Copy and Paste with Clipboard from PowerShell” para tornar a carga dos dados na planilha Excel muito, mas muito, rápida. Nossos exemplos, apesar de mais rápidos que os anteriores, usam parcialmente essa técnica, graças ao script de Luc Dekens. Estou estudando uma forma de aplicar essa técnica durante o processo de formatação da planilha. Aí sim, poderei escrever “Nem Deu Tempo de Piscar"!”. Até lá… Bem, se a formatação é o que menos importa, poderá removê-la do código deixando-a sob responsabilidade do usuário. Dois novos exemplos foram criados, U_ST2PSXlsx.prg e U_T2PSXlsx.prg, o primeiro para a geração no “server” e, o segundo, para a gera

Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo IV : Excel

No “Post” anterior, Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo III : Excel , vimos como efetuar a “integração” do totvs/protheus server com o PowerShell para manipulação de objetos COM, no exemplo o Excel. Os exemplos, apesar de funcionais, não eram muito rápidos em função da interação totvs/protheus vs PowerShell vs Excel a cada registro. Como prometido, os exemplos anteriores foram reescritos de forma a melhorarmos a performance da integração, interação e geração do arquivo. Para isso, um arquivo intermediário será utilizado. Ele será gerado pelo totvs/protheus server e será manipulado pelo PowerShell. Dessa forma, a interação totvs/protheus server vs PowerShell/Excel é minimizada fazendo com que a geração da planilha fique, no mínimo, duas vezes mais rápida. Ou seja, conseguiremos o mesmo resultado dos exemplos anteriores com um ganho de 50% na performance. Ambos os exemplos foram reescritos. Podemos utilizar o PowerShell do Client ou

Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo III : Excel

Da mesma forma que podemos rodar scripts em PowerShell para manipular objetos COM no “client” usando WaitRun ( Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo II : Excel ), podemos usar, para efetuar o mesmo processo no server, a WaitRunSrv . O que muda, entre um modelo e outro, é, basicamente, a forma como o totvs/protheus server localiza e manipula os diretórios e arquivos e, quando da finalização do processo o arquivo gerado é copiado do “server” para o “client”. Gerar o arquivo no server, teoricamente, é mais rápido uma vez que diminuimos o I/O entre o totvs/protheus server e o remote client. Apesar da geração no server ser, mais rápida, ela, usando os modelos que disponibilizei, não é tão mais rápida assim. Perceberemos a diferença no próximo “post” quando reescreverei o(s) exemplo(s) de forma a tornar o processo de integração Protheus/PowerShell/Excel um tanto quanto mais rápido. Um instantâneo do processo de chamada do PowerShell p

Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo II : Excel

Em Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo I : Excel vimos como criar, popular e exibir dados no Excel usando ADVPL e, através da WaitRun , Script em PowerShell. Agora vamos bincar um pouco com a Paleta de Cores, aplicar auto-filtro e borda. O código é praticamente o mesmo, sendo que: Para aplicar o Filtro usei: $objRange.EntireColumn.AutoFilter(); Para a Paleta de Cores: ( Color Palette and the 56 Excel ColorIndex Colors ) $objWorksheet.Cells.Item('+cStrLine+',$nColNum).Font.ColorIndex = 11; if ( -not( $objWorksheet.Cells.Item('+cStrLine+',$nColNum).row % 2 ) ){     $objWorksheet.Cells.Item('+cStrLine+',$nColNum).Interior.ColorIndex    = 16; } else {     $objWorksheet.Cells.Item('+cStrLine+',$nColNum).Interior.ColorIndex    = 15; } Para as Bordas: $objRange.Borders.Color        = 0; $objRange.Borders.Weight    = 2; e, para “Negrito”: $objWorksheet.Cells.Item('+cStrLine+',

Protheus :: Advpl :: Utilizando scripts em PowerShell para manipular objetos COM :: Combo I : Excel

Manipulando objetos COM utilizando o PowerShell veio para demonstrar que, com um pouco de "criatividade", podemos usar as ferramentas integradas do SO em nosso benefício. Se você não tem o TOII, poderá abrir mão desse recurso para fazer a sua "integração" com os "Componentes" COM. Neste primeiro exemplo procurei ser simplista, de forma a facilitar o entendimento e a assimilação, outros mais complexos virão. A idéia aqui é entender o conceito. Para esse exemplo necessitaremos: 1 . Que as seguintes tabelas estejam "populadas": SRA (Cadastro de Funcionários); SRJ (Funções); SRB (Dependentes); CTT (Centro de Custo); 2. Que o Microsoft Excel esteja instalado no Client (testei com a versão 2007); 3. Que o Windows Power Shell esteja instalado e habilitado a Executar Script (Windows XP Service Pack 3 ou +);   4 . MS-SQL 2000 ou +; A partir do Windows Vista, o Windows PowerShell é parte integrante do SO. Se for executar o teste no

Protheus :: Advpl :: Dica :: Robson Luiz :: Texto íntegro das opções do controle de acessos de usuários

“”Hoje precisei listar todas as opções do controle de acessos do usuários, esta lista fica na configuração por usuário no configurador, porém até agora ninguém se importou em aumentar o tamanho da coluna do listbox, ou seja, há opções que não dar para ler na íntegra o texto, pois há textos maiores que a própria coluna do listbox. Para isto fiz um rotina pequena para ser rodada no campo fórmula que gera um arquivo texto, neste arquivo texto ficará gravada todas as opções na íntegra. C:="",A:={},A:=GetAccessList(),AEVAL(A,{|X,Y| C+=STRZERO(Y,3,0)+"-"+X[2]+CHR(13)+CHR(10)}),MEMOWRITE("ACESSOS.TXT",C) p/ Robson Luiz… “ ou: C:="",A:=GetAccessList(),cCRLF:=CHR(13)+CHR(10),AEVAL(A,{|X,Y|C+=STRZERO(Y,3,0)+"-"+X[2]+cCRLF}),MEMOWRITE("ACESSOS.TXT",C) O Conteúdo será gravado no arquivo acessos.txt na pasta definida em StartPath, normalmente StartPath=\system\ e teremos algo como: 001-Excluir Produtos 002-Alterar Produtos

Dicas de Leitura :: SVN

Para facilitar o entendimento do uso da ferramenta SVN e buscar as melhores práticas em sua utilização, serparei aluns "links" interessantes para que possamos nos "inteirar" do assunto. Tutorial Subversion ; SVN: conceitos, boas práticas e dicas de utilização ; Controle de Versão com Subversion ; Implantando Gerência de Configuração Com o Apoio da Ferramenta SUBVERSION (SVN) ; Por Dentro do Subversion . []s иαldσ dj

Protheus :: Advpl :: _SetOwnerPrvt() vs _SetNamedPrvt()

User Function TstOwnerPrvt()     Local cProcName    := ProcName()     ShowVar( "cOwnerVar" , cProcName , ProcLine() )         NamedOwner()     ShowVar( "cOwnerVar" , cProcName , ProcLine() ) Return( NIL ) Static Function NamedOwner()     Local cProcName    := ProcName()     ShowVar( "cOwnerVar" , cProcName , ProcLine() )         Owner()     ShowVar( "cOwnerVar" , cProcName , ProcLine() ) Return( NIL  )  Static Function Owner()     Local cProcName    := ProcName()     ShowVar( "cOwnerVar" , cProcName , ProcLine() )         SetOwner()     ShowVar( "cOwnerVar" , cProcName , ProcLine() ) Return( NIL ) Static Function SetOwner()     Local cProcName    := ProcName()     _SetOwnerPrvt( "cOwnerVar" , "cOwnerVar_1" )     _SetNamedPrvt( "cOwnerVar" , "cOwnerVar_N" , "NamedOwner" )     _SetNamedPrvt( "cOwnerVar" , "cOwnerVar_T" , "U_TstOwnerPrvt" )    

Protheus :: Advpl :: Otimizando o Filtro de Browse com @

Na dica anterior, Protheus :: Advpl :: Usando cExprFilTop Para Filtrar o Cadastro de Fornecedores de Acordo com Documento de Entrada na mBrowse , Vimos como utilizar o parâmetro cExprFilTop para criar um Filtro Relacional e, na função MATA103NFE usamos FilBrowse() para filtrar a segunda mBrowse. A questão é que FilBrowse() é, de uma certa forma lenta, e, para otimiza-la poderemos utilizar o denominado ‘Fitro “@”’ para que a expressão de filtro seja resolvida diretamente no SGBD. Sendo assim, a expressão de filtro definida como: cFiltra       := "F1_FORNECE+F1_LOJA$'" + SA2->( A2_COD+A2_LOJA ) + "'" será otimizada se for reescrita e prefixada com o símbolo “@”. cFiltra        := SA2->( "@F1_FORNECE='"+A2_COD+"' AND F1_LOJA='"+A2_LOJA+ "'" ) Na primeira forma, o filtro será avaliado registro a registro tornando-o lento, já na segunda, usamos uma expressão SQL que será resolvida diretamente pelo SGB

Protheus :: Advpl :: Usando cExprFilTop Para Filtrar o Cadastro de Fornecedores de Acordo com Documento de Entrada na mBrowse

A dica de hoje é um exemplo de como utilizar o parâmetro cExprFilTop ( parâmetro 19 da mBrowswe ) para Filtrar os Fornecedores que possuem Documento de Entrada e, consequentemente, os Documentos de Entrada vinculados a Esses Fornecedores. O código em si é bem simples e de fácil assimilação, e pode ser usado como base para outros filtros e outros relacionamentos. O Código: #INCLUDE "PROTHEUS.CH" #IFDEF __TRYEXCEPTION__     #INCLUDE "TRYEXCEPTION.CH" #ENDIF    /*/     Function:    U_MATA103F     Autor:       Marinaldo de Jesus     Data:        18/01/2011     Descricao:   Cadastro de Fornecedores/Doc.Entrada     Sintaxe:     U_MATA103F /*/ User Function MATA103F()     Local aArea        := GetArea()     Local aSA2Area     := SA2->( GetArea() )     Local aSF1Area     := SF1->( GetArea() )     Local cExprFilTop  := ""     BEGIN SEQUENCE    Private aRotina     := {;                              { "Pesquisar" , "PesqBrw", 0 , 0