4D v16.3

OB Get

Inicio

 
4D v16.3
OB Get

OB Get 


 

OB Get ( objeto ; propiedad {; tipo} ) -> Resultado 
Parámetro Tipo   Descripción
objeto  Objeto, Campo Objeto in Objeto estructurado
propiedad  Texto in Nombre de la propiedad a leer
tipo  Entero largo in Tipo al cual convertir el valor
Resultado  Booleano, Fecha, Objeto, Puntero, Real, Texto in Valor actual de propiedad

El comando OB Get devuelve el valor actual de la propiedad del objeto, convertido opcionalmente en el tipo definido.

objeto debe haber sido definido con el comando C_OBJECT o designar un campo objeto 4D.

Nota: este comando soporta definiciones de atributo en objetos 4D Write Pro, como el comando WP GET ATTRIBUTES (ver el ejemplo 9). Pero, a diferencia de WP GET ATTRIBUTES, OB Get no le permite manipular directamente una variable o campo como valor de atributo.

En el parámetro propiedad, pase la etiqueta de la propiedad a leer. Tenga en cuenta que el parámetro propiedad es sensible a mayúsculas y minúsculas

Por defecto, 4D devuelve el valor de la propiedad en su tipo original. Puede "forzar" la escritura del valor devuelto utilizando el parámetro opcional tipo. Para ello, en tipo pase una de las siguientes constantes que se encuentran en el tema Tipos de campos y variables:

Constante Tipo Valor
Is Boolean Entero largo 6
Is date Entero largo 4
Is longint Entero largo 9
Is object Entero largo 38
Is pointer Entero largo 23
Is real Entero largo 1
Is text Entero largo 2
Is time Entero largo 11

El comando devuelve el valor de la propiedad. Varios tipos de datos están soportados. Tenga en cuenta que:

  • un puntero se devuelve tal cual, puede ser evaluado utilizando el comando JSON Stringify,
  • las fechas se devuelven en el formato "YYYY-MM-DDTHH:mm:ss.SSSZ"
  • en valores reales, el separador decimal es siempre un punto "."
  • las horas se devuelven como un número. Note que OB SET almacena las horas en forma de milisegundos, conforme al estándar JavaScript, mientras 4D espera un número de segundos. Para una interpretación correcta por OB Get de una hora almacenada, debe utilizar la constante Is time.

Recuperación de un valor de tipo texto:

 C_OBJECT($ref)
 C_TEXT($FirstName)
 OB SET($ref;"FirstName";"Harry")
 $FirstName:=OB Get($ref;"FirstName") // $FirstName = "Harry" (text)

Recuperación de un valor real convertido en entero largo:

 OB SET($ref ;"age";42)
 $age:=OB Get($ref ;"age") // $age es un número real (default)
 $age:=OB Get($ref ;"age";Is longint// $age es un entero largo

Recuperación de los valores de un objeto:

 C_OBJECT($ref1;$ref2)
 OB SET($ref1;"LastName";"Smith") // $ref1={"LastName":"Smith"}
 OB SET($ref2;"son";$ref1// $ref2={"son":{"LastName":"Smith"}}
 $son:=OB Get($ref2;"son") // $son={"LastName":"john"} (object)
 $sonsName:=OB Get($son ;"name") // $sonsName="john" (text)

Modificando de la edad de un empleado dos veces:

 C_OBJECT($ref_john;$ref_jim)
 OB SET($ref_john;"name";"John";"age";35)
 OB SET($ref_jim;"name";"Jim";"age";40)
 APPEND TO ARRAY($myArray;$ref_john// creamos un objeto array
 APPEND TO ARRAY($myArray;$ref_jim)
  // cambiamos la edad de John de 35 a 25
 OB SET($myArray{1};"age";25)
  // cambiamos la edad de "John" en el array
 For($i;1;Size of array($myArray))
    If(OB Get($myArray{$i};"name")="John")
       OB SET($myArray{$i};"age";36) // en cambio de 25
  // $ref_john={"name":"John","age":36}
    End if
 End for

Deserialización de una cadena de datos con formato ISO:

 C_OBJECT($object)
 C_DATE($birthday)
 C_TEXT($birthdayString)
 OB SET($object;"Birthday";"1990-12-25T12:00:00Z")
 $birthdayString:=OB Get($object;"Birthday")
  // $birthdayString="1990-12-25T12:00:00Z"
 $birthday:=OB Get($object;"Birthday";Is date)
  // $birthday=25/12/90

Utilización de objetos anidados:

 C_OBJECT($ref1;$child;$children)
 C_TEXT($childName)
 OB SET($ref1;"firstname";"John";"lastname";"Monroe")
  //{"firstname":"john","lastname";"Monroe"}
 OB SET($children;"children";$ref1)
 $child:=OB Get($children;"children")
  //$son = {"firstname":"John","lastname":"Monroe"} (object)
 $childName:=OB Get($child;"lastname")
  //$childName = "Monroe" (text)
  //o
 $childName:=OB Get(OB Get($children;"children");"lastname")
  // $childName = "Monroe" (text)

Recuperación en 4D de una hora almacenada en un objeto:

 C_OBJECT($obj_o)
 C_TIME($set_h;$get_h)
 
 $set_h:=?01:00:00?+1
 OB SET($obj_o;"myHour";$set_h)
  // $obj_o == {"myHour":3601000}
  // The time is stored in milliseconds
 $get_h:=OB Get($obj_o;"myHour";Is time)
  // $get_h == ?01:00:01?
  // La hora es leída correctamente

Ejemplos de manipulación de campos objeto 4D:

  // Definir un valor
 OB SET([People]Identity_OB;"First name";$firstName)
 OB SET([People]Identity_OB;"Last name";$lastName)
 
  // Obtener un valor
 $firstName:=OB Get([People]Identity_OB;"First name")
 $lastName:=OB Get([People]Identity_OB;"Last name")

En un método formulario, puede escribir:

 If(Form event=On Validate)
    OB SET([MyDocuments]My4DWP;"myatt_Last edition by";Current user)
    OB SET([MyDocuments]My4DWP;"myatt_Category";"Memo")
 End if

También puede leer los atributos personalizados de los documentos:

 vAttrib:=OB Get([MyDocuments]My4DWP;"myatt_Last edition by")



Ver también 

OB Copy
Tipos de campos y variables

 
PROPIEDADES 

Producto: 4D
Tema: Objetos (Lenguaje)
Número 1224

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v14
Modificado: 4D v15
Modificado: 4D v15 R4

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)