|
СКД для выборки с отбором | ☑ | ||
---|---|---|---|---|
0
OnePrg
11.03.21
✎
13:12
|
УФ
Сделал обработку, в которой в макете разместил СКД. Один из реквизитов обработки - компоновщик данных. На форме обработки разместил таблицу отбора компоновщика данных. При создании на сервере инициализирую компоновщик. Теперь нужно при нажатии по кнопке "Прочитать" выполнить СКД с заданным отбором и загрузить значение в табличную часть обработки. Подскажите как это сделать. |
|||
1
Kassern
11.03.21
✎
13:18
|
ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить( СКД, Настройки, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаЗначений = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
2
OnePrg
11.03.21
✎
13:43
|
(1) Спасибо.
|
|||
3
OnePrg
11.03.21
✎
13:43
|
Вот мой код.
&НаСервере Процедура ПрочитатьНаСервере() Обработка = РеквизитФормыВЗначение("Объект"); СхемаКомпоновкиДанных = Обработка.ПолучитьМакет("СКД"); Компоновщик = РеквизитФормыВЗначение("Объект").Компоновщик; Компоновщик.Настройки.ПараметрыДанных.Элементы[0].Значение = КонецДня(Обработка.ДатаОкончания); Компоновщик.Настройки.ПараметрыДанных.Элементы[0].Использование = Истина; Компоновщик.Настройки.ПараметрыДанных.Элементы[1].Значение = Обработка.ДатаНачала; Компоновщик.Настройки.ПараметрыДанных.Элементы[1].Использование = Истина; ВыбранныеДокументы = Обработка.ВыбранныеДокументы; ВыбранныеДокументы.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Компоновщик.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Новый ТаблицаЗначений; //ТЗ = ВыбранныеДокументы.Выгрузить(); ПроцессорВывода.УстановитьОбъект(ТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ВыбранныеДокументы.Загрузить(ТЗ); КонецПроцедуры В ТЗ пустая таблица, ни колонок ни строк. Что не так? |
|||
4
OnePrg
11.03.21
✎
14:00
|
||||
5
Вафель
11.03.21
✎
14:06
|
||||
6
Вафель
11.03.21
✎
14:07
|
тз = процессор. вывести
|
|||
7
OnePrg
11.03.21
✎
14:09
|
(6) Тоже пусто.
|
|||
8
youalex
11.03.21
✎
14:18
|
Структура заполнена в настройках? Выбор?
|
|||
9
toypaul
гуру
11.03.21
✎
14:19
|
(7) прежде чем в ТЗ выводить, надо убедиться что аналогичный отчет что-то выводит
|
|||
10
OnePrg
11.03.21
✎
14:25
|
Заменил компоновщик из реквизита на новый компоновщик, всё заработало
ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных; Обработка = РеквизитФормыВЗначение("Объект"); СхемаКомпоновкиДанных = Обработка.ПолучитьМакет("СКД"); //Компоновщик = РеквизитФормыВЗначение("Объект").Компоновщик; Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных; Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Компоновщик.Настройки.ПараметрыДанных.Элементы[0].Значение = КонецДня(Обработка.ДатаОкончания); Компоновщик.Настройки.ПараметрыДанных.Элементы[0].Использование = Истина; Компоновщик.Настройки.ПараметрыДанных.Элементы[1].Значение = Обработка.ДатаНачала; Компоновщик.Настройки.ПараметрыДанных.Элементы[1].Использование = Истина; ВыбранныеДокументы = Обработка.ВыбранныеДокументы; ВыбранныеДокументы.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Компоновщик.Настройки,ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Новый ТаблицаЗначений; //ТЗ = ВыбранныеДокументы.Выгрузить(); //ПроцессорВывода.УстановитьОбъект(ТЗ); ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ВыбранныеДокументы.Загрузить(ТЗ); Теперь буду в новый компоновщик тащить отборы из компоновщика на форме. Всем спасибо! |
|||
11
Почему 1С
11.03.21
✎
15:00
|
Обработка = РеквизитФормыВЗначение("Объект");
ВыбранныеДокументы = Обработка.ВыбранныеДокументы; ВыбранныеДокументы.Очистить(); если уж делать так, то нужно и ЗначениеВРеквизитФормы после вызвать, не? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |