Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СКД для выборки с отбором

СКД для выборки с отбором
Я
   OnePrg
 
11.03.21 - 13:12
УФ

Сделал обработку, в которой в макете разместил СКД.
Один из реквизитов обработки - компоновщик данных.
На форме обработки разместил таблицу отбора компоновщика данных. При создании на сервере инициализирую компоновщик.

Теперь нужно при нажатии по кнопке "Прочитать" выполнить СКД с заданным отбором и загрузить значение в табличную часть обработки.
Подскажите как это сделать.
   Kassern
 
1 - 11.03.21 - 13:18
ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
    СКД,
    Настройки,
    ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   OnePrg
 
2 - 11.03.21 - 13:43
(1) Спасибо.
   OnePrg
 
3 - 11.03.21 - 13:43
Вот мой код.

&НаСервере
Процедура ПрочитатьНаСервере()

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

    ПроцессорВывода.УстановитьОбъект(ТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ВыбранныеДокументы.Загрузить(ТЗ);    
КонецПроцедуры


В ТЗ пустая таблица, ни колонок ни строк. Что не так?
   OnePrg
 
4 - 11.03.21 - 14:00
   Вафель
 
5 - 11.03.21 - 14:06
   Вафель
 
6 - 11.03.21 - 14:07
тз = процессор. вывести
   OnePrg
 
7 - 11.03.21 - 14:09
(6) Тоже пусто.
   youalex
 
8 - 11.03.21 - 14:18
Структура заполнена в настройках? Выбор?
   toypaul
 
9 - 11.03.21 - 14:19
(7) прежде чем в ТЗ выводить, надо убедиться что аналогичный отчет что-то выводит
   OnePrg
 
10 - 11.03.21 - 14:25
Заменил компоновщик из реквизита на новый компоновщик, всё заработало
    ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
    Обработка = РеквизитФормыВЗначение("Объект");
    СхемаКомпоновкиДанных = Обработка.ПолучитьМакет("СКД");
    //Компоновщик = РеквизитФормыВЗначение("Объект").Компоновщик;

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

    //ПроцессорВывода.УстановитьОбъект(ТЗ);

    ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ВыбранныеДокументы.Загрузить(ТЗ);    


Теперь буду в новый компоновщик тащить отборы из компоновщика на форме.

Всем спасибо!
   Почему 1С
 
11 - 11.03.21 - 15:00
Обработка = РеквизитФормыВЗначение("Объект");
ВыбранныеДокументы = Обработка.ВыбранныеДокументы;
ВыбранныеДокументы.Очистить();

если уж делать так, то нужно и 
ЗначениеВРеквизитФормы после вызвать, не?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.