Récupérer les attributes des objets

Version 17R4

Premises :

j’ai une structure ou certaines tables ont des objets
Les objets ont des attributes et pour me faciliter la vie, je fais de sorte que les objets auront TOUJOURS le même nombre d’attributes. Cet à dire par exemple, dans une table clients l’objet Adresse contiens :
Adr1, Adr2, Adr3, Adr4, Code Postal, Ville, Pays, soit en total 7 attributes et en consequence tous les enregistrements de cette table auront 7 attributes pour l’objet Adresse.

Objectif : parser une structure pour générer un json avec la liste exhaustive de tous les champs contenant des attributes.

Code : en executant ce code que suit mon tableau d’objets contiens à la fin le même objet !!!

je pense que ça doit être une bêtise mais je ne la vois pas .

READ ONLY(*)

C_LONGINT($i;$j;$k;$y;$x;$z;$type;$length)

C_BOOLEAN($invisible;$indexed;$unique)

C_POINTER($ptrTable)

C_OBJECT($attribute)

$j:=Get last table number

ARRAY TEXT($tabNoms;0)
ARRAY LONGINT($tabTypes;0)
ARRAY POINTER($tabFields;0)

ARRAY OBJECT($array_Object;0)

For ($i;1;$j)
If (Is table number valid($i))

	GET TABLE PROPERTIES($i;$invisible)
	
	If (Not($invisible))
		$ptrTable:=Table($i)
		$z:=Get last field number($i)
		For ($y;1;$z)
			
			GET FIELD PROPERTIES($i;$y;$type;$length;$indexed;$unique;$invisible)
			
			If (Not($invisible)) & (($type=42) | ($type=38))  // only objects 
				
				ALL RECORDS($ptrTable->)  // Take one record because attributes are all the same for any record
				
				REDUCE SELECTION($ptrTable->;1)
				
				OB GET PROPERTY NAMES(Field($i;$y)->;$tabNoms;$tabTypes)  // get names and types of atributes for this field
				
				$x:=Size of array($tabNoms)
				If ($x>0)
					For ($k;1;$x)
						OB SET($attribute;"table";String($i);"field";String($y);"name";$tabNoms{$k};"type";String($tabTypes{$k}))
						APPEND TO ARRAY($array_Object;$attribute)
					End for 
				End if 
			End if 
		End for 
	End if 
End if 

End for
// ici il faut faire un stringify array

trouvée par le support technique, il fallait ajouter un clear variable($attribute) dans la boucle

J’ai pas tout compris ce que tu veux faire. Tu as essayé un truc :

$m:=ds.CONTRAT où CONTRAT est le nom de la table ?