Modifier un élément fils depuis l'élément parent dns un postSave

Tags: #<Tag:0x00007f10167090e0>
Modifier un élément fils depuis l'élément parent dns un postSave
0

Bonjour,
Comment dois-je faire pour me positionner sur un objet lié par une relation 1,n .
Dans un postSave(), depuis l’objet parent (Consignes) je voudrais me positionner sur l’objet fils lié(SuiviConsignes) et en valoriser un ou plusieurs attributs.

pour créer nouvel élément fils j’ai un extrait de ce code:

ObjectDB obj = this.getGrant().getTmpObject("ConsiGestBoSuiviConsignes");
obj.getField("ConsiGestSuiviConsigneID").setValue(max+1);
 obj.getField("ConsiGestSuiviConsignes_Lockers_fk").setValue(this.getRowId());

pour une modification
je devrais me positionner sur l’objet SuiviConsignes (fils) qui fait référence au RowId de l’objet Consigne (parent)

La logique c’est:

  • je recherche si un record de l’objet lié (lié à mon record courant) existe
  • s’il existe je le sélectionne le record et je le met à jour
  • si’il n’existe pas je créé un nouveau record

La recherche sur fait en filtrant sur la foreign key, genre

obj.resetFilters(); // Reset all potentially existing filters
obj.getField("myForeignKeyField").setFilter(getRowId()); // set filter on FK
// set other filters if needed
List<String[]> rows = obj.search(false); // search
if (rows.size() > 0) {
    obj.setValues(rows.get(0), true); // select first record
    // update
} else {
    // create
}

Cf. https://docs.simplicite.io/documentation/01-core/basic-code-examples.md#searching

PS: Bien entendu vous pouvez aussi utiliser la classe “wrapper” BusinessObjectTool qui simplifie un peu les choses (le passage des filtres mais aussi et surtout la gestion d’erreur). Cf. https://docs.simplicite.io/4.0/javadoc-alpha/com/simplicite/util/tools/BusinessObjectTool.html