Печать отчёта на выбранный принтер

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

Привет всем !

Хотел бы проконсультироваться по старой проблеме, какое-то время спасали костыли,
но вопрос как-то надо разруливать …

Вопрос: Можно ли как-то вывернуться и напечатать отчёт (структура REPORT) на конкретный принтер ?

Поясню. Есть система печати отчётов: компьютер, к которому подключено несколько разных принтеров
(хороший, плохой, A3, этикеток, чеков и ещё 3 не знаю зачем). Приходит запрос, он обрабатывается
(иногда относительно долго), создаётся отчёт и печатается на заданный в запросе принтер. Всё.

Всё прекрасно работает в моно-режиме, если идёт последовательная обработка и печать по одному заданию (отчёту).
При попытке запустить несколько потоков обработки и печати, предсказуемо возникает накладка с Printer{PropPrint:Device}
Всё перекашивает и заканчивается GPF. :(

Можно ли (как-то) направить отчёт на заданный принтер без глобальных свойств Printer{PropPrint:Device} ?
Заранее спасибо за идею … :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Печать отчёта на выбранный принтер

Сообщение kreator »

Игорь Столяров писал(а): 22 Октябрь 2018, 16:52 Можно ли (как-то) направить отчёт на заданный принтер без глобальных свойств Printer{PropPrint:Device} ?
Судя по справке, после открытия репорта можно применить свойство к конкретному отчёту:

Код: Выделить всё

Report{propprint:Device} = 'HP ...'
Опять же в справке есть предупреждение:
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.
Не понять. Надо пробовать.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

kreator писал(а): 22 Октябрь 2018, 17:10Report{propprint:Device} = 'HP ...'
Странно однако … я у структуры REPORT такой проперти как "DEVICE" не вижу.
Хотя, это конечно спасло бы отца русской демократии … ;) Подскажите, в каком разделе справки посмотреть ?
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Печать отчёта на выбранный принтер

Сообщение gopstop2007 »

Report{propprint:Device} постоянно использую
Справка -> Printer Control Properties
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

gopstop2007 писал(а): 22 Октябрь 2018, 17:58постоянно использую
Господа ! Я подозреваю, что имеет место небольшое недоразумение, связанное особенностями
преподавания английского в советских школах. Ну нет такого в справке …

Есть глобальные настройки:

Код: Выделить всё


   PRINTER{PROPPRINT:Device} = 'Epson'
   
и локальные, для конкретного, открытого отчёта:

Код: Выделить всё

   
  OPEN(SomeReport)                               !После установки свойств открыть отчет 
  SomeReport{PROPPRINT:Paper} = PAPER:User       !Нестандартный размер бумаги
  SomeReport{PROPPRINT:PAPERHeight} = 6 * 254    !6" дюймов высотой 
  SomeReport{PROPPRINT:PAPERWidth} = 3.5 * 254   !3.5" дюйма шириной
  
Ну или сделайте снимок Вашей справки и ткните меня в него носом. Пусть мне будет стыдно. Я согласен. :)
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Печать отчёта на выбранный принтер

Сообщение gopstop2007 »

C10 смотри PRNPROP.CLW
Вложения
print_dev.jpg
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

Спасибо, эту справку я видел.
Там как раз и нет описания применения PropPrint:Device к структуре REPORT …

Но учитывая Ваш опыт - я проверил Report{propprint:Device} = 'Название принтера'.
Действительно, если применять после (!!!) открытия отчёта - работает, отчёт перенаправляется. Спасибо ! :)

Вроде бы глобальные настройки печати при этом не меняются … но надо проверить в боевом режиме.
Потому, что лично мне непонятно, что будет если я открою REPORT для принтера с размером листа A4,
а потом перенаправлю его чековый принтер с узкой лентой ...
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Печать отчёта на выбранный принтер

Сообщение gopstop2007 »

Игорь Столяров писал(а): 22 Октябрь 2018, 18:54 Потому, что лично мне непонятно, что будет если я открою REPORT для принтера с размером листа A4,
а потом перенаправлю его чековый принтер с узкой лентой ...
то и будет, на 52 или 80мм :), а вы чего ожидали?
и забывайте возвращать на принтер по умолчанию
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

gopstop2007 писал(а): 22 Октябрь 2018, 19:26то и будет, на 52 или 80мм , а вы чего ожидали?
До сегодняшнего дня я думал, что формат отчёта устанавливается на момент его открытия.
Теперь я в этом уже не уверен ...
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Печать отчёта на выбранный принтер

Сообщение gopstop2007 »

Игорь Столяров писал(а): 22 Октябрь 2018, 19:38 До сегодняшнего дня я думал, что формат отчёта устанавливается на момент его открытия.
Теперь я в этом уже не уверен ...
он и остается не измененным, принтер честно отпечатает ваш формат, отчет на бумаге будет не того "формата"
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

gopstop2007 писал(а): 22 Октябрь 2018, 19:43отчет на бумаге будет не того "формата"
Это жесть. В том смысле, что не правильно это …
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Печать отчёта на выбранный принтер

Сообщение kreator »

Тут скорее практика поможет. Справка скудна. Конкретных примеров - ноль. Интересно проверить одновременную посылку на разные принтеры разные отчёты в разных потоках.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Печать отчёта на выбранный принтер

Сообщение Игорь Столяров »

kreator писал(а): 23 Октябрь 2018, 10:59Интересно проверить одновременную посылку на разные принтеры разные отчёты в разных потоках.
В принципе - работает. Но смешанное чувство от этого.
Без проблем можно перенаправлять отчёты … только между одинаковыми принтерами. :)
Иначе получается, что REPORT открывается для листа A4 и потом этот A4 перенаправляется и печатается на принтер этикеток.
Результат - понятен и он не satisfaction … :(

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

Наверно, надо не изобретать колесо, а идти по классическому пути. Т.е. переустановка драйвера принтера в одном месте
с флагами и семафорами. :(
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Печать отчёта на выбранный принтер

Сообщение gopstop2007 »

не пробовали к отчету подвязать "жестко" принтер
Вложения
prn_1.jpg
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Печать отчёта на выбранный принтер

Сообщение kreator »

Игорь Столяров писал(а): 23 Октябрь 2018, 11:27 Иначе получается, что REPORT открывается для листа A4 и потом этот A4 перенаправляется и печатается на принтер этикеток.
А почему так? Если отчёт в A4, зачем его перенаправлять на принтер этикеток? Может надо ещё после открытия отчёта (кроме изменения девайса) и свойства страницы изменить? Посмотрел у себя, что-то подобное есть. Печать типа этикетки на чековый или любой другой:

Код: Выделить всё

i# = printer{propprint:Paper}
if i#<>PAPER:User
  Report{propprint:Paper} = i#
end
We are hard at work… for you. :)
Ответить