Имя: Пароль:
1C
1С v8
Постраничный вывод в СКД
,
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) либо счетчик строк как печатных формах, либо ТабДок.ПроверитьВывод, либо еще как-то.