13.12.2005, 10:31 | #1 |
Участник
|
Запрет распечатки отчета
Доброго времени суток, коллеги.
Каким образом можно создать отчет "только для просмотра", без возможности вывода на печать? Заранее благодарен. |
|
13.12.2005, 10:38 | #2 |
NavAx
|
В перегруженном методе prompt сказать
this.setTarget(PrintMedium::Screen); И вызвать super c пятым параметром (enablePrintTo), равным false. Хотя против PrintScreen никто еще противоядия на уровне Аксапты не придумал.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 13.12.2005 в 10:49. |
|
13.12.2005, 12:10 | #3 |
Участник
|
Спасибо за оперативный ответ, Maximin.
Но вызов отчета идет через menu item, и метод prompt не задействован. Как поступить в этом случае? Последний раз редактировалось CDan; 13.12.2005 в 12:12. |
|
13.12.2005, 12:26 | #4 |
Участник
|
Задача: Отчет - только на экран
Аксапта 3.0 sp4
Можно ли добиться в Аксапте, чтобы определенный отчет пользователи могли вывести только на экран (Ни в файл, ни по почте), и чтобы кнопка "Печать" даже была задизайблена ? Dron AKA andy: Объединил темы. Последний раз редактировалось Dron AKA andy; 13.12.2005 в 12:37. |
|
13.12.2005, 12:46 | #5 |
Участник
|
Цитата:
Сообщение от CDan
Спасибо за оперативный ответ, Maximin.
Но вызов отчета идет через menu item, и метод prompt не задействован. Как поступить в этом случае? |
|
13.12.2005, 12:47 | #6 |
Участник
|
"this.setTarget(PrintMedium::Screen);
И вызвать super c пятым параметром (enablePrintTo), равным false. Хотя против PrintScreen никто еще противоядия на уровне Аксапты не придумал." - Помогает с певым вопросом. А все же, очет выведен на экран - кнопка "принт" - активна - нажимаем ее, да не дает ничего выбирать - но, если нажимаешь "ОК" - все же отчет идет на печать. Как быть с этим? |
|
13.12.2005, 13:35 | #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(); |
|
13.12.2005, 13:47 | #8 |
Moderator
|
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены.
__________________
С уважением, kvan. |
|
13.12.2005, 14:48 | #9 |
Участник
|
А так же надо не забыть заблокировать пользователю кнопучку PrtSc (ПринтСкрин)
|
|
13.12.2005, 15:09 | #10 |
Member
|
Ага. Выломать зубилом из клавиатуры.
И запретить устанавливать ПО, которое может заниматься видеозахватом. И отбирать сотовые телефоны. Чтобы ничего не сфотографировали и не унесли домой.
__________________
С уважением, glibs® |
|
13.12.2005, 15:14 | #11 |
Участник
|
2 glibs
поддерживаю |
|
13.12.2005, 15:58 | #12 |
NavAx
|
Цитата:
Сообщение от kvan
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены. В отчете достаточно просто нажать Ctrl-P и вуаля. Даже в российской платежке с заблокированной кнопкой. Впрочем, для advanced пользователя даже заблокированная кнопка не преграда... Цитата:
Сообщение от Jabberwocky
Полагаю, надо "рыть" в направлении класса PrintJobSettings.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 13.12.2005 в 16:18. |
|
13.12.2005, 16:24 | #13 |
Moderator
|
Т.е. твой способ тоже обходится через Ctrl-P ?
Если да, то можно попробывать поковырять форму SysPrintForm - там в Init получают вызывающий обьект, от него и попробывать оттолкнуться. Так если форма вызвана из диалога, там: new, RunBaseReportDialog А вот если по Ctrl-P: client: printerDC: xprPrinterDisplay \\Путь к принтеру Хотя конечно любую защиту можно обойти
__________________
С уважением, kvan. |
|
13.12.2005, 16:44 | #14 |
NavAx
|
На мой взгляд, лучше глянуть глубже и посмотреть на методы класса SysPrintOptions в части методов init и examinePromptParm. Там много наводящих на размышления мест, особенно в начале метода examinePromptParm.
Там и копать. Подробнее рассказывать, честно говоря, лениво.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
13.12.2005, 18:03 | #15 |
Moderator
|
Глянул я внутрь, мест для размышления там действительно много.
Но этот класс отвечает за инициализацию каналов вывода отчета. Если дальше приглядеться к методам самой формы, то несложно заметить, что те каналы вывода которые увидет пользователь добавляются в методе buildSendToList формы SysPrintForm. Так что нет никакого смысла идти "вглубь" и инициализировать параметры если уже при открытии формы понятно что ее нужно просто закрыть. (К сожалению вызывается она из системного класса и у нас нет возможности запретить этот вызов там) Ну и совсем не лишним будет глянуть на первые строки метода construct класса SysPrintOptions чтобы понять как можно отсечь те вызовы которые мы хотим перекрыть.
__________________
С уважением, kvan. |
|
13.12.2005, 18:22 | #16 |
NavAx
|
А нафиг форму мучить? Лучше уж класс пнуть в нужное место, чтобы он там по умолчанию Принтер не писал при нажатии Ctrl-P...
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
13.12.2005, 18:46 | #17 |
Moderator
|
Изначально вопрос стоял о том как запретить вывод на печать.
Но существующие\предложенные решения обходятся с помощью тупой комбинации клавиш. Так что если нужно разрешить пользователям только видеть отчет, то ко всему выше предложеному необходимо еще перекрыть вызов по Ctrl-P. Как это сделать я описал в предыдущем посте. Ну не нужно ничего инициализировать если форма должна закрыться сразу после того как открылась. (В идеале она и открыться то не должна, но что имеем то и имеем) А вот если нужно запретить вывод в какой то определенный канал, например, на принтер - то действительно нужно ковырнуть немножко глубже.
__________________
С уважением, kvan. |
|
14.12.2005, 07:43 | #18 |
Участник
|
Большое спасибо за советы. Задача нетривиальная, интересная.
Но при общении с постановщиком задач выяснилось, что ситуация "Это я, почтальон Печкин. Принес посылку. Только я вам ее не отдам... " в моем случае оказалась ненужной. Задача ограничилась простым задисэйбливанием кнопок формирования отчетов. Всем всего наилучшего! Последний раз редактировалось CDan; 14.12.2005 в 07:52. |
|
18.01.2006, 17:48 | #19 |
Участник
|
Цитата:
Сообщение от kvan
Гляньте как реализована российская платежка.
Там кнопки в печатной форме задезейблены. |
|
19.01.2006, 16:17 | #20 |
Участник
|
Fetch() возвращает False при повторной печати платежки.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: oip (2). |