4D v18

OB Copy

Inicio

 
4D v18
OB Copy

OB Copy 


 

OB Copy ( objeto {; resuelvePunt} ) -> Resultado 
Parámetro Tipo   Descripción
objeto  Objeto, Campo Objeto in Objeto estructurado
resuelvePunt  Booleano in True = resuelve los puntero, False o se omite = no resuelve punteros
Resultado  Objeto in Copia de objeto

El comando OB Copy devuelve un objeto que contiene una copia completa de las propiedades, sub objetos y valores de objeto.

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

Si el objeto contiene valores de tipo de puntero, por defecto la copia también contiene los punteros. Sin embargo, puede resolver los punteros al momento de la copia pasando True en el parámetro resuelvePunt. IEn este caso, cada puntero presente como valor en objeto se evalúa al momento de la copia y se utiliza su valor desreferenciado.

Notas: 

  • si las propiedades del objeto son objetos compartidos o colecciones compartidas, se convierten en objetos o colecciones estándar (no compartidos) en la copia devuelta.
  • Los objetos almacén de datos, clase de datos, entidades, selección de entidades no se pueden copiar. Si se llama al comando OB Copy con ellos, se devuelve un valor nulo.

Usted quiere duplicar un objeto que contiene valores simples:

 C_OBJECT($Object)
 C_TEXT($JsonString)
 
 ARRAY OBJECT($arraySel;0)
 ALL RECORDS([Product])
 While(Not(End selection([Product])))
    OB SET($Object;"id";[Product]ID_Product)
    OB SET($Object;"Product Name";[Product]Product_Name)
    OB SET($Object;"Price";[Product]Price)
    OB SET($Object;"Tax rate";[Product]Tax_rate)
    $ref_value:=OB Copy($Object//copia directa
    APPEND TO ARRAY($arraySel;$ref_value)
  //el contenido de $ref_value es idéntico al de $Object
    NEXT RECORD([Product])
 End while
  //el contenido de $ref_value
 $JsonString:=JSON Stringify array($arraySel)

Duplique un objeto que contenga punteros:

 C_OBJECT($ref)
 
 OB SET($ref;"name";->[Company]name) //object with pointers
 OB SET($ref;"country";->[Company]country)
 ARRAY OBJECT($sel;0)
 ARRAY OBJECT($sel2;0)
 
 ALL RECORDS([Company])
 
 While(Not(End selection([Company])))
    $ref_comp:=OB Copy($ref// copy without evaluating pointers
  // $ref_comp={"name":"->[Company]name","country":"->[Company]Country"}
    $ref_comp2:=OB Copy($ref;True//copy with evaluation of pointers
  // $ref_comp={"name":"4D SAS","country":"France"}
    APPEND TO ARRAY($sel;$ref_comp)
    APPEND TO ARRAY($sel2;$ref_comp2)
    NEXT RECORD([Company])
 End while
 
 $Object:=JSON Stringify array($sel)
 $Object2:=JSON Stringify array($sel2)
 
  // $Object = [{"name":"","country":""},{"name":"","country":""},...]
  // $Object2 = [{"name":"4D SAS","country":"France"},{"name":"4D, Inc","country":"USA"},{"name":"Catalan","country":"France"}...]



Ver también 

collection.copy( )
OB Get

 
PROPIEDADES 

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

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v14
Modificado: 4D v15

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v18)