Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СКД вывод независимых наборов данных горизонтально

СКД вывод независимых наборов данных горизонтально
Я
   commdt
 
21.05.15 - 15:43
До сих пор я думал, что разбираюсь в СКД, но тут возникла задача написать отчёт наподобие:
___________________________
|НаборДанных1|НаборДанных2|
|____________|____________|

Наборы между собой по сути не связаны, т.е. поля группировки и количество строк в них совершенно разные. По вертикали вывести независимые наборы данных не составляет труда, но вот с таким вариантом всё не так просто.
Вывести разные наборы данных в виде вложенных схем в колонках таблицы не удалось - их нельзя выбирать в колонках даже через группировку.
Вывести какое-то условное поле, например "Приход" (НаборДанных1) и "Расход" (НаборДанных2) в столбцах таблицы можно, но все дальнейшие группировки тоже становятся столбцами. Выводить внутренние группировки как ресурсы нельзя, ибо тогда они суммируются, а нужна разбивка по строкам с промежуточными итогами. Если добавить в строки какую-то условную группировку, чтобы ресурсы разбились по строкам, это срабатывает только для одного набора данных, даже если выбрать группировку по полю Дата, которая присутствует в обоих наборах данных.
Короче, я в тупике. Похоже остаётся только строить это чудо по старинке вручную.

Да, форма утверждена госзаказчиком, и это намертво, так что с комментариями, наподобие, "не морочься и сделай вертикально" просьба не обращаться.
   РазДва
 
1 - 21.05.15 - 16:17
(1) Постобработкой табличного документа "выдрать" область и вставить её "справа"
   commdt
 
2 - 21.05.15 - 16:42
(1) Хм, а это отличная идея. Спасибо
   commdt
 
3 - 25.05.15 - 16:24
Если кому-то вдруг понадобится.
Лучше всего в макете группировок оставить пустые столбцы (в моём случае слева), в которых будет располагаться второй набор данных. В таком случае проще подобрать ширину столбцов и не придётся заморачиваться со сдвигом области.
Соответстветственно, под пустыми стобцами рисуете макет группировки, которую нужно туда вставить, а модуле объекта вставляете процедуру наподобие:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    Настройки = КомпоновщикНастроек.Настройки;  
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина);
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки); 
    //ДокументРезультат = Новый ТабличныйДокумент;

    
    ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
    
    ЕстьПриход = Ложь;
    Для ПерваяСтрока = 13 По ВысотаТабДок Цикл
        Если НЕ ДокументРезультат.Область("R" + ПерваяСтрока + "C1").Текст = "" Тогда
            ЕстьПриход = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ЕстьПриход Тогда
        
        ПоследняяСтрока = 13 + ВысотаТабДок - ПерваяСтрока;
        
        ОбластьИсточник = ДокументРезультат.Область("R" + ПерваяСтрока + "C1:R" + ВысотаТабДок + "C4");
        ОбластьПриемник = ДокументРезультат.Область("R13C1:R" + ПоследняяСтрока + "C4");
        ДокументРезультат.ВставитьОбласть(ОбластьИсточник,ОбластьПриемник);
        
        ДокументРезультат.УдалитьОбласть(ОбластьИсточник);
        
    КонецЕсли;
    
КонецПроцедуры

13 - первая пустая строка
4 - количество столбцов под второй набор данных
Стандартную обработку отключать обязательно, иначе ничего не произойдёт.
   РазДва
 
4 - 25.05.15 - 17:17
(3) Какой удобный человек, накинул ему идею - ушел-сделал.
   Desna
 
5 - 25.05.15 - 17:25
(4) еще и тему назвал как надо
   Desna
 
6 - 25.05.15 - 17:26
имха, такое и через свой макет прокатит

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.