Имя: Пароль:
1C
1С v8
Программное формирование СКД в УФ не идет
,
0 patapum
 
07.01.12
18:02
Хочется сделать обработку, которая в качестве табличной части выдаст результат запроса. Запрос должен предоставлять отборы, поэтому я взял отчет и СКД. Дальше соответственно надо из СКД вывести в таблицу значений. Написал код, но он валится с непонятной ошибкой. Подскажите, что ей вообще не нравится?

{Форма.ФормаОтчета.Форма(29)}: Ошибка при вызове метода контекста (Вывести)
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Неизвестный тип макета

А вот код.

&НаКлиенте
Процедура ОбновитьДанные(Команда)
   ОбновитьДанныеСервер();
КонецПроцедуры

&НаСервере
Процедура ОбновитьДанныеСервер()
   СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
   
   СерииТЗ = Новый ТаблицаЗначений;
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ПроцессорВывода.УстановитьОбъект(СерииТЗ);
   
   Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
1 H A D G E H O G s
 
07.01.12
18:05
УТ11?
2 patapum
 
07.01.12
18:06
ага
3 1с-кин
 
07.01.12
18:07
(0) МакетКомпоновки старый?
4 H A D G E H O G s
 
07.01.12
18:07
скинь обработку, гляну.
5 patapum
 
07.01.12
18:16
(4) скинул, спасибо
(3) не понял, он у меня что, прокис? отчет делаю с нуля
6 H A D G E H O G s
 
07.01.12
18:51
Тоже чето ниче не получается, пардон.
7 patapum
 
07.01.12
19:28
ясно, тогда сделаю по образцу подбора номенклатуры. в любом случае спасибо!
8 sbabay
 
14.01.12
14:53
(0)
Вместо:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);

вот так напиши:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
9 Stepa86
 
14.01.12
15:00
(0) попробуй вот эту функцию

//Формирует и возвращает таблицу значений по СКД
//Параметры:
//СКД - схема компоновки данных,
//ВнешниеНаборыДанных - Тип: Структура. Ключ структуры соответствует имени внешнего набора данных. Значение структуры - внешнему набору данных.
//
Функция ТаблицаСКД( СКД , ВнешниеНаборыДанных = Неопределено ) Экспорт
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить( СКД , СКД.НастройкиПоУмолчанию ,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать( МакетКомпоновки , ВнешниеНаборыДанных );
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ТаблицаЗначений = Новый ТаблицаЗначений;
   ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   Возврат ТаблицаЗначений;
   
КонецФункции
10 Stepa86
 
14.01.12
15:02
и ИсточникДоступныхНастроекКомпоновкиДанных инициировать на УФ можно только через адрес. Я вот так делаю, когда надо его на форму кинуть


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