Tiempo aproximado para lectura: 00:01:30 min
Duda
Existe manera de utilizar las claves generadas dentro del Control de Numeración, en fuentes o disparadores, para poder facilitar funciones. En caso de que se pueda, ¿cómo se debería hacer para obtener la información de estas claves?
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Configurador (SIGACFG) - Versión 12
Solución
Sí, es posible. Para obtener el próximo número disponible gestionado por el Control de Numeración para un alias y campo específico, debe utilizar la función GETSXENUM().
Para implementar esta solución correctamente, considere los siguientes puntos:
Sintaxis de la función: La estructura base de la función es la siguiente:
GETSXENUM( <cAlias>, <cCampo>, <cAliasSXE>, <nOrdem>, <cGroup>, <cBranch> )-
Parámetros obligatorios principales:
<cAlias>: Alias de la tabla para la cual se obtendrá el número y se llevará el control secuencial.<cCampo>: Nombre del campo para el cual se implementará la numeración.
-
Ejemplo de aplicación (con manejo de confirmación/reversión): Es ideal manejar la asignación con un control de éxito o error para evitar saltos de numeración injustificados:
Fragmento de código
// Se obtiene el próximo número (ejemplo con Alias SXE no convencional) cIDCNAB := GetSxeNum( "SE1" , "E1_IDCNAB" , "E1_IDCNAB" + cEmpAnt) // Se realiza el bloqueo. Si falla, se aplica rollback if reclock( 'SE1' ,.T.) // Utilice la variable cIDCNAB en este bloque para la grabación del campo ConfirmSx8() msunlock( 'SE1' ) else RollbackSx8() endif Importante (Mejores prácticas): No se recomienda utilizar esta función de manera directa en el inicializador estándar de los campos (dentro del diccionario de datos). Esto puede provocar que la función se dispare y consuma numeración en momentos no deseados (fuera del contexto real de inclusión de un registro). Debe utilizarse dentro de funciones o validaciones que garanticen su ejecución exclusiva en el momento de la grabación.
Conozca más
TDN -GETSXENUM() - Frameworksp
Funciones relacionadas: CONFIRMSXE() y ROLLBACKSXE()
0 Comentarios