Имя: Пароль:
1C
 
СКД, макет
0 Maxus43
 
07.08.08
11:16
Доброго дня.
Возник вопрос, туплю чтото...
Есть свой макет в СКД, требуется одну область, например Шапка, вывести отдельно на странице, т.е. чтобы все остальные данные выводились со 2-й страницы. Типовые покопал, Белоусова посмотрел - не разобрался пока... Пните в нужном направлении плиз.
1 Maxus43
 
07.08.08
11:36
ХэлП ((
2 Maxus43
 
07.08.08
12:07
Апстену перед обедом
3 Maxus43
 
07.08.08
13:07
АПстену после обеда... ХэлП
4 IronDemon
 
07.08.08
13:11
Может тебе просто новую страницу после вывода некоторых данных надо?
5 Maxus43
 
07.08.08
13:20
(4) можно сказать и так, после вывода шапки - начать новую страницу...
6 Maxus43
 
07.08.08
13:49
чот нифига не получается разрыв страницы сделать... ни ЕДИНОГО РАЗРЫВА! кашмар!
7 ooki
 
07.08.08
13:55
ВывестиГоризонтальныйРазделительСтраниц()
8 Maxus43
 
07.08.08
13:57
(7) в СКД не получается так... куда этот разрыв там вставлять то?
9 Aprobator
 
07.08.08
13:58
По всей видимости придется руками ковырять процесс изнутри. Т.е.
Что-нить типа:
ТабДок = Новый ТабличныйДокумент;

// выводим шапку и делаем разрыв - подробно описывать лениво.

Затем
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);

Ну и т.д. (см Белоусова).
10 ooki
 
07.08.08
13:59
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц()
11 Maxus43
 
07.08.08
14:00
(9) так и ковыряю, не могу отловить когда он область нужную выводит чтобы после этого разрыв вставить...
12 Aprobator
 
07.08.08
14:09
Какие-нить признаки нужной области есть, после которой надо вставить разрыв? Типа текста или еще чего-нибудь?
13 Maxus43
 
07.08.08
14:13
(12)
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);

По ЭлементРезультата могу определить что это то, т.е. нужная область... Не получается после этого вставить РазрывСтраницы
14 Maxus43
 
07.08.08
14:16
// Создадим и инициализируем процессор вывода результата
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);

   // Обозначим начало вывода
   ПроцессорВывода.НачатьВывод();
   Состояние(НСТР("ru='Если Вы хотите прервать вывод отчета, нажмите Ctrl+Break'"));

   // Основной цикл вывода отчета
   Счетчик = 0;
   Пока Истина Цикл
       
       
       // Получим следующий элемент результата компоновки
       ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
       
       // Получим следующий элемент результата компоновки
       Если ЭлементРезультата = Неопределено Тогда
           
           // Следующий элемент не получен - заканчиваем цикл вывода
           Прервать;
           
       Иначе
           
           // Элемент получен - выведем его при помощи процессора вывода
           ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
           
       КонецЕсли;
       
       ОбработкаПрерыванияПользователя();
       
   КонецЦикла;
   
   ПроцессорВывода.ЗакончитьВывод();
15 IronDemon
 
07.08.08
14:26
Таб = ЭлементыФормы.Результат;

Таб.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
Таб.АвтоМасштаб=Истина;
Таб.Очистить();

Макет = ПолучитьМакет("Макет");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПеревод = Макет.ПолучитьОбласть("Перевод");

//цикл
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, );

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , );

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);

ПроцессорВывода.НачатьВывод();

ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока ЭлементРезультата <> Неопределено Цикл
   ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;

Таб = ПроцессорВывода.ЗакончитьВывод();
Таб.Вывести(ОбластьПеревод);
16 Maxus43
 
07.08.08
14:34
Всем спасибо, вкурил...) всё оказалось как всегда легче чем мудрил :)
17 Aprobator
 
07.08.08
14:34
(14) Ну а где проверка, что пора делать разрыв страницы? Если ПроцессорВывода сам определяет разрывы, то можно попробовать его в нужный момент рубануть, а потом снова запустить.

Что - то типа
Если НужныйЭлемент Тогда
// тормозим процессор вывода
    ПроцессорВывода.ЗакончитьВывод();
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц() ;
// возвращаем управление
    ПроцессорВывода.НачатьВывод();
КонецЕсли;
18 Maxus43
 
07.08.08
14:40
(17) так и сделал, кстати без торможения процессора прокатило. Лучше всё таки тормозить его?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.