Имя: Пароль:
1C
 
Две страницы на форме отчета
0 Vogde
 
25.08.14
14:09
Добрый день. Вновь обращаюсь к вам за советом. Суть вопроса такова: Создал в СКД отчет который состоит из двух схем. Необходимо чтобы форма отчета была из двух страниц, одна схема выводила данные на одну страницу, другая на другую. Создал на форме поля отбора и параметров, на обоих страницах поля табличного документа. Первая схема компонует Резервы и остатки на складах, вторая компонует обороты по товарам. Написал такой код для формирования:
Код 1C

Процедура ДействиеФормыСформировать(Кнопка)
    
    Если ДатаНачала > ДатаОкончания ИЛИ ДатаНачала = '00010101' ИЛИ ДатаОкончания = '00010101' Тогда
        Предупреждение ("Не установлени период отбора");
        Возврат;
    КонецЕсли;
    
    ЭлементыФормы.Результат.Очистить();
    КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
    
    //ДатаПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала");
    //ДатаПараметр.Использование = Истина;
    //ДатаПараметр.Значение = НачалоДня(ДатаНачала);
    ДатаПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания");
    ДатаПараметр.Использование = Истина;
    ДатаПараметр.Значение = КонецДня(ДатаОкончания);
    СкладПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Склад");
    СкладПараметр.Использование = Истина;
    СкладПараметр.Значение = Склад;
    ТипЦенПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТипЦен");
    ТипЦенПараметр.Использование = Истина;
    ТипЦенПараметр.Значение = ТипЦен;
    
    ПараметрДанных= КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВалРегУчета");
    ПараметрДанных.Значение = Справочники.Валюты.НайтиПоКоду("643");
    ПараметрДанных.Использование=Истина;
    
    НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Номенклатура")).Поле;
    НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
    НовыйЭлементОтбора.Использование = Истина;
    НовыйЭлементОтбора.ПравоеЗначение = Номенклатура;
    
    ЭтотОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);
    
    
    
    //Далее формирую отчет для второй страници
    //Получаем схему из макета
    СхемаКомпоновкиДанных = ПолучитьМакет("Схема2");
    
    //Из схемы возьмем настройки по умолчанию
    //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    ДатаПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
    ДатаПараметр.Использование = Истина;
    ДатаПараметр.Значение = НачалоДня(ДатаНачала);
    ДатаПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
    ДатаПараметр.Использование = Истина;
    ДатаПараметр.Значение = КонецДня(ДатаОкончания);
    СкладПараметр = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Склад");
    СкладПараметр.Использование = Истина;
    СкладПараметр.Значение = Склад;
        
        
    НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Номенклатура")).Поле;
    НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
    НовыйЭлементОтбора.Использование = Истина;
    НовыйЭлементОтбора.ПравоеЗначение = Номенклатура;


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

Так вот первая схема все отлично выдает

Вторая выдает только измерения(Номенклатуру) а ресурсы нет

Всю голову сломал что не так, подскажите где искать в чем ошибка? Если нужны запросы, то добавлю, но думаю дело не в них в консоли выдает те данные которые нужно
1 Garykom
 
гуру
25.08.14
14:16
(0) "КомпоновщикНастроек" один на 2 схемы так и нужно?
2 Vogde
 
25.08.14
14:36
Я не знаю как правильно скажи что нужно сделать чтобы работало
3 Wobland
 
25.08.14
14:39
(2) ты б хоть задумался над словами старших
4 Vogde
 
25.08.14
15:22
Блин не понятно, ведь я же получаю другую схему значить у нее свой КомпоновщикНастроек, так покарайней мере я считал. Подскжите как можно добавить другой
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс