Имя: Пароль:
1C
1С v8
Как изменить отбор?
,
0 dart909
 
13.07.15
11:32
Добрый день, подскажи пожалуйста. Есть такой код:

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

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

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

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

Интересует следующее, как сделать, чтобы можно было выбирать не одно значение в отборе то бишь (Принят или Уволен или Больничный), а например можно было отобрать кто принят и уволен?
1 dart909
 
13.07.15
11:34
Отбор происходит в форме списка.
2 butterbean
 
13.07.15
11:34
вид сравнения ВСписке
3 dart909
 
13.07.15
11:38
(2) Поменял, ничего не изменилось. Отбор так и идет только по 1 значению.
4 Lexey_
 
13.07.15
11:44
(0) интересно, а если у тебя больше 3х значений отбора будет, для каждого будешь процедуру отбора писать?
5 dart909
 
13.07.15
11:53
(4) Я знаю, что отбор должен быть написан в одной процедуре, и вид сравнения ВСписке, а как задать тогда правое значение?
6 Ma3eIIa
 
13.07.15
11:55
конфа какая ?
7 Ma3eIIa
 
13.07.15
12:03
текст поиск по конфе. в типовой
// Добавляет отбор в коллекцию отборов компоновщика или группы отборов
//
// Параметры:
//        ЭлементСтруктуры - элемент структуры
//        Поле             - имя поля, по которому добавляется отбор
//        Значение         - значение отбора
//        ВидСравнения     - вид сравнений компоновки данных (по умолчанию: вид сравнения)
//        Использование    - признак использования отбора (по умолчанию: истина)
//
Функция ДобавитьОтбор
8 dart909
 
13.07.15
12:04
(6) Ну просто конфа написанная для учебного задания
9 Ma3eIIa
 
13.07.15
12:16
8.3 ?
у тебя форма списка и тебе нужно после неких манипуляций фильтровать данные. верно ?
10 Ma3eIIa
 
13.07.15
12:23
1. у тебя перечисление. зачем ты создаешь список ?
если тебе нужен выбор их. то создай список значений и в него помещай значение которые выбрали.

а не выбрать значения.

2. в процедуру сделать отбор. передавай список значений. который заполнил пользователь


&НаСервере
Процедура  СделатьОтбор()
    
     ТекОтбор = Список.Отбор.Элементы;
     ТекОтбор.Очистить();
     УсловиеОтбора = ТекОтбор.Добавить(тип("ЭлементОтбораКомпоновкиДанных"));
     УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
     УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Всписке;
     УсловиеОтбора.ПравоеЗначение = СписокОтбора;    
КонецПроцедуры
11 Ma3eIIa
 
13.07.15
12:23
посмотри как работают типовые отборы
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший