Имя: Пароль:
1C
1С v8
Выгрузка результата СКД в ТЗ
,
0 ildary
 
06.05.17
12:38
Уважаемые специалисты, подскажите пожалуйста, почему в одном случае код работает как надо, во втором нет? Я программно открываю отчет на СКД и при компоновке выгружаю результат в ТЗ. Если при открытии сделать отбор вот так:

Параметр = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра( Новый ПараметрКомпоновкиДанных( "Номенклатура" ) );
Параметр.Значение.ЗагрузитьЗначения( ОбъектыНазначения.ВыгрузитьЗначения() );
Параметр.Использование = Истина;

то в ТЗ выгружаются данные с отбором,

а если сделать так (код упрощен):

КомпоновщикНастроекКомпоновкиДанных = Отчет.КомпоновщикНастроек;
ПользовательскиеНастройки = КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки;

ОтборОтч = ПользовательскиеНастройки.Элементы.Найти( ИдОтбора );
ОтборОтч.ВидСравнения   = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборОтч.ПравоеЗначение = ОбъектыНазначения;
ОтборОтч.Использование  = Истина;


то в ТЗ попадают все данные, без наложения отбора.

Что надо сделать, чтобы второй вариант работал с отбором? Мне он предпочтительнее, потому что хочется, чтобы пользователь мог менять отбор после открытия.
1 ildary
 
07.05.17
20:24
Апну тему разок.
2 Zhuravlik
 
07.05.17
23:22
ПользовательскиеНастройки = КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки();
//....

КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(ПользовательскиеНастройки)
3 EvgeniuXP
 
08.05.17
00:44
(0) потому что во всей этой каше там надо очень хорошо разбираться, что делаешь.
4 ildary
 
10.05.17
08:31
(2) к сожалению эта строка не будет работать - у ПользовательскиеНастройки другой тип.

Я попробовал
КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки); - результат тот же - отбор не наложился.

(3) Согласен, но времени освоить учебник по СКД не хватает. Будьте любезны, подскажите неучу, как правильно программно установить отбор?
5 ildary
 
10.05.17
08:38
В итоге заработало вот так:

КомпоновщикНастроекКомпоновкиДанных = Отчет.КомпоновщикНастроек;

НовыеНастройки = КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки();
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
    НовыеНастройки.Отбор,
    "Номенклатура",
    ОбъектыНазначения,
    ВидСравненияКомпоновкиДанных.ВСписке,
    ,
    Истина);
    
КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(НовыеНастройки);
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший