![]() |
![]() |
![]() |
|
Хочу отфильтровать динамический список - вопросов куча... | ☑ | ||
---|---|---|---|---|
0
mikecool
28.07.10
✎
17:48
|
Список.Отбор.Элементы.Очистить(); // как найти существующий элемент отбора я не знаю
УстановленныйОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); УстановленныйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; УстановленныйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОснованиеГрузополучатель"); УстановленныйОтбор.ПравоеЗначение = Элементы.Список.ТекущиеДанные.ОснованиеГрузополучатель; // а вот здесь ТекущиеДанные = Неопределено каг бе две проблемы :( |
|||
1
EvgeniuXP
28.07.10
✎
18:11
|
ДинамическийСписок.Отбор.Элементы[ИндексЭлемента] - существующие отборы, см. отладчик.
|
|||
2
Kashemir
28.07.10
✎
18:13
|
Ясно что ничего не ясно...
|
|||
3
Bober
28.07.10
✎
18:18
|
(0) это все выполняется в каком контексте?
|
|||
4
Mort
28.07.10
✎
18:18
|
Если отбор будет постоянно использоваться, можно его задать на этапе конфигурирования и установить режим "Недоступный" (перед этим нажать "Подробно"). Тогда пользователь не сможет его удалить, изменить, передвинуть и т.п. и к нему можно будет обращаться просто по номеру. Не знаю насколько это методически правильно.
|
|||
5
Mort
28.07.10
✎
18:18
|
*будет постоянно использоваться программно
|
|||
6
Bober
28.07.10
✎
18:22
|
найти существующий элемент отбора:
-обходить коллекцию и смотреть левое значение и правое значение на предмет ТипЗнч("ПолеКомпоновкиДанных") -при первом создании добавить ИдентификаторПользовательскойНастройки |
|||
7
mikecool
29.07.10
✎
10:12
|
(1) для этого как минимум надо знать индекс
(3) контекст - форма списка документов (4) а вот это попробую (6) тоже посмотрю |
|||
8
Sergeyspb13
29.07.10
✎
10:19
|
а текущие данные выделены? может глянуть значение в
.Элементы.Список.ВыделенныеСтроки тоже мучаюсь с фильтрами в динамическом списке, но проблемы другие группирую условия отбора, а срабатывает только если используется одна группа =( |
|||
9
mikecool
29.07.10
✎
10:27
|
(8) в том то и дело, что выделены... :(
выделенные строки тоже пустые |
|||
10
Stepa86
29.07.10
✎
10:30
|
можно еще не в отбор пихать данные, а в дин. список параметрами, а там в запросе в ГДЕ прописать
|
|||
11
mikecool
29.07.10
✎
10:31
|
(10) тоже вариант, но чет у мну не получилось программно обновлять список
никак :( |
|||
12
mikecool
29.07.10
✎
10:32
|
(10) секцию Где прописывать как в компоновке?
|
|||
13
Sergeyspb13
29.07.10
✎
10:32
|
проверь в свойствах элемента установлено РежимВыбора?
и что показывает в Элементы.Список.ТекущаяСтрока |
|||
14
Sergeyspb13
29.07.10
✎
10:34
|
если простой отбор то, да проще параметром... обновится само (у меня само все обновляется)
|
|||
15
Stepa86
29.07.10
✎
10:35
|
в УТ11 все нужные методы для работы с отборами есть:
Процедура УдалитьЭлементОтбораКоллекции(КоллекцияЭлементов, ИмяПоля) ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ИмяПоля); Для Каждого ЭлементОтбора Из КоллекцияЭлементов Цикл Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") И ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновки Тогда КоллекцияЭлементов.Удалить(ЭлементОтбора); КонецЕсли; КонецЦикла; КонецПроцедуры // УдалитьЭлементОтбораСписка() // Удаляет элемент отбора динамического списка // //Параметры: //Список - обрабатываемый динамический список, //ИмяПоля - имя поля компоновки, отбор по которому нужно удалить // Процедура УдалитьЭлементОтбораСписка(Список, ИмяПоля) Экспорт УдалитьЭлементОтбораКоллекции(Список.Отбор.Элементы, ИмяПоля); КонецПроцедуры // УдалитьЭлементОтбораСписка() Процедура УстановитьЭлементОтбораКоллекции(КоллекцияЭлементов, ИмяПоля, ПравоеЗначение, ВидСравнения = Неопределено) ЭлементОтбора = КоллекцияЭлементов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); ЭлементОтбора.ВидСравнения = ?(ВидСравнения = Неопределено, ВидСравненияКомпоновкиДанных.Равно, ВидСравнения); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ПравоеЗначение; ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; КонецПроцедуры // УстановитьЭлементОтбораСписка() // Устанавливает элемент отбор динамического списка // //Параметры: //Список - обрабатываемый динамический список, //ИмяПоля - имя поля компоновки, отбор по которому нужно установить, //ВидСравнения - вид сравнения отбора, по умолчанию - Равно, //ПравоеЗначение - значение отбора // Процедура УстановитьЭлементОтбораСписка(Список, ИмяПоля, ПравоеЗначение, ВидСравнения = Неопределено) Экспорт УстановитьЭлементОтбораКоллекции(Список.Отбор.Элементы, ИмяПоля, ПравоеЗначение, ВидСравнения); КонецПроцедуры // УстановитьЭлементОтбораСписка() // Изменяет элемент отбора динамического списка // //Параметры: //Список - обрабатываемый динамический список, //ИмяПоля - имя поля компоновки, отбор по которому нужно установить, //ВидСравнения - вид сравнения отбора, по умолчанию - Равно, //ПравоеЗначение - значение отбора, //Установить - признак необходимости установить отбор // Процедура ИзменитьЭлементОтбораСписка(Список, ИмяПоля, ПравоеЗначение = Неопределено, Установить = Ложь, ВидСравнения = Неопределено) Экспорт УдалитьЭлементОтбораСписка(Список, ИмяПоля); Если Установить Тогда УстановитьЭлементОтбораСписка(Список, ИмяПоля, ПравоеЗначение, ВидСравнения); КонецЕсли; КонецПроцедуры // ИзменитьЭлементОтбораСписка() Процедура УстановитьПараметрДинамическогоСписка(Список, ИмяПараметра, Значение, Использование = Истина) Экспорт Если Использование Тогда Список.Параметры.УстановитьЗначениеПараметра(ИмяПараметра, Значение); Иначе ЗначениеПараметра = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ИмяПараметра)); Если ЗначениеПараметра <> Неопределено Тогда Если ЗначениеПараметра.Значение <> Значение Тогда ЗначениеПараметра.Значение = Значение; КонецЕсли; Если ЗначениеПараметра.Использование <> Использование Тогда ЗначениеПараметра.Использование = Использование; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // УстановитьПараметрДинамическогоСписка() |
|||
16
Stepa86
29.07.10
✎
10:37
|
(0) код на сервере или на клиенте?
|
|||
17
mikecool
29.07.10
✎
10:46
|
(16) на клиенте
(13) пусто |
|||
18
Sergeyspb13
29.07.10
✎
10:48
|
рули на сервер там все работает, список то динамически должен все равно дергать сервак
|
|||
19
mikecool
29.07.10
✎
10:48
|
(15) а в упп такого не нахожу )
|
|||
20
Stepa86
29.07.10
✎
10:48
|
(17) вынеси на сервер и смотри там... ТекущиеДанные это строка таблицы формы, а таблица формы тусуется на сервере, на клиенте только представление
|
|||
21
mikecool
29.07.10
✎
10:49
|
(18, 20) ага, я уже и сам подумал в этом направлении
всем спасибо, буду ковырять |
|||
22
Dmitr
29.07.10
✎
10:50
|
(19) а вроде УПП еще и не сделали на 8.2
|
|||
23
mikecool
29.07.10
✎
10:51
|
(22) полностью нет, частично - редакция 1.3 уже есть
|
|||
24
Dmitr
29.07.10
✎
10:52
|
(23) Понятно. Лучше надыбай УТ11 там больше есть где подсмотреть
|
|||
25
Stepa86
29.07.10
✎
10:53
|
(19) в библиотеки стандартных подсистем вроде тоже есть
|
|||
26
mikecool
29.07.10
✎
10:55
|
гы, на сервере
этаформа.Элементы.Список.ТекущиеДанные - неопределено хотя текущаястрока есть |
|||
27
mikecool
29.07.10
✎
10:55
|
или так Элементы.Список.ТекущиеДанные, что однобоко
Ошибка чтения значения |
|||
28
Stepa86
29.07.10
✎
11:03
|
а строка в списке точно выделена? =) и это не группировка? и в Списке стоит основная таблица и галка "Динамическое считывание данных"?
|
|||
29
mikecool
29.07.10
✎
11:09
|
(28) все как пишешь
не группировка, строка выделена, основная таблица есть и дин считывание тоже |
|||
30
Stepa86
29.07.10
✎
11:15
|
у меня закончились варианты...
|
|||
31
mikecool
29.07.10
✎
11:16
|
ощущение, что при позиционировании в дин списке курсор не позиционируетсянп строке данных
|
|||
32
Sergeyspb13
29.07.10
✎
11:23
|
см (8)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |