|
1C8 - групповой отбор в динамическом списке | ☑ | ||
---|---|---|---|---|
0
Влад_Савин
14.06.17
✎
18:46
|
В динамическом списке надо по одному из реквизитов поставить множественный отбор.
(если честно, раньше я этого не делал - простой отбор в ДС не раз а множественный не приходилось). Строго по подсказке http://helpf.pro/faq/view/1743.html вставляю: Для Каждого ЭлементЗначОтбора Из СтруктОтбора Цикл ЭлементОтбора = ЗаказыПокупателей.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗаказыПокупателейСтатус"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.Представление = ЭлементЗначОтбора.Ключ; ЭлементОтбора.ПравоеЗначение = СтруктОтбора.Получить(ЭлементЗначОтбора.Ключ); КонецЦикла; И вылет с сообщением что - ПОЛЕ ОБЪЕКТА НЕДОСТУПНО ДЛЯ ЗАПИСИ (РОДИТЕЛЬ) процедура - пробовал и на клиенте и на сервере без разницы. Что делаю не так? |
|||
1
Fragster
гуру
14.06.17
✎
18:49
|
ГруппаОтбора.ЭлементыИликактамИх.Добавить()
|
|||
2
Влад_Савин
14.06.17
✎
18:54
|
Так есть Группа- добавить!
Вот вся процедура целиком: Процедура УстановитьОтборПоСтатусамСделок(СтруктОтбора) НашлиГруппу=Ложь; Для Каждого ЭлементОтбора Из ЗаказыПокупателей.Отбор.Элементы Цикл Если ЭлементОтбора.Представление="ГруппаОтбораСтатус" Тогда ГруппаОтбора=ЭлементОтбора; НашлиГруппу=Истина; Прервать; КонецЕсли; КонецЦикла; Если Не НашлиГруппу Тогда ГруппаОтбора = ЗаказыПокупателей.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; ГруппаОтбора.Представление="ГруппаОтбораСтатус"; КонецЕсли; Для Каждого ЭлементОтбора Из ЗаказыПокупателей.Отбор.Элементы Цикл Если ЭлементОтбора.Родитель=ГруппаОтбора Тогда Если СтруктОтбора=Неопределено Тогда ЭлементОтбора.Использование = Ложь; Иначе Если СтруктОтбора.Получить(ЭлементОтбора.Представление)<>Неопределено Тогда //Структура //Соответствие ЭлементОтбора.Использование = Истина; Сообщить("найден элемент отбора "+ЭлементОтбора.Представление+" = "+СтруктОтбора.Получить(ЭлементОтбора.Представление)); СтруктОтбора.Удалить(ЭлементОтбора.Представление); Сообщить("удален - осталось "+СтруктОтбора.Количество()+" нераспределенных элементов"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если СтруктОтбора<>Неопределено Тогда Если СтруктОтбора.Количество()>0 Тогда Для Каждого ЭлементЗначОтбора Из СтруктОтбора Цикл ЭлементОтбора = ЗаказыПокупателей.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗаказыПокупателейСостояниеЗаказа"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.Представление = ЭлементЗначОтбора.Ключ; ЭлементОтбора.ПравоеЗначение = СтруктОтбора.Получить(ЭлементЗначОтбора.Ключ); Сообщить("создан элемент отбора "+ЭлементЗначОтбора.Ключ+" = "+СтруктОтбора.Получить(ЭлементЗначОтбора.Ключ)); КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
3
Влад_Савин
14.06.17
✎
18:57
|
Дело в том что она вызывается не единожды при открытии - а когда я меняю фильтр отбора (список с пометками) и тотчас же, обработчиком, должен измениться список.
Потому группа создается при первом обращении - а в дальнейшем ищется, нет ли ее уже. |
|||
4
Влад_Савин
14.06.17
✎
18:59
|
В отладчике - на момент когда я обращаюсь к Родитель - записать - эта ГруппаОтбора видна, и в ней все вроде норм.
|
|||
5
Влад_Савин
19.06.17
✎
16:36
|
Вопрос снят, разобрался
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |