|
Постраничный вывод в СКД | ☑ | ||
---|---|---|---|---|
0
vicof
23.10.14
✎
15:04
|
Почитал темы.
Например: v8: СКД: Как в СКД каждую запись в группировке печатать на отдельной странице До сих пор нельзя через правильное место сделать постраничный вывод? Нужно, чтобы все выводилось как есть, но если подвал и последняя строка не влазят на страницу, выводился подвал и на следующей странице выводилась шапка и т.д. Думал, мне помогут НачалоСтраницы, КонецСтраницы, ВместеСоСледующим, но не помогают. Отчет хочу сделать именно на СКД, просто табдок не интересует. Кто подскажет, куда копать? |
|||
1
vicof
23.10.14
✎
15:05
|
Могу скринов сделать, мне не жалко
|
|||
2
vicof
23.10.14
✎
15:39
|
Взываю к Дефендеру и АйронДемону
|
|||
3
Necessitudo
23.10.14
✎
15:50
|
А чего взывать? Нельзя так сделать и все тут.
|
|||
4
vicof
23.10.14
✎
16:04
|
(3) Я не хочу нельзя, я хочу можно
|
|||
5
Necessitudo
23.10.14
✎
16:31
|
(4) Ну тогда так - сначала формируй табличный документ-буфер, в него выводи отчет с СКД. Затем обходи этот буфер поячеечно и выводи в другой табличный документ в соответствии со своими потребностями. Чтобы понять, группировка перед тобой или нет, пользуй расшифровку.
|
|||
6
vicof
23.10.14
✎
16:32
|
Вариант, спасибо.
|
|||
7
Necessitudo
23.10.14
✎
16:32
|
(6) эй, я же пошутил!!!!
|
|||
8
vicof
23.10.14
✎
16:33
|
(7) А что делать? Я уже полдня над этим думаю
|
|||
9
vicof
23.10.14
✎
16:34
|
На безрыбье, как говорится...
|
|||
10
Necessitudo
23.10.14
✎
16:38
|
ТабличныйДокумент (SpreadsheetDocument)
ПовторятьПриПечатиСтроки (RepeatOnRowPrint) Использование: Чтение и запись. Описание: Тип: ОбластьЯчеекТабличногоДокумента. Содержит область строк, которая будет повторяться при печати каждого нового листа табличного документа. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. |
|||
11
vicof
23.10.14
✎
16:39
|
(10) Нифига, еще надо самому разрывы страницы вставлять. Автоматом в макете не ставятся. Как ни крутись, без второго табдока не обойтись.
|
|||
12
vicof
23.10.14
✎
17:13
|
И со вторым тоже не покатит. Поскольку макет СКД-шный, у областей имен не задашь. Пилять, как сделать вывод шапки и подвал на каждой странице, и итоги внизу страницы с помощью СКД в своем макете и заставить ее вставлять разрывы строк там, где надо? Я же разозлюсь и сделаю просто через табдок.
|
|||
13
Bober
23.10.14
✎
17:42
|
(0) вмешиваться в вывод данных СКД в табличный документ, анализировать вывод и вставлять разрыв страницы.
|
|||
14
vicof
23.10.14
✎
18:06
|
(13) Просвети, о великий...
//ВнешниеНаборы = Новый Структура; //ВнешниеНаборы.Вставить("ТаблицаАвтомобилей", Запрос.Выполнить().Выгрузить()); // //Схема = ПолучитьМакет("ТребованиеНаВыдачуПТС"); //КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; // //ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема); //КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); //Настройки = КомпоновщикНастроек.Настройки; //КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); // //НачПериода = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); //НачПериода.Использование = Истина; //НачПериода.Значение = Период.ДатаНачала; // //КонПериода = Настройки.ПараметрыДанных.Элементы.Найти("ОкончаниеПериода"); //КонПериода.Использование = Истина; //КонПериода.Значение = Период.ДатаОкончания; // //Макет = КомпоновщикМакета.Выполнить(Схема, Настройки); // //ПроцессорКомпоновки.Инициализировать(Макет, ВнешниеНаборы,,Истина); //ПроцессорВывода.УстановитьДокумент(ТабДок); //ПроцессорВывода.НачатьВывод(); //Пока Истина Цикл // // ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновки.Следующий(); // Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда // Прервать; // КонецЕсли; // // ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных); // //КонецЦикла; // //ТабДок = ПроцессорВывода.ЗакончитьВывод(); Что именно проанализировать? |
|||
15
Bober
23.10.14
✎
18:12
|
(14)
Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЕсли; Если ЭлементРезультата.ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных.НачалоИКонец Тогда //проанализировать потребность установки разрыва строки КонецЕсли; КонецЦикла; |
|||
16
Bober
23.10.14
✎
18:17
|
Так как СКД очень мутное пятно с усами, то дальше начинаются тонкости анализа.
|
|||
17
Bober
23.10.14
✎
18:19
|
(14) второй вариант:
Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; Если ТабДок.ВысотаТаблицы <> ВысотаТаблицы ПредыдущийШаг Тогда ВысотаТаблицыПредыдущийШаг = ТабДок.ВысотаТаблицы; //проанализировать потребность установки разрыва строки КонецЕсли; КонецЦикла; |
|||
18
vicof
24.10.14
✎
09:22
|
(17) Так вот в том-то и дело, что нечего анализировать.
|
|||
19
Bober
24.10.14
✎
09:57
|
(18) либо счетчик строк как печатных формах, либо ТабДок.ПроверитьВывод, либо еще как-то.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |