Книга знаний

1С:Предприятие / v8 / Приемы программирования / Запросы

v8: Срез последних на каждую дату в запросе

Получение актуальных данных из регистра сведений на дату, получаемую в самом запросеАвтор статьи: Rovan | Редакторы: Гений 1С, acsent, Defender aka LINN, Asmody, BabySG, ILM, Schwomulurn, АЛьФ, Vladal, Волшебник,
Последняя редакция №5 от 16.12.08 | История
URL: http://kb.mista.ru/article.php?id=92

Ключевые слова: СрезПоследних, внутри, запрос, периодический, регистр сведений


Вызов СрезПоследних() можно использовать только с передачей в него заранее готового значения даты, на которую требуется получить значения. Поэтому сабж делается через стыковку нескольких запросов -
основной, к нему стыкуется запрос по регистру сведений с условием по дате и поиском записи с маскимальной датой (периодом).

ВЫБРАТЬ
   Таб1.СсылкаДок,
   Таб1.ДатаДок,
   Таб1.ВалютаДок,
   Таб2.Курс
ИЗ
   (ВЫБРАТЬ
    ЗаказПокупателя.Ссылка КАК СсылкаДок,
    ЗаказПокупателя.Дата КАК ДатаДок,
    ЗаказПокупателя.ВалютаДокумента КАК ВалютаДок,
    МАКСИМУМ(Валюты.Период) КАК ПериодДок
   ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Валюты
      ПО Валюты.Период <= ЗаказПокупателя.Дата И 
      Валюты.Валюта = ЗаказПокупателя.ВалютаДокумента
   СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.Ссылка) КАК Таб1
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Таб2
    ПО Таб1.ПериодДок = Таб2.Период И Таб1.ВалютаДок = Таб2.Валюта



В 8.1. вместо обращения к курсам валют удобнее и надежнее использовать временную таблицу с нужными датами, потому что не во всех организациях ведут курсы валют ежедневно. ;-)

Для общего развития:
Что есть срез последних в платформе?
ВЫБРАТЬ
  Рег.Период,
  Рег.Измерение,
  Рег.Ресурс
ИЗ
  РегситрСведений.ПериодическийРегистр.СрезПоследних(&Дата) КАК Рег

В зависимости от периодичности регистра (по времени, по позизии регистратора) ВТ разворачивается в следующий запрос:
1. По времени (год, месяц, ... секунда)
ВЫБРАТЬ
 Таблица3.Ресурс,
 Таблица3.Измерение,
 Таблица3.Период
ИЗ
 (ВЫБРАТЬ
  Таблица1.Измерение КАК Измерение,
  МАКСИМУМ(ТаблицаА.Период) КАК Период
 ИЗ
  РегистрСведений.ПериодическийРегистр КАК Таблица1
 СГРУППИРОВАТЬ ПО
  Таблица1.Измерение) КАК Таблица2
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТаблицаА КАК Таблица3
  ПО Таблица2.Измерение= Таблица3.Измерение
   И Таблица2.Период = Таблица3.Период

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика