Имя: Пароль:
1C
1С v8
Передача параметров в СрезПоследних
,
0 Makar47
 
15.09.11
16:30
Пытаюсь в отчете привязать к Документу регистр накопления КурсыВалют, дабы он выводил суммы документов по курсу на ДатуДокумента. Использую СрезПоследних(), но как в качестве параметров отбора и даты туда передать значения из Документа?
1 Axel2009
 
15.09.11
16:31
никак
2 Makar47
 
15.09.11
16:31
а что делать-то?
3 Darych
 
15.09.11
16:32
без среза...
4 Ненавижу 1С
 
гуру
15.09.11
16:33
5 ptiz
 
15.09.11
16:36
Обсасывалось тыщу раз.
Создаешь табличку дат из документов.
Соединяешь с физ.таблицей регистра по Период в регистре <= Дата документа и получаешь Максимум(Период в регистре) как МаксДата, Дата документа
Потом присоединяешь это всё к исходной таблице регистра по МаксДата = Период в регистре, получишь значение валюты и дату документа.
И уже это - к своей исходной таблице.
6 also
 
15.09.11
16:36
7 ssh2006
 
15.09.11
16:42
ВЫБРАТЬ
   ЗаказПокупателя.Ссылка,
   КурсыВалют.Валюта,
   КурсыВалют.Курс
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
       ПО (КурсыВалют.Период В
                   (ВЫБРАТЬ
                       МАКСИМУМ(КурсыВалют.Период) КАК Период
                   ИЗ
                       РегистрСведений.КурсыВалют КАК КурсыВалют
                   ГДЕ
                       КурсыВалют.Валюта = &Валюта
                       И КурсыВалют.Период <= ЗаказПокупателя.Дата)
               И КурсыВалют.Валюта = &Валюта)
ГДЕ
   ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон
8 ssh2006
 
15.09.11
16:52
Для валюты документа
ВЫБРАТЬ
   ЗаказПокупателя.Ссылка,
   КурсыВалют.Валюта,
   КурсыВалют.Курс
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
       ПО ((КурсыВалют.Период, КурсыВалют.Валюта) В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   КурсыВалют.Период КАК Период,
                   КурсыВалют.Валюта
               ИЗ
                   РегистрСведений.КурсыВалют КАК КурсыВалют
               ГДЕ
                   КурсыВалют.Валюта = ЗаказПокупателя.ВалютаДокумента
                   И КурсыВалют.Период <= ЗаказПокупателя.Дата
               УПОРЯДОЧИТЬ ПО
                   Период УБЫВ))
ГДЕ
   ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон
9 ssh2006
 
15.09.11
16:57
+(8) Как третий вариант к v8: Сравнение способов получения среза последних на каждую дату в запросе
10 Makar47
 
15.09.11
17:21
(8)
Недопустимо использовать упорядочивание внутри запроса, вложенного в операцию В с множественными операндами, если есть обращения к полям внешнего запроса
11 ssh2006
 
15.09.11
17:35
(10) да это для 8.1 работало, в 8.2 тогда так можно
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка,
   КурсыВалют.Валюта,
   КурсыВалют.Курс
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
       ПО ((КурсыВалют.Период, КурсыВалют.Валюта) В
               (ВЫБРАТЬ
                   МАКСИМУМ(КурсыВалют.Период) КАК Период,
                   КурсыВалют.Валюта
               ИЗ
                   РегистрСведений.КурсыВалют КАК КурсыВалют
               ГДЕ
                   КурсыВалют.Период <= РеализацияТоваровУслуг.Дата
                   И КурсыВалют.Валюта = РеализацияТоваровУслуг.ВалютаДокумента
               СГРУППИРОВАТЬ ПО
                           КурсыВалют.Валюта))
ГДЕ
   РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
12 Makar47
 
16.09.11
11:48
Спасибо, помогло.