terça-feira, 2 de agosto de 2016

Nova estrutura de tradução do Protheus - arquivos .CH

O modelo de resource vai facilitar a criação de outros idiomas no futuro, permitindo a inserção de novos idiomas sem a recompilação de fontes no repositório.
O arquivo .CH foi simplificado, passando a fazer a “ponte” entre os programas atuais e as funções de leitura dos resources e dos termos Flavour.
No novo modelo, além do arquivo .CH vinculado a cada fonte, temos um arquivo de resource por idioma. Hoje tratamos 4 idiomas, sendo o Português de Portugal tratado como idioma:
  • Português do Brasil - identificador "pt-br"
  • Português de Portugal - identificador "pt-pt"
  • Espanhol - identificador "es"
  • Inglês - identificador "en"
Dessa forma, para cada CH cadastrado temos 4 arquivos TRES (Translate RESource).
Exemplo: Para o programa MATA410 (pedido de vendas), temos vinculados os seguintes resources:

  • MATA410_pt-br.TRES
  • MATA410_pt-pt.TRES
  • MATA410_es.TRES
  • MATA410_en.TRES

VERSÃO 11
Os arquivos CH da versão 12 não são compatíveis com os da versão 11. Seguem exemplos de CH:
#define STR0001 "Protheus Sniffer"
#define STR0002 "Ferramenta de diagnóstico do Protheus - Geração do Script de processamento"
#define STR0003 "Identificador"
#define STR0004 "Descrição"
#define STR0005 "Versão"
#define STR0006 "Marcar todos"
#define STR0007 "Desmarcar todos"
#define STR0008 "Geração do script cancelada !"
#define STR0009 If( cPaisLoc $ "ANG|PTG", "Erro na criação do ficheiro de script. Código -> ", "Erro na criação do arquivo de script. Código -> " )
#define STR0010 If( cPaisLoc $ "ANG|PTG", "Ficheiro ", "Arquivo " )
Versão 12
#DEFINE STR0001 FWI18NLang("SNFXFUN","STR0001",1)
#DEFINE STR0002 FWI18NLang("SNFXFUN","STR0002",2)
#DEFINE STR0003 FWI18NLang("SNFXFUN","STR0003",3)
#DEFINE STR0004 FWI18NLang("SNFXFUN","STR0004",4)
#DEFINE STR0005 FWI18NLang("SNFXFUN","STR0005",5)
#DEFINE STR0006 FWI18NLang("SNFXFUN","STR0006",6)
#DEFINE STR0007 FWI18NLang("SNFXFUN","STR0007",7)
#DEFINE STR0008 FWI18NLang("SNFXFUN","STR0008",8)
#DEFINE STR0009 FWI18NLang("SNFXFUN","STR0009",9)
#DEFINE STR0010 FWI18NLang("SNFXFUN","STR0010",10)

Exemplo de arquivo .TRES, português do Brasil. 
0001#STR0001#ALL#Protheus Sniffer
0002#STR0002#ALL#Ferramenta de diagnóstico do Protheus - Geração do Script de processamento
0003#STR0003#ALL#Identificador
0004#STR0004#ALL#Descrição
0005#STR0005#ALL#Versão
0006#STR0006#ALL#Marcar todos
0007#STR0007#ALL#Desmarcar todos
0008#STR0008#ALL#Geração do script cancelada !
0009#STR0009#ALL#Erro na criação do arquivo de script. Código ->
0010#STR0010#ALL#Arquivo

REF:
http://tdn.totvs.com/pages/viewpage.action?pageId=181965465

segunda-feira, 25 de julho de 2016

Queda energia Desligamento inesperado P12 CtreeServer

Caso ocorra algum desligamento no servidor que não estava planejado e o seu protheus utilize ctreeserver, provavelmente o login no próximo acesso ficará corrompido. Abaixo o procedimento para restaurar o acesso ao sistema.

* Parar todos os serviços, exemplo: CtreeServer, License, Master, Slaves, DbAccess, Workflow, etc...

* Na pasta pswbackup ( ...\protheus_data\pswbackup ), existe o arquivo sigapss.spf, copie o que está com a data na pasta mais recente e substitua pelo corrompido que está na system ( ...\protheus_data\system ).

* Renomear os arquivos na system:
SIGAHLP.HLP, 
SIGAHLE.HLE, 
SIGAHLS.HLS; 

Renomear o arquivo na system: sigamat.ind

* Iniciar todos os serviços de protheus, exemplo: CtreeServer, License, Master, Slaves, DbAccess, Workflow, etc...

quinta-feira, 21 de julho de 2016

Script T-SQL - While - Espelho Ponto Eletrônico

Abaixo um exemplo de script em T-SQL que monta o espelho de ponto.

--DECLARA VARIAVEIS PARA CONTROLE DO WHILE E ARMAZENAMENTO DOS ÚLTIMOS REGISTROS
DECLARE @P8_FILIAL VARCHAR(02) , @P8_MAT VARCHAR(06) , @P8_ORDEM VARCHAR(02) , @P8_HORA VARCHAR(05)
  ,@P8_FILIAL2 VARCHAR(02) , @P8_MAT2 VARCHAR(06) , @P8_ORDEM2 VARCHAR(02) , @PCONT INT , @STRINGSQL VARCHAR(MAX) 
  ,@FIL VARCHAR(02), @MAT VARCHAR(06);

SET @FIL = '02';   
SET @MAT = '030830';

--TABELA CRIADA PARA CONTROLE DO WHILE
DECLARE @TUSER2 AS TABLE (FIL VARCHAR(02), MAT VARCHAR(06), ORD VARCHAR(02), HORA VARCHAR(05))

IF OBJECT_ID('tempdb.dbo.#TESTE_FINAL', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.#TESTE_FINAL;
END

--CRIA TABELA PARA POPULAR O RESULTADO QUE PRECISAMOS
CREATE TABLE #TESTE_FINAL(
FIL VARCHAR(02) NULL
,MAT VARCHAR(06) NULL
,ORD VARCHAR(02) 
,MARC1 VARCHAR(05)
,MARC2 VARCHAR(05)
,MARC3 VARCHAR(05) 
,MARC4 VARCHAR(05) 
,MARC5 VARCHAR(05)
,MARC6 VARCHAR(05)
,MARC7 VARCHAR(05) 
,MARC8 VARCHAR(05)
,MARC9 VARCHAR(05)
,MARC10 VARCHAR(05) ) ;

--POPULA TABELA PARA SER PERCORRIDA NO WHILE
INSERT INTO 
@TUSER2  
SELECT 
P8_FILIAL
, P8_MAT
, P8_ORDEM
, P8_HORA
FROM
SP8010
WHERE 
P8_DATAAPO <> ''
AND P8_ORDEM <> ''
AND P8_TPMCREP <> 'D' 
AND P8_MOTIVRG <> 'REJEICAO AUTOMATICA' 
AND D_E_L_E_T_ <> '*' 
AND P8_MAT = @MAT
AND P8_FILIAL = @FIL
ORDER BY
P8_FILIAL , P8_MAT , P8_ORDEM , P8_DATA , P8_HORA

--ZERA VARIAVEIS PARA CONTROLAR LACO

SET @P8_FILIAL2 = ''
SET @P8_MAT2 = ''
SET @P8_ORDEM2 = ''
SET @PCONT = 0

WHILE (SELECT COUNT (*) FROM @TUSER2) > 0
BEGIN
--ARMAZENA O REGISTRO DO CURSOR
SELECT TOP 1 @P8_FILIAL = T.FIL
, @P8_MAT = T.MAT
, @P8_ORDEM = T.ORD
, @P8_HORA = T.HORA
FROM @TUSER2 T;
IF @P8_ORDEM <> @P8_ORDEM2
BEGIN
INSERT INTO #TESTE_FINAL (FIL, MAT, ORD, MARC1) VALUES ( @P8_FILIAL, @P8_MAT, @P8_ORDEM, @P8_HORA );
SET @PCONT = 1 ;
SET @P8_FILIAL2 = @P8_FILIAL;
SET @P8_MAT2 = @P8_MAT ;
SET @P8_ORDEM2 = @P8_ORDEM ;
END

ELSE IF @P8_ORDEM = @P8_ORDEM2
BEGIN
SET @PCONT += 1 ;
SET @STRINGSQL = 'UPDATE #TESTE_FINAL SET MARC' + CONVERT(VARCHAR(10), @PCONT) + ' = ''' + @P8_HORA + ''' WHERE FIL = ''' + @P8_FILIAL
+ ''' AND MAT = ''' + @P8_MAT + ''' AND ORD = '''  + @P8_ORDEM + ''' ';
--PRINT @STRINGSQL
EXEC (@STRINGSQL);
END 

--DELETA O REGISTRO DO CURSOR
DELETE FROM @TUSER2 WHERE MAT = @P8_MAT AND FIL = @P8_FILIAL AND ORD = @P8_ORDEM AND HORA = @P8_HORA;
END
SELECT * FROM #TESTE_FINAL;
DROP TABLE #TESTE_FINAL;

quarta-feira, 20 de julho de 2016

Configurar Protheus Teste Local com os dados da produção.

Abaixo um roteiro que construí para converte o Protheus 11.8 utilizado em produção para uma base local teste, ambos com “.dbf” no localfiles.
1.PROCEDIMENTO REPLICAÇÃO

01) EFETUAR BACKUP BANCO E APLICAÇÃO.

02) EFETUAR RESTORE DO BD.

03) EFETUAR A CÓPIA DOS ARQUIVOS PARA O NOVO SERVIDOR

04) CÓPIA DO AMBIENTE
         5.1 RPO
         5.2 BINÁRIO
         5.3 ODBC
         5.4 DBACCESS
         5.5 SYSTEM
         5.6 SYSTEM LOAD

05) REALIZAR AS ALTERAÇÕES NO APP SERVER INI COM AS TAGS LICENSESERVER E CLIENTSERVER

06) CONFIGURAR E SUBIR OS SERVIÇOS.

2.PROCEDIMENTO ATIVAÇÃO BASE LOCAL PARA TESTE

01) CONFIGURAR O SIGAMAT.EMP COM 2 FILIAIS

02) LIMPAR OS “.DBF” e os “.CDX”, DEIXAR SER RECRIADO COM O SYSTEMLOAD

03) COPIAR OS SXs DA ORIGEM, OS ARQUIVOS em “.DBF” e “.CDX” C/ A FAMÍLIA '010':

01.SIX 02.SX1 03.SX2 04.SX3 05.SX6 06.SX7  07.SXA 08.SXB 09.SXD 10.SXG

04) RENOMEAR DE '010' PARA '990' E COLAR NA SYSTEM
01.SIX 02.SX1 03.SX2 04.SX3 05.SX6 06.SX7  07.SXA 08.SXB 09.SXD 10.SXG

05) LIMPAR OS CDX DAS TABELAS
01.SIX 02.SX1 03.SX2 04.SX3 05.SX6 06.SX7  07.SXA 08.SXB 09.SXD 10.SXG

06) VIA APSDU VERIFICAR SE O X2_ARQUIVO ESTA IGUAL AO PREFIXO + '010'

07) VIA APSDU NO SX3, FILTRAR COM CONTEM A EXPRESSÃO '_FILIAL' E EXECUTAR O REPLACE NO CAMPO TAMANHO DE 6 PARA 2.

08) RODAR O SCRIPT PARA REALIZAR O DE PARA DE 010101 P/ 01 E 010102 P/02

09) EXCLUIR MANUALMENTE AS TABELAS COM PREFIXO '990'  ***Verificar possibilidade de criar script.

10) NO BANCO ALTERAR O TAMANHO DO CAMPO P/ 2 EM CADA TABELA NO MODO DESIGN, JÁ QUE POR SCRIPT OCORRE BLOQUEIO.


11) NA TABELA SXG, NO CÓDIGO 33, ALTERAR O TAMANHO (XG_SIZE DE 6 PARA 2), POIS SE REFERE AO GRUPO DE CAMPOS PARA A FILIAL.

12) PARAR O TOP(DBACCESS) E O MASTER, SUBIR NOVAMENTE OS SERVIÇOS, LOGAR NAS ROTINAS E VERIFICAR.

13) APÓS OS ACERTOS CASO DESEJE ATUALIZAR ALGUMA TABELA, FAÇO ISSO VIA APSDU, POIS DEVIDO O GRANDE TRABALHO DE CONVERSÃO DE DADOS É INVIÁVEL RESTAURAR O BANCO DE DADOS NOVAMENTE, ITEM QUE FOI REALIZADO NA ETAPA 02.

Observação:
Acredito que esse tópico seja importante para aqueles que desejam simular alguns processos em base local totalmente apartada do servidor de produção.

segunda-feira, 18 de julho de 2016

atalhos hotkey tds totvs

Abaixo a relação de alguns hotkeys para o TDS da TOTVS:

01. Acionar F5 para executar um passo (linha a linha). 


02. Acionar F7 a execução prosseguirá, parando somente quando sair do método ou função. 

03. Acionar F8 (continuar execução), o processamento irá ser executado até o próximo ponto de parada.

04. Acionar Ctrl+F9 para compilar.

05. Com o editor ativo (a aba fica destacada), acionar Ctrl+F10 e ative a numeração de linhas.

CTRL+H Localizar vários locais
CTRL+F Localizar / substituir
CTRL+K Localizar proximo resultado abaixo
CTRL+SHIFT+K Localizar proximo resultado acima
F11 Depurar
F5 Percorre linha
F6 Pula linha
F8 Avança DEBUG
CTRL+F8 Trocar perspectiva
CTRL+F7 Mudar visualização
CTRL+F6 Navegar entre os fontes abertos
CTRL+M Maximiza / miniminiza fonte
CTRL+N Novo (wizard)
CTRL+L Ir para linha
CTRL+D Deleta toda linha
CTRL+ALT+DOWN Duplica linha para baixo
CTRL+ALT+UP Duplica linha para cima
CTRL+SHIFT+L Apresenta lista de atalhos
ALT+UP Move linha para cima
ALT+DOWN Move linha para baixo
CTRL+SHIFT+I Indenta o fonte
CTRL+F9 Compilar
CTRL+ESPAÇO Abre janela de autocompletar
CTRL+SHIFT+X Deixa o texto selecionado em maiusculo
CTRL+SHIFT+Y Deixa o texto selecionado em minúsculo
CTRL+ / Comenta / descomenta a linha
ALT + / Completa a palavra sem mostrar a janela
CTRL+SHIF+ / Comenta / descomenta o bloco selecionado
ALT+ENTER Propriedades do fonte


A lista pode ser obtida através de CTRL + SHIFT + L e configurado se digitar o comando 2 vezes.

Abaixo FAQ importantes:

01."Como evitar a chamada de fontes que não possuo ou não tenho acesso durante o Debug?" 

window\preference\configurações do servidor\ marcar a opção: 
ignorar arquivos não encontrados no debug.

Com esta opção habilitada você não terá problemas com a chamada de funções, métodos e classes que estejam em fontes aos quais vocês não possui e/ou não tem acesso. 

02."O debug não pinta as linhas, mas é mostrado na pilha de execução, o que fazer?" 
window\preference\developer studio editor\ marcar a opção: desativar a construção imediata de OutLine, no campo texto abaixo, preencher com o número 10, aplicar e clicar em OK.

03."A perspectiva atual, TOTVS Developer, não é a mais indicada para depuração. Por isso, você será convidado a trocá-la para a perspectiva TOTVS Debuger" 

04. Diversas visões de apoio ao depurador. Caso a visão não esteja visível, acione menu "Windows | Show View | Others..." e localize a visão desejada.