Имя: Пароль:
1C
1С v8
Динамический список. Отбор. Список значений.
0 Realist_x1
 
24.09.12
13:33
На форме есть динамический список. Пытаюсь добавить отбор:

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

ЗаполнитьСписокСтатусов() - возвращает список значений. В итоге на форме вместо возвращаемого списка значения - пустой список. В отладчике все нормально,правому значению все присваивается. ЧЯДНТ ?
1 Goggy
 
24.09.12
13:35
А точно надо компоновкой?
Или может проще установить параметр в запросе?
2 vicof
 
24.09.12
13:35
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
я думаю, что эта строчка не нужна
3 Goggy
 
24.09.12
13:36
(0)Если компоновкой то это делается вот так...

Процедура УстановитьЭлементОтбораСписка(Список, ИмяПоля, ПравоеЗначение, ВидСравнения = Неопределено) Экспорт
   
   ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных(ИмяПоля);
   ЭлементОтбора.ВидСравнения     = ?(ВидСравнения = Неопределено, ВидСравненияКомпоновкиДанных.Равно, ВидСравнения);
   ЭлементОтбора.Использование    = Истина;
   ЭлементОтбора.ПравоеЗначение   = ПравоеЗначение;
   ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
   
КонецПроцедуры // УстановитьЭлементОтбораСписка()
4 Goggy
 
24.09.12
13:37
(2) Не угадал :)
5 Realist_x1
 
24.09.12
13:39
(3) и что нового ты написал ? у меня точно так и устанавливается. ВСе отличное работает для ВидСравненияКомпоновкиДанных.Равно и ПравоеЗначение  - конкретная ссылка, а не список значений. Повторяюсь - не работает именно со списком.
6 Goggy
 
24.09.12
13:44
(5) Так для каждого элемента списка и установи, ну или список фигню возвращает
7 Realist_x1
 
24.09.12
13:47
(6) список фигню возвращает - см. выше. Список возвращает все хорошо и правильно.
Так для каждого элемента списка и установи - вопрос изначально стоит по другому.

Больше вариантов по теме нет?
8 vmv
 
24.09.12
13:47
ЗаполнитьСписокСтатусов();  
шо за хреновина?

(5) понты не колоты - выкладывай код шо там за список вылазеет, напихал туда пустых значений и пургометишь тут
9 hhhh
 
24.09.12
13:55
(7) может

ЭлементОтбора= ЗаказыКлиентов.Отбор.Элементы[0]; ??
10 Realist_x1
 
24.09.12
13:56
(8) ЗаполнитьСписокСтатусов();  
шо за хреновина?

Функция,возвращающая список значений. Код большой, не имеет смысла выкладывать.
Заменял в качестве пробы на:

ФФ = Новый списокЗначений();
ФФ.Добавить(Справочники.СтатусыДокументов.НайтиПоКоду("001"));
ФФ.Добавить(Справочники.СтатусыДокументов.НайтиПоКоду("002"));
ФФ.Добавить(Справочники.СтатусыДокументов.НайтиПоКоду("003"));

возврат ФФ;

Результат тот же. Повторяюсь - в отладчике все нормально.
11 Realist_x1
 
24.09.12
13:56
(9) этот отбор идет вторым поэтому 1, а не 0.
12 hhhh
 
24.09.12
13:59
(11) ну, значит, первый отбор копайте.
13 Realist_x1
 
24.09.12
14:01
(12) удалял. результат тот же.
14 Jaap Vduul
 
24.09.12
14:05
В свойствах параметра в СКД - "доступен список значений"
15 Realist_x1
 
24.09.12
14:07
(14) ну причем тут параметры скд....
16 vicof
 
24.09.12
14:22
В у поля какой тип?
17 Realist_x1
 
24.09.12
14:44
В общем вышел из ситуации через параметр, как в (1), но вопрос остался открытым.
18 Goggy
 
24.09.12
15:32
(10) Так это ты получается на сервере делал?
Пробни переделать под клиент...
19 DexterMorgan
 
24.09.12
16:14
(0) ЗаполнитьСписокСтатусов() верни не СписокЗначений а Массив
20 DexterMorgan
 
24.09.12
16:14
У меня была такая проблема, с массивом работало, со списком значений - нет
21 vmv
 
24.09.12
16:20
в запросе ДСписка если программно передавать в качестве параметра список, а не массив - 100% не хавает, т.е. нужно всегда передавать массив. Я сошелся на том с точки зрения платформы экономичнее в ДСписки получать в качестве простой коллекции массив, правда разработчики "забыли" уточнить, что список передавать нельзя.

И все же я думаю, что

"Функция,возвращающая список значений. Код большой, не имеет смысла выкладывать."

в этом большом коде косяк с попаданием в список пустого значения - итого маемо то шо маемо. В первую очередь нужно смотреть в отладчике состав коллекции и если в ней нет пустых и результат ноль, то заменять на массив.

все - хватит сопли жувать
22 Realist_x1
 
25.09.12
16:45
(21)то заменять на массив.
Благодарствую. Помогло.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан