|
Получить реализации и курс валюты на их даты | ☑ | ||
---|---|---|---|---|
0
ogion83
23.04.24
✎
11:52
|
Нашел примерно как делать, но у всех получается, а у меня нет. Выводит курс не на дату отгрузки продукции, а по всем дням, когда был введен курс валюты. Подскажите, где поправить?
ВЫБРАТЬ ГотоваяПродукцияОстаткиИОбороты.МПЗ, ГотоваяПродукцияОстаткиИОбороты.КоличествоРасход, ГотоваяПродукцияОстаткиИОбороты.СуммаРасход, ГотоваяПродукцияОстаткиИОбороты.Регистратор.Дата КАК РегистраторДата, ГотоваяПродукцияОстаткиИОбороты.СуммаРасход / ВложенныйЗапрос.Курс КАК СуммаПоКурсу ИЗ РегистрНакопления.ГотоваяПродукция.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , ) КАК ГотоваяПродукцияОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ КурсыВалют.Период КАК Период, КурсыВалют.Курс КАК Курс ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Валюта = &Валюта) КАК ВложенныйЗапрос ПО (ВложенныйЗапрос.Период <= ГотоваяПродукцияОстаткиИОбороты.Регистратор.Дата) ГДЕ ГотоваяПродукцияОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтгрузкаПродукции |
|||
1
Волшебник
23.04.24
✎
11:46
|
Лучше сделайте временную таблицу для выборки курса.
|
|||
2
ogion83
23.04.24
✎
12:39
|
Можно поподробнее?
|
|||
3
Волшебник
23.04.24
✎
12:47
|
ВЫБРАТЬ поле1, поле2 ПОМЕСТИТЬ ИмяТаблицы ИЗ ТаблицаИсточник; |
|||
4
ogion83
23.04.24
✎
13:05
|
Получается так же как в 1 запросе.
ВЫБРАТЬ ГотоваяПродукцияОстаткиИОбороты.МПЗ, ГотоваяПродукцияОстаткиИОбороты.КоличествоРасход, ГотоваяПродукцияОстаткиИОбороты.СуммаРасход, ГотоваяПродукцияОстаткиИОбороты.Регистратор.Дата ПОМЕСТИТЬ ВТ_Реализации ИЗ РегистрНакопления.ГотоваяПродукция.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Авто, , ) КАК ГотоваяПродукцияОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КурсыВалют.Период, КурсыВалют.Валюта, КурсыВалют.Курс, КурсыВалют.Кратность ПОМЕСТИТЬ ВТ_Курсы ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Валюта = &Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Реализации.МПЗ, ВТ_Реализации.КоличествоРасход, ВТ_Реализации.СуммаРасход, ВТ_Реализации.РегистраторДата, ВТ_Реализации.СуммаРасход / ВТ_Курсы.Курс КАК ПоКурсу ИЗ ВТ_Реализации КАК ВТ_Реализации ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Курсы КАК ВТ_Курсы ПО ВТ_Реализации.РегистраторДата >= ВТ_Курсы.Период |
|||
5
Мультук
23.04.24
✎
13:07
|
||||
6
Волшебник
23.04.24
✎
13:08
|
Теперь исправьте в третьем запросе:
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Курсы КАК ВТ_Курсы ПО ВТ_Реализации.РегистраторДата = ВТ_Курсы.Период |
|||
7
ogion83
23.04.24
✎
13:13
|
(6) Курс не на каждый день устанавливается.
|
|||
8
Волшебник
23.04.24
✎
13:18
|
(7) Трудности Вас не остановят. Мы в Вас верим
|
|||
9
программистище
23.04.24
✎
13:24
|
(6) подскажу, нужно выбирать даты документов с максимальной датой курса
|
|||
10
Kongo2019
23.04.24
✎
13:28
|
// Получим таблицу ВТ_ПТиУ с полями "Ссылка", "Дата", "ДатаЗаписи" за указанный период
// где: // "ДатаЗаписи" это дата документа на начало дня ВЫБРАТЬ РАЗРЕШЕННЫЕ ПоступлениеТоваровУслуг.Ссылка КАК Ссылка, ПоступлениеТоваровУслуг.Дата, НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, ДЕНЬ) КАК ДатаЗаписи ПОМЕСТИТЬ ВТ_ПТиУ ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода И ПоступлениеТоваровУслуг.Проведен И НЕ ПоступлениеТоваровУслуг.ПометкаУдаления ; //////////////////////////////////////////////////////////////////////////////// // Получим таблицу ВТ_ЗаписиРегистра левым соединением РС.КурсыВалют и ВТ_ПТиУ // по условию ВТ_ПТиУ.ДатаЗаписи >= КурсыВалют.Период и отбором по указанной валюте // с полями "ДатаЗаписи", "Период", "Валюта" // где: // "Период" это максимум поля "Период" из РС.КурсыВалют // // Для получения уникальных записей и получения максимальной даты // группируем таблицу по полям "ДатаЗаписи" И "Валюта" ВЫБРАТЬ ВТ_ПТиУ.ДатаЗаписи, МАКСИМУМ(КурсыВалют.Период) КАК Период, КурсыВалют.Валюта ПОМЕСТИТЬ ВТ_ЗаписиРегистра ИЗ ВТ_ПТиУ КАК ВТ_ПТиУ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВТ_ПТиУ.ДатаЗаписи >= КурсыВалют.Период И (КурсыВалют.Валюта = &Валюта) СГРУППИРОВАТЬ ПО ВТ_ПТиУ.ДатаЗаписи, КурсыВалют.Валюта ; //////////////////////////////////////////////////////////////////////////////// // Получим итоговую таблицу соединением РС.КурсыВалют и ВТ_ЗаписиРегистра по периоду и валюте // с полями "ДатаЗаписи", "Валюта", "Курс" ВЫБРАТЬ ВТ_ЗаписиРегистра.ДатаЗаписи КАК ДатаЗаписи, КурсыВалют.Валюта, КурсыВалют.Курс ИЗ ВТ_ЗаписиРегистра КАК ВТ_ЗаписиРегистра ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВТ_ЗаписиРегистра.Период = КурсыВалют.Период И ВТ_ЗаписиРегистра.Валюта = КурсыВалют.Валюта УПОРЯДОЧИТЬ ПО ДатаЗаписи Как-то так, тестовое недавно похожее делал. |
|||
11
ogion83
24.04.24
✎
08:14
|
Почему то когда пытаюсь указать МАКСИМУМ (МАКСИМУМ(КурсыВалют.Период) КАК Период,) выдает ошибку
|
|||
12
ogion83
24.04.24
✎
08:24
|
А, группировки не было.
|
|||
13
Волшебник
24.04.24
✎
09:13
|
(11) Мало МАКСИМУМОВ. Добавьте третий
|
|||
14
ogion83
24.04.24
✎
09:20
|
(10) Сработало. Пришлось убрать все лишнее, получить только Курсы валют на нужные дни, хотел их сразу с выводом данных использовать, придется отдельно.
|
|||
15
ogion83
24.04.24
✎
09:20
|
(13) В коде "Максимум" 1 раз, это тут неудачно написал.
|
|||
16
Волшебник
24.04.24
✎
09:21
|
(15) Пишите тут правду, не надо врать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |