Navision Print Job

The Navision workers at the warehouse were curious as to their odd printer situation.There are three computers in a row. Up until last week when anyone sent a print job out from Navision it simply printed out to the HP2100. On computer A (all computers are exactly the same –Windows 2000, Citrix, Navision) Regina logged into Navision. She sent out a print job. It quickly printed. Regina logged into Computer B. She had to manually guide Navision prompting the application to print out from the HP2100. She logged into Computer C. And once again Regina had to manually instruct Navision to print. We tried logging in with three different users and in every method of approach Computer A printed without any ‘intervention’ Computers B and C needed to be manually prompted. In Printer properties the printer names on Computers ABC are identical. Is there any adjustment we can do on the Computers to fix this situation? Thanks for any advise.Charlie M

Depending on the version of Navision you are using the following could happen:

In older versions of Navision, printers are not purely identified by its name, rather by its name AND its interface.
In case of a network printer it could vary from computer to computer dependent on the order being used to setup the printers.
(Windows enumerates network interfaces as NE01:, NE02:, and so on)

If this is the case, it will prevent Navision from doubtless identify a printer.

Solution:

This needs a little bit of programming but can be done:

  • The table (and form) for the “Printer Selection” needs to be changed in order to point to the printer name without the interface only.
  • CU1 needs to be changed in order to find the correct printer based on the name rather than the ID.

The code snippet for the printer selection in the CU1 could look like follows:

FindPrinter(ReportID : Integer) : Text[250]
`CLEAR(PrinterSelection);``

IF NOT PrinterSelection.GET(USERID,ReportID) THEN
IF NOT PrinterSelection.GET (’’,ReportID) THEN
IF NOT PrinterSelection.GET(USERID,0) THEN
IF PrinterSelection.GET(’’,0) THEN;
Printer.SETFILTER(Name,’@’+PrinterSelection.Druckername);
IF Printer.FIND(’-’) THEN
EXIT(Printer.ID)
ELSE
EXIT(’’);

`

EXIT(PrinterSelection.Druckername);