|
Нужна помощь по запросу | ☑ | ||
---|---|---|---|---|
0
WED
03.04.16
✎
13:46
|
1. Есть Документ1
У Документ1 есть реквизит Дата. Также есть табличная часть Материалы. В Материалы есть реквизиты Номенклатура - СправочникСсылка и Количество - число. 2. Есть регистр сведений "ЦеныНоменклатуры". В нем есть Измерения: Период - ДатаВремя, Номенклатура - справочник, Валюта - справочник, ТипЦен - справочник, Ресурс: Цена - число Задача: Получить сумму в заданном типе цен и валюте для номенклатуры прошедшей в Материалы в Документ1 за период с Дата1 по Дата2. При этом цена (по которой считать сумму) должна быть последней на дату каждого Документ1 Все это надо одним запросом. Никак я с ним не могу сообразить... Понимаю, что надо получить пары Номенклатура-Дата (с Количество у каждой пары): ВЫБРАТЬ Документ1Материалы.Номенклатура КАК Номенклатура, Документ1Материалы.Количество КАК Количество, Документ1Материалы.Ссылка.Дата КАК Дата ПОМЕСТИТЬ ТаблНоменклатуры ИЗ Документ.Документ1.Материалы КАК Документ1Материалы ГДЕ Документ1Материалы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 И Документ1Материалы.Ссылка.Проведен Поместить в ТаблНоменлатуры А вот как получить последнюю цену (с отбором по типуц цен и валюте) для каждой строки в ТаблНоменклатуры ? |
|||
1
WED
03.04.16
✎
13:48
|
Получить последнюю цену для 1 номенклатуры проблем нет ,а вот как для таблицы?
|
|||
2
Джинн
03.04.16
✎
13:52
|
||||
3
WED
03.04.16
✎
14:09
|
(2) Увы, видел. Там ресурс (курс в их примере, цена - в моем) получают либо на дату, либо по регистратору), а у меня таблица с Номенклатура-Дата, т.е. Дата не задана, а в таблице
|
|||
4
WED
03.04.16
✎
14:16
|
Вот таким запросом я получаю две таблицы:
ТаблМатериалы - материалы прошедшие в документах за период и ТаблЦеныНоменклатуры - все цены на номенклатуру из ТаблМатериалы но не могу никак соединить их между собой так, чтобы для каждой строки в ТаблМатериалы (а это Номенклатура,Количество,Дата) взять последнюю из ТаблЦеныНоменклатуры ВЫБРАТЬ ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура, ТребованиеНакладнаяМатериалы.Количество КАК Количество, ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения, ТребованиеНакладнаяМатериалы.Ссылка.Дата КАК Дата ПОМЕСТИТЬ ТаблМатериалы ИЗ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы ГДЕ ТребованиеНакладнаяМатериалы.Ссылка.Организация = &Организация И ТребованиеНакладнаяМатериалы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 И ТребованиеНакладнаяМатериалы.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Цена, ЦеныНоменклатуры.Период ПОМЕСТИТЬ ТаблЦеныНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Номенклатура В (ВЫБРАТЬ ТаблНоменклатуры.Номенклатура ИЗ ТаблНоменклатуры) И ЦеныНоменклатуры.ТипЦен = &ТипЦен И ЦеныНоменклатуры.Валюта = &Валюта |
|||
5
hhhh
03.04.16
✎
14:20
|
а где знак >= ? Или <= ? Ты (2) читал?
|
|||
6
WED
03.04.16
✎
14:24
|
(5) Читал. Но твой вопрос не понял
|
|||
7
WED
03.04.16
✎
16:02
|
В (2) цены берутся на заранее заднную ДАТУ, у меня же даты нет, точнее для каждой строки таблицы ТаблМатериалы дата своя.
Есть идеи как запросом взять из регистра последнюю цену на дату из каждой строки ТаблМатериалы ? |
|||
8
Джинн
03.04.16
✎
16:08
|
(7) Ептыть, перестаньте курить, включите мозг!
Какая разница в какой таблице что лежит? Вам принцип продемонстрировали - выбрали все даты, получили максимальное значение периодического регистра сведений с периодом меньшим этих дат. А дальше соединить таблицы. Не пытайтесь скопировать, попытайтесь понять принцип. |
|||
9
ВРедная
03.04.16
✎
16:08
|
(7) Где ты в (2) увидел, что цена берется на заданную дату?
Там запрос, которым собираются цены на целую кучу дат, которые получаются там же в запросе. |
|||
10
WED
03.04.16
✎
16:25
|
Да, спасибо! Уже разобрался.
Итоговый запрос: ВЫБРАТЬ ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура, ТребованиеНакладнаяМатериалы.Количество КАК Количество, ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения, ТребованиеНакладнаяМатериалы.Ссылка.Дата КАК Период ПОМЕСТИТЬ Продажи ИЗ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы ГДЕ ТребованиеНакладнаяМатериалы.Ссылка.Организация = &Организация И ТребованиеНакладнаяМатериалы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 И ТребованиеНакладнаяМатериалы.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаЦен.Номенклатура, ТаблицаЦен.ПериодПродажа КАК Период, ЦеныНоменклатуры.Цена ПОМЕСТИТЬ ЦеныПериоды ИЗ (ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, Продажи.Период КАК ПериодПродажа ИЗ Продажи КАК Продажи ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура И Продажи.Период >= ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО Продажи.Номенклатура, Продажи.Период) КАК ТаблицаЦен ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТаблицаЦен.Номенклатура = ЦеныНоменклатуры.Номенклатура И ТаблицаЦен.Период = ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, СУММА(Продажи.Количество) КАК Количество, ВЫРАЗИТЬ(СУММА(ЦеныПериоды.Цена * Продажи.Количество) КАК ЧИСЛО(15, 2)) КАК СтоимостьЗакупки ИЗ Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ ЦеныПериоды КАК ЦеныПериоды ПО Продажи.Номенклатура = ЦеныПериоды.Номенклатура И Продажи.Период = ЦеныПериоды.Период СГРУППИРОВАТЬ ПО Продажи.Номенклатура УПОРЯДОЧИТЬ ПО Номенклатура, СтоимостьЗакупки |
|||
11
WED
03.04.16
✎
16:26
|
Точнее вот так:
ВЫБРАТЬ ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура, ТребованиеНакладнаяМатериалы.Количество КАК Количество, ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения КАК ЕдиницаИзмерения, ТребованиеНакладнаяМатериалы.Ссылка.Дата КАК Период ПОМЕСТИТЬ ТаблМатериалы ИЗ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы ГДЕ ТребованиеНакладнаяМатериалы.Ссылка.Организация = &Организация И ТребованиеНакладнаяМатериалы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 И ТребованиеНакладнаяМатериалы.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаЦен.Номенклатура, ТаблицаЦен.ПериодПродажа КАК Период, ЦеныНоменклатуры.Цена ПОМЕСТИТЬ ЦеныПериоды ИЗ (ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, Продажи.Период КАК ПериодПродажа ИЗ ТаблМатериалы КАК Продажи ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура И Продажи.Период >= ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО Продажи.Номенклатура, Продажи.Период) КАК ТаблицаЦен ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТаблицаЦен.Номенклатура = ЦеныНоменклатуры.Номенклатура И ТаблицаЦен.Период = ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблМатериалы.Номенклатура КАК Номенклатура, СУММА(ТаблМатериалы.Количество) КАК Количество, ВЫРАЗИТЬ(СУММА(ЦеныПериоды.Цена * ТаблМатериалы.Количество) КАК ЧИСЛО(15, 2)) КАК СтоимостьЗакупки ИЗ ТаблМатериалы КАК ТаблМатериалы ЛЕВОЕ СОЕДИНЕНИЕ ЦеныПериоды КАК ЦеныПериоды ПО ТаблМатериалы.Номенклатура = ЦеныПериоды.Номенклатура И ТаблМатериалы.Период = ЦеныПериоды.Период СГРУППИРОВАТЬ ПО ТаблМатериалы.Номенклатура УПОРЯДОЧИТЬ ПО Номенклатура, СтоимостьЗакупки |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |