17.10.2007, 09:40 | #1 |
Участник
|
Ориентация страницы при печати отчета
В отчете в зависимости от количества выводимых столбцов должна устанавливаться либо портретная (если столбцов мало), либо альбомная (если их много) ориентация.
И вот пытаюсь установить пейзажную ориентацию. Такой код X++: ReportDesign1.paperOrientation(PrinterOrientation::Landscape); X++: this.PrintJobSettings().PaperOrientation(PrinterOrientation::Landscape); Если в свойствах дизайна ставим ориентацию Auto, то работает точно так же, как при установке Portrait. Что можно сделать, чтобы ориентация не сбрасывалась обратно? Или вообще надо как-то по-другому её задавать или в каком-то методе???? Подскажите, пожалуйста |
|
17.10.2007, 12:16 | #2 |
Участник
|
Конечно, можно создать два одинаковых дизайна - один портретный, а другой пейзажный... В итоге, так и сделали. Работает... но это же коряво!!!!
|
|
15.03.2013, 13:40 | #3 |
Участник
|
Как переключаться между дизайнами. Я создал второй дизайн для ТОРГ-12. В классе SalesPurchReport_RU в методе makeReportRun хочу прописать в какой дизайн вываливать репорт.
X++: report = reportRun.report();
report.design('123'); |
|
15.03.2013, 13:57 | #4 |
Участник
|
А если
X++: reportRun.design('123'); |
|
15.03.2013, 13:59 | #5 |
Участник
|
Цитата:
Сообщение от smailik
Как переключаться между дизайнами. Я создал второй дизайн для ТОРГ-12. В классе SalesPurchReport_RU в методе makeReportRun хочу прописать в какой дизайн вываливать репорт.
X++: report = reportRun.report();
report.design('123'); X++: public void init() { ; super(); switch(substr(infolog.language(), 1, 2)) { case 'fr' : element.design('DesignFR'); break; default : element.design('DesignNL'); break; } companyInfo = CompanyInfo::find(); bankParameters = BankParameters::find(); }
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
15.03.2013, 15:11 | #6 |
Участник
|
X++: reportRun.design('123');
report = reportRun.report(); X++: void init() { if (! element.args()) throw error("@GEE28896"); if (classidget(element.args().caller()) == classnum(SalesReport_Invoice_RU) || classidget(element.args().caller()) == classnum(PurchReport_Invoice_RU)) { salesPurchReport = element.args().caller(); } if (! salesPurchReport) { salesPurchReport = SalesPurchReport_Invoice_RU::constructFromArgs(element.args()); salesPurchReport.prompt(); salesPurchReport.reportRun(this); element.args().caller(salesPurchReport); salesPurchReport.preRun(); } super(); element.design('123'); } Последний раз редактировалось smailik; 15.03.2013 в 15:16. |
|
15.03.2013, 16:11 | #7 |
Участник
|
Может быть порулить в методе initSection в репорте? Там что-то тоже с дизайном происходит, насколько я помню.К сожалению, нет возможности все это посмотреть сейчас. В fetche он там не перетирает выставленный вами в ините дизайн?
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 15.03.2013 в 16:22. |
|
|
За это сообщение автора поблагодарили: smailik (1). |
15.03.2013, 16:30 | #8 |
Участник
|
В отчете SalesPurchInvoice_RU дизайн устанавливается в методе initSections, который вызывается из fetch. Соответственно, любые Ваши установки, выполненные в init он перетирает.
|
|
|
За это сообщение автора поблагодарили: smailik (1). |
15.03.2013, 16:42 | #9 |
Участник
|
Посмотрел. Да в initSection есть указание на дизайн. Прописал там и это помогло. Только столкнулся с тем что в копированном дизайне поля по другому называться стали, на конце добавилось _1. Дайте совет если я на форме разноска/предварительный_просмотр выведу галку "печатать в портрет", то как обработать её в репорте? Если не ошибаюсь то из этой формы разноска/предварительный_просмотр данные сначала попадают в какую-то таблицу.
|
|
15.03.2013, 17:06 | #10 |
Участник
|
Да, таблица называется TmpSalesPurchReportTable_RU. Ваш флаг нужно добавлять в эту таблицу и перед печатью заполнять. Естественно, заполнять нужно откуда-то, самое логичное из таблицы накладной, соответственно, нужно добавлять этот флаг и в таблицу накладной и заполнять его при разноске.
В самом репорте эту таблицу представляет переменная headerData. Только обратите внимание, что initSections вызывается перед выборкой накладных и если пользователь выберет несколько накладных для печати, то дизайн будет установлен по первой из них. Так как подгонка некоторых параметров использует имена контролов, а теперь у Вас в разных дизайнах они разные, то придется менять все места использования контролов в коде. Например, в ClassDeclaration завести переменные: Цитата:
ReportRealControl realControlVATValue;
ReportStringControl stringControlVATValueTxt; ReportRealControl realControlVATAmount; ReportRealControl realControlLineAmount; ReportStringControl stringControlVATAmountTxt; ReportStringControl stringControlLineAmountTxt; ReportShapeControl shapeLNHorizontalAbove; ReportShapeControl shapeLNHorizontalAboveItem; Естественно, будет много изменений в репорте, поэтому рекомендую делать это не на стандартном репорте, а на его копии и после отладки найти при помощи перекрестных ссылок использование стандартного репорта и заменить его на свой. |
|