Имя: Пароль:
1C
1С v8
Помогите установить отбор в СКД
0 gusden
 
22.05.12
17:03
Всем доброго времени суток.
Есть отчёт на СКД необходимо выполнить его программно с установленным отбором. Без отбора всё получается, результат заполненная ТЗ, но с отбором результат пустая ТЗ. Вот кусок кода. Что делаю не так?
   Схема    = Отчеты.ДляПокупетелейКнигаЗаказов.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   Схема.Параметры.Покупатель.Значение    = Поставщик;
   Настройки    = Схема.НастройкиПоУмолчанию;
   СпЗП    = Новый СписокЗначений;
   СпЗП.ЗагрузитьЗначения(ТЗДок.ВыгрузитьКолонку("Док"));
   ЭлементОтбора    = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ВидСравнения    = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.Использование    = Истина;
   ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("ЗП");
   ЭлементОтбора.ПравоеЗначение=    СпЗП[0].Значение;
   //ЭлементОтбора.ПравоеЗначение= СпЗП;
   
   КомпоновщикМакета    = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Макет    = КомпоновщикМакета.Выполнить(Схема,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   ПроцессорКомпоновки    = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет);
   
   
   ПроцессорВывода    = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ТЗ    = Новый ТаблицаЗначений;
   ПроцессорВывода.УстановитьОбъект(ТЗ);
   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
1 Fragster
 
гуру
22.05.12
17:04
не настройки, а компоновщикнастроек
2 gusden
 
22.05.12
17:11
(1) компоновщикнастроек это свойство ОтчетОбъект, а как его к КомпоновщикуМакета прикрутить?
3 gusden
 
23.05.12
10:12
UP
4 gusden
 
23.05.12
17:45
(2) ВОТ ЭТОТ КУСОК КОДА ЗАРАБОТАЛ, НО Я НЕ ПОНИМАЮ ПОЧЕМУ

   КнигаЗаказов    = Отчеты.ДляПокупетелейКнигаЗаказов.Создать();
   Схема    = КнигаЗаказов.СхемаКомпоновкиДанных;
   Схема.Параметры.Покупатель.Значение    = Контрагент;
   КомпоновщикНастроек    = КнигаЗаказов.КомпоновщикНастроек;
   СпЗП    = Новый СписокЗначений;
   СпЗП.ЗагрузитьЗначения(ТЗДок.ВыгрузитьКолонку("Док"));
   
   
   ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.
                        Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.Использование  = Истина;
   ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ЗП");
   ЭлементОтбора.ПравоеЗначение = СпЗП;
   
   КомпоновщикМакета    = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Макет    = КомпоновщикМакета.Выполнить(Схема,КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   ПроцессорКомпоновки    = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет);
   
   
   ПроцессорВывода    = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   ТЗ    = Новый ТаблицаЗначений;
   ПроцессорВывода.УстановитьОбъект(ТЗ);
   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
5 Aprobator
 
23.05.12
17:57
(4) такое ощущение, что пол компоновки ЗП - тип список значений.
6 Aprobator
 
23.05.12
17:57
пол = поле
7 gusden
 
23.05.12
18:00
(5) ЗП документ ссылка и я туда передаю список документов.
8 Aprobator
 
23.05.12
18:07
(7) уточню немного. Поле ЗП - есть документ и он проверяется на вхождение в список документов? Тогда видсравнения равно явно не к месту.
9 gusden
 
23.05.12
18:14
(8) Да уже исправил там вид сравнение в списке и всё работает
Вопрос в том почему через КомпоновщикНастроек работает, а просто через Найтройки не работает?
10 Fragster
 
гуру
23.05.12
19:09
(9) да у тебя там вообще дофига кода. правильно юзать Компоновщик, если хочешь что-то туда запихать и СкомпоноватьРезультат. Ну а для отбора - проще таки на форму кинуть таб. поле с данными КомпоновщикНастроек.Настройки.Отбор или как-то так
11 gusden
 
24.05.12
09:33
(10) У меня отчёт вызывается из обработки и нужно программно получить результат. Т.е. отбор нужно настроить программно. В общем приму как данное что надо настройки заполнять из МойОтчёт.КомпоновщикНастроек.Настройки, а не из МояСхема.НастройкиПоУмолчанию.
12 Coldboy
 
24.05.12
09:40
а вот отбор программно у тебя, а чем тебе отбор по умолчанию в скд не нравится?