![]() |
#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). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|