R
rubi
Здравствуйте. Составил простой запрос, вычисление количественных и стоимостных остатков на складе. Но проблема в том, что если у данной номенклатуры никогда не была установлена какая-либо цена, то этот артикул (в том числе с характеристикой) не попадает в итоговую выборку.
Вот запрос:
"ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачОст,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток*ОптовыеЦеныНоменклатур
ыСрезПоследних.Цена КАК СуммаЗакупНачало,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*ОптовыеЦеныНоменклатуры
СрезПоследних.Цена КАК СуммаЗакупКонец,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*РозничныеЦеныНоменклату
рыСрезПоследних.Цена КАК СуммаРеализацияНачало,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*РозничныеЦеныНоменклату
рыСрезПоследних.Цена КАК СуммаРеализацияКонец
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
| &ДатаНач,
| &ДатаКон,
| День,
| ,
| Номенклатура В ИЕРАРХИИ (&МассивНоменклатуры)
| И Склад В ИЕРАРХИИ (&МассивСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,) КАК РозничныеЦеныНоменклатурыСрезПоследних
|ПО
| РозничныеЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И
| РозничныеЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,) КАК ОптовыеЦеныНоменклатурыСрезПоследних
|ПО
| ОптовыеЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И
| ОптовыеЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
|ГДЕ ((ОптовыеЦеныНоменклатурыСрезПоследних.ТипЦен = &Оптовая) И (РозничныеЦеныНоменклатурыСрезПоследних.ТипЦен = &Розничная))
Пробовал и вместо ВНУТРЕННЕЕ СОЕДИНЕНИЕ писать ЛЕВОЕ (что по идее правильно, но результат одинаковый), и в выборе писал:
"ВЫБРАТЬ
...
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
|ВЫБОР
| КОГДА ОптовыеЦеныНоменклатурыСрезПоследних.Цена ЕСТЬ NULL
| Тогда 0
|Иначе
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток*ОптовыеЦеныНоменклатур
ыСрезПоследних.Цена
|КОНЕЦ КАК СуммаЗакупНачало,
...
но тоже не помогает. Подскажите, как переписать запрос, чтобы он не отсекал те записи, для которых нет цены.
Вот запрос:
"ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачОст,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток*ОптовыеЦеныНоменклатур
ыСрезПоследних.Цена КАК СуммаЗакупНачало,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*ОптовыеЦеныНоменклатуры
СрезПоследних.Цена КАК СуммаЗакупКонец,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*РозничныеЦеныНоменклату
рыСрезПоследних.Цена КАК СуммаРеализацияНачало,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток*РозничныеЦеныНоменклату
рыСрезПоследних.Цена КАК СуммаРеализацияКонец
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
| &ДатаНач,
| &ДатаКон,
| День,
| ,
| Номенклатура В ИЕРАРХИИ (&МассивНоменклатуры)
| И Склад В ИЕРАРХИИ (&МассивСкладов)) КАК ТоварыНаСкладахОстаткиИОбороты
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,) КАК РозничныеЦеныНоменклатурыСрезПоследних
|ПО
| РозничныеЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И
| РозничныеЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,) КАК ОптовыеЦеныНоменклатурыСрезПоследних
|ПО
| ОптовыеЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И
| ОптовыеЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
|ГДЕ ((ОптовыеЦеныНоменклатурыСрезПоследних.ТипЦен = &Оптовая) И (РозничныеЦеныНоменклатурыСрезПоследних.ТипЦен = &Розничная))
Пробовал и вместо ВНУТРЕННЕЕ СОЕДИНЕНИЕ писать ЛЕВОЕ (что по идее правильно, но результат одинаковый), и в выборе писал:
"ВЫБРАТЬ
...
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
|ВЫБОР
| КОГДА ОптовыеЦеныНоменклатурыСрезПоследних.Цена ЕСТЬ NULL
| Тогда 0
|Иначе
| ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток*ОптовыеЦеныНоменклатур
ыСрезПоследних.Цена
|КОНЕЦ КАК СуммаЗакупНачало,
...
но тоже не помогает. Подскажите, как переписать запрос, чтобы он не отсекал те записи, для которых нет цены.