# Einstieg

# Überblick und Aufruf

Der **TableService-Definitionseditor** ist die Oberfläche für die Custom Properties
`TS_Definition_*` und `TS_ViewDefinition_*`. Aus ihnen liest der TableServiceRouter,
welche Tabellen und Sichten er über die API anbietet, welche Spalten er liefert und
welche davon geschrieben werden dürfen.

## Aufruf

Im Bereich **Stammdaten** stehen dafür zwei Ordner:

| Ordner | Was in der Seitenleiste steht |
|---|---|
| **Stammdaten-Konfiguration** | die Definitionen der Stammdaten-Datenbank |
| **Stammdaten-Konfiguration (Custom)** | nur die eigenen Definitionen – die hier angelegten und die aus dem `Custom`-Ordner des TableService importierten |

Beide Ordner öffnen dieselbe Oberfläche und können dasselbe. Sie unterscheiden sich
allein darin, **welche** Definitionen in der Seitenleiste zur Auswahl stehen; in
*(Custom)* trägt jeder Eintrag den Zusatz *eigene*.

Welche Definitionen ein Ordner zeigt, ist am Ordner hinterlegt. Weitere Ordner – etwa
für eine andere Datenbank – richtet die Administration ein; der Editor selbst legt
einen solchen Ordner zu einer geöffneten Definition an, siehe
[Ordner und Outbar](/books/tableservice-konfiguration-neu/page/mehr-ordner-und-outbar).

Was ein Ordner anzeigt, ist dabei eine **Anzeigeentscheidung, keine Befugnis**. Was
geschrieben werden darf, entscheidet in jedem Fall das Portalskript – siehe
[Geschützte Datenbanken](/books/tableservice-konfiguration-neu/page/geschutzte-datenbanken).

## Aufbau der Oberfläche

* **Kopfleiste** – `Neu`, `SQL Tabelle anlegen`, `SQL Tabelle ändern`, `Aktualisieren`
  und das Menü `Mehr` mit den Werkzeugen für Squeeze, den Tabellenaufbau und JSON.
* **Seitenleiste** – alle sichtbaren Definitionen, nach Tabellen und Views gruppiert,
  mit Filterfeld und Art-Auswahl.
* **Hauptbereich** – die geöffnete Definition in drei Reitern:
  [Allgemein](/books/tableservice-konfiguration-neu/page/reiter-allgemein), [Spalten](/books/tableservice-konfiguration-neu/page/reiter-spalten) und
  [JSON](/books/tableservice-konfiguration-neu/page/reiter-json); darüber `Speichern`, `Verwerfen` und das Menü `Mehr` der
  Definition.
* **Statuszeile** ganz unten – die Rückmeldung zur letzten Aktion. Grün heißt erledigt,
  gelb ein Hinweis, rot ein Fehler.

## Backend

Jeder lesende und schreibende Aufruf geht an das Portalskript
`DEXPRO__TableServiceDefinitionEditor`. Dort fällt auch die Entscheidung, was
geschrieben werden darf – siehe
[Geschützte Datenbanken](/books/tableservice-konfiguration-neu/page/geschutzte-datenbanken).

# Typischer Ablauf: von der Tabelle bis zum Ordner

Der Weg, den eine neue eigene Tabelle im Regelfall nimmt. Jeder Schritt hat eine eigene
Seite mit den Einzelheiten.

1. **Tabelle anlegen** – [SQL Tabelle anlegen](/books/tableservice-konfiguration-neu/page/sql-tabelle-anlegen).
   Verbindung wählen, Namen vergeben, Spalten eintragen. `ID` und `Licence` kommen von
   selbst dazu. Mit dem Haken *Definition dazu anlegen* führt der Dialog gleich zu
   Schritt 2.
2. **Definition anlegen** – [Definitionen verwalten](/books/tableservice-konfiguration-neu/page/definitionen-anlegen-speichern-und-loschen).
   Art, Name, Verbindung, Tabelle.
3. **Spalten deklarieren** – [Reiter „Spalten“](/books/tableservice-konfiguration-neu/page/reiter-spalten).
   **+ aus Tabelle …** übernimmt die Spalten der SQL-Tabelle samt Vorschlägen für Typ,
   Schlüssel- und Mandantenspalte. Was hier nicht steht, liefert die API nicht.
4. **Feinschliff** – [Reiter „Allgemein“](/books/tableservice-konfiguration-neu/page/reiter-allgemein) für Sortierung und
   Filter, im Reiter *Spalten* die Beschriftungen und Wertelisten.
5. **Meldungen lesen** – [Prüfungen und Meldungen](/books/tableservice-konfiguration-neu/page/prufungen-und-meldungen).
   Fehlt der Primärschlüssel oder eine NOT-NULL-Spalte, steht das dort, bevor es im
   Client auffällt.
6. **Speichern.** Danach ist die Definition über die API erreichbar.
7. **Ordner anlegen** – [Ordner und Outbar](/books/tableservice-konfiguration-neu/page/mehr-ordner-und-outbar), damit die Tabelle
   im Client erscheint. Danach ab- und wieder anmelden.

Dazu kommen die Wege, die man später braucht:

* Eine Spalte fehlt → [SQL Tabelle ändern](/books/tableservice-konfiguration-neu/page/sql-tabelle-andern); der Dialog zieht
  die betroffenen Definitionen gleich nach.
* Der Stand soll zum Kunden →
  [Alle SQL-Tabellen exportieren / importieren](/books/tableservice-konfiguration-neu/page/mehr-alle-sql-tabellen-exportieren-sql-tabellen-importieren) für
  den Tabellenaufbau und
  [Definitionen importieren und exportieren](/books/tableservice-konfiguration-neu/page/definitionen-importieren-und-exportieren) für die
  Definitionen.
* Die Tabelle soll nach Squeeze →
  [Tabelle in Squeeze Stammdaten hinzufügen](/books/tableservice-konfiguration-neu/page/mehr-tabelle-in-squeeze-stammdaten-hinzufugen), oder
  umgekehrt
  [Squeeze-Stammdaten in Tabelle laden](/books/tableservice-konfiguration-neu/page/mehr-squeeze-stammdaten-in-tabelle-laden).