Имя: Пароль:
1C
1С v8
СКД программно создать запустить и выгрузить результаты
0 vladnet
 
25.10.11
17:15
Есть код написанный с помощью ПостроителяОтчета, подскажите как это сделать с помощью СКД:

лПостроительОтчета=Новый ПостроительОтчета;
лПостроительОтчета.Текст="Выбрать 1";
лПостроительОтчета.Выполнить();
лПостроительОтчета.Результат;

С помощью отчета понятно как сделать, но нужно полностью программно, с программным заданием запроса. Куда копать?
1 vladnet
 
25.10.11
17:18
Вроде разобрался ) через объект СхемаКомпоновкиДанных
2 vladnet
 
25.10.11
17:32
К сожалению разобрался только как создать компоновку с нужными характеристиками, как сформировать, а главное выгрузить результат?
3 ll13
 
25.10.11
17:36
Я конечно понимаю, что документацию ты принципиально не читаешь...
Но если вдруг снизойдешь до этого постыдного занятия то "Руководство разработчика. Глава 10."
4 vladnet
 
25.10.11
17:45
(3) И на том спасибо. Руководство не нашел, но нашел СКД Разработка сложных отчетов, там есть этот пункт.
5 acsent
 
25.10.11
17:47
где то у меня на инфостарте есть пример
6 Жан Пердежон
 
25.10.11
17:48
(4) там даже пример есть
7 vladnet
 
25.10.11
17:54
(5) ссылка есть?

Да там много, оказывается наскоком там не сделать )))
Сейчас с источниками разбираюсь
8 vladnet
 
25.10.11
19:39
Что получилось, возможно понадобится кому:

   лТекстЗапросаКомпоновки=
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Объект.Ссылка КАК Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Объект";
   
   лДеревоРезультата=Новый ДеревоЗначений;
   
   лСхемаКомпоновкиДанных=Новый СхемаКомпоновкиДанных;
   
   лИсточникДанных=лСхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
   лИсточникДанных.Имя="ИсточникДанных";
   лИсточникДанных.ТипИсточникаДанных="Local";
   
   лНаборДанныхЗапрос=лСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
   лНаборДанныхЗапрос.Имя="НаборДанных1";
   лНаборДанныхЗапрос.Запрос=лТекстЗапросаКомпоновки;
   лНаборДанныхЗапрос.ИсточникДанных="ИсточникДанных";
   
   лПоле1=лНаборДанныхЗапрос.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
   лПоле1.Поле="Ссылка";
   лПоле1.ПутьКДанным="Ссылка";
   
   лНастройкаКомпоновки=лСхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   лГруппировкаНоменклатуры=лНастройкаКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
   
   лПолеНоменклатура=лГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
   лПолеНоменклатура.Поле=Новый ПолеКомпоновкиДанных("Ссылка");
   
   лВыбранныеПоляНоменклатура=лГруппировкаНоменклатуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
   
   лКомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
   лМакетКомпоновкиДанных=лКомпоновщикМакета.Выполнить(лСхемаКомпоновкиДанных, лНастройкаКомпоновки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   лПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
   лПроцессорКомпоновкиДанных.Инициализировать(лМакетКомпоновкиДанных);
   лПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   лПроцессорВывода.УстановитьОбъект(лДеревоРезультата);
   лПроцессорВывода.Вывести(лПроцессорКомпоновкиДанных);
   
   Сообщить("ффффффф: "+лДеревоРезультата.Строки.Количество());
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан