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

Posicione

Posicione( <cAlias>, <nOrdem>, <cSeek>, <cField>, [cNickName] ) --> xRet

Posiciona una tabla Protheus mediante una clave de índice y devuelve directamente el contenido del campo solicitado.

Banco de dadosPesquisaÍndiceProtheusxFilialCampo
01 · DESCRIPCIÓN GENERAL

Descripción general

Posicione() busca un registro en una tabla Protheus usando un orden de índice y una expresión de búsqueda. Al localizar el registro correspondiente, devuelve el contenido del campo indicado en cField. El parámetro opcional cNickName permite seleccionar el orden por nickname; la documentación oficial indica que nOrdem se ignora cuando cNickName está informado.

02 · SINTAXIS

Sintaxis

Posicione( <cAlias>, <nOrdem>, <cSeek>, <cField>, [cNickName] ) --> xRet

Parámetros

cAlias
CarácterObligatorio

Alias de la tabla que se posicionará.

nOrdem
NuméricoObligatorio

Número del orden de índice utilizado en la búsqueda. Se ignora cuando se informa cNickName.

cSeek
CarácterObligatorio

Expresión/clave utilizada para localizar el registro en el orden seleccionado.

cField
CarácterObligatorio

Nombre técnico del campo cuyo contenido será devuelto.

cNickName
CarácterOpcional

Nickname del orden de índice. Cuando se informa, tiene precedencia sobre nOrdem.

Retorno

xRet, variante. Contenido del campo indicado en cField para el registro localizado.

03 · EJEMPLO PRÁCTICO

Devolviendo el nombre del cliente

User Function ExPosicione()
    Local cNombre := ""

    // Orden 1 de SA1: valida la expresión del índice en el entorno objetivo.
    // F2_CLIENTE significa “Cliente”, F2_LOJA significa “Tienda” y A1_NOME significa “Nombre”.
    // La clave utiliza sucursal + cliente + tienda desde el encabezado de la factura de salida.
    cNombre := Posicione("SA1", 1, ;
                        xFilial("SA1") + SF2->F2_CLIENTE + SF2->F2_LOJA, ;
                        "A1_NOME")

    // Los identificadores técnicos permanecen exactamente como existen en Protheus.
    ConOut(cNombre)
Return
Resultado esperado

La función posiciona SA1 mediante la clave informada y devuelve directamente el contenido de A1_NOME.

04 · EJEMPLO PRÁCTICO

Usando cNickName

User Function ExPosicioneNick()
    Local cNickName := U_MiNickIndice()
    Local cClave    := U_MiClave()
    Local xValor

    // Ejemplo estructural: usa solamente un nickname que exista realmente en el entorno.
    // Cuando se informa cNickName, nOrdem se ignora. A1_NOME significa “Nombre”.
    xValor := Posicione("SA1", 0, cClave, "A1_NOME", cNickName)

Return xValor
Resultado esperado

El ejemplo demuestra la precedencia de cNickName sin inventar un nickname específico de índice.

BUENAS PRÁCTICAS
  • Construye cSeek exactamente según la expresión del orden de índice seleccionado.
  • Cuando la clave de la tabla incluya sucursal, usa xFilial() según las reglas de la tabla.
  • Usa el identificador técnico real en cField; no renombres campos Protheus en el fuente.
  • Documenta qué índice se utiliza, especialmente cuando nOrdem sea numérico.
  • Si el código depende de un nickname de índice, valida que exista en la release y diccionario del entorno.
ERRORES COMUNES
  • No trates nOrdem como parte de la clave de búsqueda; solamente selecciona el orden usado para interpretar cSeek.
  • No construyas cSeek sin todos los componentes de la expresión del índice, como sucursal, código y tienda cuando correspondan.
  • No supongas que Posicione() devuelve solamente .T. o .F.; devuelve el contenido del campo solicitado.
  • No traduzcas identificadores de campos en el código. Explica su significado manteniendo el nombre original de Protheus.

Contenido relacionado

REFERENCIAS
  1. TOTVS. POSICIONE() — Framework / Funções AdvPL. TDN.
  2. Terminal de Informação. Posicione — base de conhecimento.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha