Páginas filhas
  • GETSXENUM()

Sintaxe


GETSXENUM( <alias>, <campo>, <aliasSXE>, <ordem> )


Propósito


Obter o próximo número disponível para o alias especificado no parâmetro.


Argumentos


<alias>


(OBRIGATÓRIO) Alias da tabela para a qual será obtido o próximo número disponível e para o qual será efetuado o controle da numeração sequencial


<campo>


(OBRIGATÓRIO) Nome do campo para o qual será obtido o próximo número disponível e para o qual será implementado o controle da numeração. 


<aliasSXE >


(OPCIONAL) É utilizado quando o nome do alias nos arquivos de controle de numeração não é o nome convencional do alias para o Protheus.


<ordem >


(OPCIONAL) Número do índice que será utilizado para verificar qual o próximo número disponível. Quando não informado a primeira ordem é assumida, o que pode causar erro, caso o campo informado no segundo parametro não faça parte da chave de indice como primeiro campo após o campo filial do sistema.


Utilização


A numeração é obtida por meio dos arquivos de sistema SXE/SXF ou pelo servidor de numeração, caso esta configuração esteja habilitada no Protheus.


Importante!

Não é recomendado utilizar essa função diretamente no inicializador padrão dos campos, pois isso pode resultar na obtenção de numeração em momentos indesejados, como fora do contexto de inclusão de um registro.

Ao utilizar essa função, garanta que ela esteja protegida com as validações necessárias para que sua execução ocorra apenas nos contextos desejados. Se necessário, crie uma função que realize essas validações conforme sua necessidade, condicionando a execução da função de acordo com essas regras.



  • Sem rótulos

1 comentário

  1. Exemplo com <aliasSXE> incomum:
    Entre no controle de numeração via menu do configurador apcfg110 ou via fórmula apcfg110(). Localize o E1_IDCNAB01 (IDCNAB para a empresa 01) com sua próxima numeração.

    A forma de se obter o próximo número neste cenário é:
    GetSxeNum("SE1","E1_IDCNAB","E1_IDCNAB"+cEmpAnt)

    Exemplo GetSxNum
    cIDCNAB := GetSxeNum("SE1","E1_IDCNAB","E1_IDCNAB" + cEmpAnt)
     
    // É feito um tratamento bruto de erro. Caso não dê certo, é feito um rollback da numeração
    if reclock('SE1',.T.)
    	// Utilize o cIDCNAB neste bloco na gravação de campo(s).
    	ConfirmSx8()
    	msunlock('SE1')
    else
    	RollbackSx8()
    endif

     

    Links relacionados: CONFIRMSXE()ROLLBACKSXE()