Имя: Пароль:
1C
1С v8
v8: СКД.Вывод элементов результата с объединением ячеек.Странное поведение платформы
,
0 Armando
 
07.07.14
16:47
Вывожу по горизонтали элементы результата СКД, и хочу, чтоб выводимые ячейки объединялись.
Все хорошо работает пока в строке макета области одна ячейка.
Как только ячеек становится больше, то результат немного удивляет - первые ячейки выводятся не объединенными, а остальные объединяются. Ожидаемый результат - все ячейки объединены.
Вот код для примера


Процедура ВывестиТабличныйДокумент(КоличествоЯчеек = 1)
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.НачатьВывод();
    
    ЭлементРезультата = Новый ЭлементРезультатаКомпоновкиДанных;
    ЭлементРезультата.РасположениеВложенныхЭлементов = РасположениеВложенныхЭлементовРезультатаКомпоновкиДанных.Горизонтально;
    ЭлементРезультата.ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных.Начало;
    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    
    Для СчетчикГрупп = 1 По 3 Цикл
        
        ЭлементРезультата = Новый ЭлементРезультатаКомпоновкиДанных;
        ЭлементРезультата.Макет = "Макет1";
        ОписаниеМакетаОбластиМакетаКомпоновкиДанных = ЭлементРезультата.Макеты.Добавить();
        ОписаниеМакетаОбластиМакетаКомпоновкиДанных.Имя = "Макет1";
        
        МакетОбластиКомпоновкиДанных = Новый МакетОбластиКомпоновкиДанных;
        
        // делаем несколько строк
        Для СчетчикСтрок = 1 По 1 Цикл
            
            СтрокаТаблицыОбластиКомпоновкиДанных = МакетОбластиКомпоновкиДанных.Добавить(Тип("СтрокаТаблицыОбластиКомпоновкиДанных"));
            
            Для СчетчикЯчеек = 1 По КоличествоЯчеек Цикл
                ЯчейкаТаблицыОбластиКомпоновкиДанных = СтрокаТаблицыОбластиКомпоновкиДанных.Ячейки.Добавить();
                ЯчейкаТаблицыОбластиКомпоновкиДанных.Оформление.УстановитьЗначениеПараметра("ОбъединятьПоГоризонтали", СчетчикГрупп > 1 Или СчетчикЯчеек > 1);
                ПолеОбластиКомпоновкиДанных = ЯчейкаТаблицыОбластиКомпоновкиДанных.Элементы.Добавить(Тип("ПолеОбластиКомпоновкиДанных"));
                ПолеОбластиКомпоновкиДанных.Значение = "Тестовое значение";
            КонецЦикла;
            
        КонецЦикла;
        
        ОписаниеМакетаОбластиМакетаКомпоновкиДанных.Макет = МакетОбластиКомпоновкиДанных;
        
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        
    КонецЦикла;
    
    ЭлементРезультата = Новый ЭлементРезультатаКомпоновкиДанных;
    ЭлементРезультата.ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных.Конец;
    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    
    Результат = ПроцессорВывода.ЗакончитьВывод();
    Результат.Показать();
    
КонецПроцедуры


https://www.dropbox.com/s/k5sfch2r092ctqk/ТриГруппыОднаЯчейка.png
Вот так выводится, если 1 ячейка. Т.е. она выводится 3 раза и результат объединяется.

https://www.dropbox.com/s/cafs3ov9rtihxuo/ТриГруппыТриЯчейки.png
А вот так выводятся 3 ячейки. Надо чтоб все 9 ячеек были объединены.

Кто-нибудь сталкивался?
1 Armando
 
07.07.14
16:48
2 Armando
 
08.07.14
11:30
Никто не в курсе?
3 samozvanec
 
08.07.14
11:43
не понял, что ты объединить хочешь?
4 Armando
 
08.07.14
11:48
(3) Ячейки. Надо чтоб все 9 ячеек были объединены.
5 samozvanec
 
08.07.14
11:53
(4) ну если в макете, то объедини прям в макете заранее, а так - после формирования что мешает? вообще непонятно, зачем ты в макете это делаешь
6 Armando
 
08.07.14
12:05
(5) Что значит заранее?
После формирования ничего не мешает, надо чтоб процессор вывода сам это сделал, а он не хочет.
Это просто пример, что у меня не получается. Либо ошибка в платформе.
В реале хочу сделать универсальный механизм для отчетов на СКД, чтоб группировки колонок накрывались объединенной шапкой от родительской группировки.
7 samozvanec
 
08.07.14
14:29
(6) заранее значит на закладке Макет. а шапку объединить - попробуй поиграть с настройками, там группы есть. универсальный механизм не особо представляю. ладно бы шаблон формы, но схему...
8 Armando
 
08.07.14
14:37
(7) Нет никакой закладки Макет. Нет схемы компоновки, нет настроек. Есть только процессор вывода и элементы результата. В (0) весь код.
9 kittystark
 
09.07.14
14:44
делай свои объединяшки после ПроцессорВывода.ЗакончитьВывод()

у скд "свои индексы" строки/колонки в которых будет выводиться очередной кусочек-макет, который может состоять и не из одной строки/колонки

попробуй без своих дописок после ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата)
вызвать ЭлементРезультата.Показать, может чего нового увидишь
10 Armando
 
09.07.14
14:47
(9) "делай свои объединяшки после ПроцессорВывода.ЗакончитьВывод()"
Это я умею. Хочу подружиться с процессором вывода, а он со мной не хочет.

"у скд "свои индексы" строки/колонки в которых будет выводиться очередной кусочек-макет, который может состоять и не из одной строки/колонки"
знаю. только не понял к чему это

"попробуй без своих дописок после ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата)
вызвать ЭлементРезультата.Показать, может чего нового увидишь"
Видел уже
11 Armando
 
15.07.14
20:14
Кароч, это ошибка в платформе.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший