|
Установка программного отбора на несколько полей | ☑ | ||
---|---|---|---|---|
0
Tolstiy Beremenniy
15.11.18
✎
06:43
|
Суть задачи такая. Открываю форму списка документа.
Устанавливаю на неё программный отбор. Необходимо отобрать не закрытые заявки и те документы в которых текущий пользователь информационной базы равен Исполнителю или Адресату. Сейчас есть такой отбор. Он отбирает в процедуре ПриОткрытии() в форме списка документы где текущий пользователь информационной базы равен Исполнителю. Какой код нужно добавить, что бы ещё отбирать документы где текущий пользователь информационной базы был равен и Адресату???? СписокЗаявокУИиС.Отбор.Элементы.Очистить(); // ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ЭлементОтбора.Представление = "Программный отбор"; |
|||
1
Tolstiy Beremenniy
15.11.18
✎
06:56
|
Up!
|
|||
2
Tolstiy Beremenniy
15.11.18
✎
07:02
|
Сейчас отбор программно накладывается в соответствии
с кодом в (0) вот так: Исполнитель = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен Как доработать код в (0) что бы было вот так, -> Исполнитель = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен ИЛИ Адресат = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен Подскажите пожалуйста! |
|||
3
catena
15.11.18
✎
07:05
|
(2)Ты действительно даже уже сформулировав логическую операцию не можешь написать код по раскидыванию на группы?
|
|||
4
chelentano
15.11.18
✎
07:05
|
В группу с "И" добавь группу с "ИЛИ", в которой ставь отбор по адресату и исполнителю
|
|||
5
Tolstiy Beremenniy
15.11.18
✎
07:08
|
(3) Ну вот я попробовал раскидать группы, но это не
правильно. Идет ошибка. Как будет правильно? // СписокЗаявокУИиС.Отбор.Элементы.Очистить(); // ГруппаОтбора = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; ГруппаОтбора.Представление = "Программный отбор"; // ГруппаОтбора1 = ГруппаОтбора.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора1.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ЭлементОтбора.Представление = "Программный отбор"; // |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ГруппаОтбора2 = ГруппаОтбора.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбора2.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Адресат"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ЭлементОтбора.Представление = "Программный отбор"; |
|||
6
Tolstiy Beremenniy
15.11.18
✎
07:09
|
(3) ошибка возникает тут
ГруппаОтбора1 = ГруппаОтбора.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); До меня не доходит пока как сделать правильнО! |
|||
7
Tolstiy Beremenniy
15.11.18
✎
07:10
|
(4) ну я в (5) пробую. Не понимаю как нужно правильно.
|
|||
8
Tolstiy Beremenniy
15.11.18
✎
07:16
|
(3) Подскажите пожалуйста как это будет по коду?
|
|||
9
catena
15.11.18
✎
07:16
|
(6)Объясни мне, белоголовой женщине, почему ты элементы добавляешь в элементы, а группу внезапно решил добавить в отбор?
ЭлементОтбора = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ГруппаОтбора1 = ГруппаОтбора.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); |
|||
10
catena
15.11.18
✎
07:17
|
(8)Не, я принципиально против такого подхода. Тебе вон добренькие типа (4) готовый код дают, так ты до сих пор ни кодить, ни СП читать не научился. Так балбесом и останешься.
|
|||
11
Tolstiy Beremenniy
15.11.18
✎
07:23
|
Условие должно быть такое. Ещё добавился один реквизит.
Верно ли изменен код? Постановщик = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен ИЛИ Исполнитель = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен ИЛИ Адресат = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен // СписокЗаявокУИиС.Отбор.Элементы.Очистить(); // ГруппаОтбораИ = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ГруппаОтбораИ.Представление = "Программный отбор"; // ГруппаОтбораИЛИ = СписокЗаявокУИиС.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; ГруппаОтбораИЛИ.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подготовил"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Адресат"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = _ТекущийПользователь; ЭлементОтбора.Представление = "Программный отбор"; // ЭлементОтбора = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ЭлементОтбора.Родитель = ГруппаОтбора; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СтатусЗавершен(); ЭлементОтбора.Представление = "Программный отбор"; |
|||
12
Tolstiy Beremenniy
15.11.18
✎
07:24
|
По коду получается само условие вот такое, ->
Постановщик = ТекущийПользователь ИЛИ Исполнитель = ТекущийПользователь ИЛИ Адресат = ТекущийПользователь И СтатусЗаявки Не СтатусЗавершен Верен ли код в (11) ? |
|||
13
catena
15.11.18
✎
07:26
|
(12)Тут форум, а не отладчик. Запусти и проверь.
|
|||
14
Tolstiy Beremenniy
15.11.18
✎
07:55
|
(13) Ну я по логике кода узнаю.
Код в (5) не правильный !!! |
|||
15
hhhh
15.11.18
✎
08:00
|
(14) ну и этот по логике кода пробей
|
|||
16
Tolstiy Beremenniy
15.11.18
✎
08:04
|
(15) Да мне не сильно прозрачен код этот отборов.
В тестовом режиме пока продвигаюсь!!!!!! накапливаю знания и информацию по нему. |
|||
17
Tolstiy Beremenniy
15.11.18
✎
08:07
|
Код в (11) не отрабатывает!!!!
я открыл форму списка под пользователем, под которым нет документов для отбора. А там значится документ. то есть получается он не работает!!!! Вот и прошу подсказки, сам не могу пока разобраться как нужно правильно1 |
|||
18
Tolstiy Beremenniy
15.11.18
✎
08:10
|
(17+) Или работает.
А то я защел под пользователем у которого есть полные права. а под таких отбор не задан. |
|||
19
Deon
15.11.18
✎
08:15
|
(18) По идее, код должен работать. Вроде, всё правильно. ГруппаИ, правда, тебе не нужна, если ты в неё всего 1 элемент суёшь
|
|||
20
catena
15.11.18
✎
08:46
|
(19)Работать должен, но не так, как нужно ТС. Но он пока не отличает, где не работает, а где работает не так, как ему хотелось.
|
|||
21
Tolstiy Beremenniy
15.11.18
✎
12:42
|
(20) А почему не так?
В чём оплошность? Нужно что бы при открытии формы списка, будь то открывший её постановщик, адресат или исполнитель. Их документы что бы, по текущему пользователю параметров сеанса, отображались в форме списка формы. Это при открытии. Так же на форме списка разместил 3 кнопки: 1. ФильтрНеЗакрытые - показывает не закрытые заявки по текущему постановщику, адресату или исполнителю. В зависимости кто текущий пользователь параметров сеанса. 2. ФильтрВсе - показывает все заявки по текущему постановщику, адресату или исполнителю. 3. ОтключитьОтбор - отключает отбор, и показывает все введенные заявки в форме списка документов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |