Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

JavaScript-Bibliothek common/beans

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.

Verwendung


Binden Sie die Bibliothek stets am Anfang eines Skripts ein:

let beans = require('common/beans');

Funktionen


get

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]');

beans.get(object,'paths()')

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()');

beans.get(object, 'unc()')

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()');

set

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

selected

Prüft, ob der gegebene Selektor auf das Objekt passt.


Beispiel

if (beans.selected(object, '[~~area=Test]')) {
  // ...
}

up

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]');

date

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

inline-Definition für Listen


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 auslesen

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'
    }
  ]
}


Wert der Arrays ändern

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.