30.03.2021, 17:56 | #1 |
Участник
|
Вывод последней строки программируемой секции на новой странице в отчёте
Всем добрый день.
Axapta 3.0. Есть в отчёте две программируемых секции, назовём MasterSection и SlaveSection. SlaveSection фиксированный высоты, данные выводятся один раз. Нужно чтобы, если данные из SlaveSection выводятся на новой странице, выводилась последняя строка из предыдущей программируемой секции MasterSection. Код ниже (фрагмент с условием). Проблема в следующем, если при расчёте ((element.design().printerPageHeight() - element.currentYmm100()) < curMasterSectionHeight последняя строка выводится на текущей странице, а вроде должна автоматически переносится на новую страницу. Пример: element.design().printerPageHeight() = 28850 element.currentYmm100() = 26950 curMasterSectionHeight = 2025 element.design().printerPageHeight() - element.currentYmm100() = 1900 < curMasterSectionHeight = 2025, т.е. вывод по идее должен быть на новой странице, а выводится на текущей. После вывода element.design().printerPageHeight() = 28979 X++: curMasterSectionHeight = FieldMasterSection.heightOfWordWrappedString100mm("Выводимый текст"); if (((element.design().printerPageHeight() - element.currentYmm100()) >= curMasterSectionHeight) && (element.design().printerPageHeight() - element.currentYmm100()) < (curMasterSectionHeight + SlaveSection.height100mm())) { element.newPage(); } |
|
31.03.2021, 16:33 | #2 |
Участник
|
Если я правильно понял, то MasterSection может быть больше чем на одном листе.
Как вариант можно попробовать вот что: Создать PragrammableSection выполнить её в форме последней строки из MasterSection. При execute SlaveSection смотреть печатается они полностью на новом листе или нет. Если да, то вызвать execute PragrammableSection. Если нет, то нет |
|
31.03.2021, 21:46 | #3 |
Участник
|
А если и в этом случае все равно вручную вызывать newPage? Будут какие-то негативные эффекты? По идее не должно.
Уберите первое условие, оставьте только второе X++: curMasterSectionHeight = FieldMasterSection.heightOfWordWrappedString100mm("Выводимый текст"); if (//((element.design().printerPageHeight() - element.currentYmm100()) >= curMasterSectionHeight) && (element.design().printerPageHeight() - element.currentYmm100()) < (curMasterSectionHeight + SlaveSection.height100mm())) { element.newPage(); } |
|