|
Получить разницу между ценой в документе реализации и оптовой ценой из справочни | ☑ | ||
---|---|---|---|---|
0
Koliaff
17.09.13
✎
14:08
|
Доброго времени суток.
УТ 10.3 Стоит задача - получить разницу между суммой в документе реализации и оптовой ценой из справочника. Вот написал запрос : "ВЫБРАТЬ | ТабДОК.Контрагент КАК Контрагент, | ТабДОК.СсылкаДок КАК Реализация, | ТабДОК.Номенклатура КАК Номенклатура, | ТабДОК.СуммаРеализации КАК СуммаРеализации, | ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ТабДОК.Количество КАК СуммаВОптовыхЦенах, | ТабДОК.СуммаРеализации - ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ТабДОК.Количество КАК Разница, | ТабДОК.ПериодДок, | ТабДОК.Дата |ИЗ | (ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК СсылкаДок, | МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПериодДок, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата, | РеализацияТоваровУслугТовары.Сумма КАК СуммаРеализации, | РеализацияТоваровУслугТовары.Количество КАК Количество, | РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО (НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) >= ЦеныНоменклатуры.Период) | И РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура | ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | | СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Ссылка.Дата, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК ТабДОК | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ТабДОК.ПериодДок = ЦеныНоменклатуры.Период | И ТабДОК.Номенклатура = ЦеныНоменклатуры.Номенклатура |ГДЕ | ЦеныНоменклатуры.ТипЦен = &ОптоваяЦена |ИТОГИ | СУММА(СуммаРеализации), | СУММА(СуммаВОптовыхЦенах), | СУММА(Разница) |ПО | ОБЩИЕ, | Контрагент, | Реализация"; ==================== После выполнения запроса, смотрю результат. Некоторые документы совпадают по сумме и номенклатуре. А в некоторых номенклатуры не хватает. Почему ? |
|||
1
GenAcid
17.09.13
✎
14:13
|
Потому что ВНУТРЕННЕЕ СОЕДИНЕНИЕ и в РегистрСведений.ЦеныНоменклатуры нет записей по этой номенклатуре.
А еще жди лишних строк :) |
|||
2
GenAcid
17.09.13
✎
14:16
|
(1) Хотя не, лишних строк не должно быть. Группировку не увидел.
|
|||
3
Koliaff
17.09.13
✎
14:16
|
Что делать ? Как запрос этот дурацкий написать ? Уже голову всю "изломал" )
|
|||
4
Koliaff
17.09.13
✎
14:17
|
(GenAcid) В регистре сведений по этой номенклатуре есть записи, проверял ...
|
|||
5
GenAcid
17.09.13
✎
14:18
|
(3) Отбор по типу цен бы во вложенный запрос сунуть. И Внутреннее соединение на левое поменять.
|
|||
6
GenAcid
17.09.13
✎
14:25
|
У тебя вложенный запрос отбирает максимальную дату для любого типа цен, а снаружи ты тип цен ограничиваешь, и вот когда они не совпадают - получаешь нестык по внутреннему соединению.
|
|||
7
Koliaff
17.09.13
✎
14:26
|
(GenAcid) Доходчиво объяснил ! Все бы так объясняли. Попробую как ты советуешь написать....
|
|||
8
Koliaff
17.09.13
✎
14:29
|
"ВЫБРАТЬ
| ТабДОК.Контрагент КАК Контрагент, | ТабДОК.СсылкаДок КАК Реализация, | ТабДОК.Номенклатура КАК Номенклатура, | ТабДОК.СуммаРеализации КАК СуммаРеализации, | ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ТабДОК.Количество КАК СуммаВОптовыхЦенах, | ТабДОК.СуммаРеализации - ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ТабДОК.Количество КАК Разница, | ТабДОК.ПериодДок, | ТабДОК.Дата |ИЗ | (ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК СсылкаДок, | МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПериодДок, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата, | РеализацияТоваровУслугТовары.Сумма КАК СуммаРеализации, | РеализацияТоваровУслугТовары.Количество КАК Количество, | РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО (НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) >= ЦеныНоменклатуры.Период) | И РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура | ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | И ЦеныНоменклатуры.ТипЦен = &ОптоваяЦена | | СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Ссылка.Дата, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК ТабДОК | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ТабДОК.ПериодДок = ЦеныНоменклатуры.Период | И ТабДОК.Номенклатура = ЦеныНоменклатуры.Номенклатура |ГДЕ | ЦеныНоменклатуры.ТипЦен = &ОптоваяЦена |ИТОГИ | СУММА(СуммаРеализации), | СУММА(СуммаВОптовыхЦенах), | СУММА(Разница) |ПО | ОБЩИЕ, | Контрагент, | Реализация"; Вот так переписал. Вроде похоже на правду. Сейчас дам на проверку ). Спасибо за помощь GenAcid. Пока вопрос не закрываю... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |