|
Вывод подписей на каждой странице пф | ☑ | ||
---|---|---|---|---|
0
ghostrid3r
06.09.12
✎
16:06
|
Добрый день подскажите пожалуйста. есть область подписей, которая должна выводится для каждой страницы ПФ. На данный момент выводится номенклатура до конца страницы, а потом на следующей продолжается. Теперь на каждую страницу нужно добавить подписи. Я понимаю что нужно сделать массив областей, и проверять влазят ли области. Но куда впихнуть эту проверку я не знаю.
Вот цикл который проверяет влазит ли номенклатура на лист или нет. Пока ВыборкаПоТоварам.Следующий() Цикл ВыборкаСтрокаПоТоварам = ВыборкаПоТоварам.Выбрать(); ТабДокумент.ПолеСнизу = 20; СледующаяСтраница = Ложь; Пока ВыборкаСтрокаПоТоварам.Следующий() Цикл Если Не СледующаяСтраница Тогда ОбластьМакета = Макет.ПолучитьОбласть("Строка"); КонецЕсли; Если Не ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.КоличествоБУИтого = КоличествоБУИтого; ОбластьМакета.Параметры.КоличествоИтогоПоФакту = КоличествоИтогоПоФакту; ОбластьМакета.Параметры.СтоимостьБУИтого = СтоимостьБУИтого; ОбластьМакета.Параметры.СтоимостьПоФактуИтого = СтоимостьПоФактуИтого; ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ПолеСнизу = 10; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ОбластьШапкаТаблицы); КоличествоБУИтого = 0; КоличествоИтогоПоФакту = 0; СтоимостьБУИтого = 0; СтоимостьПоФактуИтого = 0; ТабДокумент.ПолеСнизу = 20; КонецЕсли; НомерПП = НомерПП + 1; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Номер = НомерПП; ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокаПоТоварам); КоличествоБУИтого = КоличествоБУИтого+ ВыборкаСтрокаПоТоварам.КоличествоБУ; КоличествоИтогоПоФакту =КоличествоИтогоПоФакту + ВыборкаСтрокаПоТоварам.КоличествоПоФакту; СтоимостьБУИтого = СтоимостьБУИтого + ВыборкаСтрокаПоТоварам.СтоимостьБУ; СтоимостьПоФактуИтого = СтоимостьПоФактуИтого + ВыборкаСтрокаПоТоварам.СтоимостьПоФакту; ТабДокумент.Вывести(ОбластьМакета); Если Не ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда СледующаяСтраница = Истина; Иначе СледующаяСтраница = Ложь; КонецЕсли; КонецЦикла; |
|||
1
Naumov
06.09.12
✎
16:11
|
Колонтитулы отменили?
|
|||
2
ghostrid3r
06.09.12
✎
16:12
|
колонтитулы для каждой страницы, а у меня есть перед этим еще 1 страница и самая последняя страница, на которой не должны быть эти подписи.
|
|||
3
Reset
06.09.12
✎
16:17
|
// подготовить область с подписью
Пока .Следующий() Цикл // подготовить область со строкой данных // поместить в массив обе области Если Не ТабДок.ПроверитьВывод(массив) тогда // вывести область с подписью // вывести разделитель страниц конецЕсли; // вывести область со строкой данных КонецЦикла; |
|||
4
Reset
06.09.12
✎
16:20
|
При твоих хитрых проверках из (2) в цикле подпись не выводит и в массив не помещать
|
|||
5
ghostrid3r
06.09.12
✎
16:41
|
Сделал такую штуку, но получается что эти области подписей вечно на новой странице.
Пока ВыборкаПоТоварам.Следующий() Цикл ВыборкаСтрокаПоТоварам = ВыборкаПоТоварам.Выбрать(); ТабДокумент.ПолеСнизу = 20; СледующаяСтраница = Ложь; ОбластьПодписи = Макет.ПолучитьОбласть("ПодписьКаждойСтраницы"); Пока ВыборкаСтрокаПоТоварам.Следующий() Цикл Если Не СледующаяСтраница Тогда ОбластьМакета = Макет.ПолучитьОбласть("Строка"); // ОбластьПодписи = Макет.ПолучитьОбласть("ПодписьКаждойСтраницы"); МассивОбластей.Очистить(); КонецЕсли; Если Не ТабДокумент.ПроверитьВывод(МассивОбластей) Тогда ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.КоличествоБУИтого = КоличествоБУИтого; ОбластьМакета.Параметры.КоличествоИтогоПоФакту = КоличествоИтогоПоФакту; ОбластьМакета.Параметры.СтоимостьБУИтого = СтоимостьБУИтого; ОбластьМакета.Параметры.СтоимостьПоФактуИтого = СтоимостьПоФактуИтого; ТабДокумент.Вывести(ОбластьМакета); //ТабДокумент.ПолеСнизу = 10; ОбластьМакета = Макет.ПолучитьОбласть("ПодписьКаждойСтраницы"); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ПолеСнизу = 10; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ОбластьШапкаТаблицы); КоличествоБУИтого = 0; КоличествоИтогоПоФакту = 0; СтоимостьБУИтого = 0; СтоимостьПоФактуИтого = 0; ТабДокумент.ПолеСнизу = 20; КонецЕсли; НомерПП = НомерПП + 1; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Номер = НомерПП; ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокаПоТоварам); КоличествоБУИтого = КоличествоБУИтого+ ВыборкаСтрокаПоТоварам.КоличествоБУ; КоличествоИтогоПоФакту =КоличествоИтогоПоФакту + ВыборкаСтрокаПоТоварам.КоличествоПоФакту; СтоимостьБУИтого = СтоимостьБУИтого + ВыборкаСтрокаПоТоварам.СтоимостьБУ; СтоимостьПоФактуИтого = СтоимостьПоФактуИтого + ВыборкаСтрокаПоТоварам.СтоимостьПоФакту; ТабДокумент.Вывести(ОбластьМакета); ОбластьПодписи = Макет.ПолучитьОбласть("ПодписьКаждойСтраницы"); МассивОбластей.Добавить(ОбластьМакета); МассивОбластей.Добавить(ОбластьПодписи); Если Не ТабДокумент.ПроверитьВывод(МассивОбластей) Тогда СледующаяСтраница = Истина; Иначе СледующаяСтраница = Ложь; КонецЕсли; КонецЦикла; |
|||
6
ghostrid3r
06.09.12
✎
17:43
|
ну помогите кто нить чтобы оно выводило подписи на одной странице с номенлатурой, я уже этот ПроверитьВывод() куда только не пихал.
|
|||
7
Naumov
07.09.12
✎
13:35
|
(6) Тебе нужно проверять вывод полезной информации+подписей и если не умещается, то выводить подписи, а полезную информацию на новой странице.
в алгоритме в (5) не вижу нормального вывода. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |