|
|
#1 |
|
Участник
|
Доброго времени суток, коллеги.
Каким образом можно создать отчет "только для просмотра", без возможности вывода на печать? Заранее благодарен. |
|
|
|
|
#2 |
|
NavAx
|
В перегруженном методе prompt сказать
this.setTarget(PrintMedium::Screen); И вызвать super c пятым параметром (enablePrintTo), равным false. Хотя против PrintScreen никто еще противоядия на уровне Аксапты не придумал.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Последний раз редактировалось Maximin; 13.12.2005 в 10:49. |
|
|
|
|
#3 |
|
Участник
|
Спасибо за оперативный ответ, Maximin.
Но вызов отчета идет через menu item, и метод prompt не задействован. Как поступить в этом случае? Последний раз редактировалось CDan; 13.12.2005 в 12:12. |
|
|
|
|
#4 |
|
Участник
|
Задача: Отчет - только на экран
Аксапта 3.0 sp4
Можно ли добиться в Аксапте, чтобы определенный отчет пользователи могли вывести только на экран (Ни в файл, ни по почте), и чтобы кнопка "Печать" даже была задизайблена ? Dron AKA andy: Объединил темы. Последний раз редактировалось Dron AKA andy; 13.12.2005 в 12:37. |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от CDan
Спасибо за оперативный ответ, Maximin.
Но вызов отчета идет через menu item, и метод prompt не задействован. Как поступить в этом случае? |
|
|
|
|
#6 |
|
Участник
|
"this.setTarget(PrintMedium::Screen);
И вызвать super c пятым параметром (enablePrintTo), равным false. Хотя против PrintScreen никто еще противоядия на уровне Аксапты не придумал." - Помогает с певым вопросом. А все же, очет выведен на экран - кнопка "принт" - активна - нажимаем ее, да не дает ничего выбирать - но, если нажимаешь "ОК" - все же отчет идет на печать. Как быть с этим? |
|
|
|
|
#7 |
|
Microsoft Dynamics
|
Полагаю, надо "рыть" в направлении класса PrintJobSettings.
Пример передачи параметров печати в класс ReportRun: Код: ReportRun reportRun;
Args Args = new Args(reportStr(CustVendFacture_RU));
PrintJobSettings printJobSettings = new PrintJobSettings();
;
printJobSettings.printerSettings(formStr(SysPrintForm));
Args.parmEnumType(enumnum(FacturePrintType_RU));
Args.parmEnum(FacturePrintType_RU::Original);
reportRun = new ReportRun(Args);
reportRun.printJobSettings(printJobSettings.packPrintJobSettings());
reportRun.run(); |
|
|
|
|
#8 |
|
Moderator
|
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены.
__________________
С уважением, kvan. |
|
|
|
|
#9 |
|
Участник
|
А так же надо не забыть заблокировать пользователю кнопучку PrtSc (ПринтСкрин)
|
|
|
|
|
#10 |
|
Member
|
Ага. Выломать зубилом из клавиатуры.
И запретить устанавливать ПО, которое может заниматься видеозахватом. И отбирать сотовые телефоны. Чтобы ничего не сфотографировали и не унесли домой.
__________________
С уважением, glibs® |
|
|
|
|
#11 |
|
Участник
|
2 glibs
поддерживаю
|
|
|
|
|
#12 |
|
NavAx
|
Цитата:
Сообщение от kvan
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены. ![]() В отчете достаточно просто нажать Ctrl-P и вуаля. Даже в российской платежке с заблокированной кнопкой. Впрочем, для advanced пользователя даже заблокированная кнопка не преграда... Цитата:
Сообщение от Jabberwocky
Полагаю, надо "рыть" в направлении класса PrintJobSettings.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Последний раз редактировалось Maximin; 13.12.2005 в 16:18. |
|
|
|
|
#13 |
|
Moderator
|
Т.е. твой способ тоже обходится через Ctrl-P ?
Если да, то можно попробывать поковырять форму SysPrintForm - там в Init получают вызывающий обьект, от него и попробывать оттолкнуться. Так если форма вызвана из диалога, там: new, RunBaseReportDialog А вот если по Ctrl-P: client: printerDC: xprPrinterDisplay \\Путь к принтеру Хотя конечно любую защиту можно обойти
__________________
С уважением, kvan. |
|
|
|
|
#14 |
|
NavAx
|
На мой взгляд, лучше глянуть глубже и посмотреть на методы класса SysPrintOptions в части методов init и examinePromptParm. Там много наводящих на размышления мест, особенно в начале метода examinePromptParm.
Там и копать. Подробнее рассказывать, честно говоря, лениво.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
|
|
|
|
|
#15 |
|
Moderator
|
Глянул я внутрь, мест для размышления там действительно много.
Но этот класс отвечает за инициализацию каналов вывода отчета. Если дальше приглядеться к методам самой формы, то несложно заметить, что те каналы вывода которые увидет пользователь добавляются в методе buildSendToList формы SysPrintForm. Так что нет никакого смысла идти "вглубь" и инициализировать параметры если уже при открытии формы понятно что ее нужно просто закрыть. (К сожалению вызывается она из системного класса и у нас нет возможности запретить этот вызов там )Ну и совсем не лишним будет глянуть на первые строки метода construct класса SysPrintOptions чтобы понять как можно отсечь те вызовы которые мы хотим перекрыть.
__________________
С уважением, kvan. |
|
|
|
|
#16 |
|
NavAx
|
А нафиг форму мучить? Лучше уж класс пнуть в нужное место, чтобы он там по умолчанию Принтер не писал при нажатии Ctrl-P...
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
|
|
|
|
|
#17 |
|
Moderator
|
Изначально вопрос стоял о том как запретить вывод на печать.
Но существующие\предложенные решения обходятся с помощью тупой комбинации клавиш. Так что если нужно разрешить пользователям только видеть отчет, то ко всему выше предложеному необходимо еще перекрыть вызов по Ctrl-P. Как это сделать я описал в предыдущем посте. Ну не нужно ничего инициализировать если форма должна закрыться сразу после того как открылась. (В идеале она и открыться то не должна, но что имеем то и имеем) А вот если нужно запретить вывод в какой то определенный канал, например, на принтер - то действительно нужно ковырнуть немножко глубже.
__________________
С уважением, kvan. |
|
|
|
|
#18 |
|
Участник
|
Большое спасибо за советы. Задача нетривиальная, интересная.
Но при общении с постановщиком задач выяснилось, что ситуация "Это я, почтальон Печкин. Принес посылку. Только я вам ее не отдам... " в моем случае оказалась ненужной.Задача ограничилась простым задисэйбливанием кнопок формирования отчетов. Всем всего наилучшего! Последний раз редактировалось CDan; 14.12.2005 в 07:52. |
|
|
|
|
#19 |
|
Участник
|
Цитата:
Сообщение от kvan
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены. |
|
|
|
|
#20 |
|
Участник
|
Fetch() возвращает False при повторной печати платежки.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
| За это сообщение автора поблагодарили: oip (2). | |