|
Печать подвала с последними двумя строками таблицы | ☑ | ||
---|---|---|---|---|
0
StackOverflow
10.08.18
✎
09:57
|
Всем привет.
Самописная конфа, много печатных форм. Просят чтобы подвал печатался с двумя последними строками таблицы, если он не помещается на текущий лист. Подскажите пожалуйста, как получше реализовать. Хочу сделать без подсчета строк с использованием метода ПроверитьВывод() Проблема в том что во множестве печатных форм в одну и ту же переменную ОбластьМакета поэтапно присваиваются разные значения, сначала Область строка, потом область Итого, потом область Подвал. вот кусок кода с моей проверкой, помещается ли строка таблицы на текущий лист, а вот как дальше сделать, чтобы печатало подвал с двумя последними строками таблицы пока не соображу. Подскажите пожалуйста, братцы =) .... ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Ном=0; Для Каждого Тек Из ВремТаб Цикл Серия=СокрЛП(Тек.Серия); Ном=Ном+1; ОбластьМакета.Параметры.Заполнить(Тек); ОбластьМакета.Параметры.Номер = Ном; ОбластьМакета.Параметры.ПредставлениеТовара = ПредставлениеТовара(Тек); ОбластьМакета.Параметры.Производитель = Тек.Производитель; ОбластьМакета.Параметры.КодЕдиницыИзмерения = Тек.Единица.Код; ОбластьМакета.Параметры.ЕдиницаИзмерения = Тек.Единица.Наименование; ОбластьМакета.Параметры.Количество = Тек.Количество; ОбластьМакета.Параметры.Брутто = Тек.Брутто; ОбластьМакета.Параметры.Нетто = Тек.Нетто; ОбластьМакета.Параметры.Цена = Формат(Тек.ЦенаПокупателя, "ЧДЦ="+СокрЛП(Док.Округление));//+?(Число(Док.Валюта.Код)=810,"2","4")); ОбластьМакета.Параметры.Стоимость = Тек.СуммаПокупателя; ОбластьМакета.Параметры.Акциз = "-"; ОбластьМакета.Параметры.СтавкаНДС = ?(Тек.НДСПокупателя>0,Тек.СтавкаНДС,"0%"); ОбластьМакета.Параметры.СуммаНДС = Тек.НДСПокупателя; ОбластьМакета.Параметры.Всего = Тек.СуммаПокупателя + Тек.НДСПокупателя; ОбластьМакета.Параметры.КодСтраны = Тек.СтранаПроисхождения.Код; ОбластьМакета.Параметры.ПредставлениеСтраны = Тек.СтранаПроисхождения.Сокращение; ОбластьМакета.Параметры.ПредставлениеГТД = Тек.НомерГТД; ОбластьМакета.Параметры.Серия = Тек.Серия; ОбластьМакета.Параметры.СрокГодности = Тек.ГоденДо; //Проверка помещается ли на страницу// Если Не ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда Сообщить("Документ не умещается на страницу!"); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); // увеличим итоги по дукументу ИтогоСумма=ИтогоСумма+Тек.СуммаПокупателя; ИтогоСуммаНДС=ИтогоСуммаНДС+Тек.НДСПокупателя; ИтогоНетто=ИтогоНетто+Тек.Нетто; ИтогоБрутто=ИтогоБрутто+Тек.Брутто; ИтогоКоличество=ИтогоКоличество+Тек.Количество; ИтогоКолМест=ИтогоКолМест+Тек.КолМест; ИтогоСумма2=ИтогоСумма2+Тек.Сумма; КонецЦикла; // Выводим подвал документа ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.ИтогоСумма = ИтогоСумма; ОбластьМакета.Параметры.ИтогоСуммаНДС = ИтогоСуммаНДС; ОбластьМакета.Параметры.ИтогоВсего = ИтогоСуммаНДС+ИтогоСумма; ОбластьМакета.Параметры.ИтогоНетто = ИтогоНетто; ОбластьМакета.Параметры.ИтогоБрутто = ИтогоБрутто; ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьМакета.Параметры.ИтогоКолМест = ИтогоКолМест; ТабДокумент.Вывести(ОбластьМакета); Если Док.Скидка Тогда ОбластьМакета = Макет.ПолучитьОбласть("Скидка"); ОбластьМакета.Параметры.ИтогоСкидка = ИтогоСуммаНДС + ИтогоСумма - ИтогоСумма2; ОбластьМакета.Параметры.ИтогоКОплате= ИтогоСумма2; ТабДокумент.Вывести(ОбластьМакета); КонецЕсли; // Выводим подвал документа ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(ОбластьМакета); // Зададим параметры макета ТабДокумент.ПолеСверху = 5; ТабДокумент.ПолеСлева = 5; ТабДокумент.ПолеСнизу = 5; ТабДокумент.ПолеСправа = 5; ТабДокумент.РазмерКолонтитулаСверху = 0; ТабДокумент.РазмерКолонтитулаСнизу = 0; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.ОтображатьСетку = Ложь; ТабДокумент.ОтображатьЗаголовки = Ложь; ну и так далее... |
|||
1
Малыш Джон
10.08.18
✎
10:03
|
(0) параллельно с областью вывода, на которую проверяешь этот вывод, формируй отдельно массив из областей-строк, и если после проверки вывода, оказывается что на следующую страницу переносится только подвал, то формируй область вывода из массива без двух последних строк
|
|||
2
1c_asadi
10.08.18
✎
12:21
|
(0) Счётчик = Счётчик + 1;
МассивОбластей = Новый Массив; Если Счётчик = Данные.Количество() Тогда МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьУсловия")); МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьИтого")); МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьПодписи")); КонецЕсли; Область.Параметры.НомерСтроки = Область.Параметры.НомерСтроки+1; Область.Параметры.Товар = Строка.Номенклатура; Область.Параметры.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения; Область.Параметры.Количество = Строка.Количество; Область.Параметры.Цена = Формат(Строка.Цена/1.18,"ЧДЦ=2"); Область.Параметры.Стоимость = Формат(Строка.Сумма - Строка.СуммаНДС,"ЧДЦ=2"); Область.Параметры.НДС = Формат(Строка.СуммаНДС,"ЧДЦ=2"); Область.Параметры.СтоимостьСНДС = Формат(Строка.Сумма,"ЧДЦ=2"); МассивОбластей.Добавить(Область); Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивОбластей) Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); Область1 = Макет.ПолучитьОбласть("ОбластьШапка"); ТабличныйДокумент.Вывести(Область1); КонецЕсли; ТабличныйДокумент.Присоединить(Область); у меня вот так сделано, но мне надо одну строку переносить и шапку на следующую страницу, ну и соответственно подвал |
|||
3
1c_asadi
10.08.18
✎
12:22
|
+ (2) похоже надо проверять когда ВремТаб.Количество() - 1 = Ном в вашем случае
|
|||
4
1c_asadi
10.08.18
✎
12:23
|
+(3) добавлять подвал* , а не проверять
|
|||
5
StackOverflow
10.08.18
✎
14:31
|
(2) Спасибо за наводку, пробовал этим методом, но пока не получается.
|
|||
6
StackOverflow
10.08.18
✎
15:01
|
Пока застрял на
... МассивОбластей = Новый Массив; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Ном=0; Для Каждого Тек Из ВремТаб Цикл Если Ном = ВремТаб.Количество() - 2 Тогда МассивОбластей.Добавить(ОбластьМакета); Подвал = Макет.ПолучитьОбласть("Подвал"); КонецЕсли; Если Не ТабДокумент.ПроверитьВывод(Подвал) Тогда Сообщить("Подвал не помещается"); КонецЕсли; Ном=Ном+1; ОбластьМакета.Параметры.Заполнить(Тек); ОбластьМакета.Параметры.Номер = Ном; ОбластьМакета.Параметры.ПредставлениеТовара = ПредставлениеТовара(Тек); ОбластьМакета.Параметры.Производитель = Тек.Производитель; ОбластьМакета.Параметры.КодЕдиницыИзмерения = Тек.Единица.Код; |
|||
7
spiller26
10.08.18
✎
15:03
|
(7) Посмотри стандартные выводы той же Торг-12 в конфе.
|
|||
8
RomanYS
10.08.18
✎
15:07
|
ТабДок.Область(НомерПредпоследнейСтрокиТаблицы,,НомерПоследнейСтрокиТаблицы,).ВместеСоСледующим = Истина;
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |