Имя: Пароль:
1C
1С v8
СКД по запросу
0 first_may
 
16.03.13
20:24
Добрый вечер. Подскажите пожалуйста, у меня есть обработка, которая заполняет табличную часть с помощью запроса (например Подразделение, Статья затрат и Сумма). Помещаю на форму кнопку Сформировать отчет. Как данные из табличной части выввести в отчет с помощью СКД?
1 GenV
 
16.03.13
20:38
(0) А какие нужно?
2 first_may
 
16.03.13
20:58
Иными словани, как написать формирование отчета, если у меня есть только Макет (СКД). То есть, отобразить этот макет?
3 zladenuw
 
16.03.13
21:07
(2) в макете что ?
4 zladenuw
 
16.03.13
21:08
ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТЗ",тз);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,Истина);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
   ПроцессорВывода.НачатьВывод();
   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           Прервать;
       Иначе
           ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       КонецЕсли;
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
   
   ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0);
5 first_may
 
16.03.13
21:13
В макете СКД, которое я настроил написав просто внешний отчет.
6 first_may
 
16.03.13
21:42
В обработке, должна быть еще одна форма, в которой как раз и вывводится СКД?
7 zladenuw
 
16.03.13
21:46
можно создать доп форму и туда вынести табличный документ.
8 first_may
 
16.03.13
21:54
Создал форму "ФормаОтчета", которая содержит элемент типа ПолеТабличногоДокумента.

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

Я понимаю, что мне надо как то вместо табДок использовать как раз ПолеТабличногоДокумента новой формы "ФормаОтчета", но как это сделать, я не знаю :(.
9 zladenuw
 
16.03.13
22:04
так указывай его

ПроцессорВывода.УстановитьДокумент(ТабДокФормы);
10 first_may
 
16.03.13
22:12
Уже поменял. Новая форма стала появляться, но данных нет.
11 zladenuw
 
16.03.13
22:15
а где код вызываешь ?
12 first_may
 
16.03.13
22:15
Вот весь код:

   Форма = ЭтотОбъект.ПолучитьФорму("ФормаОтчета");
   Форма.ЭлементыФормы.Результат.Очистить();
   
   СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
   
   КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНач", НачалоДня(ДатаНач));
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаКон", КонецДня(ДатаКон));
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Счет20", ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Счет", ПланыСчетов.Хозрасчетный.НЗП);
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(Форма.ЭлементыФормы.Результат);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   Форма.ЭлементыФормы.Результат.Показать();
   Форма.Открыть();
13 zladenuw
 
16.03.13
22:17
попробуй при открытии этот весь код. хотя поидее должно
14 first_may
 
16.03.13
22:17
В открываемой форме отображаются параметры запроса. А самих данных с группировкой нет.
15 Бертыш
 
16.03.13
22:25
(0) А почему неприменно через СКД?
16 first_may
 
16.03.13
22:29
Казалось что так проще сделать группировки данных :).
17 first_may
 
16.03.13
22:31
По таким же данным я уже сделал внешний отчет на основе СКД. Вот пытаюсь его вызвать по кнопке из формы обработки.
18 first_may
 
16.03.13
22:36
А можно как нибудь проверить выбираются данные в компоновщике или нет?
19 zladenuw
 
16.03.13
22:45
ну так ты вот делал в (8)
что в табличном документе ?

если пусто значений настройки не подгрузились.
исправь тут

   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.НастройкиПоУмолчанию);
20 zladenuw
 
16.03.13
22:48
можно и без формы. как ты делал с табличным документом.
21 first_may
 
17.03.13
09:43
Без формы, тогда надо рисовать в табличной части макет.
22 first_may
 
17.03.13
09:45
(20) а можно написать тестовый вариант формирования отчета с помощью СКД из обработки, которая имеет одну кнопку сформировать и выполняется запрос: выбрать все из номенклатуры?

с большим уважением получил бы такую обработку на почту first_may@mail.ru.
23 zippygrill
 
17.03.13
09:58
(22) зайдите на сайте 1cskd.ru, там есть пример.
24 first_may
 
17.03.13
11:41
(23) нашел пример SKD.epf, но в нем да и во всех остальных рассматривается вывод в текущую форму, а не в новую :(.
25 first_may
 
17.03.13
12:08
(23) Вроде получилось. Для интереса могу выслать :).
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс