3. August 2023 15:44
Hallo zusammen,
im NAV kann ja über "Berichtsauswahl - Verkauf" für jede Verwendung ein Report mit entsprechendem Layout hinterlegt werden.
Aufgerufen wird der Report dann zB im Bereich "Rechnungen erstellen/buchen" über den Button "Buchen". Dh der Buchungsvorgang erstellt uns automatisch über den Report ein PDF-Dokument.
Mittlerweile ist jedoch dieser Report wegen unterschiedlichster Anforderungen (zB Fußzeile ja/nein, Text im Rechungskopf unterschiedlich, Erklärtext ja/nein, usw) stark überfrachtet und es sollen weitere Besonderheiten hinzu kommen. Es wäre daher für uns "die Rettung" einen zweiten Report verwenden zu können, der zB nur dann aufgerufen wird, wenn der Rechungskopfdatensatz ein bestimmtes Merkmal hat.
Frage 1: kann so etwas im Standard eingestellt werden?
Frage 2: Wenn nein, weiß jemand wo im NAV die Tabelle 77 beim Buchungsvorgang ausgelesen wird? Ich habe es natürlich versucht zu finden....
Vielen Dank!
3. August 2023 15:54
Im Standard kannst Du pro Debitor in den Dokumentenlayouts pro Belegart eine abweichende Reportnummer hinterlegen.
3. August 2023 16:05
Ich habe in NAV2017 in der Richtung auch schonmal etwas angepasst gehabt. Ich kann da ebenfalls nur auf die Funktionalität von den Dokumentenlayout (Table: Custom Report Selection (9657))verweisen. Mit etwas Programmierung sollte dein Vorhaben umsetzbar sein.
4. August 2023 07:33
Das führt leider nicht zum Ziel. Ein Debitor kann unterschiedliche Rechnungen erhalten.
Dh einmal wird für ihn die Mitgliedschaft abgerechnet, dann eine Beratung, dann Teilnahme an einem Sonderprogramm usw.
Alle Rechnungsköpfe unterscheiden sich von einander. Bei der Generierung wäre es daher ein Leichtes das Merkmal abzufragen und dann den entsprechenden Report zu nutzen.
4. August 2023 08:17
Hallo,
je nachdem wie du arbeitest, könntest du mehrere Reports in die Liste der Berichtsauswahl- Verkauf eintragen, und jeder Bericht druckt nur die Belege, die zu seinem Typ passen.
Dauert ein bisschen länger, aber wenn die Berichte zu komplex werden, könnte das ein Weg sein.
Um die Komplexität der Berichte zu reduzieren könnte man z.B. mehrzeilige Texte schon im C/AL als HTML aufbereiten, und im RDLC nur noch ein Textfeld ausgeben, anstatt wie früher mit dem Integer- Datensatz Zeile für Zeile.
Gruß Fiddi
4. August 2023 09:05
"je nachdem wie du arbeitest, könntest du mehrere Reports in die Liste der Berichtsauswahl- Verkauf eintragen, und jeder Bericht druckt nur die Belege, die zu seinem Typ passen."
--> das war / ist in meinen Augen auch der Lösungsweg. Das würde bedeuten, dass der Bericht selbst prüft, ob er ausgeführt wird? Weil aufgerufen werden im Standard ja immer alle in der vorgegebenen Reihenfolge.
Wenn dem so wäre, wie kann ein Bericht sich selber prüfen?
Edit: Im OnInitReport().... Über ein simples EXIT geht das nicht....
4. August 2023 09:30
Hallo,
wie wäre es mit einem Filter auf dem Dokument. Wenn kein Datensatz da ist, sollte auch nichts gedruckt werden.
Gruß Fiddi
4. August 2023 09:44
fiddi hat geschrieben:Hallo,
wie wäre es mit einem Filter auf dem Dokument. Wenn kein Datensatz da ist, sollte auch nichts gedruckt werden.
Gruß Fiddi
Verstehe ich nicht. Unter "Rechnungen erstellen/buchen" wird ja der Satz gelistet. Anschließend Klick auf "Buchen". Und genau da muss der alternative Bericht ausgeführt werden...
Edit: jetzt könnte ich noch in die Codierung der Tabelle 77 eingreifen. Das will ich aber nicht weil am Ende zu undurchsichtig.
4. August 2023 10:55
Der Report sollte wissen was er drucken kann, nicht der aufrufer. Also ein Filter im Report im OnInit oder OnPreRecord.
Du kannst auch ein Curreport.Skip im OnAfterGetRecord desDokumnents machen, wenn ein Filter nicht funktionirt.
Gruß Fiddi
4. August 2023 12:05
"Der Report sollte wissen was er drucken kann" --> korrekt. Nur so.
Ich habe jetzt ohne große Programmierung auf Funktion getestet und bei mehreren Triggern CurrReport.SKIP; CurrReport.BREAK; CurrReport.QUIT; EXIT; eingefügt (mal alles was mit so einfiel --> viel hilft viel), nur um zu sehen was überhaupt greift.
Alles ohne Erfolg. Der Bericht wird immer vollständig aufgerufen. AUSNAHME: Curreport.Skip im OnAfterGetRecord --> hier wird nur der Rumpf des Berichtes ohne Daten aufgerufen. Führt also auch nicht zum Erfolg.
Frage: gibt es einen Trigger im Bericht, der generell alles abbricht?
7. August 2023 10:05
Im OnAfterGetRecord() habe ich jetzt mal folgendes eingesetzt:
CurrReport.USEREQUESTPAGE := FALSE;
CurrReport.QUIT;
Das scheint zu klappen.
7. August 2023 10:12
Hallo,
für den "CurrReport.USEREQUESTPAGE := FALSE;" ist es ein wenig spät im OnAfterGetrecord. den kannst du da weglassen.
Gruß Fiddi
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.