Auf übergeordnete Objekte zugreifen Javascript

Hallo Community,

ich habe angefangen Schränke inkls. Skripte für den Webclient umzubauen und scheitere an einer stark limitierten Dokumentation seitens OS.

Es ist mir möglich im Dokument die entsprechende cabinetId (die auch in der Doku nicht angegeben ist) herauszufinden. Jedoch keine Funktion, mit der man auf diese zugreifen kann.

Hat von euch jemand soetwas bereits umgesetzt?

Ich benötige Values aus Feldern der übergeordneten Objekte im untergeordneten Dokumentenskript..

let sSchrankID = formHelper.getCurrentDmsDocument().model.cabinetId;

1 „Gefällt mir“

Hallo @VK,

die Dokumentation ist hier leider nicht ganz leicht zu verstehen.
Die Eigenschaft formHelper.getCurrentDmsDocument().model.cabinetId; beschreibt ungünstigerweise nicht die Ordner ID, sondern die Ordner Typen Id. Die hilft hier nur bedingt weiter. Da ein Dokument mehrer Standorte haben kann, ist dies auch technisch nicht so leicht diese Information mitzuliefern. Man muss viel mehr erst die Standorte aktiv ermitteln.

Ich habe hierfür mal einen OnShow Event auf ein Dokument als Beispiel erstellt. Dieser sieht wie folgt aus:

// Ich Kapsel hier den Code in eine asynchrone Methode um mit den Promises per await etwas netter umgehen zu können.
const main = async () => {
	// Nur um Bearbeitungsmodus
	if(!formHelper.isEdit)
		return;

	// Auchtung: formHelper.getCurrentDmsDocument liefert im formHelper.isSearch null zurück
	// https://enaiodevelop.atlassian.net/wiki/spaces/WEB/pages/21267410/2.1+Methoden#formHelper.getCurrentDmsDocument()
	// https://enaiodevelop.atlassian.net/wiki/spaces/WEB/pages/21267418/2.3+Properties#formHelper.isSearch
	const currentDmsDocument = formHelper.getCurrentDmsDocument();

	// Standorte suchen
	// https://enaiodevelop.atlassian.net/wiki/spaces/WEB/pages/21267426/3.1+Methoden#formHelper.dms.getLocations({objectId},-{objectTypeId},-{queryObjectData})
	const locations = await formHelper.dms.getLocations(currentDmsDocument.model.objectId, currentDmsDocument.model.objectTypeId, true);

	// Da ein Dokument mehrere Standorte haben kann, wird hier ein Array in einem Array zurück gegeben. 
	// Das erste Array stellt die Standorte an sich dar, dann den Ordner und Registern. 
	// Um sicher zu gehen, dass man nicht ausversehen das Register erhält, suche ich kurz den Ordner
	const folder = locations[0].find(l => {
		return l.model.objectType == "FOLDER";
	});
	
	// die Variable folder beinhaltet dann ein DmsDocument. onter folder.model.fields finden sie dann die Metadaten
	// https://enaiodevelop.atlassian.net/wiki/spaces/WEB/pages/21267454/A.03+DMS+Dokument
	console.log(folder);

};


// Die asynchrone Methode ausführen
main().then(
	() => done(1), 
	(error) => {
		console.log(error);
		done(0);
	}
);

Ich hoffe das Beispiel hilft etwas weiter.

Viele Grüsse
Uli

3 „Gefällt mir“

Danke!

Ich habe jetzt tatsächlich noch eine weitere Alternative via AppConnector gefunden.

Via API Anfrage an:

// https://enaiodevelop.atlassian.net/wiki/spaces/AP/pages/21103075/DocumentService+documents#%2Fosrest%2Fapi%2Fdocuments%2Fparent%2F%5Bid%5D
"/osrest/api/documents/parent/"+sDocID+"?objecttypeid="+sDocObjID;

// in die Funktion:
// Basic API Request, nimmt API endpoint als Argument | Asynchron
globals.getJsonData = function(url, method = "GET") {
  let sURI = `${window.location.baseUrl}`+url;
  return fetch(url, {
	method: method,
  }).then(r => r.json());
}

Am Ende erhält man auch einen Array mit dem Parent Obj, den man weiter untersuchen kann

1 „Gefällt mir“