Имя: Пароль:
1C
1С v8
Сохранение отбора в колонке таблицы значений 1с8 Толстый клиент
,
0 Vanyok
 
28.01.16
07:29
Всех приветствую!

Задача сохранять отбор в таблице значений.
Для примера кинул на форму таблицу, добавил колонку с типом "Отбор".
Изменяю процедуру "НачалоВыбора" чтобы в отбор попали нужные нам поля.

Процедура ТабличноеПоле1КолонкаОтборНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    ДоступныеПоляОтбора = Элемент.Значение.ПолучитьДоступныеПоля();
    Поле = ДоступныеПоляОтбора.Добавить("Контрагент", "Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
    Поле.Отбор         = Истина;
    Поле = ДоступныеПоляОтбора.Добавить("Номенклатура", "Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    Поле.Отбор         = Истина;
    Элемент.Значение.УстановитьДоступныеПоля(ДоступныеПоляОтбора);

КонецПроцедуры

Сделал как в СП, при изменении значения отбора в ячейке появляются поля для отбора с типами СправчникКонтрагенты и СправочникНоменклатура, но в этом случае нет возможности использовать их реквизиты, доступна только ссылка.
Как сделать, чтобы была возможность выбора реквизитов справочников, как если бы мы использовали Построитель отчёта и его отбор?

Пробовал вариант с построителем, из него получал доступные поля, потом устанавливал в Элемент.Значение, но эффекта никакого, поля вообще не появляются.
1 cw014
 
28.01.16
08:14
С таблицей такого сделать нельзя. Как вариант, делать выборку по условиям отбора, а ссылки подставлять в отбор списка
2 cw014
 
28.01.16
08:15
Или же использовать построитель запроса, а результат выгружать в таблицу значений
3 Vanyok
 
28.01.16
08:46
Может есть какая-та возможность установить источник данных к колонке с Отбором?
4 cw014
 
28.01.16
08:49
(3) Читай (1)
5 FIXXXL
 
28.01.16
09:23
>как если бы мы использовали Построитель отчёта и его отбор

ну и используй построитель, результат которого (ссылки) уже используй как отбор для ТЗ
6 cw014
 
28.01.16
09:44
(5) А не проще ли результат таблицы использовать источником основной таблицы?
7 FIXXXL
 
28.01.16
09:46
(6) задачу надо видеть, может и проще
8 Vanyok
 
28.01.16
10:16
(7) В кратце:

Есть общий справочник Номенклатура со своей иерархией.
Надо сделать таблицу с группами товаров и привязать к ним отборы по этой номенклатуре. Запрос сделаем один большой, к нему будем применять отборы.
Например:
Наименование - "Детские товары"
Отбор - "Номенклатура в группе такой-то и такой-то"

Наименование - "Дешёвые товары"
Отбор - "Цена номенклатуры < 1000руб."

Наименование - "Дорогие мужские брюки"
Отбор - "Номенклатура в группе брюки, Номенклатура.Пол=муж, ЦенаЮ10000руб."

Т.о., если у нас появляется какой-то товар с ценой меньше 1000руб., он автоматически будет попадать в отбор "Дешёвые товары", потом он подорожал - уже в эту группу не попадает.
9 Vanyok
 
29.01.16
10:00
Решение:

В качестве построителя отчёта используем реквизит формы.

Код:

        ПостроительОтчёта.Текст = "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Номенклатура
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка = NULL";
        ПостроительОтчёта.ЗаполнитьНастройки();
        ПоляОтбора = ПостроительОтчёта.Отбор.ПолучитьДоступныеПоля();
        Элемент.Значение.УстановитьДоступныеПоля(ПоляОтбора);
10 Vanyok
 
29.01.16
10:01
Код для той же процедуры, что в описании вопроса