Описание виртуальных таблиц регистра сведений

Для периодических регистров сведений доступны две виртуальные таблицы СрезПоследних и СрезПервых. Виртуальные таблицы облегчают жизнь разработчику, так как:

  • Не нужно самому писать запросы с данной логикой работы, обращаясь к основной таблице регистра сведений;
  • Тонкости организации оптимального получения данных обеспечиваются самой платформой.
Рисунок 1. Виртуальные таблицы регистра сведений

Срез последних

Предназначена для получения наиболее поздних записей регистра сведений на указанную дату (включительно) (см. рисунок 1).

Рисунок 1. Примерная схема среза последних

Включает только активные записи. По каждой комбинации измерений будет найдена наиболее поздняя запись, но не более поздняя, чем указанная дата. В режиме совместимости Версия8_3_17 и ниже включает записи независимо от признака активности (да да, с версии 8.3.18 исправили некорректное поведение системы). Является наиболее востребованной виртуальной таблицей, так как задачи получения среза последних встречаются довольно часто.

Поля

  • <Имя измерения> - тип: Произвольный. Набор полей содержит значения измерений регистра. Имена полей соответствуют именам измерений, как они заданы в конфигураторе.
  • <Имя общего реквизита> - тип: Произвольный. Набор таких полей и их наименования определяются набором общих реквизитов, не являющихся разделителями (РазделениеДанных = НеИспользовать), или разделителей с ИспользованиеРазделяемыхДанных = НезависимоИСовместно, в которых участвует данный регистр сведений.
  • <Имя реквизита> - тип: Произвольный. Набор полей содержит значения реквизитов регистра. Имена полей соответствуют именам реквизитов, как они заданы в конфигураторе.
  • <Имя ресурса> - тип: Произвольный. Набор полей содержит значения ресурсов регистра. Имена полей соответствуют именам ресурсов, как они заданы в конфигураторе.
  • Активность - тип: Булево. Содержит признак активности записи и влияния на получение первых и последних записей. Имеет смысл только для регистров, записываемых регистратором.
  • НомерСтроки - тип: Число. Содержит номер строки, определяемый как порядковый номер записи в наборе записей. Имеет смысл только для регистров, записываемых регистратором.
  • Период - тип: Дата. Содержит период, к которому относится запись регистра. Имеет смысл только для периодических регистров.
  • Регистратор - тип: ДокументСсылка.<Имя документа>. Содержит ссылку на документ-регистратор движения. Имеет смысл только для регистров, записываемых регистратором.

Параметры

  • Период (необязательный) - тип: Дата, МоментВремени, Граница. Указывается дата, момент времени или граница, на которые будут получены сведения. Если параметр не задан, будут выбираться наиболее поздние записи, без ограничения по дате.
  • Условие (необязательный) - конструкция языка запросов. Указывается условие на языке запросов. Условие может оперировать полями регистра сведений. Оно будет использовано для ограничения состава записей, среди которых будут выбираться наиболее поздние. То есть условие будет применяться к исходным записям, а не к уже отобранным. Если параметр не задан, анализируются все активные записи регистра.
  
// Выбрать актуальные курсы всех валют на заданную дату
ВЫБРАТЬ
  Валюта,
  Курс 
ИЗ
  РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата)

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

Срез первых

Предназначена для получения наиболее ранних записей регистра сведений на указанную дату (включительно) (см. рисунок 2).

Рисунок 2. Примерная схема среза первых

Включает только активные записи. По каждой комбинации измерений будет найдена наиболее ранняя запись, но не более ранняя, чем указанная дата.

Поля

  • <Имя измерения> - тип: Произвольный. Набор полей содержит значения измерений регистра. Имена полей соответствуют именам измерений, как они заданы в конфигураторе.
  • <Имя общего реквизита> - тип: Произвольный. Набор таких полей и их наименования определяются набором общих реквизитов, не являющихся разделителями (РазделениеДанных = НеИспользовать), или разделителей с ИспользованиеРазделяемыхДанных = НезависимоИСовместно, в которых участвует данный регистр сведений.
  • <Имя реквизита> - тип: Произвольный. Набор полей содержит значения реквизитов регистра. Имена полей соответствуют именам реквизитов, как они заданы в конфигураторе.
  • <Имя ресурса> - тип: Произвольный. Набор полей содержит значения ресурсов регистра. Имена полей соответствуют именам ресурсов, как они заданы в конфигураторе.
  • Активность - тип: Булево. Содержит признак активности записи и влияния на получение первых и последних записей. Имеет смысл только для регистров, записываемых регистратором.
  • НомерСтроки - тип: Число. Содержит номер строки, определяемый как порядковый номер записи в наборе записей. Имеет смысл только для регистров, записываемых регистратором.
  • Период - тип: Дата. Содержит период, к которому относится запись регистра. Имеет смысл только для периодических регистров.
  • Регистратор - тип: ДокументСсылка.<Имя документа>. Содержит ссылку на документ-регистратор движения. Имеет смысл только для регистров, записываемых регистратором.

Параметры

  • Период (необязательный) - тип: Дата, МоментВремени, Граница. Указывается дата, момент времени или граница, на которые будут получены сведения. Если параметр не задан, будут выбираться наиболее ранние записи, без ограничения по дате.
  • Условие (необязательный) - конструкция языка запросов. Указывается условие на языке запросов. Условие может оперировать полями регистра сведений. Оно будет использовано для ограничения состава записей, среди которых будут выбираться наиболее ранние. То есть условие будет применяться к исходным записям, а не к уже отобранным. Если параметр не задан, анализируются все активные записи регистра.
  
// Получение всех наиболее ранних записей регистра сведений
ВЫБРАТЬ * ИЗ РегистрСведений.КурсВал.СрезПервых()

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

Материал для статьи взят со справки платформы 1С и приведен к удобочитаемому виду.

Комментарии

Отправить комментарий