Имя: Пароль:
1C
1С v8
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
Вопрос снят, разобрался
Закон Брукера: Даже маленькая практика стоит большой теории.