Имя: Пароль:
1C
1С v8
Запрос, с вариантами параметра, если пусто то все варианты
0 Rizhij_Nikitos
 
14.09.11
15:42
Есть динамический список, и по нему сделать отбор, я делаю отбор по качеству, с помощью конструктора запросов, там указываю условие, а как сделать, если условие пусто, то выбрать все, что нужно писать ( ну типа значка *).

ВЫБРАТЬ
   СвободныеОстаткиОстатки.ВНаличииОстаток,
   СправочникНоменклатура.Наименование,
   СправочникНоменклатура.ЕдиницаИзмерения,
   СвободныеОстаткиОстатки.Характеристика.Ссылка,
   СправочникНоменклатура.Качество
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
       ПО СправочникНоменклатура.Ссылка = СвободныеОстаткиОстатки.Номенклатура
ГДЕ
   СправочникНоменклатура.Качество = &Качество
1 mikecool
 
14.09.11
15:44
СправочникНоменклатура.Качество = &Качество или &Качество = Значение(Справочник.Качество.ПустаяСсылка)
2 МихаилМ
 
14.09.11
15:46
полохая идея.

лучше изменить запрос

а по вопросу

завемитете

качетво =

на
качество >= мин значение качество
и

качество >= макс значение качество

в случае равенства мин и макс ровны

но так делают не опытные
3 Rizhij_Nikitos
 
14.09.11
15:47
То есть надо написать
Запрос.Параметры.УстановитьЗначениеПараметра("Качество",Значение(Справочник.Качество.ПустаяСсылка)?
Если да, то огромное спасибо, щас попробую.
4 Rizhij_Nikitos
 
14.09.11
15:50
Это все в динамическом списке, мб задействовать там отбор?
5 Rizhij_Nikitos
 
14.09.11
15:59
Попробывал такое
Список.Параметры.УстановитьЗначениеПараметра("Качество",Перечисление.ГрадацияКачества.ПустаяСсылка()) не выводит все...
6 Wingless
 
14.09.11
16:02
(5) Запрос показывай.
7 Rizhij_Nikitos
 
14.09.11
16:05
(0) сообщение там весь мой запрос.
8 Defender aka LINN
 
14.09.11
16:07
(0) У динамического списка и так есть отбор, без всяких параметров.
9 Rizhij_Nikitos
 
14.09.11
16:12
(8) отбор то есть,но там когда Перечисление.ГрадацииКачества.ПустаяСсылка стоит, то он ниче не выбирает, а если уставоновить Годен, Негоден,Просрочен, то выберет их, а как сделать, что если не выбрано одно из трех Годен,Негоден,Просрочен, выбрались все элементы, со всеми видами качества. Надеюсь, вы меня поняли.
10 Defender aka LINN
 
14.09.11
16:29
(9) Удалить элемент отбора или снять флаг использования. ВНЕЗАПНО, да?
11 Rizhij_Nikitos
 
14.09.11
16:30
Поле Список.Отбор.Элементы - доступно только для чтения...
12 Rizhij_Nikitos
 
14.09.11
17:12
Все сделал следующим образом, разобрался все таки как работать с отбором у динамических списков. В запросе убрал поле ГДЕ
   СправочникНоменклатура.Качество = &Качество
И получил следующий код в программе, где Качество реквизит формы типа Перечисления.

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

&НаКлиенте
Процедура КачествоОчистка(Элемент, СтандартнаяОбработка)
    Для Каждого ЭлементОтбора Из Список.Отбор.Элементы Цикл
            Список.Отбор.Элементы.Удалить(ЭлементОтбора);
        КонецЦикла;
       Элементы.Список.Обновить();
КонецПроцедуры
13 Defender aka LINN
 
14.09.11
23:15
Для Каждого ЭлементОтбора Из Список.Отбор.Элементы Цикл
            Список.Отбор.Элементы.Удалить(ЭлементОтбора);
        КонецЦикла;

Бугога
14 Rizhij_Nikitos
 
23.09.11
15:53
(13) а че смешного, прост отак Список.Отобор.Элементы.Очистить() или Список.Отбор.Очистить() не робит, а удалить старый отбор и сделать новый, все-таки нужно.