Вход | Регистрация



Установка отбора на динамический список

Установка отбора на динамический список
Я
   TolstiyBeremenniy
 
12.11.18 - 07:45
На форме списка документов, лежит динамический список.
Необходим на него при открытии накладывать отбор документов
по исполнителю. то есть что бы в этом списке отображались документы
только исполнителя. Так же иметь возможность устанавливать убирать
фильтрацию принудительно. разместив на форме поле со значениями
списка, не выполненные, все. Что бы отображать нужные документы
в списке в зависимости от выбранного статуса.
Как правильно накладывается отбор на динамический список?
 
 
   TolstiyBeremenniy
 
1 - 12.11.18 - 07:47
Это следует делать в процедуре

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)


или в процедуре ПриОткрытии()
   SleepyHead
 
2 - 12.11.18 - 08:02
А чем не устраивает настройка списка?
   rphosts
 
3 - 12.11.18 - 08:07
накладывать в серверной контекстной процедуре, которую вызывать из ПриСозданииНаСервере и из обработчика изменения критерия отбора("не выполненные, все")
   rphosts
 
4 - 12.11.18 - 08:08
(2) ну иногда от юзера требуется не просто изолировать возможность корректировать отбор, но даже скрыть информацию о том, что такой отбор наложен
   TolstiyBeremenniy
 
5 - 12.11.18 - 08:18
Почему ругается на Родитель????
Поле объекта не доступно для записи (Родитель)


&НаКлиенте
Процедура ПриОткрытии(Отказ)
     ГруппаОтбора           = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    //

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

    ЭлементОтбора                  = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Родитель          = ГруппаОтбора;
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ОписаниеЗаявки");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеРавно;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = СтатусЗавершен();   
КонецПроцедуры
   TolstiyBeremenniy
 
6 - 12.11.18 - 08:18
(2) Я ищу решения. Может и настройка списка подойдет
Важно делать это программно.
   Lexey_
 
7 - 12.11.18 - 08:26
(5) потому, что "Поле объекта не доступно для записи"
   TolstiyBeremenniy
 
8 - 12.11.18 - 08:35
Подскажите что сейчас не так в отборе?


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

    ЭлементОтбора                = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель       = ГруппаОтбора;

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

    ЭлементОтбора                  = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель          = ГруппаОтбора;

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




То отобрал совсем не те значения. То выдается сообщение


Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно.
по причине:
Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
   hhhh
 
9 - 12.11.18 - 08:39
(8) что значит исполнитель меньше пользователя? Ростом меньше? Или уже в плечах?
   TolstiyBeremenniy
 
10 - 12.11.18 - 08:41
(9) Простите! Выходит я взял пример, подкорректировал, но не до конца.
Отлаживаю!!!!
 
 Рекламное место пустует
   TolstiyBeremenniy
 
12 - 12.11.18 - 08:44
Вот, поправил. Выдает Невозможно применить фиксированные настройки. Пересекаются элементы отбора.



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

    ЭлементОтбора                = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель       = ГруппаОтбора;

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

    ЭлементОтбора                  = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель          = ГруппаОтбора;

    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("СтатусЗаявки");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = СтатусЗавершен();
    ГруппаОтбора.Представление   = "Программный отбор";
   Kashey
 
13 - 12.11.18 - 08:45
Попробуй отбор добавлять вот так:

Отбор = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы;
   Пес Барбос
 
14 - 12.11.18 - 08:45
Если у и тебя типовая конф., то поищи в общих модулях "УстановитьЭлементОтбораДинамическогоСписка"

Пример, (у меня ERP)
        ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Подразделение",Параметры.Подразделение,ВидСравненияКомпоновкиДанных.Равно,,Истина);
   catena
 
15 - 12.11.18 - 08:47
(12)Очищать отбор перед добавление не пробовал?
   TolstiyBeremenniy
 
16 - 12.11.18 - 08:47
(13) то есть вот это
Отбор = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы;

за место

ГруппаОтбора           = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбора
КомпоновкиДанных"));

??
   TolstiyBeremenniy
 
17 - 12.11.18 - 08:48
(14) Документооборот 8 КОРП, редакция 2.1 (2.1.11.5)
   TolstiyBeremenniy
 
18 - 12.11.18 - 08:49
(15) Подскажите пожалуйста, как очистить отбор?
Наверное я давно не работал с отборами в УФ.
   Пес Барбос
 
19 - 12.11.18 - 08:49
(17) глобальным поиском поищи УстановитьЭлементОтбораДинамическогоСписка
   TolstiyBeremenniy
 
20 - 12.11.18 - 08:50
(19) Есть такая, в названном вами модуле.

// Добавить или заменить существующий элемент отбора динамического списка.

//
// Параметры:

//   ДинамическийСписок - ДинамическийСписок - Список, в котором требуется установить отбор.
//   ИмяПоля            - Строка - Поле, по которому необходимо установить отбор.

//   ПравоеЗначение     - Произвольный - Значение отбора.
//       Необязательный. Значение по умолчанию: Неопределено.

//       Внимание! Если передать Неопределено, то значение не будет изменено.
//   ВидСравнения  - ВидСравненияКомпоновкиДанных - Условие отбора.

//   Представление - Строка - Представление элемента компоновки данных.
//       Необязательный. Значение по умолчанию: Неопределено.

//       Если указано, то выводится только флажок использования с указанным представлением (значение не выводится).
//       Для очистки (чтобы значение снова выводилось) следует передать пустую строку.

//   Использование - Булево - Флажок использования этого отбора.
//       Необязательный. Значение по умолчанию: Неопределено.

//   РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных - Способ отображения этого отбора
//                                                                          пользователю.

//       * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ - В группе быстрых настроек над списком.
//       * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный       - В настройка списка (в подменю Еще).

//       * РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный   - Запретить пользователю менять этот отбор.
//   ИдентификаторПользовательскойНастройки - Строка - Уникальный идентификатор этого отбора.

//       Используется для связи с пользовательскими настройками.
//

// См. также:
//   Одноименные свойства объекта "ЭлементОтбораКомпоновкиДанных" в синтакс-помощнике.

//
Процедура УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля,
    ПравоеЗначение = Неопределено,
    ВидСравнения = Неопределено,
    Представление = Неопределено,
    Использование = Неопределено,
    РежимОтображения = Неопределено,
    ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
    
    Если РежимОтображения = Неопределено Тогда
        РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    КонецЕсли;
    
    Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда
        ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
    Иначе
        ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор;
    КонецЕсли;
    
    УстановитьЭлементОтбора(
        ОтборДинамическогоСписка,
        ИмяПоля,
        ПравоеЗначение,
        ВидСравнения,
        Представление,
        Использование,
        РежимОтображения,
        ИдентификаторПользовательскойНастройки);
    
КонецПроцедуры
   Lexey_
 
21 - 12.11.18 - 09:00
(18) давно - это никогда?
   dezss
 
22 - 12.11.18 - 09:12
(12) одинаковые представления, ИМХО, могут мешать)

А очищать так:
СписокЗаявокУИиС.Отбор.Элементы.Очистить();
   TolstiyBeremenniy
 
23 - 12.11.18 - 10:07
(22) ок, пробую.
   TolstiyBeremenniy
 
24 - 12.11.18 - 10:09
Странно! но ошибка идет все равно (((((


Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно.
по причине:
Невозможно применить фиксированные настройки. Пересекаются элементы отбора.


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    СписокЗаявокУИиС.Отбор.Элементы.Очистить();
    //

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

    ЭлементОтбора                = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель       = ГруппаОтбора;

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

    ЭлементОтбора                  = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель          = ГруппаОтбора;

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



Я же очищаю предварительно отбор.
Почему идет ошибка?
   Вафель
 
25 - 12.11.18 - 10:11
(24) у тебя еще пользоательский отбор задан. вот он и пересекается
   TolstiyBeremenniy
 
26 - 12.11.18 - 10:13
(25) Я думал вот этим я все сбрасываю, ->

    СписокЗаявокУИиС.Отбор.Элементы.Очистить();

Как его сбросить то?
   Kashey
 
27 - 12.11.18 - 10:16
(16) Попробуй так:
ОтборСписка = СписокЗаявокУИиС.КомпоновщикНастроек.Настройки.Отбор.Элементы;
ГруппаОтбора   = ОтборСписка.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
   Вафель
 
28 - 12.11.18 - 10:17
Отбор - Это фиксированный отбор.
А Список.ПользовательскиеНастройки - это совсем другое
   TolstiyBeremenniy
 
29 - 12.11.18 - 10:21
Есть документ, отвечающий вот этим условиям.
Текущий пользователь такой то, и СтатусЗаявки такой то.
Но в списке пусто! Почему может не срабатывать отбор?


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    СписокЗаявокУИиС.Отбор.Элементы.Очистить();
    //

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

    ЭлементОтбора                = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель       = ГруппаОтбора;

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

    ЭлементОтбора                  = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //ЭлементОтбора.Родитель          = ГруппаОтбора;

    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("СтатусЗаявки");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеРавно;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = СтатусЗавершен();
    ГруппаОтбора.Представление   = "Программный отбор";
   TolstiyBeremenniy
 
30 - 12.11.18 - 10:22
(29) С этим кажется понятно!!!!

(28) Нужно ещё очищать подобным способом заданный отбор
в пользовательских настройках?
   dezss
 
31 - 12.11.18 - 10:28
кароч, сперва надо было тебе пояндексить

Пересекаются элементы отбора УФ
   TolstiyBeremenniy
 
32 - 12.11.18 - 11:38
(31) По данной вами ветви форума, нужно очищать 
пользовательские настройки в процедуре
СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ???

Как именно это делать?
   TolstiyBeremenniy
 
33 - 12.11.18 - 12:49
(31) Правильно что тут в конце ветки выяснили как очищать пользовательские настройки? Подскажите пожалуйста как это делать мне не понятно! А посмотрел по коду. Как правильно их очищать?
 
 
   dezss
 
34 - 12.11.18 - 12:55
(33) я такого не делал, а проверять времени нет...
просто направление знаешь, дальше копай инет и иди)
   TolstiyBeremenniy
 
35 - 13.11.18 - 04:48
(34) Примерное направление знаю.
Но что то не пойму как их там очищать.
Нужно видимо время и усердие что бы попытаться понять.
Пока переключился на другую задачу.
   DexterMorgan
 
36 - 14.11.18 - 10:40
(0) Ты во франче? или фикси?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует