Имя: Пароль:
1C
1С v8
Как в запросе получить курс валюты на дату операции
, ,
0 Sponger
 
23.05.12
08:58
В запросе требуется получить курс валюты на дату операции.

ВЫБРАТЬ
   ТиповойОбороты.Период КАК Период,
   ТиповойОбороты.Субконто1 КАК Субконто1,
   ТиповойОбороты.СуммаОборот КАК СуммаОборот,
   КурсыВалютСрезПоследних.Курс
ИЗ
   РегистрБухгалтерии.Типовой.Обороты(&НачалоПериода, &КонецПериода, Запись, Счет В ИЕРАРХИИ (&СчетаДоходов), , , , ) КАК ТиповойОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
       ПО (ТиповойОбороты.Период = КурсыВалютСрезПоследних.Период)

УПОРЯДОЧИТЬ ПО
   Субконто1,
   Период

Делается примерно такой запрос. Но курс валюты выдает 0.

Подскажите что не так делаю?
1 butterbean
 
23.05.12
08:59
2 shuhard
 
23.05.12
09:04
(0)[ПО (ТиповойОбороты.Период = КурсыВалютСрезПоследних.Период)]
феерично
3 Sponger
 
23.05.12
09:06
(2) да понимаю что неверно, но ...
4 shuhard
 
23.05.12
09:11
(3) что-то мешает использовать (1) ?
5 CepeLLlka
 
23.05.12
11:54
Парни.. а подскажите тоже пожалуйста..

Я выбираю запросом строчки, с суммами из периодического регистра сведений.. всё вроде бы хорошо, но мне ещё нужно в этом же запросе получать предыдущее значение этой суммы..

Примерно вот такое хочу я видеть.. к примеру Цены номенклатуры..

Дата           | Цена |     Предыдущая цена
01.01.12         500          600
02.01.12         400          500
03.01.12         600          400

Все данные находятся в одном регистре.. и я не знаю как мне получать предыдущую цену.. подскажите пожалуйста..
6 CepeLLlka
 
23.05.12
11:56
Мне ведь как-бы нужно делать срез последних исходя из уже полученных данных..
7 CepeLLlka
 
23.05.12
12:06
Неужели никто не знает? :(
8 0_Serg_0
 
23.05.12
12:25
по срезу последних текущая цена
а (регистратор.дата - день) это дата для среза предыдущей цены
9 sivalor
 
23.05.12
12:37
(5)
ВЫБРАТЬ
   КурсыВалют.Период,
   КурсыВалют.Валюта,
   КурсыВалют.Курс,
   КурсыВалют.Кратность
ПОМЕСТИТЬ ВсеКурсы
ИЗ
   РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
   КурсыВалют.Валюта = &Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
   ВсеКурсы.Период КАК Период,
   ВсеКурсы.Валюта,
   ВсеКурсы.Курс
ПОМЕСТИТЬ ПоследнийКурс
ИЗ
   ВсеКурсы КАК ВсеКурсы

УПОРЯДОЧИТЬ ПО
   Период УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
   ВсеКурсы.Валюта,
   ВсеКурсы.Курс
ПОМЕСТИТЬ ПредпоследнийКурс
ИЗ
   ВсеКурсы КАК ВсеКурсы
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследнийКурс КАК ПоследнийКурс
       ПО ВсеКурсы.Период < ПоследнийКурс.Период

УПОРЯДОЧИТЬ ПО
   ВсеКурсы.Период УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПоследнийКурс.Период,
   ПоследнийКурс.Валюта,
   ПоследнийКурс.Курс КАК ПоследнийКурс,
   ЕСТЬNULL(ПредпоследнийКурс.Курс, 0) КАК ПредпоследнийКурс
ИЗ
   ПоследнийКурс КАК ПоследнийКурс
       ЛЕВОЕ СОЕДИНЕНИЕ ПредпоследнийКурс КАК ПредпоследнийКурс
       ПО ПоследнийКурс.Валюта = ПредпоследнийКурс.Валюта
10 CepeLLlka
 
23.05.12
12:57
(9) Спасибо, зай.. попробую сейчас..
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший