|
Установка отбора на динамический список | ☑ | ||
---|---|---|---|---|
0
Tolstiy Beremenniy
12.11.18
✎
07:45
|
На форме списка документов, лежит динамический список.
Необходим на него при открытии накладывать отбор документов по исполнителю. то есть что бы в этом списке отображались документы только исполнителя. Так же иметь возможность устанавливать убирать фильтрацию принудительно. разместив на форме поле со значениями списка, не выполненные, все. Что бы отображать нужные документы в списке в зависимости от выбранного статуса. Как правильно накладывается отбор на динамический список? |
|||
1
Tolstiy Beremenniy
12.11.18
✎
07:47
|
Это следует делать в процедуре
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) или в процедуре ПриОткрытии() |
|||
2
SleepyHead
гуру
12.11.18
✎
08:02
|
А чем не устраивает настройка списка?
|
|||
3
rphosts
12.11.18
✎
08:07
|
накладывать в серверной контекстной процедуре, которую вызывать из ПриСозданииНаСервере и из обработчика изменения критерия отбора("не выполненные, все")
|
|||
4
rphosts
12.11.18
✎
08:08
|
(2) ну иногда от юзера требуется не просто изолировать возможность корректировать отбор, но даже скрыть информацию о том, что такой отбор наложен
|
|||
5
Tolstiy Beremenniy
12.11.18
✎
08:18
|
Почему ругается на Родитель????
Поле объекта не доступно для записи (Родитель) &НаКлиенте Процедура ПриОткрытии(Отказ) ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; // ЭлементОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ТекПользБазы(); // ЭлементОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОписаниеЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); КонецПроцедуры |
|||
6
Tolstiy Beremenniy
12.11.18
✎
08:18
|
(2) Я ищу решения. Может и настройка списка подойдет
Важно делать это программно. |
|||
7
Lexey_
12.11.18
✎
08:26
|
(5) потому, что "Поле объекта не доступно для записи"
|
|||
8
Tolstiy Beremenniy
12.11.18
✎
08:35
|
Подскажите что сейчас не так в отборе?
ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ТекПользБазы(); ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ГруппаОтбора.Представление = "Программный отбор"; То отобрал совсем не те значения. То выдается сообщение Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно. по причине: Невозможно применить фиксированные настройки. Пересекаются элементы отбора. |
|||
9
hhhh
12.11.18
✎
08:39
|
(8) что значит исполнитель меньше пользователя? Ростом меньше? Или уже в плечах?
|
|||
10
Tolstiy Beremenniy
12.11.18
✎
08:41
|
(9) Простите! Выходит я взял пример, подкорректировал, но не до конца.
Отлаживаю!!!! |
|||
12
Tolstiy Beremenniy
12.11.18
✎
08:44
|
Вот, поправил. Выдает Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
&НаКлиенте Процедура ПриОткрытии(Отказ) ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ТекПользБазы(); ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ГруппаОтбора.Представление = "Программный отбор"; |
|||
13
Kashey
12.11.18
✎
08:45
|
Попробуй отбор добавлять вот так:
Отбор = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы; |
|||
14
Пес Барбос
12.11.18
✎
08:45
|
Если у и тебя типовая конф., то поищи в общих модулях "УстановитьЭлементОтбораДинамическогоСписка"
Пример, (у меня ERP) ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Подразделение",Параметры.Подразделение,ВидСравненияКомпоновкиДанных.Равно,,Истина); |
|||
15
catena
12.11.18
✎
08:47
|
(12)Очищать отбор перед добавление не пробовал?
|
|||
16
Tolstiy Beremenniy
12.11.18
✎
08:47
|
(13) то есть вот это
Отбор = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы; за место ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбора КомпоновкиДанных")); ?? |
|||
17
Tolstiy Beremenniy
12.11.18
✎
08:48
|
(14) Документооборот 8 КОРП, редакция 2.1 (2.1.11.5)
|
|||
18
Tolstiy Beremenniy
12.11.18
✎
08:49
|
(15) Подскажите пожалуйста, как очистить отбор?
Наверное я давно не работал с отборами в УФ. |
|||
19
Пес Барбос
12.11.18
✎
08:49
|
(17) глобальным поиском поищи УстановитьЭлементОтбораДинамическогоСписка
|
|||
20
Tolstiy Beremenniy
12.11.18
✎
08:50
|
(19) Есть такая, в названном вами модуле.
// Добавить или заменить существующий элемент отбора динамического списка. // // Параметры: // ДинамическийСписок - ДинамическийСписок - Список, в котором требуется установить отбор. // ИмяПоля - Строка - Поле, по которому необходимо установить отбор. // ПравоеЗначение - Произвольный - Значение отбора. // Необязательный. Значение по умолчанию: Неопределено. // Внимание! Если передать Неопределено, то значение не будет изменено. // ВидСравнения - ВидСравненияКомпоновкиДанных - Условие отбора. // Представление - Строка - Представление элемента компоновки данных. // Необязательный. Значение по умолчанию: Неопределено. // Если указано, то выводится только флажок использования с указанным представлением (значение не выводится). // Для очистки (чтобы значение снова выводилось) следует передать пустую строку. // Использование - Булево - Флажок использования этого отбора. // Необязательный. Значение по умолчанию: Неопределено. // РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных - Способ отображения этого отбора // пользователю. // * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ - В группе быстрых настроек над списком. // * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный - В настройка списка (в подменю Еще). // * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный - Запретить пользователю менять этот отбор. // ИдентификаторПользовательскойНастройки - Строка - Уникальный идентификатор этого отбора. // Используется для связи с пользовательскими настройками. // // См. также: // Одноименные свойства объекта "ЭлементОтбораКомпоновкиДанных" в синтакс-помощнике. // Процедура УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля, ПравоеЗначение = Неопределено, ВидСравнения = Неопределено, Представление = Неопределено, Использование = Неопределено, РежимОтображения = Неопределено, ИдентификаторПользовательскойНастройки = Неопределено) Экспорт Если РежимОтображения = Неопределено Тогда РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; КонецЕсли; Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; Иначе ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор; КонецЕсли; УстановитьЭлементОтбора( ОтборДинамическогоСписка, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки); КонецПроцедуры |
|||
21
Lexey_
12.11.18
✎
09:00
|
(18) давно - это никогда?
|
|||
22
dezss
12.11.18
✎
09:12
|
(12) одинаковые представления, ИМХО, могут мешать)
А очищать так: СписокЗаявокУИиС.Отбор.Элементы.Очистить(); |
|||
23
Tolstiy Beremenniy
12.11.18
✎
10:07
|
(22) ок, пробую.
|
|||
24
Tolstiy Beremenniy
12.11.18
✎
10:09
|
Странно! но ошибка идет все равно (((((
Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно. по причине: Невозможно применить фиксированные настройки. Пересекаются элементы отбора. &НаКлиенте Процедура ПриОткрытии(Отказ) СписокЗаявокУИиС.Отбор.Элементы.Очистить(); // ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ТекПользБазы(); ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ГруппаОтбора.Представление = "Программный отбор"; Я же очищаю предварительно отбор. Почему идет ошибка? |
|||
25
Вафель
12.11.18
✎
10:11
|
(24) у тебя еще пользоательский отбор задан. вот он и пересекается
|
|||
26
Tolstiy Beremenniy
12.11.18
✎
10:13
|
(25) Я думал вот этим я все сбрасываю, ->
СписокЗаявокУИиС.Отбор.Элементы.Очистить(); Как его сбросить то? |
|||
27
Kashey
12.11.18
✎
10:16
|
(16) Попробуй так:
ОтборСписка = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы; ГруппаОтбора = ОтборСписка.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); |
|||
28
Вафель
12.11.18
✎
10:17
|
Отбор - Это фиксированный отбор.
А Список.ПользовательскиеНастройки - это совсем другое |
|||
29
Tolstiy Beremenniy
12.11.18
✎
10:21
|
Есть документ, отвечающий вот этим условиям.
Текущий пользователь такой то, и СтатусЗаявки такой то. Но в списке пусто! Почему может не срабатывать отбор? &НаКлиенте Процедура ПриОткрытии(Отказ) СписокЗаявокУИиС.Отбор.Элементы.Очистить(); // ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ТекПользБазы(); ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ГруппаОтбора.Представление = "Программный отбор"; |
|||
30
Tolstiy Beremenniy
12.11.18
✎
10:22
|
(29) С этим кажется понятно!!!!
(28) Нужно ещё очищать подобным способом заданный отбор в пользовательских настройках? |
|||
31
dezss
12.11.18
✎
10:28
|
||||
32
Tolstiy Beremenniy
12.11.18
✎
11:38
|
(31) По данной вами ветви форума, нужно очищать
пользовательские настройки в процедуре СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ??? Как именно это делать? |
|||
33
Tolstiy Beremenniy
12.11.18
✎
12:49
|
(31) Правильно что тут в конце ветки выяснили как очищать пользовательские настройки? Подскажите пожалуйста как это делать мне не понятно! А посмотрел по коду. Как правильно их очищать?
|
|||
34
dezss
12.11.18
✎
12:55
|
(33) я такого не делал, а проверять времени нет...
просто направление знаешь, дальше копай инет и иди) |
|||
35
Tolstiy Beremenniy
13.11.18
✎
04:48
|
(34) Примерное направление знаю.
Но что то не пойму как их там очищать. Нужно видимо время и усердие что бы попытаться понять. Пока переключился на другую задачу. |
|||
36
DexterMorgan
14.11.18
✎
10:40
|
(0) Ты во франче? или фикси?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |