Имя: Пароль:
1C
1С v8
СКД программный вывод
,
0 ice123
 
13.06.13
11:53
Доброе время суток!
Только начинаю разбираться с СКД, отсюда тупые вопросы, поэтому сильно не ругайтесь.
Есть задача, в которой необходимо в отчет вывести столько строк, сколько указано в поле "Количество" ТЧ Документа, т.е. если указано 5, то и в отчет надо вывести 5.
Вопрос собственно вот какой: как программно вывести в СКД обработанный в цикле результат запроса?
1 Wobland
 
13.06.13
11:54
заставь СКД самостоятельно получать данные
2 vicof
 
13.06.13
11:55
"необходимо в отчет вывести столько строк, сколько указано в поле "Количество" ТЧ"

зачем? давай задачу полностью
3 ice123
 
13.06.13
11:56
(2) в документе в поле "Количество" табличной части указано какое-то количество одной строкой, так вот в отчет надо  выводить столько строк, сколько указано в поле "Количество" в документе.
4 ice123
 
13.06.13
11:57
(1) перечитал Хрусталеву, ну никак не пойму, как это можно сделать
5 ice123
 
13.06.13
11:59
мне бы кусочек кода, в качестве примера, как вообще это выводится программно?
6 zladenuw
 
13.06.13
12:01
(5) можешь вывести в таблицу значений и размножить строки как тебе надо.
7 zladenuw
 
13.06.13
12:01
8 ice123
 
13.06.13
12:02
(5) а как потом эту ТЗ запихнуть в СКД?
9 Wobland
 
13.06.13
12:04
(3) давай задачу полностью
10 zladenuw
 
13.06.13
12:06
(8) через внешний источник.
КомпоновщикМакетаА = Новый КомпоновщикМакетаКомпоновкиДанных;
   СхемаКомпоновкиДанныхА = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
   
   КомпоновщикНастроекА = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроекА.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанныхА));
   ДанныеРасшифровкиА = Новый ДанныеРасшифровкиКомпоновкиДанных;
   КомпоновщикНастроекА.ЗагрузитьНастройки(СхемаКомпоновкиДанныхА.НастройкиПоУмолчанию);
   ЗаполнитьНастройки(КомпоновщикНастроекА.Настройки.ПараметрыДанных);
   //
   МакетКомпоновки = КомпоновщикМакетаА.Выполнить(СхемаКомпоновкиДанныхА,КомпоновщикНастроекА.Настройки,ДанныеРасшифровкиА,,
   Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));    
   //    
   тз = новый ТаблицаЗначений;
   ПроцессорКомпоновкиА = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиА.Инициализировать(МакетКомпоновки,,ДанныеРасшифровкиА);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ПроцессорВывода.УстановитьОбъект(тз);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиА);    
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   ФормулыПериод = Истина;
   //Заменить имена колонок
   МассивКолонок = Новый Массив();
   ЗаменаИменКолонок(МассивКолонок);
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
   ПостроениеЗапросаПоФормулеБюджета(ЭлементыФормы.Год.Значение,ЭлементыФормы.МесяцН.Значение,ЭлементыФормы.МесяцК.Значение,ЭлементыФормы.Подразделение.Значение,тз,ФормулыПериод);
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТЗ",тз);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;    
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,Истина);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
   ПроцессорВывода.НачатьВывод();
   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           Прервать;
       Иначе
           ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       КонецЕсли;
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
11 ice123
 
13.06.13
12:06
(9) Есть продажи по номенклатуре, за период надо вывести всю номенклатуру, которая продавалась, при этом если в документе указана номенклатура одной строкой!!! в количестве 5 штук, то в отчете эта номенклатура должна повториться 5 строками.
12 Wobland
 
13.06.13
12:07
(11) специально для прапорщиков?
13 ice123
 
13.06.13
12:07
(10)ОГРОМНЕЙШЕЕ СПАСИБО! вот уже что-то!!!
14 ice123
 
13.06.13
12:08
(12) ну кто его знает, зачем им так понадобилось....
15 ice123
 
13.06.13
12:08
(12)и при этом всем еще и на СКД
16 Wobland
 
13.06.13
12:11
(14) боюсь спросить, не спичками ль в розницу торгуете?
17 ice123
 
13.06.13
12:11
(16) нет... техника посерьезней
18 ice123
 
17.06.13
14:39
Продолжение истории:
написал код:
ПараметрыОтбора = Новый Структура;
   ПараметрыОтбора.Вставить("Использовать", Истина);    
   ТЗРезультат = ТЗ.Скопировать(ПараметрыОтбора, "Модель, СерийныйНомер, КомуПродано, КонечныйКлиент, ДатаПродажи");
   
   //                            
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
   // Инициализируем макет компоновки используя схему компоновки данных
   // и созданные ранее настройки и данные расшифровки
   СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
   //
   // Скомпонуем результат
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;// Передаем таблицу в процессор компоновки
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗРезультат", ТЗРезультат),
                                           ДанныеРасшифровки);
   //
   //ДокументРезультат.Очистить();
   //
   // Выводим результат в табличный документ
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);    
   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
       


при этом почему-то в ТЗ выводится так, как мне надо, а вот в макет СКД совсем не так... как это передаелать?
19 Wobland
 
17.06.13
14:49
очевидно, переделать это нужно так, чтобы было совсем так
20 ice123
 
17.06.13
14:53
(19) непонятно... что нужно свой макет делать?
21 zladenuw
 
17.06.13
15:11
не так это как ? настройки вывода сделай свои
22 ice123
 
17.06.13
15:38
(21)у меня есть 3 повторяющиеся строки в таблице значений + 2 строки с  разными сериями, а вот в СКД выводятся задвоенные строки с сериями и 1 строка вместо 3 одинаковых
23 ice123
 
17.06.13
15:38
(21) как эти настройки сделать?