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;
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);
}
);