Sortierung im VKSubPositionArtikelLief ändern

Vic

Mitglied
Guten Tag,

Ist es möglich die Sortierung der gedruckten Informationen im Teil VKSubPositionArtikelLief , zum Beispiel auf der Verkaufsbeleg, zu ändern (unabhängig von den erfassten Positionen). Jetzt sind Sie gedruckt wie mann es im AB erfasst hat, dass heisst per Position. Ich möchte die gedruckten Zeile nach Artikelnummer sortieren ?

upload_2019-4-8_12-43-32.png

Danke für die Hilfe
Freundliche Grüssen.
Vic
 
Ich bin zwar kein Programmierer aber grundsätzlich kann ich die Frage mit einem "ja" beantworten. Wir haben einige Kunden wo die Druckreihenfolge für das Lager optimiert ist.
Grüße
 
Genau, wir brauchen es auch für einen Produktionsschein, damit man in die richtige Reihefolgen die Produkten im Lager vorbereiten kann, wie kann mann dass auf den Beleg Druck einstellen ?

Danke
 
Guten Tag Vic,

im Report Lieferschein, das Datenband auswählen. Zum Beispiel dtbVKSubPositionArtikelLief; Datenquelle: dtsVKSubPositionArtikelLief. In den Eigenschaften unter <1. Daten/Sortieren> eine Sortierung hinzufügen dtsVKSubPositionArtikelLief.Artikelnummer.

Gruß UNIQUE
 
Sorry Vic,

ist nicht ganz richtig, was ich gestern schrieb. Falsches Datenband!

Das richtige Datenband ist dtbVKRechnung; Datenquelle: dtsVKRechnung. Hier ist in dem Datenband auch bereits eine Sortierung - Sortieren nach ID - vorhanden. Diese Sortierung wie bereits beschrieben auf dtsVKSubPositionArtikelLief.Artikelnummer ändern.

Gruß UNIQUE
 
Keine Sorge Unique,

Habe es auch so probiert, aber danke für die Rückmeldung. Leider funktionniert es nicht so wie ich es dachte. Bei dieser Sortierung nach dtsVKSubPostionArtikelLief.Artikelnummer gab es schon Aenderungen, aber es ist komisch sortiert. Ich kann es nicht nachvollziehen, was der AppDesigner mach ? Haben Sie eine Idee woher dass kommen könnte ?
In dem Beispiel wäre die richtige Reihenfolge Pos. 31, 22, 23, 29, usw.

Gruss Vic
upload_2019-4-9_13-3-40.png

upload_2019-4-9_13-4-23.png
 
Das Feld Artikelnummer ist Varchar 31, ist es möglich für den Report, das Feld als Numerish zu betrachen ?
 
Ich habe das mal über DCM gelöst, vielleicht nicht so optimal, aber es läuft

public class DCMListener : IDcmCallback{
...
try
{
switch (context.ListId)
{
...
case DcmDefinitionManager.DcmListId.PrintVKPrepareBelegPositionCollection:
SortierungArtikelnummer(context);
}
....

private void SortierungArtikelnummer(IDcmContext context){
var reportContext = (Sagede.OfficeLine.Wawi.PrintEngine.DcmContextBelegdruck)context;
var mandant = reportContext.Mandant;

if (reportContext.Variante == "Lieferschein")
{
var oldList = new List<BelegPosition>();
//Umsortierung nach Artikelnummer
reportContext.Positionen.ToList().ForEach(p => oldList.Add(p));
reportContext.Positionen.Clear();
oldList.OrderBy(p => p.Artikelnummer).ForEach(p => { reportContext.Positionen.Add(p); });
}
}
 
Was vielleicht auch gehen würde wäre dtsVKSubPositionArtikel anhängen und die ORDER BY um Artikelnummer ergänzen, theoretisch
 
Danke, habe es schon probiert, bei mir funktionnert es leider nicht !
DCM kenne ich mich leider nicht aus, da bin ich ein bisschen überfordert !
 
Hmm, hab das mal probiert mitm ORDER BY und es funzt. Mal dumm gefragt, die Datenquelle im Bericht richtig gesetzt?
 
Sorry Vic,

ist nicht ganz richtig, was ich gestern schrieb. Falsches Datenband!

Das richtige Datenband ist dtbVKRechnung; Datenquelle: dtsVKRechnung. Hier ist in dem Datenband auch bereits eine Sortierung - Sortieren nach ID - vorhanden. Diese Sortierung wie bereits beschrieben auf dtsVKSubPositionArtikelLief.Artikelnummer ändern.

Gruß UNIQUE

Das funzt bei mir komischerweise nicht, egal welches Datenband ich sortiere, deswegen der Schuß mit kanonen auf Spatzen (DCM) :confused:

Noch nicht mal dtbVKSubPositionArtikel.Sort = New String() { "ASC", "Artikelnummer" } im BeginRender geht
 
Zuletzt bearbeitet:
Hallo,

ich habe den Ansatz mit den DCM's jetzt mal getestet. Es funktioniert bei Lieferscheinen.
Wir bräuchten das aber für Packzettel, und wenn ich das mit Packzetteln versuche wirft das Positionen.Add eine NullReferenceException.

Stacktrace:
Code:
bei Sagede.OfficeLine.Wawi.BelegEngine.BelegPositionCollection.InsertObject(BelegPosition position, Int32 index, Boolean beforeIndex)
   bei Sagede.OfficeLine.Wawi.BelegEngine.BelegPositionCollection.Add(BelegPosition position)
   bei XXX.DCMListener.<>c__DisplayClass1_0.<ReoderPicklistItems>b__2(BelegPosition p)
bei System.Linq.LinqExtensions.ForEach[T](IEnumerable`1 collection, Action`1 action)

Irgendeine Idee, was da hilft?
 
Zuletzt bearbeitet:
Ich habe eine Lösung gefunden: Statt Positionen.Add, Positionen.AddWithoutNewHandle.
Dann funktioniert es auch bei Packzetteln.
 
Zurück
Oben