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



Установка программного отбора на несколько полей

Установка программного отбора на несколько полей
Я
   TolstiyBeremenniy
 
15.11.18 - 06:43
Суть задачи такая. Открываю форму списка документа.
Устанавливаю на неё программный отбор.
Необходимо отобрать не закрытые заявки и те документы в которых
текущий пользователь информационной базы равен Исполнителю или
Адресату.
Сейчас есть такой отбор. Он отбирает в процедуре ПриОткрытии()
в форме списка документы где текущий пользователь информационной 
базы равен Исполнителю. Какой код нужно добавить, что бы ещё отбирать
документы где текущий пользователь информационной базы был равен и
Адресату????

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

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

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

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

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

        ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("СтатусЗаявки");
        ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеРавно;
        ЭлементОтбора.Использование  = Истина;
        ЭлементОтбора.ПравоеЗначение = СтатусЗавершен();
        ЭлементОтбора.Представление   = "Программный отбор";
 
 
   TolstiyBeremenniy
 
1 - 15.11.18 - 06:56
Up!
   TolstiyBeremenniy
 
2 - 15.11.18 - 07:02
Сейчас отбор программно накладывается в соответствии
с кодом в (0) вот так:

Исполнитель = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен

Как доработать код в (0) что бы было вот так, ->

Исполнитель  = ТекущийПользователь
И 
СтатусЗаявки Не СтатусЗавершен
ИЛИ
Адресат      = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен

Подскажите пожалуйста!
   catena
 
3 - 15.11.18 - 07:05
(2)Ты действительно даже уже сформулировав логическую операцию не можешь написать код по раскидыванию на группы?
   chelentano
 
4 - 15.11.18 - 07:05
В группу с "И" добавь группу с "ИЛИ", в которой ставь отбор по адресату и исполнителю
   TolstiyBeremenniy
 
5 - 15.11.18 - 07:08
(3) Ну вот я попробовал раскидать группы, но это не
правильно. Идет ошибка. Как будет правильно?
        //

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

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

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

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

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

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

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

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

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

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

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

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

До меня не доходит пока как сделать правильнО!
   TolstiyBeremenniy
 
7 - 15.11.18 - 07:10
(4) ну я в (5) пробую. Не понимаю как нужно правильно.
   TolstiyBeremenniy
 
8 - 15.11.18 - 07:16
(3) Подскажите пожалуйста как это будет по коду?
   catena
 
9 - 15.11.18 - 07:16
(6)Объясни мне, белоголовой женщине, почему ты элементы добавляешь в элементы, а группу внезапно решил добавить в отбор?

ЭлементОтбора                = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ГруппаОтбора1           = ГруппаОтбора.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
   catena
 
10 - 15.11.18 - 07:17
(8)Не, я принципиально против такого подхода. Тебе вон добренькие типа (4) готовый код дают, так ты до сих пор ни кодить, ни СП читать не научился. Так балбесом и останешься.
 
 Рекламное место пустует
   TolstiyBeremenniy
 
11 - 15.11.18 - 07:23
Условие должно быть такое. Ещё добавился один реквизит.
Верно ли изменен код?

Постановщик  = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен
ИЛИ
Исполнитель  = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен
ИЛИ
Адресат      = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен

        //

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

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

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

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

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

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

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

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

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

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

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

Постановщик  = ТекущийПользователь 
ИЛИ 
Исполнитель  = ТекущийПользователь 
ИЛИ 
Адресат      = ТекущийПользователь
И
СтатусЗаявки Не СтатусЗавершен


Верен ли код в (11) ?
   catena
 
13 - 15.11.18 - 07:26
(12)Тут форум, а не отладчик. Запусти и проверь.
   TolstiyBeremenniy
 
14 - 15.11.18 - 07:55
(13) Ну я по логике кода узнаю.
Код в (5) не правильный !!!
   hhhh
 
15 - 15.11.18 - 08:00
(14) ну и этот по логике кода пробей
   TolstiyBeremenniy
 
16 - 15.11.18 - 08:04
(15) Да мне не сильно прозрачен код этот отборов.
В тестовом режиме пока продвигаюсь!!!!!!
накапливаю знания и информацию по нему.
   TolstiyBeremenniy
 
17 - 15.11.18 - 08:07
Код в (11) не отрабатывает!!!!
я открыл форму списка под пользователем, под которым нет
документов для отбора. А там значится документ.
то есть получается он не работает!!!!

Вот и прошу подсказки, сам не могу пока разобраться как
нужно правильно1
   TolstiyBeremenniy
 
18 - 15.11.18 - 08:10
(17+) Или работает.
А то я защел под пользователем у которого есть полные права.
а под таких отбор не задан.
   Deon
 
19 - 15.11.18 - 08:15
(18) По идее, код должен работать. Вроде, всё правильно. ГруппаИ, правда, тебе не нужна, если ты в неё всего 1 элемент суёшь
   catena
 
20 - 15.11.18 - 08:46
(19)Работать должен, но не так, как нужно ТС. Но он пока не отличает, где не работает, а где работает не так, как ему хотелось.
   TolstiyBeremenniy
 
21 - 15.11.18 - 12:42
(20) А почему не так?
В чём оплошность?

Нужно что бы при открытии формы списка, будь то открывший
её постановщик, адресат или исполнитель. Их документы что 
бы, по текущему пользователю параметров сеанса, 
отображались в форме списка формы.

Это при открытии.

Так же на форме списка разместил 3 кнопки:
1. ФильтрНеЗакрытые - показывает не закрытые заявки по текущему постановщику, адресату или исполнителю. В зависимости кто текущий пользователь параметров сеанса.

2. ФильтрВсе - показывает все заявки по текущему постановщику, адресату или исполнителю.

3. ОтключитьОтбор - отключает отбор, и показывает все введенные заявки в форме списка документов.


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