Unable to get row ID 0 for object XXX

Bonjour,

Je souhaite créer une nouvelle formation pour un employé. Voici le code de ma méthode :

private void createTrainingOnUser(ObjectDB usr){
		try{
			ObjectDB train = Grant.getSystemAdmin().getTmpObject("HrFormations");
			BusinessObjectTool trainOt = train.getTool();
			trainOt.getForCreate();
			
			train.resetValues(true);
	        train.setRowId(ObjectField.DEFAULT_ROW_ID);
	        train.setFieldValue("hrFrmSalId", usr.getRowId());
	        train.setFieldValue("hrFrmType", "OFFICE");
	        train.setFieldValue("hrFrmStatus", "DEMAND");
	        train.setFieldValue("hrFrmDate", getFieldValue("hrEmpArrivalDate"));
	        trainOt.validateAndSave();
		} catch(Exception e) {
			AppLog.error("[IN parseAuth] Error creating new training for users", e, Grant.getSystemAdmin());
		}
	}

Le problème, c’est que j’obtiens l’erreur suivant :


voici ma table:
image

Petite précision : J’ai utilisé le même logique de code pour ajouter un nouvel utilisateur et ça fonctionne.

Auriez-vous une idée d’où peut provenir l’erreur ?

Votre code est redonnant: si vous faites resetValues(true) et setRowId(ObjectField.DEFAULT_ROW_ID), faire un getForCreate avant ne sert à rien.

Ensuite y-a-t il une raison d’utiliser le grant système plutôt que le grant courant ?
Dans un cas comme dans l’autre le grant doit avoir les droits de création sur l’objet en question.

1 Like

Bonsoir,
Je requalifie en Support. Le type “Defect” est réservé aux suspicions d’anomalie du socle, et non pas un pb fonctionnel sur votre projet.

  • getForCreate a besoin des droits de lecture et de création. Grant.getSystemAdmin() = singleton designer a le droit de création du User par défaut, mais pas sur un objet particulier hors meta-modèle. Il faut l’ajouter dans ses droits ou par code (cf changeAccess)

  • un singleton a besoin d’être synchronisé en cas d’accès concurrent

  • autre warning : la clé fonctionnelle de l’objet HrFormations (au pluriel?) sur le diagramme est “type + id du user”, étrange… l’utilisateur a peut être déjà une formation de ce type ? ça aurait plus de sens d’avoir la date en clé pour avoir plusieurs formations dans le temps qu’une seule par type et par personne ?

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.