Имя: Пароль:
1C
1С v8
Запрос по остаткам в ценах
0 paderub
 
12.02.14
17:32
Добрый день!
УТ 11.0
Делаю запрос к регистрам Остатки и ЦеныНоменклатуры. Параметры период и вид цены. Цены в начале периода и в конце периода разные, поэтому использую 2 таблицы ЦеныНоменклатуры, для начала периода и для конца. Цены установлены не на всю номенклатуру, поэтому ставлю левое соединение по остаткам. Вроде как должен выводить остаток даже если цены нет. Но, как Я понял, так как в условии стоит вид цены, то он не выводит те строки где цена не установлена. Добавил условие ЕСТЬ NULL и он стал выводить все виды цен. Как сделать чтобы выводилась только одна строка по выбранному виду цен даже если цена не установлена?
Текст запроса:

"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ТоварыОрганизацийОстаткиИОбороты.Номенклатура,
|    ТоварыОрганизацийОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
|    ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
|    ЦеныНоменклатурыСрезПоследних.Цена * ТоварыОрганизацийОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальнаяСумма,
|    ЦеныНоменклатурыСрезПоследних1.Цена * ТоварыОрганизацийОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечнаяСумма
|ИЗ
|    РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты(&ДатаН, &ДатаК, , , ) КАК ТоварыОрганизацийОстаткиИОбороты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаН, ) КАК ЦеныНоменклатурыСрезПоследних
|        ПО ТоварыОрганизацийОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних1
|        ПО ТоварыОрганизацийОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних1.Номенклатура
|ГДЕ
|    ТоварыОрганизацийОстаткиИОбороты.Организация = &Организация
|    И (ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены
|            ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены ЕСТЬ NULL )
|    И (ЦеныНоменклатурыСрезПоследних1.ВидЦены = &ВидЦены
|            ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены ЕСТЬ NULL )";
1 shuhard
 
12.02.14
17:36
(0) в поиск
"срез последних на каждую дату"
2 Apokalipsec
 
12.02.14
17:37
используй ВЫБОР. И да, параметры виртуальных таблиц надо задавать правильно.
3 paderub
 
12.02.14
17:42
(2)
Где именно использовать ВЫБОР?
4 paderub
 
12.02.14
17:48
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаН, ВидЦены = &ВидЦены)
и заработало)))
5 Bober
 
12.02.14
18:37
(0) а чем не устраивает типовой отчет?