Имя: Пароль:
1C
 
Запрос для ут 11 - реализации с пересчетом в доллары
0 Обфускация
 
05.02.19
14:56
Подскажите как сделать запрос, чтобы он вывел все реализации и еще дополнительное поле - сумма документа в пересчете на доллары по курсу на дату документа
1 yzimin
 
05.02.19
15:02
Cделай левое соединение по дате документа = дата курса
2 aleks_default
 
05.02.19
15:34
там все просто.
1. таблица даты всех реализаций
2.  даты реализаций соединяешь с регистром курсов по Период<=Дате реализации, берешь максимум периода по дате
по максимальной дате периода получаешь запись с курсом
реализации(это для валюты документа)
3. то же самое что и в 2 только в долларах
4. соединяешь таблицу 1 с таблицами 2 и 3 левым соединением
умножаешь сумму документа на курс пересчета
3 aleks_default
 
05.02.19
15:35
забыл
5. профит:)
4 Обфускация
 
05.02.19
15:39
(2)Не могли бы изобразить это в реальном коде? )
5 DexterMorgan
 
05.02.19
15:41
(4) Бабки тоже за тебя получить?
6 DexterMorgan
 
05.02.19
15:41
(4) "Подскажите как сделать запрос", пиши сразу "Напишите за меня запрос.."
7 yzimin
 
05.02.19
15:54
(2) зачем так сложно, почему просто не соединить НачалоПериода(ДатаДокумента, ДЕНЬ) = ДатаКурса?
8 OldCondom
 
05.02.19
15:56
Да нафига это надо? В цикле документы, типовая процедура пересчета в валюту. Никто не заметит.
9 gantonio
 
05.02.19
16:05
вот, если допустим я сфотографируюсь в трусах .. ведь никто не поможет ..а тут набежали.
10 aleks_default
 
05.02.19
16:07
(7)Если у тебя курсы есть на каждый день то можно
11 yzimin
 
05.02.19
16:09
(10) это же УТ11, тут на каждый день
12 Realist_x1
 
05.02.19
16:17
(11) С чего бы это?
13 aleks_default
 
05.02.19
16:17
Тока условие лучше такое

ДатаДокумента Между НачалоПериода(ДатаКурса, день) И КонецПериода(ДатаКурса,День)
14 ЧессМастер
 
05.02.19
16:21
(2) Эту задачу дают часто на собеседованиях в виде тестового задания.

В реальных конфигурациях для сумм в управленческой валюте и регламентированной разные ресурсы регистров и никаких пересчетов делать не нужно.
15 aleks_default
 
05.02.19
16:23
(15) А если нужно и не в упр. и не в регл. а в какой-то другой валюте?
16 yzimin
 
05.02.19
16:29
(12) а ты проверь ;) в 11.4.6 точно, даже на все январские праздники есть курс.
17 Обфускация
 
05.02.19
20:56
вот сейчас такой запрос, вроде работает, но не выводит реализации, если нет курса на эту дату. чего не хватает?

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    РеализацияТоваровУслуг.Партнер КАК Партнер,
    РеализацияТоваровУслуг.ДатаПлатежа КАК ДатаПлатежа,
    РеализацияТоваровУслуг.Партнер.ОсновнойМенеджер КАК ПартнерОсновнойМенеджер,
    РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    РеализацияТоваровУслуг.ЗаказКлиента.Номер КАК ЗаказКлиентаНомер,
    РеализацияТоваровУслуг.Валюта КАК Валюта,
    КурсыВалют.Курс КАК Курс,
    КурсыВалют.Валюта КАК Валюта1,
    КурсыВалют.Кратность КАК Кратность,
    РеализацияТоваровУслуг.СуммаДокумента / КурсыВалют.Курс КАК СуммаВДолларах
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО РеализацияТоваровУслуг.Дата >= КурсыВалют.Период
ГДЕ
    КурсыВалют.Период <= КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
    И КурсыВалют.Период >= НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
18 yzimin
 
05.02.19
21:23
ПОЛНОЕ -> ЛЕВОЕ
19 yzimin
 
05.02.19
21:26
(17) точнее так.
ПО НачаорПериода(РеализацияТоваровУслуг.Дата, День) = КурсыВалют.Период
ГДЕ - убрать
20 DexterMorgan
 
05.02.19
22:38
(16) Это херь. Валюта и курс может быть вообще "свой", управленческий и задаваться не каждый день, в (2) самое правильное и простое решение
21 DexterMorgan
 
05.02.19
22:41
(19) Гы, тебе же написали "если нет курса на эту дату"
22 yzimin
 
05.02.19
22:42
(20) в сабже про баксы, курс в регистре хранится ежедневно. Будет другая задача, будет другое решение.
23 yzimin
 
05.02.19
22:43
(21) так подгрузи курс доллара, а не считай по позавчерашнему дню
24 DexterMorgan
 
05.02.19
22:43
(22) если ты не можешь осилить (2) это твои проблемы. Всегда проще сделать правильно и не думать, что там заполнено, а что нет
25 DexterMorgan
 
05.02.19
22:44
хотя это конечно не метод 1сников типа куяк-куяк из франчей
26 DexterMorgan
 
05.02.19
22:46
(23) НАхер мне? Это у (0) нет курса, откуда я знаю как они грузят курсы?
27 DexterMorgan
 
05.02.19
22:47
(22) Это если задание по загрузке курсов отработало. И что они вообще грузят курсы каждый день.
28 yzimin
 
05.02.19
22:47
(24) причём тут осилить, не осилить, это классическая задача
(23) Просто не вижу смысла так выкручиваться, если в типовом и так курс на каждый день. По мне так лучше показать явный 0 (типа не подгружен курс), чем рассчитать по курсу доллара недельной давности.
29 yzimin
 
05.02.19
22:48
(27) вот что лучше: показать 0 (курс не загружен) или вывести по курсу предыдущего дня?
30 yzimin
 
05.02.19
22:49
(29) +я именно про доллар. Мифические управленческие и тому подобные курсы не беру в расчет
31 DexterMorgan
 
05.02.19
22:50
(28) Еще раз - не все грузят курсы каждый день. У некоторый ведется своя валюта. твое решение типичное "сделать сейчас", а потом пох на все. Сейчас задача про доллары, вполне возможно будет нужна другая валюта, может и своя.
32 DexterMorgan
 
05.02.19
22:52
(30) Кстати, может они доллары грузят каждый час с биржи какой-нибудь, твое соединение по дате опять не будет работать
33 DexterMorgan
 
05.02.19
22:54
(30) Да даже проще, курс меняется в определенное время, скажем в 12.00, до 12 по одному курсу, после 12 по другому. Время может тоже от дня зависеть
34 yzimin
 
05.02.19
22:57
(31) ещё раз, если речь про доллар, то курс грузят каждый день. И считать по курс доллара на какой-то прошлый день - моветон.

(32) (33) а ещё МОЖЕТ у них генератор случайных чисел пишет 100500 курсов в секунду и надо высчитывать на долю секунды)))
35 DexterMorgan
 
05.02.19
22:57
(34) Бла-бла, на (33) у тебя слив с запросом?
36 yzimin
 
05.02.19
22:58
(35) смотри периодичность регистра
37 DexterMorgan
 
05.02.19
23:00
(34) Кстати, если для тебя (2) - "так выкручиваться", мне тебя жаль.
38 DexterMorgan
 
05.02.19
23:00
(36) Да это все твои фантазии, какая она у них и т.д.
39 runoff_runoff
 
06.02.19
07:20
ответ в виде ребуса..
левое соединение ... по ... Период в (выбрать максимум(Период) ... где ... Период <= РеализацияТоваровУслуг.Дата)