Home Forum Nuclos Bedienung Sonstige Nutzung Referenzfelder vs. Nachschlagefelder

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)
  • Autor
    Beiträge
  • #7643
    Matthias KÖPER
    Teilnehmer

    Hallo,

    ich mache gerade mein erstes Nuclos-Projekt und frage mich gerade, welche Sorte Felder ich am besten verwende.

    Ich brauche für Aufträge und Auftragspositionen eigentlich Felder, die sich im Nachhinein nicht einfach ändern. Ich denke z.B. an die Umsatzsteuer. Wenn sich der Umsatzsteuersatz einmal ändern sollte, möchte ich natürlich in den alten Aufträgen die alten Steuersätze behalten. Dies spricht für Nachschlagefelder.

    Allerdings fehlen mir bei den Nachschlagefeldern die Referenzen und wenn ich damit rechnen möchte, muss ich immer erst den String in eine Zahl umwandeln. Hier sind Referenzfelder eindeutig im Vorteil.

    Für Nachschlagefelder spricht hingegen, dass man die entsprechenden Datensätze der Stammdaten auch irgendwann mal löschen kann. Wenn sich z.B. die Währungen einmal ändern sollten, sollen veraltete Währungen natürlich nicht mehr zur Auswahl stehen, in den alten Aufträgen aber natürlich erhalten bleiben.

    Wie löst man das Problem am besten?

    Viele Grüße
    mkoeper

    #7647
    Frank Pavlic
    Teilnehmer

    Eine schöne Zusammenfassung, alles richtig soweit. Referenzierte Datensätze zu löschen zerstört die Datenintegrität, wenn nicht vorher die Daten in eine Art Archivtabelle ausgelagert wurden und dabei die Referenzfelder aufgelöst werden, d.h. die Werte in der Archivtabelle gespeichert werden.

    Es kommt letztendlich darauf an, ob Du die Referenzen benötigst oder nur die Werte und vor allem wie Euer Löschverhalten ist ;-). Wenn das Nachschlagefeld nur eine Zahl enthält, dann ist ja ein new Integer(feldwert) oder new BigDecimal(feldwert) kein wirkliches Problem, wenn damit gerechnet werden muss. Das hast Du ja bereits selbst erläutert.

    Deine Frage ist eher von strategischer Natur und das musst Du eben mit dem/eigenen Unternehmen abklären.

    Wir löschen z.B. nichts, Prinzip „Datenmessi“ 😉

    Gruß
    Frank

    #7649
    Markus Glitzner
    Teilnehmer

    Referenzen können nicht gelöscht werden, solange es Abhängigkeiten gibt. Für neue MwSt-Sätze legst du also einfach eine neue Referenz an.

    Ich hatte Anfangs ähnliche Überlegungen wie du bin aber mittlerweile dazu übergegangen Daten teilweise redundant zu speichern, einfach aus Performance Gründen und es ist in vielen Situationen einfacher, wenn alle Daten, die zusammengehören in der selben Tabelle sind.

    Bei der MwSt hab ich mir den Ansatz von Navison abgeschaut. Ich hab eine Entität für MwSt-Gruppen, die ich im Auftrag, Rechnung etc. als Referenz einbinde und bei der Auswahl übernehme ich den MwSt-Satz in ein eigenes Zahlenfeld z.B. im Auftrag.

    Gruß
    Hugo

    #7654
    Matthias KÖPER
    Teilnehmer

    Hallo Hugo und Frank,

    mir fehlt noch ein wenig das Gefühl für den Langzeitbetrieb und ich möchte natürlich am Anfang keine Entscheidungen treffen, die ich später bereue…

    Wie funktioniert das in der Praxis mit mit dem Prinzip Datenmessie? Wie schafft man es, nicht im Müll unterzugehen oder sich über die Zeit Performance-Probleme einzuhandeln?
    Bleiben wir mal beim Umsatzsteuerbeispiel, das ist überschaubar:
    Meine Umsatzsteuerentität besteht im Moment nur aus zwei Feldern: Name(String) und Steuersatz(Double). Es gibt darin zur Zeit zwei Werte (von denen wir wahrscheinlich nur den einen brauchen werden, aber man weiß ja nie). „Voller Steuersatz“ – 19% und „Halber Steuersatz – 7%.
    Die Benutzer können bei Anlage eines Artikels den gewünschten Steuersatz aus einer Dropdown-Box auswählen. Dort stehen die beiden genannten Werte zur Verfügung. Jetzt stellt sich für mich schon die erste Frage:

    1. Meine Artikel haben alle ein Feld für die Umsatzsteuer. Ist es für den Artikel geschickter, ein Referenzfeld für die Umsatzsteuer anzulegen, dann könnte man den Steuersatz eines Tages einfach an einer Stelle ändern und fertig oder sollte man auch hier schon besser ein Nachschlagefeld nehmen und sich im Änderungsfall lieber die Mühe machen die Werte in allen Artikeln (z.B. per CSV-Import-Export) zu ändern?

    2. Wenn ich alle alten Datensätze behalte und nur einen neuen Datensatz (z.B. Volle Umsatzsteuer ab 1.1.2015 – 20%) anlege. Was macht ihr dann mit den alten Werten? Die sollen ja dem Benutzer nicht mehr als Wert in der Dropdown-Box angezeigt werden. Läuft das über ein Feld mit einem Ablaufdatum/Löschkennzeichen/Status?

    3. Verbietet ihr den Benutzern das Löschen und Ändern von Datensätzen? Gibt es einen Supervisor, der autorisiert ist, falsche Eingaben zu ändern?

    4. Hugo, kannst du mir den Navision-Ansatz noch einmal genauer erklären? Was verstehst du unter eine Mehrwertsteuergruppe?

    Ich hänge mal eine Screenshot von meiner aktuellen Auftragsposition an (diverse Attribute für Lager, Teillieferung etc. fehlen noch). Der Artikel ist im Moment ein Referenzfeld. Positionstyp, Einheit und Umsatzsteuersatz sind Nachschlagefelder, die bei Auswahl des Artikels automatisch befüllt werden. Wenn ich es mir recht überlege, hätte ich mir hier die Nachschlagefelder für die Umsatzsteuer und die Positionsart auch sparen können und einfache Datentypen wie String und Double nehmen können. Die Nachschlagefelder brauche ich ja nur dann, wenn der Benutzer manuell den Wert ändern können soll.
    Den Artikel kann ich glaube ich nicht in ein Nachschlagefeld umwandeln, weil ich sonst nicht mehr an die beim Artikel gepflegten Daten (Preise, Steuersatz etc.)komme.

    Beim drüber schreiben, wird mir einiges klarer, danke für’s Zuhören und Ratgeben!

    Viele Grüße
    mkoeper

    Attachments:
    #7655
    Markus Glitzner
    Teilnehmer

    Das ist jetzt natürlich Ansichtssache aber ich würde bei den Auftragspositionen kein Referenzfeld für die UST verwenden, sondern vom Artikel nachschlagen, wenn dieser ausgewählt wird.

    Ich muss auch öfters Preise etc. von 1000ten Artikel ändern, mach das aber immer direkt in der Datenbank. Ist für mich um ein Vielfaches einfacher und wesentlich flexibler als mit irgendwelchen Import- und Export „Herumgewürge“.

    Wenn du die Auswahl einschränken willst, musst du einen ValueListProvider (VLP) erstellen, was allerdings in bestimmten Fällen Performance kostet.

    In Navision heist es genaugenommen Mehrwertsteuer Buchungsgruppe
    http://books.google.at/books?id=vZWVpzEoEbAC&pg=PA210&lpg=PA210&dq=navision+mehrwertsteuer+buchungsgruppe&source=bl&ots=QB0okpHQ7z&sig=caM-Yl2O4wD2nTaexcZgl1T_4tE&hl=de&sa=X&ei=zj6MU_qtKKia7Qa9x4CgDQ&ved=0CG0Q6AEwBw#v=onepage&q=navision%20mehrwertsteuer%20buchungsgruppe&f=false

    #7658
    Ramin Goettlich
    Teilnehmer

    Hallo,

    Umsatzsteuer: Ich würde das Referenzfeld wählen, machen wir zumindest immer so. Umsatzsteuersätze in den Stammdaten (z.B. USt 19%) würde man in der Praxis ja nie ändern, sondern ggf. weitere Steuersätze später mal hinzufügen. In den alten Aufträgen bleiben ja dann die alten stehen.

    Oder, wie von hugo vorgeschlagen, den eigentlichen Satz (die Zahl) über eine Layoutregel vom Typ „Wert nachschlagen“ in den Auftrag übernehmen.

    Währungen würde man eher nie löschen, denke ich, vielleicht mal auf „Inaktiv“ setzen o.ä., und dann über einen ValueListProvider anhand dieses Aktiv-Flags einschränken für die Auswahl im Auftrag. Ebenso für die vielleicht zukünftig mal nicht mehr aktiven Mwst-Sätze.

    Der Verweis zum Artikel kann natürlich keinesfalls ein Nachschlagefeld sein, wie schon selbst beschrieben. Wir haben übrigens noch nie ein Nachschlagefeld verwendet…

    Zum Screenshot: Positionstyp, Einheit, Umsatzsteuersatz sollten meines Erachtens alles Referenzfelder sein. Die Einheit und der Umsatzsteuersatz dürften bei Auswahl eines Artikels aus dem Artikelstamm übernommen werden (per Layoutregel).

    Grüsse,
    nuclosian

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)