Имя: Пароль:
1C
1С v8
Вывод в табличный документ. Метод присоединить.
0 Vladislava-smile
 
29.10.15
11:25
Подскажите, пжлст ... Вывожу в макет рез-тат запроса:
Ячейки = ТаблицаРезультата.Вывести(ОбластьШапкаГС);

...

Для Каждого СтрГ1 ИЗ ТаблицаГруппировка1 Цикл
        ОбработкаПрерыванияПользователя();
        
        ОтборПоГ1 = Новый Структура;
        ОтборПоГ1.Вставить("Контрагент",СтрГ1.Контрагент);
        ТаблицаВзаиморасчетовГ1 = тзРезультат.Скопировать(ОтборПоГ1);
        
        ОбластьГруппировкаГС1 = Макет.ПолучитьОбласть("ГруппировкаСтрока1|ГруппировкаСтолбец");
        ОбластьГруппировкаПП1 = Макет.ПолучитьОбласть("ГруппировкаСтрока1|ПлановыеПлатежи");
        ОбластьГруппировкаБП1 = Макет.ПолучитьОбласть("ГруппировкаСтрока1|БудущиеПлатежи");
        ОбластьГруппировкаП1 = Макет.ПолучитьОбласть("ГруппировкаСтрока1|Платежи");
        
        ОбластьГруппировкаГС1.Параметры.Группировка = СтрГ1.Контрагент;
        ОбластьГруппировкаГС1.Параметры.СуммаЗаказа = СтрГ1.СуммаЗаказа;
        ОбластьГруппировкаГС1.Параметры.ДебиторскаяЗадолженность = СтрГ1.ДебиторскаяЗадолженность;
        ОбластьГруппировкаГС1.Параметры.КредиторскаяЗадолженность = СтрГ1.КредиторскаяЗадолженность;
        ОбластьГруппировкаГС1.Параметры.ПросроченныеПлатежи = ТаблицаВзаиморасчетовГ1.Итог("ПросроченныеПлатежи");
        Ячейки = ТаблицаРезультата.Вывести(ОбластьГруппировкаГС1);
        Ячейки.ЦветФона = Новый Цвет(248,242,216);
        ДатаНач = НачалоПериода;
        ДатаКон = ПолучитьДатуОкончанияПериода(ДатаНач);
        Пока ДатаНач < КонецДня(КонецПериода) Цикл
            ОбработкаПрерыванияПользователя();
            
            ОтборПоДатам = Новый Структура();
            Если ЭлементыФормы.ПолеВыбораПериодичность.Значение = "Не указано" Тогда
                ОтборПоДатам.Вставить("ПериодПлатежа",ДатаНач);
            ИначеЕсли ЭлементыФормы.ПолеВыбораПериодичность.Значение = "Неделя" Тогда
                ОтборПоДатам.Вставить("ПериодПлатежа",НачалоНедели(ДатаНач));
            ИначеЕсли ЭлементыФормы.ПолеВыбораПериодичность.Значение = "Месяц" Тогда
                ОтборПоДатам.Вставить("ПериодПлатежа",НачалоМесяца(ДатаНач));
            КонецЕсли;
            ОтборПоДатам.Вставить("Контрагент",СтрГ1.Контрагент);
            ТаблицаВзаиморасчетовТП = тзРезультат.Скопировать(ОтборПоДатам);
            
            ОбластьГруппировкаПП1.Параметры.ПлановыеПлатежи = ТаблицаВзаиморасчетовТП.Итог("ПлановыеПлатежи");
            Ячейки = ТаблицаРезультата.Присоединить(ОбластьГруппировкаПП1);
            Ячейки.ЦветФона = Новый Цвет(248,242,216);
            ДатаНач = НачалоДня(ДатаКон+1);
            ДатаКон = ПолучитьДатуОкончанияПериода(ДатаНач);
            
        КонецЦикла;
        ОбластьГруппировкаБП1.Параметры.БудущиеПлатежи = ТаблицаВзаиморасчетовГ1.Итог("БудущиеПлатежи");
        Ячейки = ТаблицаРезультата.Присоединить(ОбластьГруппировкаБП1);
        Ячейки.ЦветФона = Новый Цвет(248,242,216);
        
        
//Вывод информации по платежам
        ОтборПлатежи = Новый Структура();
        ОтборПлатежи.Вставить("Контрагент",СтрГ1.Контрагент);
        Для Каждого СтрокаНомераПлатежей Из НомераПлатежей Цикл
            Если СтрокаНомераПлатежей.НомерПлатежа <> Null тогда
            ОтборПлатежи.Вставить("НомерПлатежа",СтрокаНомераПлатежей.НомерПлатежа);
            ПлатежиИтоги = тзРезультат.Скопировать(ОтборПлатежи);
            ОбластьГруппировкаП1.Параметры.СуммаПлатежа = ПлатежиИтоги.Итог("СуммаПлатежа");    
            Ячейки = ТаблицаРезультата.Присоединить(ОбластьГруппировкаП1);
            Ячейки.ЦветФона = Новый Цвет(255,255,255);

            КонецЕсли;
        КонецЦикла;    
        
        
            
        //Выводим группировку второго уровня
        ТаблицаРезультата.НачатьГруппуСтрок("2_уровень",Ложь);
        Отбор = Новый Структура("Контрагент",СтрГ1.Контрагент);
        ТаблицаГруппировка2 = тзРезультат.Скопировать(Отбор,"Инвойс,СуммаЗаказа,ДебиторскаяЗадолженность,КредиторскаяЗадолженность");
        ТаблицаГруппировка2.Свернуть("Инвойс,СуммаЗаказа,ДебиторскаяЗадолженность,КредиторскаяЗадолженность");
        ТаблицаГруппировка2.Сортировать("Инвойс");
        
        Для Каждого СтрГ2 ИЗ ТаблицаГруппировка2 Цикл
            ОбработкаПрерыванияПользователя();
            
            ОтборПоГ2 = Новый Структура;
            ОтборПоГ2.Вставить("Контрагент",СтрГ1.Контрагент);
            ОтборПоГ2.Вставить("Инвойс",СтрГ2.Инвойс);
            ТаблицаВзаиморасчетовГ2 = тзРезультат.Скопировать(ОтборПоГ2);
            
            ОбластьГруппировкаГС2 = Макет.ПолучитьОбласть("ГруппировкаСтрока2|ГруппировкаСтолбец");
            ОбластьГруппировкаПП2 = Макет.ПолучитьОбласть("ГруппировкаСтрока2|ПлановыеПлатежи");
            ОбластьГруппировкаБП2 = Макет.ПолучитьОбласть("ГруппировкаСтрока2|БудущиеПлатежи");
            ОбластьГруппировкаП2 = Макет.ПолучитьОбласть("ГруппировкаСтрока2|Платежи");

            ОбластьГруппировкаГС2.Параметры.Группировка = СтрГ2.Инвойс;
            ОбластьГруппировкаГС2.Параметры.СуммаЗаказа = СтрГ2.СуммаЗаказа;
            ОбластьГруппировкаГС2.Параметры.ДебиторскаяЗадолженность = СтрГ2.ДебиторскаяЗадолженность;
            ОбластьГруппировкаГС2.Параметры.КредиторскаяЗадолженность = СтрГ2.КредиторскаяЗадолженность;
            ОбластьГруппировкаГС2.Параметры.ПросроченныеПлатежи = ТаблицаВзаиморасчетовГ2.Итог("ПросроченныеПлатежи");
            
// ------------------------------------------------------------------------
            ОтборПлатежи = Новый Структура();
            ОтборПлатежи.Вставить("Инвойс",СтрГ2.Инвойс);

            Для Каждого СтрокаНомераПлатежей Из НомераПлатежей Цикл
            Если СтрокаНомераПлатежей.НомерПлатежа <> Null тогда
    
                ОтборПлатежи.Вставить("НомерПлатежа",СтрокаНомераПлатежей.НомерПлатежа);
                ПлатежиГруппировка = тзРезультат.Скопировать(ОтборПлатежи);
                СтрокаТаблицы = ?(ПлатежиГруппировка.Количество() = 0, Неопределено,ПлатежиГруппировка[0]);
                Если СтрокаТаблицы <> Неопределено Тогда
                    ОбластьГруппировкаП2.Параметры.Заполнить(СтрокаТаблицы);    
                Иначе
                    ОбластьГруппировкаП2.Параметры.ДатаПлатежа = '00010101000000';    
                    ОбластьГруппировкаП2.Параметры.СуммаПлатежа = 0;    
                КонецЕсли;
            ТаблицаРезультата.Присоединить(ОбластьГруппировкаП2);
            КонецЕсли;
            КонецЦикла;    


// ------------------------------------------------------------------------

По 2-му уровню группировки первая строка присоединяется в строке 1-го уровня группировки (((. Есть какой-то метод переноса или в чем проблема может быть?
Скрин рез-та: https://dropmefiles.com/qFAaq
1 sash-ml
 
29.10.15
11:42
после начала группировки сток нужно что-то вывести а потом присоединять

ТаблицаРезультата.Вывести(ОбластьГруппировкаГС2);
ТаблицаРезультата.Присоединить(ОбластьГруппировкаП2);
...
2 Vladislava-smile
 
29.10.15
12:58
(1) - Спасибо, знаю что надо вывести, просто невнимательная совсем, в первой группировке проверила, а во второй зачем, конечно ... Ладно, мысли в слух, спасибо в общем еще раз.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.