Beispiele

Beispiele für die Universal REST API-Schnittstelle.

Einfache Beispiele

Lesen

Kreditor lesen

REQUEST

{
   "tableNo": "23",
   "operation": "READ",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "1",
         "filter": true,
         "value": "*"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|2"
      }
   ]
}

RESPONSE (Auszug)

{
    "Data": [
        {
            "No.": "700001",
            "Name": "Hausmeisterei"
        },
        {
            "No.": "700002",
            "Name": "Tischlerei Markus Wratschko e.U."
        },
        {
            "No.": "700003",
            "Name": "Gemeinde St. Georgen am Kreischberg"
        },
        ...
    ]
}

Schreiben

Einkaufsrechnung schreiben

REQUEST

{
   "tableNo":  "38",
   "operation":  "INSERT",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "validate":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "2",
         "validate":  true,
         "value":  "700001"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "2|3"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "Buy-from Vendor No.": "700001",
            "No.": "10R20-00013"
        }
    ]
}

Aktualisieren

In diesem Beispiel wird das Update der in obigem Beispiel übermittelten Einkaufsrechnung dargestellt. Das kann zum Beispiel interessant sein, wenn die Rechnung erneut an RELion übermitteln werden soll.

Dazu werden zwei Arten von Felder übergeben: Filter-Felder (filter = true) und Schreib-Felder (validate = true/false).

Wichtig ist dabei, dass genügend Filter-Felder angegeben werden, um den zu aktualisierenden Datensatz eindeutig zu identifizieren. Hierzu empfiehlt sich die Angabe aller Primärschlüsselfelder.

REQUEST

{
   "tableNo":  "38",
   "operation":  "UPDATE",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "3",
         "filter":  true,
         "value":  "10R20-00013"
      },
      {
         "fieldNo":  "99",
         "validate":  true,
         "value":  "2024-02-28"
      },
      {
         "fieldNo":  "24",
         "validate":  true,
         "value":  "2024-03-10"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "3|24|99"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "No.": "10R20-00013",
            "Due Date": "2024-03-10",
            "Document Date": "2024-02-28"
        }
    ]
}

Umbenennen

Verteilungscode ändern

REQUEST

{
  "tableNo": "5052255",
  "operation": "RENAME",
  "runTrigger": true,
  "setupCode": "",
  "entitySet": [
    {
      "fieldNo": "1",
      "filter": true,
      "value": "2"
    },
    {
      "fieldNo": "2",
      "filter": true,
      "value": "140701"
    },
    {
      "fieldNo": "3",
      "filter": true,
      "value": "0-QM-NFL"
    },
    {
      "fieldNo": "1",
      "validate": true,
      "value": "2"
    },
    {
      "fieldNo": "2",
      "validate": true,
      "value": "140701"
    },
    {
      "fieldNo": "3",
      "validate": true,
      "value": "0-QM-NF"
    },
    {
      "subOperation": "DONE",
      "responseFields": ""
    }
  ]
}

RESPONSE

{
    "Data": [
        {
            "Owner / Tenant": "2",
            "Object No.": "140701",
            "Allocation code": "0-QM-NF",
            "Description": "m² Nutzfläche",
            "Description on accounting": "0",
            "Total factor": "532.92",
            "Absolute factor": "false",
            "Extrapolation": "0",
            "Sum lower units/objects": "0",
            "Automatically determined": "false",
            "Fixed date": "2021-01-19",
            "$systemId": "{712E0A5F-D86B-EB11-B843-005056958D1C}",
            "SystemCreatedAt": "",
            "SystemCreatedBy": "{00000000-0000-0000-0000-000000000000}",
            "SystemModifiedAt": "2024-09-27T09:17:21.748Z",
            "SystemModifiedBy": "{7682B4AA-F082-4DCA-802D-E36C1455D4C5}"
        }
    ]
}

Löschen

Einkaufsrechnung löschen

REQUEST

{
   "tableNo":  "38",
   "operation":  "DELETE",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "3",
         "filter":  true,
         "value":  "10R20-00013"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "3"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "No.": "10R20-00013",
            "Due Date": "2024-03-10",
            "Document Date": "2024-02-28"
        }
    ]
}

Letzte Zeile lesen

Kreditor lesen

REQUEST

{
   "tableNo": "23",
   "operation": "READLAST",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "1",
         "filter": true,
         "value": "*"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|2"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "No.": "WEG14581",
            "Name": "WEG St. Georgen ob Murau Bau 12"
        }
    ]
}

Fortgeschrittene Beispiele

Schreiben von Bemerkungszeilen

In diesem Beispiel werden zusätzliche Einkaufsrechnungszeilen angelegt, die nur Bemerkungszwecken dienen.

Feldnummer Feldbezeichnung Optionswert
1 Belegart Rechnung = 2
3 Belegnr.
4 Zeilennr.
11 Beschreibung

REQUEST

{
   "tableNo":  "39",
   "operation":  "INSERT",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "validate":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "3",
         "validate":  true,
         "value":  "10R20-00013"
      },
      {
         "fieldNo":  "4",
         "validate":  true,
         "value":  "30000"
      },
      {
         "fieldNo":  "11",
         "validate":  true,
         "value":  "Bemerkungstext"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|3|4|11"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "Document Type":  "2",
         "Document No.":  "10R20-00013",
         "Line No.":  "30000",
         "Description":  "Bemerkungstext"
      }
   ]
}

Mehrere Sub-Operationen

Einkaufsrechnungskopf

In diesem Beispiel wird ein Einkaufsrechnungskopf (Purchase Header, 38) angelegt und direkt anschließend mit Beleg- und Fälligkeitsdatum aktualisiert. Durch die besondere Natur der BC-Standard-Programmierung ist dieser Zugang beim Einkaufsrechnungskopf notwendig.

Feldnummer Feldbezeichnung Optionswert
1 Belegart Rechnung = 2
2 Kreditorennr.
3 Belegnr.
24 Fälligkeitsdatum
99 Belegdatum

REQUEST

{
   "tableNo":  "38",
   "operation":  "INSERT",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "validate":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "2",
         "validate":  true,
         "value":  "700001"
      },
      {
         "subOperation":  "INSERT",
         "responseFields":  ""
      },
      {
         "fieldNo":  "99",
         "validate":  true,
         "value":  "2024-02-28"
      },
      {
         "fieldNo":  "24",
         "validate":  true,
         "value":  "2024-03-10"
      },
      {
         "subOperation":  "UPDATE_RESPONSE",
         "responseFields":  "3|24|99"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "No.":  "RG24-0015632",
         "Due Date":  "2024-03-10",
         "Document Date":  "2024-02-28"
      }
   ]
}

Einkaufsrechnungszeilen

In diesem Beispiel werden mehrere Einkaufsrechnungszeilen (Purchase Line, 39) angelegt. Durch die gemeinsame Übertragung werden entweder alle Datensätze angenommen oder bei einem Fehler gar keiner. Zu beachten ist, dass trotz INSERT_RESPONSE bei der ersten Suboperation nur die Antwort der letzten Suboperation zurückgegeben wird. Somit hat es keine Auswirkung, wenn statt INSERT_RESPONSE “nur” INSERT verwendet wird.

Feldnummer Feldbezeichnung Optionswert
1 Belegart Rechnung = 2
3 Belegnr.
4 Zeilennr.
5052250 Eigentümer / Mieter Mieter = 2
5052251 Objektnr.
5052254 Objektkonto Nr.
15 Menge
22 EK-Preis

REQUEST

{
   "tableNo": "39",
   "operation": "INSERT",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "1",
         "validate": true,
         "value": "2"
      },
      {
         "fieldNo": "3",
         "validate": true,
         "value": "RG24-0015632"
      },
      {
         "fieldNo": "4",
         "validate": true,
         "value": "10000"
      },
      {
         "fieldNo": "5052250",
         "validate": true,
         "value": "2"
      },
      {
         "fieldNo": "5052251",
         "validate": true,
         "value": "140701"
      },
      {
         "fieldNo": "5052254",
         "validate": true,
         "value": "4410207"
      },
      {
         "fieldNo": "15",
         "validate": true,
         "value": "1"
      },
      {
         "fieldNo": "22",
         "validate": true,
         "value": "100"
      },
      {
         "subOperation": "INSERT_RESPONSE",
         "responseFields": "1|3|4|5052250|5052251|5052254|15|22"
      },
      {
         "fieldNo": "1",
         "validate": true,
         "value": "2"
      },
      {
         "fieldNo": "3",
         "validate": true,
         "value": "RG24-0015632"
      },
      {
         "fieldNo": "4",
         "validate": true,
         "value": "20000"
      },
      {
         "fieldNo": "5052250",
         "validate": true,
         "value": "2"
      },
      {
         "fieldNo": "5052251",
         "validate": true,
         "value": "140701"
      },
      {
         "fieldNo": "5052254",
         "validate": true,
         "value": "4410215"
      },
      {
         "fieldNo": "15",
         "validate": true,
         "value": "1"
      },
      {
         "fieldNo": "22",
         "validate": true,
         "value": "400"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|3|4|5052250|5052251|5052254|15|22"
      }
   ]
}

RESPONSE

{
  "Data": [
    {
      "Document Type": "2",
      "Document No.": "RG24-0015632",
      "Line No.": "20000",
      "Quantity": "1",
      "Direct Unit Cost": "400",
      "RelC Owner/Tenant": "2",
      "RelC Object No.": "140701",
      "RelC Object Account No.": "4410215"
    }
  ]
}

Beschränkte Anzahl an Rückgabezeilen

Aus technischen Gründen wird die Anzahl an Datensätzen, die von der Universal Rest API zurückgegeben werden, limitiert. In Fällen, wo die benötigte Anzahl größer ist als das Limit sind somit folgende Eingriffe nötig und möglich.

Pagination

In allen Tabellen lässt sich über die Parameter top und skip ein seitenweises Lesen (Pagination) erreichen.

  • top gibt dabei die Anzahl an (falls vorhanden) zurückzugebenden Datensätzen dar
  • skip gibt an, wie viele Datensätze davor übersprungen werden sollen

D.h. in untenstehendem Beispiel werden zuerst 6 Datensätze übersprungen und dann die nächsten 3 zurückgegeben.

Feldnummer Feldbezeichnung Optionswert
1 Lfd. Nr.
3 Sachkontonr.
4 Buchungsdt.

REQUEST

{
   "tableNo":  "17",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "top": "3",
   "skip": "6",
   "entitySet":  [
      {
         "subOperation":  "DONE",
         "responseFields":  "1|3|4"
      }
   ]
}

WebService-Response (Auszug)

{
    ...
    "skip": 6,
    "top": 3,
    "entitySet": [
        {
            ...
            "totalCount": 24447,
            "skippedRows": 6,
            "moreRows": true,
            "countOfReturnRows": 3,
            "ResponseJson2": ...
        }
    ]
}

WebService-Response sind folgende Parameter in diesem Zusammenhang interessant:

  • totalCount gibt die Anzahl der insgesamt dem Filter entsprechenden Datensätze zurück. Dieser Wert ist von den Request-Parametern skip und top unabhängig.
  • skippedRows gibt die tatsächlich übersprungene Anzahl an Datensätzen zurück und entspricht somit dem kleineren folgender Werte: skip, totalCount
  • countOfReturnRows gibt die tatsächliche Anzahl an zurückgegebenen Datensätzen an und bewegt sich somit zwischen 0 und top.
  • moreRows ermöglicht eine einfache Schleifenbedingung für die Abfragen und gibt die Werte true oder false zurück.

RESPONSE (Auszug)

{
    "Data": [
        {
            "Entry No.": "7",
            "G/L Account No.": "80600501",
            "Posting Date": "2019-01-01"
        },
        {
            "Entry No.": "8",
            "G/L Account No.": "190016",
            "Posting Date": "2019-01-01"
        },
        {
            "Entry No.": "9",
            "G/L Account No.": "1420",
            "Posting Date": "2019-01-01"
        }
    ]
}

Wiederholtes Lesen mit verändertem Filter auf dem Primärschlüssel-Feld

Welches Feld bzw. welche Felder je Tabelle den Primärschlüssel bilden, können Sie in der Seitenüberprüfung (Strg+Alt+F1) sehen.

In der Antwort der Universal REST API werden auf der selben Ebene wie das ResponseJson2 noch die Felder numberOfRows und moreRows zurückgegeben.

  • numberOfRows gibt die Anzahl an Datensätzen an, die insgesamt gefunden wurden. In untenstehendem Beispiel wird sie also bei jedem Aufruf kleiner.
  • moreRows gibt einen boolschen Wert zurück, der anzeigt, ob noch mehr Datensätze vorhanden sind, die aufgrund des Limits nicht übertragen wurden.

Ein Beispiel für das Lesen der Sachkonten, würde wie folgt aussehen:

1. REQUEST

{
   "tableNo":  "15",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  ">0"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|2|4"
      }
   ]
}

1. RESPONSE (Auszug)

{
   "Data": [
      {
      "No.": "000-",
      "Name": "Anlagevermögen",
      "Account Type": "3"
      },

      ...

      {
      "No.": "08100",
      "Name": "Ausleihungen an verbundene Unternehmen",
      "Account Type": "0"
      }
   ]
}

Nun muss auf Basis des zuletzt zurückgegebenen Primärschlüssels der nächste Request aufgebaut werden.

2. REQUEST

{
   "tableNo":  "15",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  ">08100"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|2|4"
      }
   ]
}

2. RESPONSE (Auszug)

{
   "Data": [
      {
      "No.": "08130",
      "Name": "Ausleihungen an verbundene UN, PersG",
      "Account Type": "0"
      },

      ...

      {
      "No.": "12960",
      "Name": "WB Forderg.gg.UN m.Beteiligg.verh. b.1J",
      "Account Type": "0"
      }
   ]
}

Das Ganze muss wiederholt werden, bis das Feld moreRows den Wert false zurückgibt.

3. REQUEST

{
   "tableNo":  "15",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  ">12960"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|2|4"
      }
   ]
}

usw.

Maximalanzahl der zu übertragenden Datensätze in der uRA-Einrichtung erhöhen

Dies stellt eine grundsätzliche Möglichkeit dar. Allerdings ist zu beachten, dass bei einer zu großen Anzahl an Datensätzen, die Anfrage an die Universal Rest API in ein Timeout laufen wird. Daher stellt dies die schlechteste Möglichkeit dar und ist hier nur mehr der Vollständigkeit halber erwähnt.

Filterung nach Änderungsdatum

Eine Abfrage aller RELion-Objekte mit Änderungen seit 01.03.2023 würde wie folgt aussehen.

Zu beachten ist, dass die Datumsformatierung standardmäßig auf XML-Format eingestellt ist. Diese ist im Sinne einer Systemkompatibilität klar zu bevorzugen, kann aber in der Universal Rest API Settings je Mandant und Einrichtungscode geändert werden.

Feldnummer Feldbezeichnung Optionswert
1 Eigentümer / Mieter Eigentümer = 1
Mieter = 2
2 Objektnr.
2000000003 Geändert am

REQUEST

{
   "tableNo":  "5052250",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "2000000003",
         "filter":  true,
         "value":  ">2023-03-01T00:00:00Z"
      },
      {
         "subOperation":  "READ",
         "responseFields":  "1|2|2000000003"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "Owner / Tenant": "1",
            "No.": "416502",
            "SystemModifiedAt": "2023-10-09T14:20:40.247Z"
        },
        {
            "Owner / Tenant": "2",
            "No.": "416501",
            "SystemModifiedAt": "2023-10-09T14:20:41.427Z"
        }
    ]
}

Links und Notizen werden in der Tabelle 2000000068 abgelegt.

Für die folgenden Beispiele werden verwendet:

Feldnummer Feldbezeichnung Optionswert
1 Link ID
2 Record ID
3 URL
7 Beschreibung
10 Erstellt
11 Benutzer ID
12 Mandant
8 Typ
9 Notiz

Das folgende Beispiel zeigt das Hinzufügen eines Links zu einem Einkaufsrechnungskopf. Zu beachten ist dabei vor allem die korrekte Angabe im Feld Record ID. Diese besteht aus dem Tabellennamen und allen Primärschlüsselfeldern des Datensatzes, dem der Link hinzugefügt werden soll.

REQUEST

{
   "tableNo": "2000000068",
   "operation": "INSERT",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "2",
         "validate": true,
         "value": "Purchase Header: Invoice,ER1802820"
      },
      {
         "fieldNo": "3",
         "validate": true,
         "value": "http://www.aareon.com"
      },
      {
         "fieldNo": "7",
         "validate": true,
         "value": "URL"
      },
      {
         "fieldNo":  "10",
         "validate":  true,
         "value":  "2024-02-29 11:00:00"
      },
      {
         "fieldNo":  "11",
         "validate":  true,
         "value":  "AAREON\\HIEDEN"
      },
      {
         "fieldNo": "12",
         "validate": true,
         "value": "10_Mietverwaltung"
      },
      {
         "subOperation": "DONE"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "Link ID":  "21782",
         "Record ID":  "Purchase Header: 2,ER1802820",
         "URL1":  "http://www.aareon.com",
         "Description":  "URL",
         "Type":  "0",
         "Note":  " ",
         "Created":  "29.02.24 11:00",
         "User ID":  "AAREON\\HIEDEN",
         "Company":  "10_Mietverwaltung",
         "Notify":  "0",
         "To User ID":  "",
         "$systemId":  "01D1865D-C7D7-EE11-AD31-00505699FC69",
         "SystemCreatedAt":  "29.02.24 11:00",
         "SystemCreatedBy":  "7FEAA26B-6F07-4EF6-9BDA-6537D587E5C3",
         "SystemModifiedAt":  "29.02.24 11:00",
         "SystemModifiedBy":  "7FEAA26B-6F07-4EF6-9BDA-6537D587E5C3"
      }
   ]
}

Schreiben von Notizen

In diesem Beispiel wird eine Notiz der selben Einkaufsrechnung hinzugefügt.

REQUEST

{
   "tableNo": "2000000068",
   "operation": "INSERT",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "2",
         "validate": true,
         "value": "Purchase Header: Invoice,ER1802820"
      },
      {
         "fieldNo": "8",
         "validate": true,
         "value": "1"
      },
      {
         "fieldNo": "9",
         "validate": true,
         "value": "MURpZXNlIE5vdGl6IHd1cmRlIHBlciB1bml2ZXJzYWwgUmVzdCBBUEkgZXJ6ZXVndC4="
      },
      {
         "fieldNo":  "10",
         "validate":  true,
         "value":  "2024-02-29 11:00:00"
      },
      {
         "fieldNo":  "11",
         "validate":  true,
         "value":  "AAREON\\HIEDEN"
      },
      {
         "fieldNo": "12",
         "validate": true,
         "value": "10_Mietverwaltung"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|2|3|7|8|9"
      }
   ]
}

RESPONSE

{
    "Data": [
        {
            "Link ID": "9288",
            "Record ID": "Purchase Header: 2,ER1802820",
            "URL1": "",
            "Description": "",
            "Type": "1",
            "Note": "MURpZXNlIE5vdGl6IHd1cmRlIHBlciB1bml2ZXJzYWwgUmVzdCBBUEkgZXJ6ZXVndC4="
        }
    ]
}

In diesem Beispiel wird das Ziel des RecordLinks geändert. Hierzu muss nicht mehr die Record ID angegeben werden, sondern es reicht, die einfacher zu verwendende Link ID zu übermitteln, die wir beim Hinzufügen erhalten haben.

REQUEST

{
   "tableNo":  "2000000068",
   "operation":  "UPDATE",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "21782"
      },
      {
         "fieldNo":  "3",
         "validate":  true,
         "value":  "http://www.relion.de"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|2|3"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "Link ID":  "21782",
         "Record ID":  "Purchase Header: 2,ER1802820",
         "URL1":  "http://www.relion.de"
      }
   ]
}

In diesem Beispiel werden die RecordLinks (Links & Notizen) einer Einkaufsrechnung gelesen.

REQUEST

{
   "tableNo": "2000000068",
   "operation": "READ",
   "runTrigger": true,
   "setupCode": "",
   "entitySet": [
      {
         "fieldNo": "2",
         "filter": true,
         "value": "Purchase Header: Invoice,ER1802820"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|2|3|7|8|9"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "Link ID":  "21782",
         "Record ID":  "Purchase Header: 2,ER1802820",
         "URL1":  "http://www.relion.de",
         "Description":  "URL",
         "Type": "0",
         "Note": ""
      }
   ]
}

Dimensionen

Lesen von Dimensionswerten

In diesem Beispiel werden die Dimensionswerte auf den Sachposten ausgelesen.

Feldnummer Feldbezeichnung Optionswert
1 Lfd. Nr.
3 Sachkontonr.
17 Betrag
23 Globaler Dimensionscode 1
24 Globaler Dimensionscode 2
481 Shortcutdimensionscode 3
482 Shortcutdimensionscode 4
483 Shortcutdimensionscode 5
484 Shortcutdimensionscode 6
485 Shortcutdimensionscode 7
486 Shortcutdimensionscode 8

REQUEST

{
   "tableNo":  "17",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "24",
         "filter":  true,
         "value":  "WEG SCHW."
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|3|17|23|24|481|482|483|484|485|486"
      }
   ]
}

RESPONSE (Auszug)

{
  "Data": [
      {
         "Entry No.": "2559",
         "G/L Account No.": "608076",
         "Amount": "-50",
         "Global Dimension 1 Code": "OBJ001",
         "Global Dimension 2 Code": "WEG SCHW.",
         "Shortcut Dimension 3 Code": "",
         "Shortcut Dimension 4 Code": "",
         "Shortcut Dimension 5 Code": "",
         "Shortcut Dimension 6 Code": "",
         "Shortcut Dimension 7 Code": "",
         "Shortcut Dimension 8 Code": ""
      },
      {
         "Entry No.": "2560",
         "G/L Account No.": "200010",
         "Amount": "50",
         "Global Dimension 1 Code": "OBJ001",
         "Global Dimension 2 Code": "WEG SCHW.",
         "Shortcut Dimension 3 Code": "",
         "Shortcut Dimension 4 Code": "",
         "Shortcut Dimension 5 Code": "",
         "Shortcut Dimension 6 Code": "",
         "Shortcut Dimension 7 Code": "",
         "Shortcut Dimension 8 Code": ""
      },
      ...
   ]
}

Auslesen möglicher Dimensionswerte

In diesem Beispiel werden die möglichen Dimensionswerte für die Dimension ABTEILUNG ausgelesen.

Feldnummer Feldbezeichnung Optionswert
1 Dimensionscode
2 Code
3 Name
4 Dimensionswertart Standard = 0
6 Gesperrt Nein = 0

REQUEST

{
   "tableNo":  "349",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "ABTEILUNG"
      },
      {
         "fieldNo":  "4",
         "filter":  true,
         "value":  "0"
      },
      {
         "fieldNo":  "6",
         "filter":  true,
         "value":  "0"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "1|2|3"
      }
   ]
}

RESPONSE (Auszug)

{
   "Data":  [
      {
         "Dimension Code":  "ABTEILUNG",
         "Code":  "100",
         "Name":  "Bau allgemein"
      },
      {
         "Dimension Code":  "ABTEILUNG",
         "Code":  "110",
         "Name":  "Planung"
      },
      {
         "Dimension Code":  "ABTEILUNG",
         "Code":  "120",
         "Name":  "Bauleitung"
      },

      ...
   ]
}

Dimensionswert schreiben

In diesem Beispiel wird der Dimensionswert für die Dimension ABTEILUNG in einer Einkaufsrechnungszeile aktualisiert.

Feldnummer Feldbezeichnung Optionswert
1 Belegart Rechnung = 2
3 Belegnr.
4 Zeilennr.
480 Dimensionssatz-ID

REQUEST

{
   "tableNo":  "39",
   "operation":  "UPDATE",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "2"
      },
      {
         "fieldNo":  "3",
         "filter":  true,
         "value":  "R22-05048"
      },
      {
         "fieldNo":  "4",
         "filter":  true,
         "value":  "10000"
      },
      {
         "fieldNo":  "480",
         "dimensionSetId":  true,
         "dimensionSetIdMutation": "1"
      },
      {
         "dimension":  true,
         "dimensionCode":  "ABTEILUNG",
         "value":  "100"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "3|480"
      }
   ]
}

RESPONSE

{
   "Data":  [
      {
         "Document No.":  "R22-05048",
         "Dimension Set ID":  "22481"
      }
   ]
}

Tabellen- und Feldinformationen

Über die Universal Rest API ist es auch möglich, die Tabellen und Feldinformationen aus den System-Tabellen AllObjWithCaption und Field auszulesen.

Tabelleninformationen

Die System-Tabelle AllObjWithCaption beinhaltet Informationen zu allen in der Business Central-Instanz vorhandenen Programmobjekte (Tabellen, Seiten, Berichte, …). Für die Arbeit mit der Universal Rest API sind für allem die Informationen zu den vorhandenen Tabellen relevant.

Feldnummer Feldbezeichnung Optionswert
1 Objekttyp Tabelle = 1
3 Objekt-ID
4 Objektname

REQUEST

{
   "tableNo":  "2000000058",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "1"
      },
      {
         "subOperation":  "DONE",
         "responseFields":  "3|4"
      }
   ]
}

RESPONSE (Auszug)

{
   "Data": [
      {
         "Object ID":  "3",
         "Object Name":  "Payment Terms"
      },
      {
         "Object ID":  "4",
         "Object Name":  "Currency"
      },
      {
         "Object ID":  "5",
         "Object Name":  "Finance Charge Terms"
      },
      ...
   ]
}

Feldinformationen

Die System-Tabelle Field beinhaltet Informationen zu allen in der Business Central-Instanz vorhandenen Tabellenfeldern.

Feldnummer Feldbezeichnung Optionswert
1 TableNo Tabelle = 1
2 Nr.
3 TableName
4 FieldName
5 Typ
6 Länge
7 Klasse
8 Aktiviert Ja = 1
9 Typname
20 Feldbezeichnung
23 SQLDataType
24 OptionString
28 IsPartOfPrimaryKey

REQUEST

{
   "tableNo":  "2000000041",
   "operation":  "READ",
   "runTrigger":  true,
   "setupCode":  "",
   "entitySet":  [
      {
         "fieldNo":  "1",
         "filter":  true,
         "value":  "5052250"
      },
      {
         "fieldNo":  "8",
         "filter":  true,
         "value":  "1"
      },
      {
         "subOperation": "DONE",
         "responseFields": "1|2|3|4|5|6|7|9|20|23|24|28"
      }
   ]
}

RESPONSE (Auszug)

{
   "Data":  [
      {
         "TableNo":  "5052250",
         "No.":  "1",
         "TableName":  "RelC Object",
         "FieldName":  "Owner / Tenant",
         "Type":  "35583",
         "Len":  "4",
         "Class":  "0",
         "Type Name":  "Option",
         "Field Caption":  "Owner / Tenant",
         "SQLDataType":  "0",
         "OptionString":  "None,Owner,Tenant",
         "IsPartOfPrimaryKey":  "true"
      },
      {
         "TableNo":  "5052250",
         "No.":  "2",
         "TableName":  "RelC Object",
         "FieldName":  "No.",
         "Type":  "31489",
         "Len":  "20",
         "Class":  "0",
         "Type Name":  "Code20",
         "Field Caption":  "No.",
         "SQLDataType":  "0",
         "OptionString":  "",
         "IsPartOfPrimaryKey":  "true"
      },
      ...
   ]
}
Zuletzt geändert April 2, 2025: Merged PR 4864: doku-projektentwicklung (a9ad810)