sábado, 27 de março de 2010

Nomenclaturas do Protheus 10

As principais monenclaturas do Protheus 10 são:

Build - Versão completa do sistema com seus executáveis. O 'Build' pode ser identificado por meio das seguintes opções "Ajuda" + "Sobre", dentro de qualquer módulo do sistema, ou na tela de console do Totvs Application Server.

Repositórios RPO - Arquivos binários compilados, os quais contém instruções de funcionamento, como funções e aplicações de todos os módulos do ERP.

Patch - Arquivos de correção para o 'RPO'. Sua finalidade é a correção do arquivo binário, afim de que não seja necessário atualizar o 'RPO' por completo.

ADVPL - É a linguagem de programação proprietária da Microsiga no que diz respeito a customizações de funções.

Atualização de Build - A atualização de 'Build' consiste em atualizar toas as alterações realizadas dentro da estrutura do Protheus, como por exemplo dll's, executáveis, correções, aplicativos, etc.
É recomendável atualizar à cada 3 meses, período este que a Microsiga custuma disponibilizar em seu FTP, com excessão do Patch que pode ser necessário a qualquer momento.

Parametros do atalho do Totvs Smart Client


Este parametros servem para configurarmos o Totvs Smart Client em sua inicialização.

- Q(Quiet) Indica que o Totvs Smart Client não deverá mostrar o Splash(imagem de Apresentação) e a tela de identificação de parâmetros iniciais, necessita ser acompanhada da cláusula -P;

- P(Main Program) Identifica o programa(APO) inicial;

- E(Environment) nome da seção do ambiente , no (INI do Server), que será utilizada para definições gerais;

- C(Connection) nome da seção de conexão, que será utilizada, para a conexão ao Totvs Application Server(TotvsAppServer)

- L(Log File) Para não conformidades que ocorram no Totvs Smart Client, antes que esse possa se conectar com o Totvs Application Server, é gerado um arquivo de log , no diretório de execução do Totvs Smart Client.
Este arquivo é gerado com o nome de Totvs Smart Client_;

- M(AllowMultiSession) permite múltiplas instâncias cópias do Totvs Smart Client na mesma máquina. No modo default nçao permite multiplas sessões.

Exemplo:

C:PROTHEUS 10\BIN\SMARTCLIENT\TOTVSSMARTCLIENT.EXE -Q -P=Sigacom -E=Environment

Sigacom= Módulo de compras
Environment = Ambiente

segunda-feira, 22 de março de 2010

Lista de tabelas para uso no Protheus

Segue uma breve lista de tabelas que podem ser utilizadas em customizações:

  • SZA à SZZ e SZ0 à SZ9

  • SZA à SZZ e SZ0 à SZ9

  • PAA à PAZ e PA0 à PA9

  • PBA à PBZ e PB0 à PB9

  • ...

  • PZA à PZZ e PZ0 à PZ9

terça-feira, 16 de março de 2010

Atualizando e/ou recuperando o seu Protheus

Atualizando os produtos


Baixe os arquivos atualizados do site Portal do Cliente da Microsiga os arquivos:
Obs. Estes arquivos correspondem a maio/2010, confiram os mais atuais na hora de executar.


  • Binário TOTVSTec.zip

  • Repositório de Objetos.zip

  • TOP Connect 4.zip

  • Includes.zip

Entres outras opções disponíveis, estas são as principais para o ambiente de desenvolvimento.

Alterando os DBF


Sempre que substituir os arquivos DBF's se faz necessário deletar os arquivos .cdx, .idx, .ntx e .ind pois os mesmos se referem aos DBF's antigos e então deveram ser refeitos para os novos DBF's.

Vá no DOS e execute o comando
CD C:\Protheus10\Protheus_data\System\
Del *.cdx
Del *.idx
Del *.ntx
Del *.ind

Alterar o sigamat.emp


Ao substituir a pasta system, se faz necessário substituir o arquivo sigamat.emp que consta o registro das empresas cadastradas.
Não esqueça de apagar o arquivo sigamat.ind


Vá no DOS e execute o comando
CD C:\Protheus10\Protheus_data\System\
Del sigamat.ind

Obs.: Quando se importa um "sigamat.emp" de um ambiente .dtc e vai usa-lo em um ambiente .dbf mesmo sendo um arquivo do tipo .emp é necessário importa-lo via apsdu e converter o mesmo para .dbf, o processo inverso também é necessário a conversão.

Obs. 2: Ao ser alterado o "sigamat.emp" que possuem as mesmas empresas em ambos, é necessário apagar os arquivos SX4, SXQ e SXV das empresas que estão em ambos "sigamat.emp".

Alterar o sigapss.spf


Este arquivo deve ser copiado manualmente da pasta system, ele esta criptografado e contém o cadasro de usuários do Protheus.

sexta-feira, 12 de março de 2010

ProcessMessages

ProcessMessages é uma função que solicita ao Windows que todas as mensagens pendentes sejam executadas antes que qualquer outra coisa seja feita.
Exemplo:

@ 000,000 Button "Processar" Size 40,10 Action (CursorWait(), Processo(), CursorArrow())

A intenção é de mudar o ícone do cursor para o ícone de espera antes que um processo longo seja executado, informando ao usuário que espere. Ao fim da execução retornamos o ícone do cursor ao normal.

Neste caso se o "Processo()" for muito pesado, pode ser que ele "domine" o processador antes que "CursorWait()" seja executado. Desse modo, o processo é executado sem que a solicitação de mudança do cursor seja processada. Ao fim da execução, a solicitação de mudança do cursor é feita, e imediatamente após, "CursorArrow()" é executado, dando a impressão de que o ícone do cursor nunca tenha mudado.
Para solucionar esse problema, pedimos ao Windows que todas as mensagens sejam executadas antes que "Processo()" seja executado:

@ 000,000 Button "Processar" Size 40,10 Action (CursorWait(), ProcessMessages(), Processo(), CursorArrow())

Desse modo asseguramos a mudança do ícone do cursor para o ícone de espera antes que seja executado o "Processo()", garantindo o efeito desejado.

quinta-feira, 11 de março de 2010

Funcao para trabalhar com campos memo

MSMM - Funcao para trabalhar com campos memo na tabela SYP

Sintaxe:

cMemo := MSMM (cChave,nTam,nLin,cString,nOpc,nTabSize,lWrap,cAlias,cCpochave)

onde:

cMemo......: Conteudo retornado, quando leitura. Se o campo chave nao existir, retorna " ".
cChave.....: Chave de acesso ao SYP. Deve ser informada na alteracao e exclusao.
nTam.......: 'Largura' do campo memo.
nLin.......: Linha do SYP (YP_SEQ) a ser retornada na leitura. Se nao informado, retorna todas.
cString....: Conteudo a ser gravado na inclusao ou alteracao.
nOpc.......: 1=gravar (inc/alt); 2=excluir; 3=leitura (default).
nTabSize...: Nao usado.
lWrap......: Nao usado.
cAlias.....: Alias do arquivo onde encontra-se o campo chave. Deve ser informado na inclusao e alteracao.
cCpoChave..: Campo pertencente `a tabela cAlias e que vai conter a chave de acesso ao SYP.

segunda-feira, 8 de março de 2010

Exemplo barra para carregamento




















#include 'protheus.ch'
STATIC lRunning:=.F., lStop:=.F.

User Function 32TMeter()

Local oDlg, oMeter, nMeter:=0, oBtn1, oBtn2
DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE 'Teste' Pixel
oMeter:= tMeter():New(10,10,{|u|if(Pcount()>0,nMeter:=u,nMeter)};
,100,oDlg,100,16,,.T.) // cria a régua
// botão para ativar andamento da régua
@ 30,10 BUTTON oBtn1 PROMPT 'Run ' OF oDlg PIXEL ACTION RunMeter(oMeter)
@ 50,10 BUTTON oBtn2 PROMPT 'Stop' OF oDlg PIXEL ACTION lStop:=.T.
ACTIVATE MSDIALOG oDlg CENTERED
Return NIL

STATIC Function RunMeter(oMeter)
If lRunning
Return
Endif
lRunning:= .T.

oMeter:Set(0)
// inicia a régua
While .T. .and. !lStop
Sleep(1000) // pára 1 segundo
ProcessMessages() // atualiza a pintura da janela, processa mensagens do windows
nCurrent:= Eval(oMeter:bSetGet) // pega valor corrente da régua
nCurrent+=10 // atualiza régua

oMeter:Set(nCurrent)
if nCurrent==oMeter:nTotal
Return
endif
Enddo

lRunning:= .F.
lStop:= .F.
Return

Exemplo de List em ADVPL


















#include 'protheus.ch'
user function 21TcBrowse()

Local oOK := LoadBitmap(GetResources(),'br_verde')
Local oNO := LoadBitmap(GetResources(),'br_vermelho')
Local aList := {} // Vetor com elementos do Browse
Local nX

// Cria Vetor para teste
for nX := 1 to 100
aListAux := {.T., strzero(nX,10), 'Descrição do Produto '+;
strzero(nX,3), 1000.22+nX}
aadd(aList, aListAux)
next

DEFINE MSDIALOG oDlg FROM 0,0 TO 520,600 PIXEL TITLE 'Exemplo da TCBrowse'
// Cria objeto de fonte que sera usado na Browse
Define Font oFont Name 'Courier New' Size 0, -12

// Cria Browse
oList := TCBrowse():New( 01 , 01, 300, 200,,;
{'','Codigo','Descrição','Valor'},{20,50,50,50},;
oDlg,,,,,{||},,oFont,,,,,.F.,,.T.,,.F.,,, )

// Seta o vetor a ser utilizado
oList:SetArray(aList)

// Monta a linha a ser exibida no Browse
oList:bLine := {||{ If(aList[oList:nAt,01],oOK,oNO),;
aList[oList:nAt,02],;
aList[oList:nAt,03],;
Transform(aList[oList:nAT,04],'@E 99,999,999,999.99') } }

// Evento de DuploClick (troca o valor do primeiro elemento do Vetor)
oList:bLDblClick := {|| aList[oList:nAt][1] :=;
!aList[oList:nAt][1],oList:DrawSelect() }

// Principais commandos
oBtn := TButton():New( 210, 001,'GoUp()' , oDlg,{||oList:GoUp()},;
40, 010,,,.F.,.T.,.F.,,.F.,,,.F. )
oBtn := TButton():New( 220, 001,'GoDown()', oDlg,{||oList:GoDown()},;
40, 010,,,.F.,.T.,.F.,,.F.,,,.F. )
oBtn := TButton():New( 230, 001,'GoTop()' , oDlg,{||oList:GoTop()}, ;
40, 010,,,.F.,.T.,.F.,,.F.,,,.F. )
oBtn := TButton():New( 240, 001,'GoBottom()', oDlg,{||oList:GoBottom()},;
40, 010,,,.F.,.T.,.F.,,.F.,,,.F. )
oBtn := TButton():New( 210, 060, 'nAt (Linha selecionada)' ,;
oDlg,{|| Alert(oList:nAt)},;
90, 010,,,.F.,.T.,.F.,,.F.,,,.F. )
oBtn := TButton():New( 220, 060, 'nRowCount (Nr de linhas visiveis)', oDlg,;
{|| Alert(oList:nRowCount()) }, 90, 010,,,.F.,.T.,.F.,,.F.,,,.F. )

oBtn := TButton():New( 230, 060, 'nLen (Numero total de linhas)', oDlg,;
{|| Alert(oList:nLen) }, 90, 010,,,.F.,.T.,.F.,,.F.,,,.F. )

oBtn := TButton():New( 240, 060, 'lEditCell (Edita a celula)', oDlg,;
{|| lEditCell(@aList,oList,'@!',3) }, 90, 010,,,.F.,.T.,.F.,,.F.,,,.F. )

ACTIVATE MSDIALOG oDlg CENTERED

return

Exemplo Top Menu com BMP














#include 'protheus.ch'

//Exemplo de BtnBmp

User Function 18TBtnBmp()
Local oDlg

DEFINE MSDIALOG oDlg FROM 0,0 TO 304,504 PIXEL TITLE 'Exemplo'
oTBar := TBar():New( oDlg,25,32,.T.,,,,.F. ) // Orig: 25,45
oTBtnBmp1 := TBtnBmp() :NewBar('RPMNEW',,,,'Msg 01',;
{||Alert('TBtnBmp 01')},.F.,oTBar,.T.,{||.T.},,.F.,,,1,,,,,.T. )
oTBtnBmp2 := TBtnBmp() :NewBar('copyuser',,,,'Msg 02',;
{||Alert('TBtnBmp 02')},.F.,oTBar,.T.,{||.T.},,.F.,,,1,,,,,.T. )

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

Exemplo de Menu















#include 'protheus.ch'

User Function 30TMenu()
Local oDlg

DEFINE MSDIALOG oDlg FROM 0,0 TO 304,504 PIXEL TITLE 'Exemplo'
oMenu := TMenu():New( 0,0,0,0,.F.,'',oDlg,CLR_WHITE,CLR_BLACK)
// Adiciona Item ao Menu Principal
oMenuItem1 := TMenuItem():New2( oMenu:Owner(),'Item 001','Item 001',,,)
oMenu:Add( oMenuItem1 )

// Adiciona sub-Itens
oMenuItem2 := TMenuItem():New2( oMenu:Owner(),'Sub-Item 001',,,{||Alert('TMenuItem')})
oMenuItem3 := TMenuItem():New2( oMenu:Owner(),'Sub-Item 002',,,{||Alert('TMenuItem')})
oMenuItem4 := TMenuItem():New2( oMenu:Owner(),'Sub-Item 003',,,{||u_10BrGet()})
oMenuItem1:Add( oMenuItem2 )
oMenuItem1:Add( oMenuItem3 )
oMenuItem1:Add( oMenuItem4 )

ACTIVATE MSDIALOG oDlg CENTERED
Return NIL

Exemplo de Menu Bar














#include 'protheus.ch'

User Function 31TMenuBar()
Local oDlg

DEFINE MSDIALOG oDlg FROM 0,0 TO 304,504 PIXEL TITLE 'Exemplo'
// Monta um Menu Suspenso
TMenuBar := TMenuBar():New(oDlg)
TMenuBar:nClrPane := RGB(183,208,248) // Cor de fundo do Menu
oTMenu1 := TMenu():New(0,0,0,0,.T.,,oDlg)
oTMenu2 := TMenu():New(0,0,0,0,.T.,,oDlg)
TMenuBar:AddItem('Arquivo' , oTMenu1, .T.)
TMenuBar:AddItem('Relatorio', oTMenu2, .T.)

//Cria Itens do Menu
oTMenuItem := TMenuItem():New(oDlg,'TMenuItem 01',,,,;
{||Alert('TMenuItem 01')},,'AVGLBPAR1',,,,,,,.T.)
oTMenu1:Add(oTMenuItem)
oTMenu2:Add(oTMenuItem)
oTMenuItem := TMenuItem():New(oDlg,'TMenuItem 02',,,,;
{||Alert('TMenuItem 02')},,,,,,,,,.T.)
oTMenu1:Add(oTMenuItem)
oTMenu2:Add(oTMenuItem)

ACTIVATE MSDIALOG oDlg CENTERED
Return NIL

segunda-feira, 1 de março de 2010

Link de Sites de Emprego, Consultorias e Empresas que contratam Analistas Microsiga

Sites de emprego para informática
APInfo
Ceviu

Links de consultorias que contratam Analistas Microsiga
Veti
Siga Services
Aliança Results
Akron
OnStart
Proton Consultoria
Agility Solutions

Links de empresas que contratam Analistas Microsiga
CTF