Имя: Пароль:
1C
1С v8
Динамический список, скрыть отбор
,
0 salvator
 
21.02.24
13:14
Добрый день.
Каким образом можно скрыть поля отбора динамического списка, чтобы они не были видны пользователю?
Пробовал метод УстановитьОграниченияИспользованияВОтборе(<Поля>), получаю ошибку "параметры отбора сортировки группировки или список отображаемых полей заданы неверно". Потом наткнулся на информацию: "Методы динамического списка УстановитьОграниченияИспользованияВГруппировке(), УстановитьОграниченияИспользованияВОтборе(), УстановитьОграниченияИспользованияВПорядке(), ПолучитьОграниченияИспользованияВГруппировке(), ПолучитьОграниченияИспользованияВОтборе(), ПолучитьОграниченияИспользованияВПорядке() объявляются устаревшими и не рекомендуются к использованию. Рекомендуется использовать свойства динамического списка ОграничениеИспользования и ОграничениеИспользованияРеквизитов полей динамического списка."
Но в "Список.Поля" нет элементов. Можно эту задачу как-то реализовать?
1 Bigbro
 
21.02.24
13:54
УстановитьЭлементОтбораДинамическогоСписка, не?
2 salvator
 
21.02.24
14:14
(1) Я предварительно устанавливаю отбор по полю при создании на сервере. Режим отображения устанавливаю в значение "недоступный". Но дополнительно хочу убрать это поле из доступных отборов.
3 AlexeyKh
 
21.02.24
14:51
попробуйте программно, сюда писать свой отбор

Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы
4 salvator
 
21.02.24
15:00
(3) Я делаю так:

ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
        ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    
        ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СчетДт");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
        ЭлементОтбора.ПравоеЗначение = Счет;
        ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    
        ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СчетКт");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
        ЭлементОтбора.ПравоеЗначение = Счет;
        ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

И после этого в "Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы" группа отбора присутствует
5 AlexeyKh
 
21.02.24
15:40
у себя проверял, при добавление в ФиксНастройки отбора,
при работе пользователя в настройках Списка в отборе
этих фикс.Отборов не видно.

но иногда можно словить ошибку Какое-то там пересечение отборов...
6 Bigbro
 
21.02.24
15:49
в этом видимо и задача. после установки своих отборов сделать для пользователя недоступным то что уже установлено. чтоб не ловить ошибки на пересечении. я не знаю как так сделать.
7 mikecool
 
21.02.24
15:53
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
8 mikecool
 
21.02.24
15:53
(6) а для этого есть УстановитьПользовательскийОтборСписка
9 salvator
 
21.02.24
16:01
(6) Да, именно это и нужно
(8) Что это за метод? СП молчит про него.
10 mikecool
 
21.02.24
16:06
(9) а поискать в конфиге, в районе ОбщегоНазначенияКлиентСервер
11 salvator
 
21.02.24
16:37
(10) В БП3 нет такого, есть только УстановитьЭлементОтбораДинамическогоСписка, там происходит такая же установка отбора в фиксированные настройки.
12 salvator
 
21.02.24
23:10
Если делать не через установку отборов, а изменить текст запроса динамического списка и добавить в него нужное условие, то в принципе рабочий вариант. И пофиг на то, какие отборы добавит пользователь, ошибки пересечения отборов не будет.
13 salvator
 
21.02.24
23:11
+(12) Текст запроса программно изменить, имеется в виду.