Boa tarde, Existe alguma função que eu consiga pegar todas as áreas de um ponto de entrada aberta, já que eu não sei que tabelas estão abertas, substituindo assim o getarea() restarea() ?
Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!
Boa tarde, Existe alguma função que eu consiga pegar todas as áreas de um ponto de entrada aberta, já que eu não sei que tabelas estão abertas, substituindo assim o getarea() restarea() ?
Boa noite Tiago, vc tem uma funcao que nao tem entrada no TDN mais fazen uso no algumos exemplos (VFUNB4 Ponto de Entrada para permitir a manipulação / inserção de novos campos na rotina Documento Entrada (MATA103) que é sGetArea() é sRestArea(). O SGetArea vai acumulando (com ajuda manual) no array aArea as áreas informadas e após quandos e chamada a funcao sRestArea() faz um loop restorando as áreas.
Local aArea := {}
aArea := sGetArea(aArea,"SB1")
aArea := sGetArea(aArea,"SB2")
aArea := sGetArea(aArea,"SB5")
If !Empty(Alias())
aArea := sGetArea(aArea,Alias())
EndIf
[trecho do codigo]
sRestArea(aArea)
Espero seja de sua ajuda.
Bom dia Tiago ! Tudo bem ?
Não conheço nenhuma função que faça isso, mas existe uma variável pública chamada cFOpened que pode servir.
Você poderia fazer algo assim para guardar as áreas abertas e depois restaurá-las:
aFOpened := {}
For nI := 1 To Len( cFOpened ) Step 3
aAdd( aFOpened, Substr( cFOpened, nI, 3 ) )
Next nI
Nunca precisei fazer algo assim e não sei se realmente essa variável tem mesmo todas as áreas abertas, mas não custa tentar.
Espero ter ajudado.
Abraços !
Muito obrigado, vou tentar sim o exemplo.
— Tiago Carvalho Campos 13 de Nov de 2020
Tiago, não entendi bem o que você deseja? Você quer saber se uma tabela está aberta em determinado trecho do código o todas as tabelas que encontram-se abertas? O Protheus hoje permite mais de 1000 workareas abertas na mesma thread.
— Daniel Mendes 21 de Nov de 2020