Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNCIóNPublicado

Soma1

Soma1( <cSoma>, [nPos], [lSomaLow], [lCompleteSUM] ) → cRet

Incrementa una secuencia de caracteres combinando dígitos y letras cuando es necesario.

CadenasSecuenciaCaracteresFrameworkFunciones AdvPL
01 · DESCRIPCIÓN GENERAL

Descripción general

Soma1() genera el siguiente valor de una secuencia textual. Es útil cuando un campo de caracteres debe avanzar sin conversión numérica directa, por ejemplo, en numeraciones cortas de ítems, códigos internos o contadores de pantalla. La secuencia puede pasar de dígitos a letras; por eso no debe tratarse como un número común ni usarse en cálculos aritméticos.

02 · SINTAXIS

Sintaxis

Soma1( <cSoma>, [nPos], [lSomaLow], [lCompleteSUM] ) → cRet

Parámetros

cSoma
CaractereObligatorio

Secuencia de caracteres que será incrementada.

nPos
NuméricoOpcional

Posición de la secuencia que se moverá.

lSomaLow
LógicoOpcional

Indica el uso de caracteres minúsculos.

lCompleteSUM
LógicoOpcional

Controla el uso completo de los caracteres disponibles; la fuente consultada indica .F. como valor predeterminado.

Retorno

Retorna una cadena con el siguiente valor de la secuencia.

03 · EJEMPLO PRÁCTICO

Incremento simple

User Function ExSoma1Simple()
    Local cSecuencia := "100"

    cSecuencia := Soma1(cSecuencia)

    MsgInfo(cSecuencia, "Siguiente secuencia")
Return
Resultado esperado

La secuencia "100" pasa a "101".

04 · EJEMPLO PRÁCTICO

Cuando la secuencia alcanza letras

User Function ExSoma1Alfanumerico()
    Local cSecuencia := "9999"

    cSecuencia := Soma1(cSecuencia)

    MsgInfo(cSecuencia, "Secuencia alfanumérica")
Return
Resultado esperado

En el ejemplo de referencia, "9999" pasa a "999A". Valida la compatibilidad del entorno antes de usarla como regla de negocio.

05 · EJEMPLO PRÁCTICO

Generar y retroceder una secuencia

User Function ExSoma1YTira1()
    Local cSecuencia := "00"
    Local nPaso

    For nPaso := 1 To 150
        cSecuencia := Soma1(cSecuencia)
    Next nPaso

    cSecuencia := Tira1(cSecuencia)

    MsgInfo(cSecuencia, "Secuencia")
Return
Resultado esperado

El bucle avanza una secuencia textual; Tira1() retrocede un paso con el mismo formato.

BUENAS PRÁCTICAS
  • Trata el resultado como una secuencia alfanumérica, no como un número aritmético.
  • Ejemplos comunitarios muestran "100" pasando a "101", "9999" a "999A" y "123AB" a "123AC".
  • La transición de dígitos a letras puede depender de la compatibilidad del entorno; valida la regla homologada.
  • Tira1() es la operación complementaria de decremento.
ERRORES COMUNES
  • No conviertas el retorno a numérico si puede contener letras.
  • No uses Soma1() como mecanismo de unicidad transaccional.
  • Prueba los argumentos opcionales en todo el rango de transición esperado.
  • Asegura que el campo destino soporte el formato generado.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Soma1. TDN.
  2. Terminal de Informação. Soma1. Base de conocimiento.
  3. Costa, Adilio. Creación de una secuencia de campo carácter con Soma1 en ADVPL.
  4. Rapelli, Eurai. Soma1. Universo do Desenvolvedor.
  5. Atilio, Daniel. Manipulación de secuencias de strings con Soma1 y Tira1.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR