Lade...
 

Attribute

Attribute/Sachmerkmale

  1. Warum Attribute?
  2. Beschreibung
    2.1 Voreingestellte Attribute
    2.2 Formelattribute
    2.3 Bedingte Attribute
  3. Anlegen/Benutzung von Attributen
    3.1 Voreingestellte Attribute
    3.2 Formelattribute
    3.3 Bedingte Attribute
    3.4 Merkmalstabellen
  4. Zuweisen von Attributen
  5. Strukturierung von Attributen
  6. Stufenweise und bedingte Ausprägung von Attributen
  7. Bearbeitung von Attributen in Stamm- und Bewegungsdaten
  8. Benutzung von Vergleichsoperatoren
  9. Attribute mit Steuerfunktionen
reel01.gif Attribute

1. Warum Attribute?

Attribute haben in ClassiX® eine zentrale Bedeutung, da sie es ermöglichen, ein Objekt (Sachobjekt, Personenobjekte o.ä.) in allen seinen Merkmalen zu beschreiben, ohne dass Änderungen am Quellcode vorgenommen werden müssen.

Beispiel:  Ziel ist es, einen Verkaufsartikel durch seine Farbe zu beschreiben.

  • Die Lösung herkömmlicher Software besteht darin, in einer relationalen Datenbank ein weiteres Datenfeld für die Farbe einzufügen und die Editiermaske 'Verkaufsteile' um eine Eingabemöglichkeit für Farben zu erweitern. Dies kann man nur realisieren, in dem man Änderungen sowohl im Quellcode als auch in der Datenbank vornimmt. Um Redundanz zu vermeiden müsste man sogar eine neue Stammdatentabelle (1. Normalform), mit allen möglichen Farben erzeugen.

  • Die ClassiX®-Lösung besteht aus den so genannten Attributen. So besitzt zum Beispiel jedes reale Objekt (Teile, Anlagen, etc.) ein Attribute Set, in das man Attribute sprich Merkmale einfügen/anlegen kann. Diese Attributobjekte kann jeder Anwender in der Datenbank anlegen/einfügen und sie einem Objekt zuweisen. Ein weiterer Vorteil ist, dass keine Änderungen an der Benutzeroberfläche vorgenommen werden müssen. Soll zum Beispiel ein Verkaufsteil durch seine Farbe und ein Ersatzteil durch seine Größe unterschieden werden, so kann das gleiche Editierfenster benutzt werden. Attribute können in ClassiX® auch eine Tabelle enthalten, somit werden die Daten automatisch und ohne großen Aufwand in die erste Normalform gebracht. 

2. Beschreibung

2.1 Voreingestelltes Attribut

Ein Voreingestelltes Attribut ermöglicht es, einem dynamischen Datenfeld einen beschreibenden Namen, weitere erklärende Daten oder eine Voreinstellung mitzugeben.

Beispiel: Ein Teppichverkäufer mit einer ClassiX® Software möchte seine Teppiche durch verschiedene Merkmale beschreiben. Zum Beispiel sollen alle Teppiche durch ihren Preis beschrieben werden. Er fügt also in allen Stammdaten ein Sachmerkmal ein, in dem er anschließend den Preis angeben kann. Wenn jetzt einzelne Teppiche durch ihre Farbe (es soll keine freie Eingabe erfolgen, sondern nur Farben aus einer Farbtabelle zur Verfügung stehen) beschrieben werden sollen, kann er dies über ein Attribut tun, welches zum Beispiel ein Datenfeld vom Typ 'String' beschreibt. Dieses Attribut wird dann mit einer Tabelle mit den verschiedenen Farben versehen.

Achtung:
Attributwerte werden in den Formeln nur bis maximal 100 Zeichen unterstützt!

2.2 Formelattribute

Wie der Name schon sagt, dienen Formelattribute dem Füllen eines Datenfeldes durch ein Formel, beziehungsweise durch den Wert, den die Formel errechnet. Konstanten können hierbei direkt in die Formel mit eingegeben werden während die variablen Werte wiederum Slot-Attribute sind.

Beispiel: Der Teppichverkäufer will seine Teppiche nun auch durch die Größe beschreiben, wobei die Teppiche die Eigenschaft haben, dass alle Teppiche die gleiche Breite (4m) haben und sich nur durch die Länge unterscheiden. Hierbei kommen dem Teppichverkäufer die Formelattribute zu Gunsten. Er legt sich also ein Attribut mit der Formel '4m * Länge' an. Die Länge ist wiederum ein Voreingestelltes Attribute, wobei sich beim Ändern des Wertes automatisch auch der Wert bzw. das Ergebnis des Formelattributes ändert.

2.3 Bedingte Attribute

Bedingte Attribute können eine Tabelle enthalte welche ein "wenn - dann" Beziehung beschreibt.

Beispiel: Die Teppiche des Teppichverkäufer sollen je Farbe einen eigenen Preis bekommen. Wir legen nun ein Bedingtes Sachmerkmal an und füllen die Tabelle mit den Daten, die wir für die Preisberechnung brauchen. (z. B.: rot -> 10 € ; blau -> 20 € ; gelb -> 30€ ) Außerdem setzen wir unser gerade erzeugtes Sachmerkmal in Abhängigkeit des Sachmerkmales für die Farbe. (siehe Bsp. Voreingestelltes Attribut) Bei einer Änderung des Sachmerkmales für die Farbe, wird nun automatisch der zugehörige Wert der Bedingungstabelle zurückgegeben.

3. Anlegen/Benutzung von Attributen

attrib3.gif
Der erste Schritt beim Anlegen eines Attributes ist erst einmal sehr allgemein, das heißt egal ob ich ein Voreingestelltes, ein Bedingtes oder ein Formelattribute anlegen möchte, werde ich immer als erstes ein Datenfeld auswählen müssen. Spätestens an dieser Stelle sollte man sich überlegen wofür man das Attribut benutzen möchte, da verschiedene Datenfelder mit verschiedenen Typen existieren. Diese verschiedenen Typen haben eine großen Einfluss darauf, wie später z.B. mit Vergleichsoperatoren gearbeitet werden kann. Möchte ich zum Beispiel das Attribut nutzen, um ein Objekt durch einen Text zu beschreiben (z.B.: Kommentare o.ä.), dann sollte man ein Datenfeld vom Typ CX_STRING aus wählen. Möchte ich einen Wert angeben, wird man sich normalerweise für ein CX_VALUE Datenfeld entscheiden u.s.w. Anschließend kann man einen Bearbeiter und das Datum angeben, an dem das Attribut angelegt oder zum letzten mal bearbeitet wurde. Die Datenfelder 'Beschreibung' und 'Text intern' können genutzt werden, um zu einem späteren Zeitpunkt noch zu wissen, welchem Zweck das Attribute dient.
Über die Checkbox 'Wertprüfung' ist es möglich Bedingungen für den Attributwert zu aktivieren und im erscheinenden Feld festzulegen. Im Beispielbild wurde festgelegt, dass der Wert unseres Attributes (technical.A_SPALT) nicht kleiner als 10 mm sein darf. Erfüllt der eingegebene Wert nicht die in der Wertprüfung festgelegten Beschränkungen, so erscheint ein entsprechendes Dialogfenster, welches den Anwender über seinen Eingabefehler informiert.

3.1 Voreingestelltes Attribut

attrib4.gif

Bei Voreingestellten Attributen kann man den Wert jetzt in das Feld Voreinstellung eintragen, oder man legt über Bearbeiten - Voreinstellung - Eigene Tabelle erzeugen eine Tabelle an, welche man durch den Editier-Button bearbeiten kann. Fügt man das Attribut jetzt in einem Objekt ein, so übernimmt es den Voreingestellten Wert oder man kann gegebenenfalls einen Wert aus der Tabelle auswählen. Setzt man die Checkbox 'Ausschließlich', so kann man später ausschließlich die Werte der Tabelle übernehmen.

3.2 Formelattribute

Beim Anlegen von Formelattributen beginnt man wie bisher, bis man zum Eingabefenster von Formeln kommt.

attrfo4.gif

Die festen Werte der Formel können direkt angegeben werden, während man bei den variablen Werten die Bezeichnung eines Slotattributes angibt, welches den gewünschten Wert enthält.
Folgende Operanden stehen dem Benutzer zur Verfügung:

Arithmetische Operatoren: *    /    +    -
Vergleichsoperatoren: <    >    <=   >=    !=
Logische Operatoren: &    |
Zuweisung: := 
Separator: ;
Bedingter Ausdruck: if ... else

Über den Menüpunkt Bearbeiten kann man zwischen den Formeltypen 'Individuell' und 'Allgemein' wählen. Mit 'Individuell' (Standardeinstellung) wird im errechneten Sachmerkmal eine eigene Formel hinterlegt, mit 'Allgemein' wird auf eine bereits im System hinterlegte Berechnungsformel Bezug genommen. Der letztere Fall kann dann sinnvoll sein, wenn einige errechnete Sachmerkmale z.B. andere Namen, Steuerungen oder Gültigkeiten aufweisen sollen, die Formel aber immer die selbe sein soll.

3.3 Bedingte Attribute

Beim Anlegen von bedingten Attributen beginnt man wie bisher,  unter 'Wertprüfung' stehen neue Optionen und eine bedingte Tabelle zur Verfügung.

attrcb5.gif

Ergebnis vorgeschrieben Die bedingte Tabelle muss ein Ergebnis liefern
Abbruch, wenn kein Ergebnis gefunden Sollte keine der Bedingungen der Tabelle zutreffen, wird eine Fehlermeldung ausgegeben. Ein Setzen dieser Auswahl setzt automatisch auch das Feld "Ergebnis vorgeschrieben"
Nicht ermittelbare/berechenbare Bedingung übergehen Werden Variablen in einer Bedingungen im System automatisch nicht gefunden, so wird keine Meldung ausgegeben, sondern diese Bedingung wird übergangen. Dieses bedeutet ebenfalls, dass nach solchen Variablen auch nicht interaktiv abgefragt wird.

Mittels der Knöpfe ('Einfügen', 'Duplizieren', 'Löschen') oberhalb der Tabelle können die einzelnen Zeilen bearbeitet werden.
Das Bearbeiten der Spalten erfolgt über das Kontextmenü (Rechtsklick) innerhalb der Tabelle. Um bestimmende Größen (Variablen) in den Bedingungen der Einträge der Tabelle nicht immer aufs Neue schreiben zu müssen,  können diese als eigenständige Spalten der Tabelle herausgezogen werden. Bei "Einfügen Spalten" erhält man ein Selektionsfenster voreingestellter Sachmerkmale, mit "Bearbeiten Spalten" kann man direkt die Namen der Variablen der gewünschten Spalten angeben.

3.4 Merkmalstabellen

Merkmalstabellen erleichtern die Arbeit mit Attributen, wenn man immer wieder gleiche 'Gruppen' von Attributen einem Attribute Set zuweisen muss. So lassen sich in einer Merkmalstabelle beliebige Attribute auflisten, so dass man nur noch die Merkmalstabelle einfügen brauch.

atseto6.gif

Über den Menüpunkt Bearbeiten - Sachmerkmale bzw. über das Kontextmenü lassen sich die einzelnen Attribute einfügen, anlegen, bearbeiten und löschen.

 

4. Zuweisen von Attributen

Sie können globale global.png Attribute einfügen, ändern oder löschen. Zusätzlich haben Sie die Möglichkeit neue lokale local.png Attribute anzulegen, die dann nur in diesem Objekt gültig sind.

attrib6.gif

Die Attributdaten können per Doppelklick bearbeitet werden.
Ein Rechtsklick auf ein lokal angelegtes Attribut ruft die Eingabemaske auf.

 

5. Strukturierung von Attributen

In einigen Belegen und Stammdaten kann die Liste der Attribute oft sehr umfangreich sein. Dies erschwert die Übersichtlichkeit und somit die Pflege der Daten. Aus diesem Grund können Attribute strukturiert werden, indem inhaltlich ähnliche Attribute zu Blöcken zusammengefasst werden. So können Beispielsweise im Auftrag vertriebliche und technische Attribute unterteilt werden.

merkmalstabelle.JPG

Die Strukturierung der Attribute beginnt in den Stammdaten durch die Merkmalstabellen. Zusammengehörende Attribute werden hier in einer Merkmalstabelle organisiert. In diesem Beispiel werden so die Attribute Länge, Breite und Höhe dem Knoten Volumen zugeordnet. Die Merkmalstabelle bestimmt auch in welcher Struktur die Attribute verwendet werden sollen. Hier gibt es die drei Möglichkeiten des expandierten, komprimierten oder strukturierten Einfügens.

Expandiert Einfügen heißt, dass die Attribute der Merkmalstabelle direkt in die Beleg- oder Stammdaten eingefügt werden. Die Merkmalstabelle als Kopf der Attribute geht hierbei verloren. Beim komprimierten Einfügen wird nur die Merkmalstabelle eingefügt. Die Attribute der Merkmalstabelle sind dann Beispielsweise im Beleg bekannt, können aber nicht editiert werden. Somit macht diese Art der Verwendung in Belegen nur Sinn, wenn Konstanten für Berechnungen benötigt werden. Strukturiert Einfügen bedeutet, dass die Struktur, welche über die Merkmalstabellen im Stamm gebildet wird, bei der Verwendung in Belegen oder den Stammdaten beibehalten wird. So wird auch die Merkmalstabelle als Knoten übernommen. In der Attributliste der jeweiligen Editiermasken werden nur die Knoten angezeigt, wodurch die Listen übersichtlicher wird. Per Doppelklick auf den Knoten, werden dann auch die zum Knoten gehörenden Attribute angelistet und können editiert werden. Durch einen weiteren Doppelklick wird der Knoten wieder zusammengeklappt.

Die Vorgabe, wie die Merkmalstabellen eingefügt werden sollen, kann bereits in den Stammdaten durch die Checkboxen bestimmt werden. Wird hier nur eine Checkbox ausgewählt, so gilt diese Regel beim Einfügen der Merkmalstabelle direkt. Werden mehrere oder keine Vorgaben definiert, so kann der Benutzer beim Einfügen sich für eine der zugelassenen Optionen entscheiden. Keine gesetzte Option wird so behandelt, als ob alle Optionen gesetzt sind.

Merkmalstabellen können auch weitere Merkmalstabelle enthalten. Auf diese Weise entsteht nicht nur eine sondern mehrere Hierarchien. Ist dies der Fall, so sollte für jeden Knoten die Art des Einfügens vorgegeben werden, da sich der Benutzer bei der Verwendung sonst durch zahlreiche Abfragen hangelt.

 

6. Stufenweise und bedingte Ausprägung von Attributen

Attribut-Knoten ermöglichen die stufenweise und bedingte Ausprägung von Attributen. Dies ist vor allem in der Produktkonfiguration (dem Ausprägen von Variantenteilen) sinnvoll, kann aber auch bei der Erfassung beliebiger Formular- (Beleg-) oder Stammdaten nützlich sein.

Anwendungsbeispiel für die stufenweise Ausprägung

Ein Anwendungsbeispiel für die stufenweise Ausprägung von Attributen das Aufteilen einer komplexen Wertetabelle eines Attributs. Nehmen wir an es gibt ein Attribut "MATERIAL". Hinter diesem Attribut verbirgt sich eine sehr große Auswahl verschiedenster Materialien (verschiedene Stahl, Aluminium- und Kunststoffarten sowie zahlreicher Legierungen). Diese Tabelle kann sehr lang werden, so dass die Auswahl des richtigen Materials länger dauern könnte.

Als Lösung dieses Problems kann man das Attribut "MATERIAL" mehrfach anlegen und jeweils die Ergebnistabelle einschränken. So könnte mein ein Attribut für Stahl, Aluminium etc. anlegen und als Ergebnisstabelle nur die dazugehörigen Auswahlmöglichkeiten anbieten. Zudem müsste man ein neues Attribut "MATERIAL_ART" anlegen mit der Auswahltabelle: Stahl, Aluminium, Kunststoff und Legierungen. Hinter diesem Attribut wird ein Attribut-Knoten hinterlegt, welcher abhängig von dem gesetzten Wert auf das entsprechende Attribut "MATERIAL" verweist.

Beispielsweise im VK-Artikel wird dann das Attribut "MATERIAL_ART" statt der komplexen Tabelle "MATERIAL" eingefügt. Im Auftrag wählt man dann zunächst "MATERIAL_ART" aus. Das entsprechende Attribut "MATERIAL" wird dann automatisch hinzugefügt und in der zweiten Stufe kann dieser Wert dann gesetzt werden.

Anwendungsbeispiel für die bedingte stufenweise Ausprägung

Die bedingten Ausprägung verhält sich ähnlich wie das zuvor genannte Anwendungsbeispiel, ist jedoch ein wenig komplexer. Im ersten Beispiel führte die Ausprägung eines Attributs zu anderen jeweils gleichnamigen Attributen mit gefilterten Ergebnistabellen. Über die Attribut-Knoten kann aber auch eine umfangreicher Produktkonfiguration durchgeführt werden.

Stellen wir uns die Konfiguration eines Autos vor. Ein Auto kann durch sehr viele Parameter definiert werden. Diese Parameter können aber in einer starken Abhängigkeit zueinander stehen. So kann nach der Auswahl 2- oder 4-türig die Frage nach elektrischen Fensterhebern hinten obsolet sein. Gleiches gilt wenn ein als ein Parameter die Serie gewählt wird und diverse Extras dann schon inklusive sind.

Auch diese Art der mehrstufigen bedingten Konfiguration ist über die Attribut-Knoten möglich.

 

7. Bearbeitung von Attributen in Stamm- und Bewegungsdaten

Die Gruppe zur Bearbeitung von Attributen an Stamm- und Bewegungsdaten sieht in der Regel wie folgt aus.

edit_attributes.JPG

Globale Attribute werden durch den Globus dargestellt, lokale Attribute werden mit dem Häuschen gekennzeichnet. Durch einen Doppelklick auf eines der Attribute können die Werte gepflegt werden.

Hinter den lila dargestellten Zeilen befinden sicht Attribute, welche strukturiert eingefügt wurden. Diese bedeutet, dass diverse Attribute zu einem Attributknoten zusammengefasst wurden (siehe Strukturierung von Attributen). Durch den Doppelklick auf die lila Zeile wird der Knoten aufgeklappt und die Attribute dieses Knotens werden angezeigt. Durch einen weiteren Doppelklick wird der Knoten wieder zugeklappt.

Der Button "Bearbeiten" führt bei einem selektierten ...
... globalen Attribut zum Editieren des Attributwertes in der Liste
... lokalen Attribut zur Editieren des Attributs in der Bearbeitungsmaske
... lila Attributknoten zum Bearbeiten der Knotenbezeichnung in der Liste

Über den Button "Einfügen" kann die Liste der Attribute erweitert werden. Der Normalfall ist, dass ein Stammattribut ausgewählt und eingefügt wird. Hierbei gibt es die Optionen "Am Ende", "Vor selektierter Position" und "Hinter selektierter Position." Zudem kann auch ein lokales Attribut angelegt werden. Hierbei muss über das Menü der Typ des Attributs ("Voreinstellbares", "Errechnetes", "Bedingtes") bestimmt werden. Über das Menü "Neu Strukturebene einfügen" kann ein Attributknoten manuell angelegt werden. In diesen können dann Attribute über die Pfeile hoch/runter verschoben werden.

Die Pfeiltasten übernehmen die Funktion die Reihenfolge der Attribute zu bestimmen. Sie können aber auch Attribut in einen Attributknoten verschieben oder es wieder heraus holen.

Ein Attribut kann in einen Knoten verschoben werden, ...
... wenn die Zeile vor dem selektierten Attribut ein Knoten ist und die Pfeiltaste nach oben gedrückt wird.
... wenn die Zeile hinter dem selektierten Attribut ein Knoten ist und die Pfeiltaste nach untern gedrückt wird.

Ein Attribut kann aus einem Knoten heraus in die obere Ebene verschoben werden, ...
... wenn die selektierte Zeile die erste der Struktur ist und die Pfeiltaste nach oben gedrückt wird.
... wenn die selektierte Zeile die letzte der Struktur ist und die Pfeiltaste nach unten gedrückt wird.

Bevor Attribute in eine Ebene der aus ihr heraus verschoben werden wird der Benutzer gefragt, ob er diese Aktion wirklich so ausführen möchte.

 

8. Benutzung von Vergleichsoperatoren

Schon vor dem Anlegen eines neuen Sachmerkmals mit einer anhängenden Tabelle muss man sich im Klaren darüber sein, wie damit später gearbeitet werden soll und kann. Dazu muss man wissen, dass intern die Sachmerkmale verschiedene Typen haben können, z.B. STRING, ENUMCHAR, etc.

Bei den Sachmerkmalen die als Typ STRING bzw. mit einem Datenfeld des Typs STRING angelegt werden, wird intern direkt der vom Benutzer eingegebene Wert (Text) gehalten und deshalb auch für Vergleiche herangezogen.

Legt man aber zum Beispiel ein Sachmerkmal mit dem Typ ENUMCHAR an, so ist der interne Aufbau der anhängenden Tabelle ein anderer. Dort steht nicht mehr direkt der Wert (z.B. Text im Fall des Typs STRING), sondern in der internen Tabelle gibt es eine vom Anleger vorgegebene Durchnummerierung und für jeden der Einträge den nach außen hin zu zeigenden Wert, z.B. 1 -> Äpfel, 2 -> Birnen und 3 -> Bananen.

Bei Vergleichsoperationen wird in allen Fällen von z.B. ENUMCHAR immer der interne Wert herangezogen, da man ja sozusagen nicht Äpfel mit Birnen über "größer" oder "kleiner" vergleichen kann. Auf "gleich" kann man aber natürlich ohne Probleme testen, nur eben bei nicht-"gleich" Vergleichen muss man sehr vorsichtig sein.

Das gilt besonders für die Fälle, in denen man z.B. folgende Tabelle angelegt hat: 1 -> "100", 2 -> "200" und 3 -> "150". Dort kann man nicht einfach den Vergleich machen "kleiner oder gleich 200", da die "200" erst in den internen Wert 2 umgewandelt wird, und bei den internen Werten sind nur 1 und 2 "kleiner oder gleich 2", so dass der Eintrag 3 -> "150" nicht ausgegeben wird.

 

9. Attribute mit Steuerfunktionen

Die folgenden Attribute werden im ClassiX System intern interpretiert und steuern gewisse Funktionalitäten im System

Attribut Funktion in ClassiX
suppliedID Ist in einem Auftrag das Sachmerkmal suppliedID mit einer gültigen Lieferantennummer gefüllt und hat das Bestellteil keinen A-Lieferanten, so wird auf der Bedarfsanforderung und auf der Bestellung ein Lieferant mit dieser Nummer gezogen. In diesem Fall wird ebenfalls der auf der Auftragsposition eingegebene Einstandspreis als Bestellpreis benutzt
wages.primeOverheadRate Zentral abgelegter Gemeinkostenzuschlag (GMK) für Lohn in Prozent
material.primeOverheadRate Zentral abgelegter Gemeinkostenzuschlag (GMK) für Material in Prozent
   
lockEditing Bearbeitung des Objekts (Teil/Firma) ist gesperrt
   
lockForLink Teil ist für neu zu erstellende Bewegungsdaten gesperrt (Stücklistenauflösung bricht ab, wenn es auf ein Teil mit einem Teile-Status stößt, der dieses Attribut mit dem Wert 1 hat)
passed.lockForLink Teil ist für neu zu erstellende Bewegungsdaten mit einer Warnmeldung (Stücklistenauflösung warnt, wenn es auf ein Teil mit einem Teile-Status stößt, der dieses Attribut mit dem Wert 1 hat)
suppressInList Dieses Attribut wird zum Verstecken von Objekten benutzt. Teile, die einem Status mit diesem Attribut und dem Wert 1 zugeordnet sind, werden in der Teilestammliste nicht gezeigt. 
lockForSiblings Teil kann nicht mehr als Austauschobjekt benutzt werden
   
length Länge (Berechnung bei Verpackungen)
width Breite (Berechnung bei Verpackungen)
height Höhe (Berechnung bei Verpackungen)
weight Gewicht

 

 

Funktionalität