|
Повторение области печати на каждой странице | ☑ | ||
---|---|---|---|---|
0
KoalaJustKoala
25.05.21
✎
06:20
|
Доброго времени суток!
С утра прилетел небольшой баг, дублирует срезы на первых двух страницах, а на 3й не хочет (вчера не было возможности тестировать на более чем 2х листах) Вот скриншот 1стр: https://prnt.sc/13dknre Вот скриншот 2стр: https://prnt.sc/13dko6o и скриншот 3ей: https://prnt.sc/13dkox1 Как видно, на трейтьей нет среза как на 1й или 2й. Вот код для лучше понимания что я делал и как: ОбластьДанных = Макет.ПолучитьОбласть("Товар"); ИтогоСуммаВРозницеСтарая = 0; ИтогоСуммаВРознице = 0; Ном = 0; ПоследниеСтроки = Новый Массив; ПоследниеСтроки.Добавить(ОбластьДанных); //// Товары Пока ВыборкаСтрокТовары.Следующий() Цикл Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Ном = Ном + 1; // ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТовары); // ОбластьНомера.Параметры.НомерСтроки = Ном; // ТабДокумент.Вывести(ОбластьНомера); // Если ВыводитьКоды Тогда // Если Колонка = "Артикул" Тогда // ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул; // Иначе // ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код; // КонецЕсли; // ТабДокумент.Присоединить(ОбластьКодов); // КонецЕсли; ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьДанных.Параметры.НомерСтроки = Ном; ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар); // + УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрокТовары); ИтогоСуммаВРозницеСтарая =ИтогоСуммаВРозницеСтарая+ОбластьДанных.Параметры.СуммаВРозницеСтарая; ИтогоСуммаВРознице=ИтогоСуммаВРознице+ОбластьДанных.Параметры.СуммаВРознице; ТабДокумент.Вывести(ОбластьДанных); // СуммаИтого = СуммаИтого + ОбластьДанных.Параметры.Сумма; Если Ном>28 Тогда НМР=НМР+1; Если НМР=30 Тогда НМР=0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЕсли; Если НЕ ТабДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); КонецЕсли; КонецЦикла; |
|||
1
KoalaJustKoala
25.05.21
✎
06:38
|
https://prnt.sc/13dlg5o
Прикладываю скриншот самого макета |
|||
2
mhpopov
25.05.21
✎
06:40
|
Для 3-й страницы у тебя условие наверно не отрабатывает
Если НЕ ТабДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда |
|||
3
mhpopov
25.05.21
✎
06:43
|
Может быть так?
ОбластьДанных = Макет.ПолучитьОбласть("Товар"); ИтогоСуммаВРозницеСтарая = 0; ИтогоСуммаВРознице = 0; Ном = 0; ПоследниеСтроки = Новый Массив; ПоследниеСтроки.Добавить(ОбластьДанных); //// Товары Пока ВыборкаСтрокТовары.Следующий() Цикл Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Ном = Ном + 1; // ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТовары); // ОбластьНомера.Параметры.НомерСтроки = Ном; // ТабДокумент.Вывести(ОбластьНомера); // Если ВыводитьКоды Тогда // Если Колонка = "Артикул" Тогда // ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул; // Иначе // ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код; // КонецЕсли; // ТабДокумент.Присоединить(ОбластьКодов); // КонецЕсли; ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьДанных.Параметры.НомерСтроки = Ном; ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар); // + УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрокТовары); ИтогоСуммаВРозницеСтарая =ИтогоСуммаВРозницеСтарая+ОбластьДанных.Параметры.СуммаВРозницеСтарая; ИтогоСуммаВРознице=ИтогоСуммаВРознице+ОбластьДанных.Параметры.СуммаВРознице; ТабДокумент.Вывести(ОбластьДанных); // СуммаИтого = СуммаИтого + ОбластьДанных.Параметры.Сумма; Если Ном>28 Тогда НМР=НМР+1; Если НМР=30 Тогда НМР=0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); КонецЕсли; КонецЕсли; КонецЦикла; |
|||
4
KoalaJustKoala
25.05.21
✎
06:51
|
Кстати, сейчас перенес раздилитель в свое условие, и все начало печататься адекватно
|
|||
5
KoalaJustKoala
25.05.21
✎
06:52
|
То есть, вот это условие
Если Ном>28 Тогда НМР=НМР+1; Если НМР=30 Тогда НМР=0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЕсли; выходило куда-то не туда |
|||
6
KoalaJustKoala
25.05.21
✎
06:56
|
Если НЕ ТабДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); КонецЕсли; Переписал вот в такое и вуаля, все печатает красиво и как надо... Видимо, нужно на будущее проверять на визуал и стараться все делать в одном условии |
|||
7
KoalaJustKoala
25.05.21
✎
07:38
|
Вообщем, сейчас пробовал подобное с другим документом...
И насколько понял, ГоризонтальныйРазделитель очень сильно способствует, полезная инфа на будущее однако.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |