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 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