|   |   | 
| 
 | Установка программного отбора на несколько полей | ☑ | ||
|---|---|---|---|---|
| 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. ОтключитьОтбор - отключает отбор, и показывает все введенные заявки в форме списка документов. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |