Имя: Пароль:
1C
1С v8
Ошибка в запросе
0 Начинающий_13
 
13.02.14
10:11
Здравствуйте

Имею РегистрСведений
ИЗМЕРЕНИЯ
Номенклатура
ХарактеристикаНоменклатуры
ТипЦен
РЕСУРСЫ
Цена
ЕдиницаИзмерения
Контрагент (Заполнение не обязательно)
Договор    (Заполнение не обязательно)

Если ресурсы контрагент и договор заполнены, тогда запрос отрабатывет, если пусты тогда нет.
Как сделать правильно
Сам запрос

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

    
     Запрос.УстановитьПараметр("ДатаЧтенияЦен", КонецДня(ДатаЧтенияЦен));
     Запрос.УстановитьПараметр("ТипЦен", ТипЦены);
     Запрос.УстановитьПараметр("Склад", Склад);
               
     Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
     Если Не ЗначениеЗаполнено(ВидНоменклатуры) Тогда
         Запрос.УстановитьПараметр("ВсеВидыНоменклатуры",Истина);
     Иначе
         Запрос.УстановитьПараметр("ВсеВидыНоменклатуры",Ложь);
     КонецЕсли;
    
     Запрос.УстановитьПараметр("НоменклатурнаяГруппа", НоменклатурнаяГруппа);
     Если Не ЗначениеЗаполнено(НоменклатурнаяГруппа) Тогда
         Запрос.УстановитьПараметр("ВсеНоменклатурныеГруппы",Истина);
     Иначе
         Запрос.УстановитьПараметр("ВсеНоменклатурныеГруппы",Ложь);
     КонецЕсли;
    
     Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
     Если Не ЗначениеЗаполнено(ВидДоговора) Тогда
         Запрос.УстановитьПараметр("ВсеВидыДоговоров",Истина);
     Иначе
         Запрос.УстановитьПараметр("ВсеВидыДоговоров",Ложь);
     КонецЕсли;
                 
     ТЗ = Запрос.Выполнить().Выгрузить();
1 Defender aka LINN
 
13.02.14
10:20
(0) Иди прочитай что-нибудь про NULL
2 Начинающий_13
 
13.02.14
10:21
Ставил везде где можно не работало, а в консоли запросов всегда работает.
3 Ёпрст
 
13.02.14
10:24
(0) а что именно "не работает"  ?
4 Yea-Yea
 
13.02.14
10:24
что значит не срабатывает
5 Yea-Yea
 
13.02.14
10:24
если работает в консоле и не работает в коде - дело в параметрах
6 catena
 
13.02.14
10:26
Что значит "Если ресурсы контрагент и договор заполнены"? Где заполнены?

Что значит "если пусты тогда запрос не отрабатывает"? Ошибку дает?
7 Начинающий_13
 
13.02.14
10:28
(3) (4) Если Контрагент и договор не заполнены, тогда таблица запроса просто пуста.
В регистреСведений не заполнены (из его берем данные), есть документы которые на заполняют конрагента и договор
8 Начинающий_13
 
13.02.14
10:29
Ошибок не выдает ни каких.
9 catena
 
13.02.14
10:30
(8)Это значит отрабатывает.

ЦеныНоменклатурыСрезПоследних.Договор.ВидДоговора = &ВидДоговора

И какой же будет видДоговора у пустого договора?
10 Начинающий_13
 
13.02.14
10:35
(9)Удалил условие ВидДоговора все вроде пошло, сейчас покапаю ЕЩЕ
11 Wobland
 
13.02.14
10:38
чего мелко - капать? литрами глотай
12 Начинающий_13
 
13.02.14
10:40
Все СПАСИБО все получилось!!!