Имя: Пароль:
1C
1С v8
Работа с объектом "Отбор"
0 lunjio
 
27.02.15
12:52
Добрый день, подскажите люди добрые как корректно работать с объектом отбор, проблема в следующем - при добавление Поля для отбора, невозможно выбрать его реквизиты.
Код:
ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля();
    Поле = ДоступныеПоляОтбора.Добавить("ВидыКонтактнойИнформации", "ВидыКонтактнойИнформации",
                        Новый ОписаниеТипов("СправочникСсылка.ВидыКонтактнойИнформации"));    
    Поле.Отбор = Истина;

При этом  доступно только одно поле "ВидыКонтактнойИнформации", без возможности выбора реквизитов, в полях лежат пустые доступные поля, они доступны только для чтения. Программно как это организовать не нашел. Буду благодарен за подсказку.
1 D_E_S_131
 
27.02.15
14:05
УстановитьДоступныеПоля() не делаешь?
2 lunjio
 
27.02.15
14:28
Делаю конечно после добавления поля. Как бы в отборе имею одно поле на выбор "ВидыКонтактнойИнформации" без возможности отбора по реквезитам.
3 D_E_S_131
 
27.02.15
14:41
Если поля у тебя получаются из настроек Построителя, то видимо там это поле было описано как без вложенных значений.
4 Strogg
 
27.02.15
14:44
Вроде на ОФ так фиг сделаешь. Буквально вчера озадачился отбором по реквизиту реквизита - че-т не вышло ничего. Запилил свой отбор.
5 lunjio
 
27.02.15
14:53
D_E_S_131 нет, поле плучаются не из настроек построителя. Не использую построитель так как он мне не нужен, мне просто нужен отбор, использую обычный объект "Отбор" т.к он есть в конфигурации. Поле мне возвращается добавлением в ДоступныеПоляОтбора, причем там есть свойство "поля", которое по идее и должно иметь доступные поля, т.е реквизиты, но оно только для чтения, а не для записи и там пустая коллекция всегда.
Strogg ясно, спасибо. Покажешь код со своим отбором ? чтобы я долго не ковырялся по конфигурации в поисках подходящего).
6 Strogg
 
27.02.15
15:05
Да там ничего сложного. Навесил реквизит формы - флажок. Ну и обработчик события на него навесил...
//---
Процедура ИспользуетсяПОтделомПриИзменении(Элемент)
    Если Элемент.Значение = Истина тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                   |    Показание.Ссылка
                   |ИЗ
                   |    Документ.Показание КАК Показание
                   |ГДЕ
                   |    Показание.Счетчик.ИспользуетсяПОтделом = ИСТИНА"
        ;
        Рез = Запрос.Выполнить().Выгрузить();
        МассивДокументов = Рез.ВыгрузитьКолонку("Ссылка");
        СписокДокументов = Новый СписокЗначений;
        СписокДокументов.ЗагрузитьЗначения(МассивДокументов);
        ДокументСписок.Отбор.Ссылка.Использование = Истина;
        ДокументСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
        ДокументСписок.Отбор.Ссылка.Значение = СписокДокументов;
    Иначе
        ДокументСписок.Отбор.Ссылка.Использование = Ложь;
    КонецЕсли;
КонецПроцедуры
//---
Другого че-т ниче не придумал...
7 Defender aka LINN
 
27.02.15
15:09
(5) "но оно только для чтения" - как же вы за... утомили.
Табличная часть объекта тоже только для чтения. И?
8 Ёпрст
 
гуру
27.02.15
15:22
(0) проще на форму кинуть ПостроительОтчета.Отбор (заместо обычного Отбор), дальше всё просто:

    ПостроительОтчета.Текст="ВЫБРАТЬ
                            |    0 КАК Шняга
                            |{ГДЕ
                            |    (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяССылка)).* КАК Склад,
                            |    (ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка)).* КАК Номенклатура,
                            |    (ЗНАЧЕНИЕ(Справочник.Организации.ПустаяССылка)).* КАК Организация,
                                                            |    (ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)).* КАК Контрагент}";
Отбор = ПостроительОтчета.Отбор;
Отбор.Добавить("Организация", , "Организация");
Отбор.Добавить("Контрагент", , "Контрагент");
Отбор.Добавить("Склад", , "Склад");
Отбор.Добавить("Номенклатура", , "Номенклатура");

ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля();
Для каждого Поле ИЗ ДоступныеПоляОтбора Цикл
      Поле.Отбор = Истина;
КонецЦикла;
9 Ёпрст
 
гуру
27.02.15
15:22
Будет тебе в отборе поля со всеми реквизитами..