Hallo zusammen,
wir sind ein Hersteller, daher haben praktisch alle unsere Verkaufsartikel Fertigungsstücklisten.
Unsere Datenbank ist inzwischen auf knapp 30 GB gewachsen (Officeline Nutzer seit 1999). Bei genauerer Betrachtung habe ich festgestellt, dass die Tabelle KHKVKBelegeStuecklisten ca. 12 GB belegt.
Die Speicherung einer Kopie der Stückliste in der Tabelle KHKVKBelegeStuecklisten ist aus meiner Sicht nur bei Handelsstücklisten notwendig und sinnvoll, da die Stückliste beim Andrucken der Stückliste bzw. beim Erzeugen der Lagerbuchungen notwendig ist.
Bei Fertigungsstücklisten ist eine Speicherung nicht notwendig und kostet unnötig Speicherplatz UND Performance, da ja bei jeder Beleg-Operation wie Beleg anzeigen, drucken, übernähme ... die kompletten Stücklisten-Infos mit gelesen werden müssen.
Als Beispiel:
Wir haben im Schnitt ca. 10 Stücklistenpositionen pro Artikel.
Bei 50 Vorgängen => 150 Belege (Auftragsbestätigung, Lieferschein, Rechnung) mit durchschnittlich 8 Positionen ergeben sich:
8 x 10 = 80 Stücklisten-Einträge / Auftrag => 12.000 Zeilen / Tag
Ich habe Sage auf diesen "Fehlverhalten" hingewiesen und auch schon mal ein Customer Voice eingereicht, aber es gab kein Interesse daran dies zu lösen, stattdessen kam der Vorschlag dies könne der Professional Service als Individual-Programmierung lösen.
Ich habe dies nun als DCM wie folgt umgesetzt:
case DcmDefinitionManager.DcmListId.VKBelegPositionGetStuecklisteArtikel:
Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition p2context = (Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition)context;
BelegPosition pos = p2context.BelegPosition;
if (pos.Stuecklistentyp != Stuecklistentyp.Handel)
{
pos2.Stueckliste.Clear();
}
break;
Die DCM VKBelegPositionGetStuecklisteArtikel wird beim Einfügen einer Position nachdem der Artikel festgelegt ist und die Stückliste eingelesen wurde aufgerufen. Ich entferne dann einfach die Stückliste.
Nach ersten Tests sieht es soweit gut aus.
Leider weiß ich nicht, inwieweit dieses Vorgehen irgendwelche unerwarteten Nebenwirkungen hat. Nach Verständnis müsste dann alles sauber laufen, da es für das System so aussieht als ob zum Zeitpunkt der Erfassung des Auftrages der Artikel keine Stückliste hatte.
Hat jemand von Euch schon mal Einträge (bei Fertigungsstücklisten) der Tabelle KHKVKBelegeStuecklisten gelöscht und sind dabei irgendwelche Probleme entstanden?
Grüsse Mark
wir sind ein Hersteller, daher haben praktisch alle unsere Verkaufsartikel Fertigungsstücklisten.
Unsere Datenbank ist inzwischen auf knapp 30 GB gewachsen (Officeline Nutzer seit 1999). Bei genauerer Betrachtung habe ich festgestellt, dass die Tabelle KHKVKBelegeStuecklisten ca. 12 GB belegt.
Die Speicherung einer Kopie der Stückliste in der Tabelle KHKVKBelegeStuecklisten ist aus meiner Sicht nur bei Handelsstücklisten notwendig und sinnvoll, da die Stückliste beim Andrucken der Stückliste bzw. beim Erzeugen der Lagerbuchungen notwendig ist.
Bei Fertigungsstücklisten ist eine Speicherung nicht notwendig und kostet unnötig Speicherplatz UND Performance, da ja bei jeder Beleg-Operation wie Beleg anzeigen, drucken, übernähme ... die kompletten Stücklisten-Infos mit gelesen werden müssen.
Als Beispiel:
Wir haben im Schnitt ca. 10 Stücklistenpositionen pro Artikel.
Bei 50 Vorgängen => 150 Belege (Auftragsbestätigung, Lieferschein, Rechnung) mit durchschnittlich 8 Positionen ergeben sich:
8 x 10 = 80 Stücklisten-Einträge / Auftrag => 12.000 Zeilen / Tag
Ich habe Sage auf diesen "Fehlverhalten" hingewiesen und auch schon mal ein Customer Voice eingereicht, aber es gab kein Interesse daran dies zu lösen, stattdessen kam der Vorschlag dies könne der Professional Service als Individual-Programmierung lösen.
Ich habe dies nun als DCM wie folgt umgesetzt:
case DcmDefinitionManager.DcmListId.VKBelegPositionGetStuecklisteArtikel:
Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition p2context = (Sagede.OfficeLine.Wawi.BelegEngine.DcmContextBelegPosition)context;
BelegPosition pos = p2context.BelegPosition;
if (pos.Stuecklistentyp != Stuecklistentyp.Handel)
{
pos2.Stueckliste.Clear();
}
break;
Die DCM VKBelegPositionGetStuecklisteArtikel wird beim Einfügen einer Position nachdem der Artikel festgelegt ist und die Stückliste eingelesen wurde aufgerufen. Ich entferne dann einfach die Stückliste.
Nach ersten Tests sieht es soweit gut aus.
Leider weiß ich nicht, inwieweit dieses Vorgehen irgendwelche unerwarteten Nebenwirkungen hat. Nach Verständnis müsste dann alles sauber laufen, da es für das System so aussieht als ob zum Zeitpunkt der Erfassung des Auftrages der Artikel keine Stückliste hatte.
Hat jemand von Euch schon mal Einträge (bei Fertigungsstücklisten) der Tabelle KHKVKBelegeStuecklisten gelöscht und sind dabei irgendwelche Probleme entstanden?
Grüsse Mark