Имя: Пароль:
1C
1С v8
Программный отбор на группировку
0 maxicom
 
14.03.12
18:35
Есть отчет на СКД. На нем есть поле списка, в котором перечень возможных значений отбора. Отмечая галками значения необходимо затем их передать в отбор.

В процедуре ПриИзмененииФлажка поля списка следующий код:

СП = Новый СписокЗначений;
   
   Отбор = Ложь;
   Для Каждого Зн Из Элемент.Значение Цикл
       Если Зн.Пометка = Истина Тогда
           СП.Добавить(Зн);
           Продолжить;
       КонецЕсли;
       Отбор = Истина;
   КонецЦикла;
   
   ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Отбор;
   ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
   ЭтотОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = СП;

Код нормально отрабатывает, но когда запускаешь отчет на исполнение, то выдает ошибку:

Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(105, 26)}: Неверные параметры
ВложенныйЗапрос.Причина <<?>>В (&П3)

При этом если допустим снять одну галку в списке и затем зайти в настройку отчета и просто нажать ОК, то все начинает работать.

Подскажите, что не так сделал?
1 el-gamberro
 
14.03.12
18:39
Параметры и отбор это разные вещи.
Нужно убрать парамтр из запроса, если используется отбор
2 el-gamberro
 
14.03.12
18:40
И эта.. кажись при открытии отчета у тебя не срабатывает код, который работает при изменении флажка.
3 maxicom
 
14.03.12
18:57
(1) В запросе вообще нет такого параметра. Понять не могу от куда он берётся.
4 Нуф-Нуф
 
14.03.12
19:05
за вложенные запросы я бы руки отрубал
5 maxicom
 
14.03.12
20:44
Здесь была ошибка, если кому интересно:

СП.Добавить(Зн.Значение);