4D v15.4

OB Get

Home

 
4D v15.4
OB Get

OB Get 


 

OB Get ( object ; property {; type} ) -> Function result 
Parameter Type   Description
object  Object, Object Field in Structured object
property  Text in Name of property to read
type  Longint in Type to which to convert the value
Function result  Boolean, Date, Object, Pointer, Real, Text in Current value of property

The OB Get command returns the current value of the property of the object, optionally converted into the type specified.

object must have been defined using the C_OBJECT command or designate a 4D object field.

In the property parameter, pass the label of the property to be read. Note that the property parameter is case sensitive.  

By default, 4D returns the value of the property in its original type. You can "force" the typing of the value returned using the optional type parameter. To do this, in type you pass one of the following constants found in the Field and Variable Types theme:

Constant Type Value
Is Boolean Longint 6
Is date Longint 4
Is longint Longint 9
Is object Longint 38
Is pointer Longint 23
Is real Longint 1
Is text Longint 2
Is time Longint 11

The command returns the value of the property. Several types of data are supported. Note that:

  • a pointer is returned as such; it can be evaluated using the JSON Stringify command,
  • dates are returned in the format "YYYY-MM-DDTHH:mm:ss.SSSZ"
  • in real values, the decimal separator is always a period "."
  • times are returned as a number. Note that OB SET stores times as milliseconds, in compliance with the JavaScript standard, while 4D expects a number of seconds. In order for OB Get to interpret a stored time correctly, you need to use the Is time constant.

Retrieving a text type value:

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

Retrieving a real number value converted into a longint:

 OB SET($ref ;"age";42)
 $age:=OB Get($ref ;"age") // $age is a real number (default)
 $age:=OB Get($ref ;"age";Is longint// $age is a longint

Retrieving the values of an object:

 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)

Modifying the age of an employee twice:

 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// we create an object array
 APPEND TO ARRAY($myArray;$ref_jim)
  // we change the age for John from 35 to 25
 OB SET($myArray{1};"age";25)
  // We replace the age of "John" in the array
 For($i;1;Size of array($myArray))
    If(OB Get($myArray{$i};"name")="John")
       OB SET($myArray{$i};"age";36) // instead of 25
  // $ref_john={"name":"John","age":36}
    End if
 End for

Deserializing a data string formatted in 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

Using nested objects:

 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)
  //or
 $childName:=OB Get(OB Get($children;"children");"lastname")
  // $childName = "Monroe" (text)

Recovery in 4D of a time stored in an object:

 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?
  // The time is read correctly

Examples of working with 4D object fields:

  // Define a value
 OB SET([People]Identity_OB;"First name";$firstName)
 OB SET([People]Identity_OB;"Last name";$lastName)
 
  // Get a value
 $firstName:=OB Get([People]Identity_OB;"First name")
 $lastName:=OB Get([People]Identity_OB;"Last name")



See also 

Field and Variable Types
OB Copy

 
PROPERTIES 

Product: 4D
Theme: Objects (Language)
Number: 1224

 
HISTORY 

New
Created: 4D v14
Modified: 4D v15

 
ARTICLE USAGE

4D Language Reference ( 4D v15)
4D Language Reference ( 4D v15.4)
4D Language Reference ( 4D v15.3)