Имя: Пароль:
1C
1С v8
Запрос по всем
0 PuhUfa
 
14.11.11
10:17
Если ХарактеристикаНоменклатуры = Неопределено Тогда
   п_Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
иначе
   п_Характеристика = ХарактеристикаНоменклатуры;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", п_Характеристика);
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);

       Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                      |    ЦеныНоменклатурыКонтрагентов.Цена,
                      |    ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения,
                      |    ЦеныНоменклатурыКонтрагентов.Валюта,
                      |    ЦеныНоменклатурыКонтрагентов.Период
                      |ИЗ
                      |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                      |            &Дата,
                      |            Номенклатура = &Номенклатура
                      |                И ТипЦен = &ТипЦен
                      |                И ХарактеристикаНоменклатуры = &ХарактеристикиНоменклатуры) КАК ЦеныНоменклатурыКонтрагентов
                      |
                      |УПОРЯДОЧИТЬ ПО
                      |    ЦеныНоменклатурыКонтрагентов.Период УБЫВ";


Выборка = Запрос.Выполнить().Выбрать();


Если я в запрос передаю значение конкретной характеристики, то все нормально, если же ХарактеристикаНоменклатуры = Неопределено то выборка получается пустая а не по всем характеристикам. Где я ошибся?
1 salvator
 
14.11.11
10:22
Если ХарактеристикаНоменклатуры = Неопределено Тогда в запрос передается пустая ссылка - наверно в этом.
2 hhhh
 
14.11.11
10:22
а где тут у тебя проверка

ХарактеристикаНоменклатуры = Неопределено ???

Что-то в упор не вижу.
3 salvator
 
14.11.11
10:24
Вот так попробуй%

Если ХарактеристикаНоменклатуры = Неопределено Тогда
   ТекстУсловия = "";
Иначе
   ТекстУсловия = "И ХарактеристикаНоменклатуры = &ХарактеристикиНоменклатуры";
   п_Характеристика = ХарактеристикаНоменклатуры;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикиНоменклатуры", п_Характеристика);
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);


      Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                     |    ЦеныНоменклатурыКонтрагентов.Цена,

                      |    ЦеныНоменклатурыКонтрагентов.ЕдиницаИзмерения,
                      |    ЦеныНоменклатурыКонтрагентов.Валюта,
                      |    ЦеныНоменклатурыКонтрагентов.Период
                      |ИЗ
                      |    РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
                      |            &Дата,
                      |            Номенклатура = &Номенклатура
                      |                И ТипЦен = &ТипЦен
                      |                ""+ТекстУсловия+"") КАК ЦеныНоменклатурыКонтрагентов
                      |
                      |УПОРЯДОЧИТЬ ПО
                      |    ЦеныНоменклатурыКонтрагентов.Период УБЫВ";


Выборка = Запрос.Выполнить().Выбрать();
4 PuhUfa
 
14.11.11
10:32
(3) спс. так все норм.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан