Имя: Пароль:
1C
1С v8
СКД 3 в 1, не выводит поля
0 inmortal203
 
30.01.14
12:54
Здравствуйте! Нужно создать отчет в УПП на обычной форме, 3 в 1 на скд. Создал форму, на которой 3 страницы и 3 разных макета СКД.

Процедура ДействияФормыСформировать(Кнопка)
    
    Параметры = Новый Структура;
    
    Для Каждого Страница ИЗ ЭлементыФормы.Панель.Страницы Цикл
        Параметры.Очистить();
        Параметры.Вставить("ДатаНач",НачалоДня(НачПериода));
        Параметры.Вставить("ДатаКон",КонецДня(КонПериода));
        Параметры.Вставить("Организация",Справочники.Организации.НайтиПоКоду("000000001"));
        Если Страница.Имя = "ПеремещениеПриемка_СОМ" Тогда
            СхемаКомпоновкиДанных = ПолучитьМакет("ПеремещениеПриемка_СОМ");
            Параметры.Вставить("СкладОтправитель",Справочники.Склады.НайтиПоКоду("000000133"));
            Параметры.Вставить("СкладПолучатель",Справочники.Склады.НайтиПоКоду("000000035"));
            ИнициализироватьСКД(СхемаКомпоновкиДанных, ЭлементыФормы.Результат1,Параметры);
        ИначеЕсли Страница.Имя = "ОПЗ_СОМ" Тогда
            СхемаКомпоновкиДанных = ПолучитьМакет("ОПЗ_СОМ");
            Параметры.Вставить("Склад",Справочники.Склады.НайтиПоКоду("000000035"));
            Параметры.Вставить("Жирность",ПланыВидовХарактеристик.АА_ПоказателиКачестваПродукции.НайтиПоКоду("000000088"));
            Параметры.Вставить("Плотность",ПланыВидовХарактеристик.АА_ПоказателиКачестваПродукции.НайтиПоКоду("000000085"));
            ИнициализироватьСКД(СхемаКомпоновкиДанных, ЭлементыФормы.Результат2,Параметры);
        ИначеЕсли Страница.Имя = "ГотоваяПродукция" Тогда
            СхемаКомпоновкиДанных = ПолучитьМакет("ГотоваяПродукция");
            Параметры.Вставить("Склад",Справочники.Склады.НайтиПоКоду("000000035"));
            ИнициализироватьСКД(СхемаКомпоновкиДанных, ЭлементыФормы.Результат3,Параметры);
        КонецЕсли;
    КонецЦикла;                                                                            

КонецПроцедуры

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

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

Все срабатывает, но не в том виде в каком хотелось бы.
В первых двух отчетах не выводится одна колонка "Вес"
В последнем 3 не выводятся те колонки, которых нет в первых двух. Если переименовать в 3 отчете колонку так как в 1 и 2 - то она выводится. Но в 1 и 2 - материалы, а в 3 - продукция. Продукцию называть материалами не хотелось бы.
В тупик заводи то, что та же колонка "Вес" присутствует во всех 3-х отчетах, но не выводится ни в одном...
1 inmortal203
 
30.01.14
12:57
Если у кого то был уже подобный опыт, помогите разобраться
2 inmortal203
 
30.01.14
13:18
После выполнения операции
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,ДанныеРасшифровки);

входящий запрос изменяется...

в МакетКомпоновки и в СхемаКомпоновкиДанных запросы разные, в первом случае полей меньше
3 Defender aka LINN
 
30.01.14
13:21
(2) Да
4 inmortal203
 
30.01.14
13:23
(3) что да???
5 Defender aka LINN
 
30.01.14
13:30
(4) Да, так и есть. В чем твой вопрос-то заключается?
6 inmortal203
 
30.01.14
13:34
Внимание вопрос! Как получить результат тот, который нужно?
7 inmortal203
 
30.01.14
13:35
Тот факт что скд не выводит все поля из запроса, нормальным не считать!
8 Defender aka LINN
 
30.01.14
14:23
(7) Чёйта? СКД модифицирует запрос *в зависимости от настроек*.
Если в настройках поле не выбрано, то умная СКД его из запроса выкинет, чтобы не тащить лишние данные.
(6) Как вытекает из вышесказанного - настроить, как нужно.
9 inmortal203
 
31.01.14
11:14
Да, нужно было просто
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);