Страница 1 из 2
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 16:52
Игорь Столяров
Привет всем !
Хотел бы проконсультироваться по старой проблеме, какое-то время спасали костыли,
но вопрос как-то надо разруливать …
Вопрос: Можно ли как-то вывернуться и напечатать отчёт (структура REPORT) на конкретный принтер ?
Поясню. Есть система печати отчётов: компьютер, к которому подключено несколько разных принтеров
(хороший, плохой, A3, этикеток, чеков и ещё 3 не знаю зачем). Приходит запрос, он обрабатывается
(иногда относительно долго), создаётся отчёт и печатается на заданный в запросе принтер. Всё.
Всё прекрасно работает в моно-режиме, если идёт последовательная обработка и печать по одному заданию (отчёту).
При попытке запустить несколько потоков обработки и печати, предсказуемо возникает накладка с Printer{PropPrint:Device}
Всё перекашивает и заканчивается GPF.
Можно ли (как-то) направить отчёт на заданный принтер без глобальных свойств Printer{PropPrint:Device} ?
Заранее спасибо за идею …

Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 17:10
kreator
Игорь Столяров писал(а): 22 Октябрь 2018, 16:52
Можно ли (как-то) направить отчёт на заданный принтер без глобальных свойств Printer{PropPrint:Device} ?
Судя по справке, после открытия репорта можно применить свойство к конкретному отчёту:
Опять же в справке есть предупреждение:
All of these properties can be used with either the PRINTER built-in variable or the label of the report as the target, however they may not all make sense with both.
Не понять. Надо пробовать.
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 17:28
Игорь Столяров
kreator писал(а): 22 Октябрь 2018, 17:10Report{propprint:Device} = 'HP ...'
Странно однако … я у структуры REPORT такой проперти как "DEVICE" не вижу.
Хотя, это конечно спасло бы отца русской демократии …

Подскажите, в каком разделе справки посмотреть ?
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 17:58
gopstop2007
Report{propprint:Device} постоянно использую
Справка -> Printer Control Properties
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 18:12
Игорь Столяров
gopstop2007 писал(а): 22 Октябрь 2018, 17:58постоянно использую
Господа ! Я подозреваю, что имеет место небольшое недоразумение, связанное особенностями
преподавания английского в советских школах. Ну нет такого в справке …
Есть глобальные настройки:
и локальные, для конкретного, открытого отчёта:
Код: Выделить всё
OPEN(SomeReport) !После установки свойств открыть отчет
SomeReport{PROPPRINT:Paper} = PAPER:User !Нестандартный размер бумаги
SomeReport{PROPPRINT:PAPERHeight} = 6 * 254 !6" дюймов высотой
SomeReport{PROPPRINT:PAPERWidth} = 3.5 * 254 !3.5" дюйма шириной
Ну или сделайте снимок Вашей справки и ткните меня в него носом. Пусть мне будет стыдно. Я согласен.

Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 18:34
gopstop2007
C10 смотри PRNPROP.CLW
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 18:54
Игорь Столяров
Спасибо, эту справку я видел.
Там как раз и нет описания применения PropPrint:Device к структуре REPORT …
Но учитывая Ваш опыт - я проверил Report{propprint:Device} = 'Название принтера'.
Действительно, если применять после (!!!) открытия отчёта - работает, отчёт перенаправляется. Спасибо !
Вроде бы глобальные настройки печати при этом не меняются … но надо проверить в боевом режиме.
Потому, что лично мне непонятно, что будет если я открою REPORT для принтера с размером листа A4,
а потом перенаправлю его чековый принтер с узкой лентой ...
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 19:26
gopstop2007
Игорь Столяров писал(а): 22 Октябрь 2018, 18:54
Потому, что лично мне непонятно, что будет если я открою REPORT для принтера с размером листа A4,
а потом перенаправлю его чековый принтер с узкой лентой ...
то и будет, на 52 или 80мм

, а вы чего ожидали?
и забывайте возвращать на принтер по умолчанию
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 19:38
Игорь Столяров
gopstop2007 писал(а): 22 Октябрь 2018, 19:26то и будет, на 52 или 80мм , а вы чего ожидали?
До сегодняшнего дня я думал, что формат отчёта устанавливается на момент его открытия.
Теперь я в этом уже не уверен ...
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 19:43
gopstop2007
Игорь Столяров писал(а): 22 Октябрь 2018, 19:38
До сегодняшнего дня я думал, что формат отчёта устанавливается на момент его открытия.
Теперь я в этом уже не уверен ...
он и остается не измененным, принтер честно отпечатает ваш формат, отчет на бумаге будет не того "формата"
Печать отчёта на выбранный принтер
Добавлено: 22 Октябрь 2018, 19:59
Игорь Столяров
gopstop2007 писал(а): 22 Октябрь 2018, 19:43отчет на бумаге будет не того "формата"
Это жесть. В том смысле, что не правильно это …
Печать отчёта на выбранный принтер
Добавлено: 23 Октябрь 2018, 10:59
kreator
Тут скорее практика поможет. Справка скудна. Конкретных примеров - ноль. Интересно проверить одновременную посылку на разные принтеры разные отчёты в разных потоках.
Печать отчёта на выбранный принтер
Добавлено: 23 Октябрь 2018, 11:27
Игорь Столяров
kreator писал(а): 23 Октябрь 2018, 10:59Интересно проверить одновременную посылку на разные принтеры разные отчёты в разных потоках.
В принципе - работает. Но смешанное чувство от этого.
Без проблем можно перенаправлять отчёты … только между одинаковыми принтерами.

Иначе получается, что REPORT открывается для листа A4 и потом этот A4 перенаправляется и печатается на принтер этикеток.
Результат - понятен и он не satisfaction …
Конечно можно перед открытием REPORT установить на время PRINTER{PROPPRINT:Device} для создания отчёта в нужном формате …
Но здесь мы опять попадаем на игру "повезёт - не повезёт", просто шансов, что отчёт в другом потоке не собьёт настройки - больше.
Наверно, надо не изобретать колесо, а идти по классическому пути. Т.е. переустановка драйвера принтера в одном месте
с флагами и семафорами.

Печать отчёта на выбранный принтер
Добавлено: 23 Октябрь 2018, 11:36
gopstop2007
не пробовали к отчету подвязать "жестко" принтер
Печать отчёта на выбранный принтер
Добавлено: 23 Октябрь 2018, 12:10
kreator
Игорь Столяров писал(а): 23 Октябрь 2018, 11:27
Иначе получается, что REPORT открывается для листа A4 и потом этот A4 перенаправляется и печатается на принтер этикеток.
А почему так? Если отчёт в A4, зачем его перенаправлять на принтер этикеток? Может надо ещё после открытия отчёта (кроме изменения девайса) и свойства страницы изменить? Посмотрел у себя, что-то подобное есть. Печать типа этикетки на чековый или любой другой:
Код: Выделить всё
i# = printer{propprint:Paper}
if i#<>PAPER:User
Report{propprint:Paper} = i#
end