|
кто и как бы решил данный запрос ? (при этом нельзя использовать запрос в цикле) 🠗 (Волшебник 21.01.2020 17:43) | ☑ | ||
---|---|---|---|---|
0
olo_lo1
21.01.20
✎
17:21
|
Возможно ли без циклов решить в запросе вот такую задачку, и если да - то киньте идею:
На форме есть ТЗ с 3 колонками «Дата», «Валюта», «Курс» Поля «Дата» и «Валюта» заполняются пользователем, идея реализовать заполнение поля «Курс» одним запросом. В табличной части могут быть одинаковые валюты на разные даты. Курсы валют тянутся из типового регистра «Курсы валют» как УТ. При этом нельзя использовать запрос в цикле, иначе задача легкотня... |
|||
1
Ёпрст
21.01.20
✎
17:23
|
да уж
|
|||
2
Джинн
21.01.20
✎
17:23
|
А в чем проблема то? Зачем здесь цикл вообще? Получите сразу запросом курсы на каждую дату в таблице.
|
|||
3
Ёпрст
21.01.20
✎
17:23
|
гугли срез на каждую дату в запросе
|
|||
4
olo_lo1
21.01.20
✎
17:26
|
думаю примерно вот так:
1. Загнать ТЗ в ВТ 2. Соединить с таблице курсов валют по ТЗ_Дата<=РС_ДатаКурса и ТЗ_Валюта=РС_Валюта, сгруппировать по валюта и дате курса из ТЗ, вычислить агрегатную функцию - МАКСИМУМ(РС_ДатаКурса), поместить всё в ВТ. 3. Соединить полученную в 2 ВТ с РС курсы валют по валюте и агрегату. |
|||
5
olo_lo1
21.01.20
✎
17:28
|
но есть задачка и по сложнее !!! для профи
|
|||
6
shuhard
21.01.20
✎
17:29
|
(5) толсто троллишь
|
|||
7
olo_lo1
21.01.20
✎
17:30
|
« а + ((а-6)*2)-(8*а))». как алгоритмом понять что число колонок верное в выражении. В данном примере специально разное кол-во колонок справа и слева !!
|
|||
8
Ёпрст
21.01.20
✎
17:31
|
Одно непонятно, чего 1с пока не реализовала подзапрос в селекте, таких тем кажный год, каждый месяц не было бы..
|
|||
9
Ёпрст
21.01.20
✎
17:32
|
(7) Если смотреть сверху, то сбоку кажется, что снизу ничего не видно
|
|||
10
ptiz
21.01.20
✎
17:35
|
(7) Ответ: 42
|
|||
11
fisher
21.01.20
✎
17:39
|
(7) Собеседование проходишь, что ли? Такую чепуху должен и сам решать.
|
|||
12
runoff_runoff
21.01.20
✎
17:42
|
никаких временных таблиц не надо
|
|||
13
malem13
21.01.20
✎
17:44
|
похоже нужны вневременные таблицы
|
|||
14
olo_lo1
21.01.20
✎
17:46
|
(12) если есть красивее решение - напиши
|
|||
15
runoff_runoff
21.01.20
✎
17:49
|
есть стандартное решение
|
|||
16
eTmy
21.01.20
✎
17:56
|
Взяли на работу?
|
|||
17
runoff_runoff
21.01.20
✎
18:03
|
(14)
ВЫБРАТЬ РеализацияТоваровУслуг.Дата КАК Дата, РеализацияТоваровУслуг.Валюта КАК Валюта, ЕСТЬNULL(КурсыВалют.Курс, 0) КАК Курс ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО (РеализацияТоваровУслуг.Валюта = КурсыВалют.Валюта) И (КурсыВалют.Период В (ВЫБРАТЬ МАКСИМУМ(КВ.Период) ИЗ РегистрСведений.КурсыВалют КАК КВ ГДЕ КВ.Валюта = РеализацияТоваровУслуг.Валюта И КВ.Период <= РеализацияТоваровУслуг.Дата)) ГДЕ РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания |
|||
18
olo_lo1
21.01.20
✎
18:08
|
(17) дружище, ты бы хоть задачу прочитал бы
|
|||
19
olo_lo1
21.01.20
✎
18:09
|
(16) интерес к задачам и любовь к людям !
|
|||
20
runoff_runoff
21.01.20
✎
18:17
|
(18) замени Реализации на свою таблицу и всё срастётся
|
|||
21
VS-1976
21.01.20
✎
18:17
|
(0) Таблицу набранную пользователем соедини левым с регистром, дальше на клиенте кодом проинициализируй значения кодом
|
|||
22
VS-1976
21.01.20
✎
18:21
|
(21) Недостающие значения кодом. Это к примеру если записей нужно много, к примеру миллион, если едать как в (17) всё сдохнет.
Можно выбрать так: СрезПоследний( &НаПервуюДату, ) ОБЪЕДИНИТЬ ВЫБРАТЬ ... ГДЕ ПЕРИОД МЕЖДУ &НачПериод И КОНЕЦПЕРИОДА( &КонПериод, День ) |
|||
23
runoff_runoff
21.01.20
✎
18:27
|
(22) таблица курсов небольшая, если, конечно, количество валют не как номенклатуры
|
|||
24
VS-1976
21.01.20
✎
18:29
|
(23) Обычно да, но как бы считай, что там лямы строк, это тест как бы на сообразительность
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |