Druckersteuerung

19. Januar 2021 23:33

Hallo an alle,

ich habe ein Problem mit der Druckersteuerung. Wir nutzen stark ausgeprägt die Druckerausoptionen.
Somit hat ein Nutzer für einen Report einen Drucker hinterlegt.
Nun ist es leider eingetreten das diverse Nutzer zwischen Standorten "springen". In einen anderen Standort ist ein anderer Drucker hinterlegt für den selben Report.
So müsste in den Druckerausoptionen jeweils pro vollzogenen Wechsel der Drucker pro Report ausgetauscht werden.
Die Frequenz der Wechsel ist teilweise sehr hoch. Somit ist das handling nicht möglich.

Am liebsten würde ich den Drucker in der passenden Tabelle im SQL Server stets per Skript befüllen aber davon wird stets allgemein abgeraten.
Direkte Nav-Powershell-Befehle habe ich auch nicht gefunden.

Wie würdet oder wie löst ihr das Problem?

Re: Druckersteuerung

20. Januar 2021 00:07

Der Anwender könnte ja beim Anmelden seinen Standort eingeben und aufgrunddessen wird die Druckerauswahl entsprechend geändert. Bin in NAV 2016 nicht so firm, da gab es glaube ich noch nicht das Event System an das man sich hängen könnte (OnAfterCompanyOpen oder sowas in der Art). Und in Rollencenter Pages darf man nichts programmieren. Was auf jeden Fall ginge wäre eine Page Action in die Rollencenter Seite zu hängen die das übernimmt, wenn dieser teilautomatisierte Ansatz genügt. Für weitergehende Automatisierung wäre die Frage woran man erkennen kann von welchem Standort aus sich der Anwender anmeldet.

Re: Druckersteuerung

20. Januar 2021 01:25

enh hat geschrieben:Bin in NAV 2016 nicht so firm, da gab es glaube ich noch nicht das Event System […]

NAV 2016 war die erste Version mit Events.
Integration Events in Microsoft Dynamics NAV 2016

Re: Druckersteuerung

21. Januar 2021 17:45

Hi!

Folgendes wäre möglich:

Du benötigst ein neues Feld in der Printer Selection Tabelle (78). Nennen wir es Location.
Das gleiche Feld benötigst du in der User Setup Tabelle (91).

Der Primärschlüssel der Tabelle 78 müsste um das Location-Feld erweitert werden. (Damit man mehr als einmal BenutzerID='' und Berichts-ID=0 anlegen kann. Nämlich für jeden eigenen Standort. Gepflegt werden die Drucker dann also nicht mehr nach Benutzer-ID, sondern hauptsächlich über die Location. ALso z.B.: Benutzer='', Berichts-ID=0, Standort=Büro, Druckername=A --> Alle Benutzer mit Standort "Büro" im Benutzersetup drucken alle Belege auf Printer A)

Das Feld könnte ein Optionsfeld sein, welches alle Möglichen Standorte enthält oder auch auf eine Hintergrundtabelle zeigen, wo dynamisch Standorte gepflegt werden können. Ich empfehle Zweiteres.
Gib den Benutzern eine Möglichkeit (z.B. über eine eigene BenutzersetupPage) den Wert des Location-Feldes, welches zur Benutzereinrichtungstabelle gehört, einzustellen.

Pflege deine Drucker, zusammen mit den gewünschten Standorten, in der Tabelle 78.

Passe die Codeunit 1 Function FindPrinter so an, dass erst nach dem im UserSetup hinterlegten Standort gesucht wird. In etwa so:

Code:
IF NOT PrinterSelection.GET(UserSetup.Location,USERID,ReportID) THEN
  IF NOT PrinterSelection.GET(UserSetup.Location,'',ReportID) THEN
    IF NOT PrinterSelection.GET(UserSetup.Location,USERID,0) THEN
      IF PrinterSelection.GET(UserSetup.Location,'',0) THEN;


Bleibt das Ergebnis leer, könnte jetzt noch die Standardprogrammierung folgen. Aber Achtung: Aufgrund der Primärschlüsseländerung, kannste das nicht mehr mit dem GET machen, sondern eher so:

Code:
IF NOT FindPrinterByNavStandard(PrinterSelection,USERID,ReportID) THEN
  IF NOT FindPrinterByNavStandard(PrinterSelection,'',ReportID) THEN
    IF NOT FindPrinterByNavStandard(PrinterSelection,USERID,0) THEN
      IF FindPrinterByNavStandard(PrinterSelection,'',0) THEN;


Wobei die FindPrinterByNavStandard dann so ausschaut:

Code:
FindPrinterByNavStandard(VAR PrinterSelection : Record "Printer Selection";UserID : Code[50];ReportID : Integer) : Boolean

CLEAR(PrinterSelection);

PrinterSelection.SETRANGE("User ID",UserID);
PrinterSelection.SETRANGE("Report ID",ReportID);
IF PrinterSelection.FINDFIRST THEN
  EXIT(TRUE);

EXIT(FALSE)



Grüße

Re: Druckersteuerung

21. Januar 2021 17:54

Hallo,

als einfachstes würde ich erst mal prüfen, ob man den Ausdruck nicht auf den Standarddrucker am Arbeitsplatz de jeweiligen Anwerders machen kann, dann benötigt man gar keine Einrichtung.

Gruß Fiddi