|
Отчет с выбором валюты | ☑ | ||
---|---|---|---|---|
0
Artificial
08.08.16
✎
14:10
|
Нужно, чтоб отчет пересчитывал сумму в зависимости от выбранной валюты по курсу. Не понимаю, как доделать. Вот что сейчас есть:
ВЫБРАТЬ ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ВЫБОР КОГДА &Валюта = ПриходнаяНакладная.Валюта ТОГДА ПриходнаяНакладная.СуммаПоДокументу ИНАЧЕ ПриходнаяНакладная.СуммаПоДокументу * ВложенныйЗапрос.Курс КОНЕЦ КАК СуммаИтог ИЗ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ КурсыВалютСрезПоследних.Курс КАК Курс, КурсыВалютСрезПоследних.Валюта КАК Валюта ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Период, ) КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос ПО ПриходнаяНакладная.Валюта = ВложенныйЗапрос.Валюта, РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних |
|||
1
Artificial
08.08.16
✎
14:24
|
Ап
|
|||
2
HardBall
08.08.16
✎
14:42
|
(0) ЕстьNULL, зачем подзапрос?
|
|||
3
Artificial
08.08.16
✎
15:17
|
(2) ВЫБРАТЬ
ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ВЫБОР КОГДА &Валюта = ПриходнаяНакладная.Валюта ТОГДА ПриходнаяНакладная.СуммаПоДокументу ИНАЧЕ ПриходнаяНакладная.СуммаПоДокументу * КурсыВалютСрезПоследних.Курс КОНЕЦ КАК СуммаИтог ИЗ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная, РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних Заменил на вот такое. |
|||
4
aleks_default
08.08.16
✎
15:34
|
(3) Подсказываю, ты должен получить два курса валюты. По валюте документа и по валюте выбранной в отчете.
+ нужно определиться на какую дату получать курсы, просто на текущую или на дату каждого документа |
|||
5
Джинн
08.08.16
✎
15:38
|
||||
6
aleks_default
08.08.16
✎
15:41
|
(5)Это почему это? Че плохого в том чтобы смотреть суммы отчета в разных валютах?
|
|||
7
Artificial
08.08.16
✎
15:47
|
(4) Я понимаю. Для этого я и лепил вложенный запрос. Но не срослось. Поможете?
|
|||
8
Джинн
08.08.16
✎
15:51
|
(6) В том, что это идиотизм. Отчет о сферическом коне в вакууме в грам-градусах-на-рыло.
При зачете аванса какой курс будет в этом отчете? А что такое кросс-курс и валюта триангуляции Вы знаете? |
|||
9
Artificial
08.08.16
✎
15:52
|
(8) Не надо усложнять, это, можно сказать, тест.
|
|||
10
aleks_default
08.08.16
✎
15:57
|
(8)Представьте себе и такие отчеты бывают(это я про сферического коня). При планировании и упр. учете не всегда нужны точные цифры, и возможность оценить суммы в другой валюте тоже нужна.
|
|||
11
Джинн
08.08.16
✎
15:59
|
(9) Ну если это сферическая в вакууме задача, то в (5) готовое решение.
Где-то у меня еще валялось более красивое решение с точки зрения читабельности и производительности, но сходу не найду. (10) Чушь. Словом "упр. учет" обычно прикрывается ларечный бред. Исключения есть, но крайне редкие. |
|||
12
Nuobu
08.08.16
✎
15:59
|
(9) Так это тестовое задание? А чего ж тогда на форуме спрашиваешь? Если не справляешься, то какой смысл тебя брать на работу? Если тебе тут ответ дадут, то и дальше по любому пустяку будешь сюда глядеть. Если не справился с тестовым заданием, то, может, скилл нужно поднять, а уже потом - снова себя пробовать?
|
|||
13
Nuobu
08.08.16
✎
16:01
|
А по вопросу: Тебе нужно получить не только курс выбранной валюты, но и курс валюты документа, а так же курс и привести его к выбранной.
|
|||
14
Artificial
08.08.16
✎
16:02
|
(13) Ну я беру курс с регистра, ставлю ему валюту в условие типа Валюта = &Валюта. А вот как с документа, я понять не могу.
|
|||
15
Nuobu
08.08.16
✎
16:04
|
(14) Я об этом и говорю. Тебе ссылку дали в (5) читай её и думай.
|
|||
16
arsik
гуру
08.08.16
✎
16:08
|
(0) Недавно такое делал.
Сначала все пересчитываешь в рубли а потом делишь все на курс нужной тебе валюты. (втЦены.Цена * втКурсы.Курс / &КурсПересчета) |
|||
17
arsik
гуру
08.08.16
✎
16:11
|
Вот примерно так
ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК Валюта, ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность > 0 ТОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность ИНАЧЕ 1 КОНЕЦ КАК Курс ПОМЕСТИТЬ втКурсы ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСреза, Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК КурсыВалютСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), 1 ИНДЕКСИРОВАТЬ ПО Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ПриходнаяНакладная.СуммаПоДокументу * втКурсы.Курс / &КурсПересчета КАК СуммаИтог ИЗ ВРемТаб КАК ПриходнаяНакладная, втКурсы КАК втКурсы |
|||
18
arsik
гуру
08.08.16
✎
16:14
|
Ошибка. Вот так правильно
ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК Валюта, ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность > 0 ТОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность ИНАЧЕ 1 КОНЕЦ КАК Курс ПОМЕСТИТЬ втКурсы ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСреза, Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК КурсыВалютСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), 1 ИНДЕКСИРОВАТЬ ПО Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ПриходнаяНакладная.СуммаПоДокументу * втКурсы.Курс / &КурсПересчета КАК Поле1 ИЗ &ВРемТаб КАК ПриходнаяНакладная ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы ПО ПриходнаяНакладная.Валюта = втКурсы.Валюта |
|||
19
arsik
гуру
08.08.16
✎
16:15
|
&ВРемТаб КАК ПриходнаяНакладная - это заглушка, я через конструктор делал. У меня нет в базе документа ПриходнаяНакладная
|
|||
20
Artificial
08.08.16
✎
16:22
|
(19) &КурсПересчета а это что такое?
|
|||
21
Artificial
08.08.16
✎
16:30
|
(19) Я его убрал. Получилась одна колонка в валюте документа, а одна в рублях. А как по произвольной валюте?
|
|||
22
arsik
гуру
08.08.16
✎
16:31
|
(21) КурсПересчета - это рублевый курс валюты в которой тебе нужно посчитат отчет
|
|||
23
Artificial
08.08.16
✎
16:33
|
(22) Как получить?
|
|||
24
arsik
гуру
08.08.16
✎
16:37
|
Ну мне было проще заранее получить и параметром в запрос передать. Но можно и внутри запроса. Примерно вот так
ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК Валюта, ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность > 0 ТОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность ИНАЧЕ 1 КОНЕЦ КАК Курс ПОМЕСТИТЬ втКурсы ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСреза, Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК КурсыВалютСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), 1 ИНДЕКСИРОВАТЬ ПО Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ПриходнаяНакладная.СуммаПоДокументу * втКурсы.Курс / втКурсы1.Курс КАК Поле1 ИЗ &ВРемТаб КАК ПриходнаяНакладная ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы ПО ПриходнаяНакладная.Валюта = втКурсы.Валюта И (втКурсы1.Валюта = &Валюта), втКурсы КАК втКурсы1 |
|||
25
Nuobu
08.08.16
✎
16:40
|
(24) Где ты работаешь?
|
|||
26
arsik
гуру
08.08.16
✎
16:44
|
(25) Что ты будешь делать с этими знаниями?
|
|||
27
Artificial
08.08.16
✎
16:46
|
(24) Ругается странно: Поле не найдено втКурсы1.Валюта
|
|||
28
arsik
гуру
08.08.16
✎
16:49
|
(27) Временная таблица с курсами то у тебя есть в запросе?
|
|||
29
Artificial
08.08.16
✎
16:51
|
(28) втКурсы есть, конечно.
|
|||
30
Джинн
08.08.16
✎
16:58
|
Ептыть, бегом в магазин за метлой! Если не хватило знаний великого и могучего, чтобы прочесть (5)
|
|||
31
Artificial
08.08.16
✎
17:01
|
(30) Прочел и сделал по образцу, не вышло.
|
|||
32
Джинн
08.08.16
✎
17:18
|
(31) Но там же готовый пример. Только вместо ЗаказПокупателя ваш документ поставить и еще одной валюты курс получить к той, что уже в документе.
|
|||
33
Джинн
08.08.16
✎
17:19
|
И забудьте про СрезПоследних вообще на фиг применительно к этой задаче. Вам самому нужно этот "срез" делать на каждую дату.
|
|||
34
Nuobu
08.08.16
✎
17:19
|
(26) Ну, мне само название не нужно, просто франч, или фикси?
|
|||
35
arsik
гуру
08.08.16
✎
17:21
|
(29) Короче. Вот так правильно. Конструктор глючит
ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК Валюта, ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность > 0 ТОГДА КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность ИНАЧЕ 1 КОНЕЦ КАК Курс ПОМЕСТИТЬ втКурсы ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаСреза, Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК КурсыВалютСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), 1 ИНДЕКСИРОВАТЬ ПО Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходнаяНакладная.Дата, ПриходнаяНакладная.Номер, ПриходнаяНакладная.СуммаПоДокументу, ПриходнаяНакладная.Валюта, ПриходнаяНакладная.СуммаПоДокументу * втКурсы.Курс / втКурсы1.Курс КАК Поле1 ИЗ &ВРемТаб КАК ПриходнаяНакладная ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы ПО ПриходнаяНакладная.Валюта = втКурсы.Валюта ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКурсы КАК втКурсы1 ПО (втКурсы1.Валюта = &Валюта) |
|||
36
arsik
гуру
08.08.16
✎
17:22
|
(34) Фикси
|
|||
37
Nuobu
08.08.16
✎
17:24
|
(36) Аа, тогда ясно. Почему не сделать, как в (5) описано?
|
|||
38
arsik
гуру
08.08.16
✎
17:34
|
(37) Можно и так сделать. Но неохота на (0) время тратить. Ну и моя реальная задача ни как с логикой (0) не связана.
|
|||
39
Artificial
08.08.16
✎
17:39
|
(35) Большое спасибо, arsik! Сейчас изучу.
|
|||
40
Джинн
08.08.16
✎
17:50
|
(35) И что тут правильного? Какая в жпо "ДатаСреза"?
|
|||
41
Nuobu
08.08.16
✎
17:54
|
(40) Зачем ты сюда встряёшь? Они уже друг другу всё объяснили. Работодатель не влетит на фигового специалиста, Артифишуал будет еще учиться и станет нормальным прогом, а арсик потешит своё самолюбие.
|
|||
42
aleks_default
08.08.16
✎
17:58
|
(40)Нервные клетки не восстанавливаются, или восстанавливаются но оооочень медленно.
Повтори эту фразу 10 раз и успокойся. |
|||
43
Джинн
08.08.16
✎
17:58
|
(41) Ну дык горбатого же к стене лепят! Курс то разный на каждую дату документа. Вот на каждую дату документа и необходимо эмулировать "срез последних".
|
|||
44
Nuobu
08.08.16
✎
17:59
|
(43) Это и так ясно всем, кроме ТСа.
|
|||
45
aleks_default
08.08.16
✎
18:00
|
А им ненадо на дату каждого документа, им надо "на сичас".
|
|||
46
Джинн
08.08.16
✎
18:19
|
(45) Все старые документы пересчитать на другую валюту по сегодняшнему курсу? В чем смысл?
|
|||
47
hhhh
08.08.16
✎
19:35
|
(46) если остаток на складе, то имеет смысл.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |