Escolar Documentos
Profissional Documentos
Cultura Documentos
MIT072 Conversao P11
MIT072 Conversao P11
2) 3)
c.
MIT072_Conversao_P11.doc
Obs.: Ser necessrio volt-los ao arquivo de ndice ao final da converso, atentando-se a seqncia informada pelo sistema. Isso quer dizer que tambm ser necessrio corrigir esse ndice e seqncia nos rdmakes (fontes customizados) que utilizem os mesmos, e que indicam o nmero do ndice ao invs do nickname do ndice.
5)
Apagar todos os arquivos de ndices das pastas do Protheus_Data. a. Faa uma busca pela extenso. Entendem-se os arquivos de ndices: *.CDX ou *.IDX. b. Em casos de base CTREE, so criadas pastas com o nome e extenso .idx, exemplo: sc62990a.idx. Pode apag-las. c. Apagar o contedo das pastas ctreeint. Normalmente so 2 pastas, sendo uma no Protheus_Data e a outra na System. d. Apagar o ndice do ARQUIVO DE EMPRESAS (arquivo SIGAMAT.IND). Apagar os arquivos de LOG e TEMPORRIOS a. Faa uma busca pela extenso *.LOG e *.TMP Na pasta SYSTEMLOAD, exclua os arquivos *.DBF e *.IDX. Apagar os arquivos da pasta temporria do Windows (Windows > Executar > %TEMP%). Se no apagar ir influenciar nos arquivos temporrios do Protheus, e pode ocasionar erros.
6)
7) 8)
Dica para agilizar a converso: Muitos clientes utilizam a empresa 99 para testes, e em muitos casos nem mais utilizada. A sugesto excluir os arquivos DBF ou DTC dessa empresa, e apagar a empresa do Cadastro de Empresas (abra o arquivo SIGAMAT.EMP via MPSDU, e apague a mesma).
Incio do Protheus 11 9) Instalar e subir os servios do Protheus 11. Atualizar com todos os pacotes mais recentes possvel. a. RPO - Categoria: Repositrio de Objetos b. c. d. e. f. BUILD - Categoria: Binrio TOTVSTec UPDATE - Categoria: Update de Programas PATCH/LIB DE PROGRAMAS - Categoria: Path de Programas HELP - Categoria: Help de Campo/Pergunta MENUS - Categoria: Menu de mdulo. Contempla os arquivos XNU. Esses arquivos devero substituir os da pasta SYSTEM, porm, fazer um backup antes para, aps a converso, poder comparar e incluir os menus customizados. BRA.ZIP - Categoria: Dicionrio de dados. Esse arquivo contm o arquivo SXBRA.TXT, que o dicionrio de dados padro do Protheus Descompactar o contedo da pasta ACE_8.00 na pasta bin\appserver\. Ateno: somente essa pasta! Certifique-se que o servidor tenha espao em disco o suficiente para a converso. Recomenda-se, no mnimo, um espao 3 vezes superior ao da base atual (soma da pasta SYSTEM e a base de dados). Isso se faz necessrio pois o Protheus cria arquivos temporrios no momento da converso.
g.
h. i.
MIT072_Conversao_P11.doc
Pgina 2 de 19
Observar nessa pasta e, caso demore a criar os arquivos ou mesmo o tamanho desses arquivos no tiverem sendo alterado (para maior), quer dizer que o arquivo TXT est corrompido, e a converso simplesmente est parada. Sendo assim, encerrar o processo reiniciando o Server. Dica: Em casos dos clientes que utilizam apenas o ambiente em linguagem PORTUGUES, dos arquivos de HELP de Campo/Pergunta, deixe apenas o arquivo HLPPOR.TXT. Dessa forma a converso ser mais rpida, pois no ir atualizar os arquivos de help de campo espanhol e ingls. 11) Caso tenha um TOP Connect mais atualizado, tambm baixar, instalar e configurar. O mesmo dever apontar para o banco de dados a ser convertido. No caso do Protheus 11, dever ser utilizado o ByYou DBAccess. Se no utilizar um DBAccess atualizado, ter srios problemas. Se quiser utilizar 2 TOPs, pode-se configur-los para compartilhar as licenas, colocando essas configuraes nos INIs dos Servers dos TOPs: [General] Licenselimit=nnn Onde nnn o limite de licenas que vai consumir do License Server. 12) No arquivo appserver.ini do Protheus 11, criar um ambiente que aponte para o ambiente a ser convertido. Exemplo:
[TOTVS_10_PARA_11] SourcePath = RootPath = StartPath = x2_path = RpoDb = RpoLanguage = RpoVersion = LocalFiles = Localdbextension = PictFormat = DateFormat = TopDataBase = TopServer = LOCALHOST TopALIAS = RegionalLanguage = Helpserver = C:\TOTVS 11\Microsiga\Protheus\APO ;tem que ser o APO da verso 11 C:\Protheus_Data ;apontar para o ambiente OFICIAL a ser convertido \system\ SQL Portuguese 110 ads .dbf DEFAULT DEFAULT MSSQL7 TOTVS_10_11 ;nome do ALIAS criado no TOP ambiente OFICIAL BRA localhost:8687
Obs. extremamente importante: No utilize esses espaos e ; em servidores com S.O. Linux. 13) Arquivo de Senhas. Na converso de testes apresentaram erros no arquivo de senhas. A soluo simples: a. Apagar o arquivo sigapss.spf da pasta SYSTEM b. Apagar os arquivos da pasta profile do Protheus_Data Dessa forma, a senha do Administrador a ser utilizada ser em branco. Aps a converso, abrir o SIGACFG Configurador, cadastrar a POLTICA, no menu Senhas, e aps cadastrado, sair do CFG, ir na pasta de backup, copiar o arquivo SIGAPSS.SFP e a pasta profile inteira, e substituir na base convertida.
MIT072_Conversao_P11.doc Pgina 3 de 19
Utilizando o arquivo de senha padro (sem apagar o sigapss.spf), ao digitar a senha, deu erro:
Porm, tentando novamente, digitei a senha, e passou. 16) Selecione de qual verso ser originada a converso.
MIT072_Conversao_P11.doc
Pgina 4 de 19
Obs.: No foram feitos teste com a verso 8 nem com a 7, ento, no se sabe os riscos que implicariam. Vale lembrar que da verso 7 ou 8 para a 10, existem detalhes especficos a serem analisados, tais como alterao no fontes customizados (tamanho do ValidPerg de 6 para 10, e a troca da varivel cUsuario para cUserName). Obs. Importante: Aps selecionar o tipo de converso e clicar o OK, criado o arquivo mpupd.tsk na pasta Appserver do Protheus 11. Esse arquivo grava os passos da converso, e se, for necessrio re-iniciar a converso, o Protheus utiliza esse arquivo para dar continuidade. O mesmo s poder ser apagado se a converso for iniciada do ZERO. Se a tela para seleo de qual verso ser originada a converso no aparecer, porque existe esse arquivo na pasta APPSERVER. 17) Configurao de execuo do Update: Normalmente so marcadas as opes conforme imagem abaixo.
MIT072_Conversao_P11.doc
Pgina 5 de 19
Emitir o relatrio para analisar os erros. Finalizar a converso. Obs.: segue abaixo relao dos erros que foram apresentados na converso da base de testes (sem customizaes):
O O O O O O O O O O O O O O gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho gatilho AK2_CC sequencia 001 esta duplicado AK2_CC sequencia 001 esta duplicado AK2_CC sequencia 001 esta duplicado AK2_CLVLR sequencia 001 esta duplicado AK2_CLVLR sequencia 001 esta duplicado AK2_CLVLR sequencia 001 esta duplicado AK2_CO sequencia 001 esta duplicado AK2_CO sequencia 001 esta duplicado AK2_CO sequencia 001 esta duplicado AK2_ITCTB sequencia 001 esta duplicado AK2_ITCTB sequencia 001 esta duplicado AK2_ITCTB sequencia 001 esta duplicado QAA_RECUR sequencia 001 esta duplicado QAA_RECUR sequencia 001 esta duplicado
MIT072_Conversao_P11.doc
Pgina 6 de 19
Como resolver: abrir o MPSDU (se j iniciou a converso, abra pelo Protheus 11 mesmo. Ver um pequeno detalhe em Observaes finais). a. Em casos de GATILHOS com seqncia duplicada, abrir a tabela SX7EE0.ext, filtrar pelo gatilho mencionado, e apagar os que estiverem duplicados. Em casos de INDICES duplicados, abrir a tabela SIXEE0.ext, filtrar pelo ndice mencionado, e apagar os que estiverem duplicados. Quando o erro referencia a tabela SXG, significa que o campo est em desacordo com a tabela de GRUPO DE CAMPOS (SXG). Exemplo: O do tamanho no SX3 campo EK_NUMOPER dIferente do SXG Nesse caso, abrir a tabela SX3 (em casos de Campos de tabelas) ou SX1 (em casos de campos de Perguntas), filtrar o campo mencionado, e na coluna X3_GRPSXG ou X1_GRPSXG, apagar o contedo desse campo, para que o mesmo no faa mais parte desse grupo de campos. Obviamente, dever voltar essa informao aps a converso, e analisar os detalhes, ou melhor, fazer essa anlise antes da converso. Obs.: EE = Empresa | ext = DBF ou DTC Obs. 2: os erros de portugus so do prprio sistema. d. Quando o erro referente a chave duplicada na tabela, quer dizer que o CHECKDUPL no foi executado. Para resolver isso, dever saber qual o X2_UNICO da tabela, e, via banco, fazer um select nessa tabela e ver qual o registro que est duplicado. No exemplo desse log (em destaque vermelho), foi simples resolver: abri a tabela pelo MPSDU, e apaguei os dados da mesma, pois se tratava de uma tabela sem uso.
b. c.
Obs.: Ao sair da tela que apresenta os erros de converso, apresentou o seguinte error.log (no caso de no ter apagado o arquivo sigapss.spf):
MIT072_Conversao_P11.doc
Pgina 7 de 19
21) Iniciado novamente a converso, sem apagar o arquivo MPUPD.TSK. Conforme mencionado anteriormente, como se manteve o arquivo MPUPD.TSK, no ser apresentado a tela de seleo da origem da converso, conforme item 15 desse boletim. Se for apresentada uma tela mencionando que houve erros na converso, seguir os procedimentos mencionados na mesma, e continuar a converso. Essa mensagem normalmente s apresentada em casos de erros crticos, tais com exemplo, ndices duplicados.
MIT072_Conversao_P11.doc
Pgina 8 de 19
Depois da converso... 22) Acessar o SIGACFG para que o sistema recrie as estruturas dos ndices. Acessar todas as empresas. Se no fizer isso poder dar erro ao tentar acessar algum cadastro do sistema (Erro de tabela exclusiva). 23) Arquivo de ndices: conforme item 3 desse documento. Abrir via MPSDU o novo SIX, e tambm o arquivo do backup. Filtrar os ndices e analisar quais alteraes o compatibilizador fez e quais alteraes voc dever fazer no arquivo de backup. Exemplo prtico. (Esse ndice s um exemplo. O mesmo no sofreu tal alterao). Antes da converso:
Conforme orientao no item 3, o ndice 6 seria copiado para uma tabela de backup e excludo dessa tabela principal. Aps converso:
MIT072_Conversao_P11.doc
Pgina 9 de 19
Aps analisar todos os ndices, poder ento dar um append na SIX principal, com os arquivos contidos no backup. Sugiro antes do append fazer um backup da SIX principal. 24) Revise os ndices dos fontes customizados, conforme as alteraes executadas no passo 22. 25) Para atender ao novo conceito de empresas, filiais e unidades de negcio, foram inclusos 2 novos campos no arquivo SX2.
Porm, observe que se trata de campos OBRIGATRIOS. Se for necessrio dar manuteno em alguma tabela, ao tentar confirmar a alterao, dever informar esses novos campos. Para que isso no ocorra, execute o MPSDU, abra o arquivo SX2, e execute um replace nos campos X2_MODOUN e X2_MODOEMP com o mesmo contedo do campo X2_MODO.
MIT072_Conversao_P11.doc
Pgina 10 de 19
Porm, quando se for criar uma nova empresa no Configurador, dever seguir os novos padres e exigncias. Exemplo: ao se criar um novo Grupo de Empresas, e definir o tamanho 6 e seu respectivo leiaute, o campos _FILIAL automaticamente sero criados com o tamanho 6. Veja o exemplo:
26) Executar os passos de criar a poltica de senhas conforme passo 12. Copiar do backup do Protheus_Data o arquivo SIGAPSS.SPF e a pasta profile, e substituir o da pasta convertida. 27) Substituir os arquivos de menu da pasta system (*.XNU) pelos baixados do portal. Antes, fazer um backup para, aps a substituio, analisar as customizaes e particularidades. 28) Folha de Pagamento Quando h uma converso, necessrio apagar o roteiro e fazer com que o sistema recrie o padro. Para isso: a. No MPSDU, abra a tabela SRM, copie para um backup as linhas que no so do sistema. Para diferenciar uma linha customizada de uma linha padro do sistema, poder filtrar, utilizando a expresso, da seguinte forma: SUBSTR(RM_SEQ,5,1) <> "0" Obviamente dever ser analisado com mais cautela, pois pode haver alteraes em linhas que terminem com 0. H casos onde os analistas colocam * no campo RM_DESCRIC. b. c. Aps feito o backup, deletar os registros. Entrar no SIGAMDI, e acessar o mdulo GESTO DE PESSSOAL > ATUALIZAES > DEFINIES CALCULO > ROTEIROS CLCULO. Com esse procedimento o sistema ir recriar os valores da tabela SRM, porm, no seu padro.
Pgina 11 de 19
MIT072_Conversao_P11.doc
e.
29) Verificar os fontes customizados Pra quem utiliza alguns pontos de entrada que incluem novos botes em rotinas, tal como exemplo, GPE11ROT, relacionada a rotina GESTAO FUNCIONARIO, dever ficar atento ao seguinte: No Protheus 10, funcionava normalmente a rotina da seguinte forma:
User Function GPE11ROT() Local aArea := GetArea() Local aRotinas := {} aFolProc :={{ "Lanam. p/ Verba" , "GPEA100()" { "CNAB (BB)" , "GPEM410()" { "SISPAG (ITAU)" , "GPEM450()" , 0 , 6 { "Import. Lanc. Mens." , "GPEA210()" aAdd( aRotinas, { "Oi*" , "u_oi()" , 6 , aAdd( aRotinas, { "Processos Folha*" , aFolProc , 6 , RestArea( aArea ) Return( aRotinas )
6 },; 6 },; 6 }} } ) } )
Porm, se deixar dessa forma, e compilar o projeto, ser exibido erro no momento de entrar na rotina no Protheus 11. Para corrigir isso, dever fazer a seguinte alterao (na linha em destaque azul):
aAdd( aRotinas, { "Oi*" aAdd( aRotinas, { "Processos Folha*" , "u_oi()" , aFolProc , 0 , 6 , , .F. } ) , 0 , 6 , , .F. } )
Analise as demais rotinas para saber se esto dessa forma. Para efeito de testes, essa alterao tambm foi feita no Protheus 10, e compilada, e a rotina funcionou normalmente. Orientaes conforme o chamado SCUMUO. 30) Compilar o projeto com as customizaes do cliente. 31) Aplicao de UPDATES. (Rev. 005) A execuo da virada de verso no garante a aplicao dos updates modulares, como, por exemplo, UPDSIGAFIS, UPDCOM, UPDEST, sendo esses 2 ltimos exemplos com controles seqenciais (UPDCOM01, UPDCOM03, etc), conforme resposta do chamado SDSFKX. sugerida ento a execuo de todos os updates para que a base fique completamente atualizada. Como no h como sabermos se tal update j foi executado (exceto as do RH, onde possui a rotina RHUPDMOD), mesmo que antes da converso, teramos ento que executar TODOS os updates ou, no mnimo, os mdulos que o cliente mais utiliza. Para que possa haver esse controle, foi desenvolvida uma rotina especfica que gera alguns arquivos de LOG, e quando for executado os updates, essa rotina verifica se o mesmo j foi executado ou no. Os detalhes da rotina esto no anexo 3. 32) Acessar o SIGAMDI ou ADV, e fazer todos os testes possveis.
MIT072_Conversao_P11.doc
Pgina 12 de 19
Isso acontece pois o tema est configurado para CLASSIC. Para voltar ao padro, abra o SIGACFG e no menu Miscelanea, Configurao de Tema, mude para STANDARD e confirme. Abra novamente o MPSDU.
Dica: No Protheus 11, quando se digita o usurio ou a senha errado, o mesmo fechado por completo aps o OK. Anteriormente, a tela de login se mantinha. J existe um chamado com FNC em aberto - SDEVH3.
MIT072_Conversao_P11.doc
Pgina 13 de 19
Para resolver isso, poder ser feito de 3 formas: i) ii) Utilizar a rotina do Anexo 2. Abra a tabela via MPSDU, copie os dados para uma tabela de backup, droppe, recrie (entrando no sistema), e append. Verifique no banco que os campos ficaram com o mesmo collation da Database. Caso isso no funcione, faa o passo ii.
iii) Abra o SQL. Localize a tabela citada no error.log. Clique com o boto direito e escolha a opo Design:
Em cada campo (isso mesmo, em cada campo) na opo Table Designer, troque o collation para <database default>:
MIT072_Conversao_P11.doc
Pgina 14 de 19
Elaborao: Colaborao:
Fabricio Amaro Unidade TOTVS OP Bauru fabricioamaro@totvs.com.br Gustavo Canela Unidade TOTVS OP Bauru gscanela@totvs.com.br Modo de Compartilhamento das tabelas Victor Nigro Unidade TOTVS OP Bauru jose.vasques@totvs.com.br Copiar via linha de comando direto do Linux Daniel Peixoto da Silva Unidade TOTVS OP S. J. Rio Preto dsilva@totvs.com.br Collation diferentes Marco Smanioto Unidade TOTVS OP Bauru marcosmanioto@totvs.com.br Rotina de ajuste das tabelas
MIT072_Conversao_P11.doc
Pgina 15 de 19
3. 4. 5. 6.
[Base710] SourcePath=c:\Protheus8\apo RootPath=c:\ap7 StartPath=\sigaadv\ RpoDb=Top RpoLanguage=portuguese RpoVersion=811 LocalFiles=ads localdbextenGsion=.dbf PictFormat=DEFAULT DateFormat=DEFAULT TopDataBase=MSSQL TopServer=Saturno TopALIAS=dbDatabase helpserver=192.168.1.1 Obs: Pode-se sim criar uma pasta na verso 7.10 chamada System e copiar os dados da pasta \SIGAADV\ para ela.. porem para fazer isso ser necessrio entrar nos arquivos SX2 de cada empresa e mudar o path de SIGAADV para SYSTEM, e fazer a mesma coisa com o arquivo de parmetros, alem de deixar o StartPath=\SYSTEM\ Porem, prefiro fazer a converso usando a pasta original sem realizar esta substituio, deixando para realiza-la aps a converso para a verso 8.11. 7. 8. 9. 10. 11. 12. 13. 14. 15. Copiar para a pasta da verso 7.10 a pasta \systemload\ da verso 8.11 (essa pasta contem o arquivo SXSBRA.TXT que o dicionrio de dados que ser utilizado para descompactar as tabelas na pasta \sigaadv\ da verso 7.10. Remover do arquivo de ndices, todos os ndices criados pelo usurio, e copia-los num arquivo a parte, pois ser necessrio volta-los ao arquivo de ndice ao final da converso, atentando-se a seqncia informada pelo sistema.. isso quer dizer que tambm ser necessrio corrigir esse ndice e seqncia nos rdmakes que utilizam ndices criados pelo usurio e que indicam o numero do indice ao invs do nick do ndice. Seguidos estes passos, entre na verso 8.11, digite no programa inicial: mp710to811 e no ambiente o ambiente que foi criado acima (apontando para a base da verso 710). O sistema vai informar que esta verso atualizada permite atualiza o protheus 7.10 para a verso 8.11 R2 (Segundo release) ou ento de uma verso 8.11 para o 8.11 R2, escolha apenas primeira opo. em seguida a tela que segue solicita a criao de sindex exclusivo, selecione esta opo. A prxima tela informa quais empresas passaro pelo processo de converso, verifique se constam todas as empresas. (apenas a empresa matriz aparece, as filiais apesar de no aparecerem sero convertidas tambm pois pertencem a mesma famlia de arquivos.) Escolha ento na prxima tela as opes de converso, ou seja, marque Warning Error, Remover arquivos de backup aps atualizao,substituir arquivo de log existente e Corrigir erros automaticamente. (no selecione permitir interromper processo de converso, pois esta opo faz com que cada um dos passos da converso solicite interao do usurio para passar para o prximo passo.) Pronto, deixe a converso seguir sozinha. Aps a converso: Volte os ndices criados pelo usurio Copie o contedo da pasta \sigaadv\ da verso 7.10 para a pasta \system\ da verso 8.11. Copie o contedo da pasta \profile\ da verso 7.10 para a pasta \profile\ da verso 8.11. Verifique o path do arquivo sx2 se estah correto e apontando para a pasta \SYSTEM\ ao invs de \SIGAADV\ (o mesmo vale para o aquivo de parmetros) Copie o contedo da pasta \RDMAKE\ da verso 710 para a pasta \my projects\ da verso 8.11 e revise os rdmakes que utilizam esses ndices. Abrir os Menus do systemload da internet na pasta /SYSTEM/ Apagar o roteiro da folha (SRM010) Entrar no cadastro de roteiro para ele criar o padro Voltar o roteiro dos usurios e corrigir a seqncia baseada na seqncia da versao anterior
Possveis erros: 1) Arquivos da contabilidade so diferentes dos informados em seus dicionrios. R: Verifique se o arquivo de grupos contbeis contem o tamanha correto dos arquivos, esse arquivo contem o tamanho mnimo e o tamanho maximo destes arquivos, se necessrio corrija o tamanho do campo de cdigo contbil no sx3, mate a tabela e a appende. 2) Arquivos insistem em derrubar a converso, dando erros inesperados. (Comum para tabelas SQ da qualidade.) R: Renomeie este arquivo e reinicie a converso, e aps a converso, appende este arquivo apagado com o contedo do renomeado, ou copie a tabela pra outra e drope para depois appenda-la a partir desta copia. 3) Sistema trava durante a converso de arquivos muito extensos. R: Derrube a conexo e inicie novamente a converso. Pode haver perda de sincronismo entre server e remote, mas no apague os .log, nem os .tsk, apenas os .cdx devem ser apagados. 4) Algum erro que precise comear tudo novamente. R: Apague os arquivos com extenso .tsk (arquivo de lista de tarefas da converso, que serve para saber quais os passos que foram feitos pelo sistema durante a converso). Obs: Eis a a necessidade da copia antes da converso.. tanto da pasta AP7 quanto do banco, pois se precisar comear tudo novamente prefervel voltar o backup do que uma converso j iniciada. 5) Erro em append por conta de ndices. R: Verifique os ndices criados, podem ter sido duplicados acidentalmente, ou ento no constam do arquivo de ndices. 6) sistema no entra mais por causa de senha errada, mesmo informando a senha do administrador. (erro corrigido na verso 8.11.009) R: comece apagando o arquivo de extenso .spf pois este arquivo pode ter sido corrompido durante a converso. Se ainda assim der errado, apague a pasta \PROFILE\ pois as configuraes de usurios podem estar erradas.( claro que precisa de uma copia desta pasta a parte.) Obs: para a converso de menus de usurios o sistema deixa a desejar na converso do caminho destes menus, ou seja, nas configuraes de usurios os menus de usurios continuaro apontando para a pasta \sigaadv\ ao invs da nova pasta \system\ criada na verso 8.11.. .para isso existem duas opes: Criar uma pasta \sigaadv\ na verso 8.11 que contenha somente os menus de usurios, ou ento entrar via configurador no arquivo de usurios, e mudar um a um os caminhos de cada um dos menus.
MIT072_Conversao_P11.doc
Pgina 16 de 19
Atualizao da Base de Dados. OBS.: Para bases TopConnect/DBAccess necessrio executar a rotina CheckDupl. Para maiores detalhes, entre em contato com o Suporte Help Desk e pea orientaes para a execuo da mesma. 1. Execute o SmartClient 2. No campo Programa Inicial digite: MP710TO101 Att, Daniel.
MIT072_Conversao_P11.doc
Pgina 17 de 19
Private cPerg := "XAJTAB1" Private cCadastro := OemToAnsi( "* Ajusta Tabelas do Banco" ) ValidPerg() //Apresenta os parametros logo na entrada da rotina Pergunte(cPerg,.t.) AADD(aSays,OemToAnsi( " Este programa ira ajustar as tabelas do sistema, fazendo um backup," ) ) AADD(aSays,OemToAnsi( " apagando, recriando e recuperando os dados." ) ) AADD(aSays,OemToAnsi( " Obs.: Executar em modo exclusivo!" ) ) AADD(aButtons, { 5,.T.,{|| Pergunte(cPerg,.T. ) } } ) AADD(aButtons, { 1,.T.,{|o| yAjTab() }} ) AADD(aButtons, { 2,.T.,{|o| FechaBatch() }} ) //FechaBatch padro para fechar a tela FormBatch( cCadastro, aSays, aButtons ) Return //ROTINA QUE FAZ BACKUP, APAGA, RECRIA E RESTAURA OS ARQUIVOS USER FUNCTION AJUSTABANCO(cTabela) //POR GARANTIA, APAGA A TABELA //FABRICIO - MELHOR NO APAGAR A TABELA PARA NO TER PROBLEMAS //EM ALGUNS CASOS PODE DAR ERRO DE INSERT APOS RECRIAR A TABELA ORIGINAL E TENTAR COPIAR DA TABELA DO BACKUP (ACOMPANHAR PELO TOPCONNECT) //TcDelFile(RetSqlName(cTabela)+"_"+cExt) cExt := ALLTRIM(MV_PAR03) cCampos := "" //PRIMEIRO APAGA OS REGISTROS DELETADOS cQuery := " DELETE FROM "+RetSqlName(cTabela)+" WHERE D_E_L_E_T_ = '*' " TCSQLEXEC(cQuery) //ANALISA QUAIS OS CAMPOS DA TABELA dbSelectArea("SX3") dbSetOrder(1) dbGoTop() While !SX3->(Eof()) If SX3->X3_ARQUIVO == cTabela .AND. SX3->X3_CONTEXT <> "V" cCampos += SX3->X3_CAMPO + "," EndIf DbSelectArea("SX3") dbSkip() EndDo cCampos += " R_E_C_N_O_ " //SELECIONA OS REGISTROS PARA BACKUP cQuery := " SELECT * INTO "+RetSqlName(cTabela)+"_"+cExt+" FROM " + RetSqlName(cTabela) TCSQLEXEC(cQuery) //APAGA A TABELA OFICIAL TCDelFile(RetSqlName(cTabela)) //RECRIA A TABELA ORIGINAL COM BASE NO SX3 DA EMPRESA POSICIONADA DbSelectArea(cTabela) dbSetOrder(1) //RECUPERA OS DADOS DA TABELA DE BACKUP cQuery := "INSERT INTO " + RetSqlName(cTabela) + " (" + cCampos + ") SELECT "+ cCampos +" FROM "+RetSqlName(cTabela)+"_"+cExt+" " TCSQLEXEC(cQuery) //APAGA A TABELA DE BACKUP //TcDelFile(RetSqlName(cTabela)+"_"+cExt) Return Static Function yAjTab() If MsgBox("Ser iniciado agora o processo de ajustes das tabelas do banco. Deseja continuar?","Continua?","YESNO") Processa({|| zAjTab() },"Processando...") EndIf FechaBatch() Return Static Function zAjTab() cAlias := "SX2" DbSelectArea(cAlias) dbSetOrder(1) dbGoTop() ProcRegua(RecCount()) // Numero de registros a processar While !SX2->(Eof()) If SX2->X2_CHAVE >= MV_PAR01 .AND. SX2->X2_CHAVE <= MV_PAR02 IncProc("Tabela :" + SX2->X2_CHAVE + " - " + SX2->X2_NOME) U_AJUSTABANCO(SX2->X2_CHAVE) EndIf DbSelectArea(cAlias) dbSkip() EndDo MsgBox("Tabelas ajustadas com sucesso!","Ok","INFO") Return Static Function ValidPerg() _sAlias:= Alias() aRegs:= {} dbSelectArea("SX1") dbSetOrder(1) cPerg:= PADR(cPerg,10) // Grupo/Ordem/Pergunta/Perg.Esp/Perg.Ingl/Variavel/Tipo/Tam/Dec/Presel/GSC/Valid/Var01/Def01/Cnt01/Var02/Def02/Cnt02/Var03/Def03/Cnt03/Var04/Def04/Cnt04/Var05/Def05/Cnt05 aAdd(aRegs,{cPerg,"01","Tabela De ?","","","mv_ch1","C",03,00,00,"G","","mv_par01","","","","","","","","","","","","","","","","","","","","","","","","","HSPSX2","","","",""}) aAdd(aRegs,{cPerg,"02","Tabela Ate ?","","","mv_ch2","C",03,00,00,"G","","mv_par02","","","","","","","","","","","","","","","","","","","","","","","","","HSPSX2","","","",""}) aAdd(aRegs,{cPerg,"03","Extenso Tabelas Bkp","","","mv_ch3","C",03,00,00,"G","","mv_par03","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""}) For i:=1 to Len(aRegs) If !dbSeek(cPerg+aRegs[i,2]) RecLock("SX1",.T.) For j:=1 to FCount() If j <= Len(aRegs[i]) FieldPut(j,aRegs[i,j]) Endif Next MsUnlock() Endif Next dbSelectArea(_sAlias) Return
MIT072_Conversao_P11.doc
Pgina 18 de 19
/* FABRICIO AMARO - 06/06/2011 ROTINA PARA REGISTRAR A APLICAO DOS UPDATES RESUMO: PARA CADA UPDATE O SISTEMA IR GRAVAR UM ARQUIVO COM O MESMO NOME DO UPDATE MAIS (+) A DATA DO FONTE DESSE UPDATE SE NA PROXIMA APLICACAO O SISTEMA VERIFICAR QUE A DATA DIFERENTE, IRA APLICAR NOVAMENTE OBS.: SE CLICADO EM SIM PARA EXECUTAR O UPDATE, E DEPOIS CANCELAR O UPDATE (ROTINA PADRAO) FICAR GRAVADO NESSE LOG QUE ELE J FOI EXECUTADO, PORTANTO, PARA ESSE CASO, IR NA PASTA DO LOG E APAGAR O ARQUIVO PARA QUE ELE POSSA SER EXECUTADO NOVAMENTE. */ User Function MeusUpds() Private oGera2 p11 := .T. cLocUpd UPDATES - SUGESTO: CRIE ESSA PASTA cUpd If p11 cLocSystem cLocSmart cTCP cAmbiente cProgCli SMARTCLIENT.EXE) Else cLocSystem cLocSmart cTCP cAmbiente cProgCli SMARTCLIENT.EXE) EndIf cLog cLog2 nCont1 := "A:\Protheus10\Treinamento\system\" := "A:\Protheus10\bin\smartclient\" := "TCP" := "Treinamento" := "TotvsSmartClient.exe" := "" := "" := 0 //CAMINHO COMPLETO DA PASTA SYSTEM //CAMINHO COMPLETO DA PASTA SMARTCLIENT //COMUNICAO TCP COM O SERVIDOR //AMBIENTE //NOME DO PROGRAMA DO SMARTCLIENT (PROTHEUS10 = TOTVSSMARTCLIENT.EXE | PROTHEUS 11 = := "C:\TOTVS 11\Microsiga\Treinamento\system\" //CAMINHO COMPLETO DA PASTA SYSTEM := "C:\TOTVS 11\Microsiga\Protheus\bin\smartclient\" //CAMINHO COMPLETO DA PASTA SMARTCLIENT := "TCP" //COMUNICAO TCP COM O SERVIDOR := "TOTVS_10_PARA_11" //AMBIENTE := "SmartClient.exe" //NOME DO PROGRAMA DO SMARTCLIENT (PROTHEUS10 = TOTVSSMARTCLIENT.EXE | PROTHEUS 11 = := "UPDS\" := SPACE(15) //PASTA NA SYSTEM QUE FICAR GUARDADO O LOG DOS
//VARIAVEIS ESPECIFICAS PARA A PESQUISA DAS FUNES NO RPO aType := {} aFile := {} aLine := {} aDate := {} aTime := {} //MONTAGEM DA TELA PARA PASSAGEM DOS PARAMETROS @ 200,1 TO 400,400 DIALOG oGera2 TITLE OemToAnsi("Aplicao dos Updates") @ 10,018 Say "INFORME AS INICIAIS DO UPDATE - EXEMPLO: UPDCOM | UPDEST" PIXEL OF oGera2 @ 70,018 MSGET oVar VAR cUpd Picture "@!" SIZE 040,10 PIXEL OF oGera2 @ 80,170 BMPBUTTON TYPE 01 ACTION {Close(oGera2)} Activate Dialog oGera2 Centered cUpd := Alltrim(cUpd) IF Alltrim(cUpd) == "" Alert("No foi informado nenhum UPDATE!") Return EndIf If MsgBox("Ser iniado a execuo dos UPDs. Deseja continuar?","Ateno","YESNO") cNomFunc := "U_"+cUpd+"*" //O * SERVE PRA PESQUISAR O RESTANTE DA STRING
//PESQUISA AS FUNES NO RPO aRet := GetFuncArray(cNomFunc, @aType, @aFile, @aLine, @aDate, @aTime) For nCont := 1 To Len(aRet) //PRIMEIRO VERIFICA SE ESSE ARQUIVO J EXISTE NA PASTA \SYSTEM\UPDS OU NO CAMINHO ESPECIFICADO cArqUpd := aRet[nCont] +"_"+ StrTran(dtoc(aDate[nCont]),"/","_") cArqUpd := cLocSystem + cLocUpd + cArqUpd + ".UPDATE" cTemArq := FOPEN(cArqUpd) //SE O ARQUIVO J EXISTIR If !(cTemArq <= 0) cLog2 += aRet[nCont] +";" Else nCont1++ If MsgBox("Executa "+aRet[nCont]+"?","Ateno","YESNO") //EXECUTA O SMARTCLIENT COM OS PARAMETROS DO UPDATE WinExec(cLocSmart+cPROgCli+" -P="+aRet[nCont]+" -C="+cTCP+" -E="+cAmbiente+" -M") //ARMAZENA O LOG GERAL cLog += aRet[nCont] +";" //CRIA NA PASTA SYSTEM O UPDATE PARA DIZER QUE ELE J FOI EXECUTADO MemoWrite(cArqUpd,cArqUpd) EndIf EndIf Next cArq := cLocSystem + cLocUpd + cUpd + ".TXT" MemoWrite(cArq,cLog) If nCont1 > 0 cMsg := Else cMsg := EndIf MsgBox(cMsg,"Acabou","INFO") "No foi executado nenhum compatibilizador!" "Compatibilizadores executado com sucesso! Foi gravado os LOG's na pasta SYSTEM"
If MsgBox("Deseja executar novamente a rotina MeusUpd's?","Meus Upds","YESNO") U_MEUSUPDS() EndIf EndIf Return
MIT072_Conversao_P11.doc
Pgina 19 de 19