Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core JavaScript-API
Diese Bibliothek bietet Funktionen, mit denen Sie auf die API-Propertys von Objekten lesend und schreibend zugreifen können.
Eine Übersicht über die möglichen Property-Namen finden Sie im Modul API-Dokumentation in agorum core.
Binden Sie die Bibliothek stets am Anfang eines Skripts ein:
let beans = require('common/beans');
Liest Attribute und Metadaten eines Objekts aus.
Hinweis: Diese Funktion ist veraltet. Verwenden Sie die JavaScript-Bibliothek common-metadata. Sie unterstützt Entwickler mit Automatismen wie dem Konvertieren und Erkennen von Daten- und Vererbungstyp. Durch deren Verwenden vermeiden Sie später schwer zu korrigierende Inkonsistenzen.
Beispiel
// Nicht vererbtes Metadatum let acmf_dokumentTyp = beans.get(object, '~acmf_dokumentTyp'); // Vererbtes Metadatum let acmf_lieferantenName = beans.get(object, '~~acmf_lieferantenName[0]');
Liefert ein Array mit allen Pfaden, die der Benutzer, der das Objekt geladen hat (object.sessionController), für dieses Objekt sieht.
Path() ist ein Pseudo-Attribut.
Hinweis: Das Objekt muss mit dem Benutzer geholt werden, der momentan angemeldet ist. Wurde es im Hintergrund von einem Administrator geholt, stimmen die Pfade nicht. In diesem Falle muss der Aufruf folgendermaßen erfolgen:
beans.get(objects.find(object), 'path()');
Beispiel
/* global sessionController */ let objects = require('common/objects'); let beans = require('common/beans'); let file = objects.find('14181094370011'); beans.get(file, 'paths()');
Ergebnis
[ [ { "displayName": "Home", "id": "10000" }, { "displayName": "roi", "id": "10002" }, { "displayName": "Eigene Dateien", "id": "1002330" }, { "displayName": "tmp", "id": "1066572" }, { "displayName": "14181094370011", "id": "14181095521165" }, { "displayName": "Leitfaden-Ihr-Dokumentenmanagement-in-6-Schritten.pdf", "id": "14181094370011" } ], [ { "displayName": "Root", "id": "9999" }, { "displayName": "Home", "id": "10000" }, { "displayName": "roi", "id": "10002" }, { "displayName": "Eigene Dateien", "id": "1002330" }, { "displayName": "tmp", "id": "1066572" }, { "displayName": "14181094370011", "id": "14181095521165" }, { "displayName": "Leitfaden-Ihr-Dokumentenmanagement-in-6-Schritten.pdf", "id": "14181094370011" } ], [ { "displayName": "Eigene Dateien", "id": "1002330" }, { "displayName": "tmp", "id": "1066572" }, { "displayName": "14181094370011", "id": "14181095521165" }, { "displayName": "Leitfaden-Ihr-Dokumentenmanagement-in-6-Schritten.pdf", "id": "14181094370011" } ] ]
Tipp: Wenn Sie unsicher sind, ob der Administrator das Objekt durch eine Funktion geholt hat, laden Sie das Objekt für den Aufruf nochmals. Erstellen Sie den Aufruf dafür folgendermaßen:
... beans.get(objects.find(file), 'paths()');
Liefert einen unc-Pfad über einen vom Benutzer erreichbaren Share.
Wenn das System etwa null als Host liefert, wurde das Objekt mit einem anderen internen Benutzer (etwa Administrator) geholt. Ändern Sie den Aufruf folgendermaßen:
get(objects.find(object), 'unc()');
Beispiel
/* global sessionController */ let objects = require('common/objects'); let beans = require('common/beans'); let file = objects.find('14181094370011'); beans.get(file, 'unc()');
Ergebnis
\\roihost\privat\tmp\14181094370011\Leitfaden-Ihr-Dokumentenmanagement-in-6-Schritten.pdf
Wenn das gelieferte Ergebnis mit \\null\ beginnt, ändern Sie den Aufruf wie folgt, da das Objekt hier mit einem internen Benutzer (etwa als Administrator) geholt wurde.
Ergebnis mit null
\\null\privat\tmp\14181094370011\Leitfaden-Ihr-Dokumentenmanagement-in-6-Schritten.pdf
Aufruf
... beans.get(objects.find(file), 'unc()');
Setzt Attribute und Metadaten auf ein Objekt.
Hinweis: Diese Funktion ist veraltet. Verwenden Sie die JavaScript-Bibliothek common-metadata. Sie unterstützt Entwickler mit Automatismen wie dem Konvertieren und Erkennen von Daten- und Vererbungstyp. Durch deren Verwenden vermeiden Sie später schwer zu korrigierende Inkonsistenzen.
Beispiele
Zusätzlich können Sie das Datenformat angeben, in dem das System das Metadatum speichert. Folgende Formate existieren:
Verwenden Sie diese explizite Annotation insbesondere für nicht-String-Metadaten und dazu, um Datums-Metadaten korrekt zu setzen, da das Übertragungsformat (JSON) hierfür keinen Datentyp bietet.
Metadaten entfernen
Mit dieser Funktion können Sie auch Metadaten setzen, die nicht über den Metadatendesigner definiert wurden, allerdings wird das nur in Ausnahmefällen empfohlen, typischerweise bei der Entfernung von nicht mehr benötigten Metadaten.
Um Metadaten zu entfernen, setzen Sie den Wert des Metadatums auf null oder undefined:
beans.set(objects[0], { '~~acmf_lieferantenName:string': data.acmf_lieferantenName, '~~acmf_lieferantenNummer:string': data.acmf_lieferantenNummer, '~acmf_lieferantenStatus:string': data.acmf_lieferantenStatus, '~acmf_lieferantAktiv:boolean': true '~acmf_zuEntfernen': null, 'description': 'Das ist eine Beschreibung' });
Eine ACL setzen
let objects = require('common/objects'); let beans = require('common/beans'); let obj = objects.find('3015157'); // Objekt, auf das die ACL gesetzt wird. let aclName = 'ACL_Musterfirma GmbH - Intern'; beans.set(obj, { acl: objects.find('acl:' + aclName) // Das Objekt der ACL übergeben. });
Prüft, ob der gegebene Selektor auf das Objekt passt.
Beispiel
if (beans.selected(object, '[~~area=Test]')) { // ... }
Sucht vom übergebenen Objekt ausgehend nach einem umgebenden Ordner (rekursiv), auf den der gegebene Selektor passt.
Das System:
Beispiel
// find the package folder that the given object is inside let package = beans.up(object, '[~identifier=ag_package]');
Konvertiert einen String mit einem API-kompatiblen Datum nach ISO-8601 in ein JavaScript-Datum.
Beispiel
let date = beans.date('2017-05-22T19:45:00+02:00');
Um mit „sicheren“ Datentypen innerhalb von Listen zu arbeiten, die verschiedene Werte enthalten, existieren verschiedene Möglichkeiten.
Wenn das Metadatum ~test_netto existiert und Sie diesem einmal die Zahl 10 und einmal die Zahl 10.5 zuordnen, würde das System den Typ durch die automatische Erkennung einmal als int und einmal als double interpretieren. Damit Sie den Datentyp mitgeben können, existiert die Ergänzung inline.
Metadaten mit Datentypen können Sie folgendermaßen auslesen, unabhängig davon, ob es sich um ein Array, eine Map oder einen direkten Wert handelt:
let pos = beans.get(object, '~ERPosition:inline');
Ergebnis bei einem Array
{ type: [ { Konto: 'string', KostenStelle: 'string', GegenKonto: 'string', Positionsbetrag: 'double', ArtikelBezeichnung: 'string' }, { Konto: 'string', KostenStelle: 'string', GegenKonto: 'string', Positionsbetrag: 'double', ArtikelBezeichnung: 'string' } ], value: [ { Konto: '12605', KostenStelle: '1', GegenKonto: '2', Positionsbetrag: 0.0, ArtikelBezeichnung: 'Reparaturauftrag' }, { Konto: '12605', KostenStelle: '1', GegenKonto: '2', Positionsbetrag: 0.0, ArtikelBezeichnung: 'Facharbeiterlohn - Kulanz' } ] }
Möchten Sie einen Wert des Arrays ändern, iterieren Sie die values und ändern den Wert.
Beispiel
pos.value.forEach(function(item) { item.Positionsbetrag = item.Positionsbetrag * 1.19; });
Array zurückschreiben
Wenn Sie genau dieses Array wieder zurückschreiben möchten, verwenden Sie wieder die Angabe inline:
beans.set(object, '~ERPosition:inline', pos);
Neuen Wert ergänzen
Wenn Sie einen neuen Wert ergänzen möchten, löschen Sie bei type alle Definitionen bis auf eine und ergänzen Sie sie um die Definition des neuen Werts.
Beispiel
pos.type = [ pos.type[0] ]; pos.type[0].PositionsbetragBrutto = 'double';
Sie können den Betrag auch bei den Werten entsprechend setzen:
pos.value.forEach(function(item) { item.PositionsbetragBrutto = item.Positionsbetrag * 1.19; });
Danach können Sie wieder mit beans.set zurückschreiben.