Имя: Пароль:
1C
1С v8
Отбор работает некорректно
0 dart909
 
14.07.15
10:36
Подскажите пожалуйста знающие люди. Есть код в модуле формы списка:

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

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

&НаКлиенте
Процедура ОтобратьПринятых(Команда)
     Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьПринятых.Пометка = Не Проверка;
     Проверка = Не Проверка;
     СделатьОтборПоПринятым();
     Если Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьПринятых.Пометка = Ложь Тогда
         Список.Отбор.Элементы.Очистить()
     КонецЕсли;    
     Если Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьПринятых.Пометка = Ложь И Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьУволенных.Пометка = Ложь Тогда
          ОтменаОтбора(Команда)
     КонецЕсли      
КонецПроцедуры


&НаКлиенте
Процедура ОтобратьУволенных(Команда)
    Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьУволенных.Пометка = Не ПроверкаУволенных;
    ПроверкаУволенных = Не ПроверкаУволенных;
    СделатьОтборПоУволенным();
    Если Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьУволенных.Пометка = Ложь И Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьПринятых.Пометка = Ложь Тогда
         ОтменаОтбора(Команда)
    КонецЕсли    
КонецПроцедуры

Процедура ПриОткрытии(Отказ)
    
     Элементы.Посмотреть.ПодчиненныеЭлементы.ОтобратьПринятых.Пометка = Ложь;
     Проверка = Ложь;
     ПроверкаУволенных = Ложь;
КонецПроцедуры

Как сделать, чтобы можно было сделать отбор и по принятым и по уволенным? и Соответственно отменять отбор по принятым или уволенным, а не полностью его очищать?
1 Cyberhawk
 
14.07.15
10:45
Найти(), Добавить()...
2 dart909
 
14.07.15
11:06
(1) И куда это?
3 D_E_S_131
 
14.07.15
11:40
"и по принятым и по уволенным" — вид сравнения "В списке", "Правое значение" список нужных тебе статусов.
4 dart909
 
14.07.15
11:42
(3) Список создавать заполнять в той же процедуре Отбор?
5 D_E_S_131
 
14.07.15
12:18
(4) Да где хочешь.
6 dart909
 
14.07.15
12:38
(5) &НаСервере
Процедура  СделатьОтборПоПринятым()
     СписокЗнач = Новый СписокЗначений;
     СписокЗнач.Добавить("Принят");
     СписокЗнач.Добавить("Больничный");
     СписокЗнач.Добавить("Уволен");
    
     ТекОтбор = Список.Отбор.Элементы;
     УсловиеОтбора = ТекОтбор.Добавить(тип("ЭлементОтбораКомпоновкиДанных"));
     УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
     УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
     УсловиеОтбора.ПравоеЗначение = СписокЗнач;    
КонецПроцедуры    

Отбор ничего не выдал
7 ЛисИзЛеса
 
14.07.15
13:23
Даю подсказку
Сравните 2 строчки:

СписокЗнач.Добавить("Принят")

УсловиеОтбора.ПравоеЗначение = перечисления.СтатусСотрудника.Принят

В первом случае тип данных - "Строка"
Во втором - Перечисление.
8 Cyberhawk
 
14.07.15
13:27
(2) в синтакс-помощник, во вкладку "Индекс"
9 dart909
 
14.07.15
13:42
(7) Спасибо
10 dart909
 
14.07.15
13:43
А можно вопрос еще как наложить такое условие, Если кнопка нажата Тогда в список добавляем значение?