Основная таблица регистра сведений в языке запросов
Имя таблицы — имя-регистра-сведений.
Например, выбрать записи с измерением Товар, ресурсом Цена и реквизитом Примечание из регистра Цены можно следующим образом:
пер Запрос = Запрос{ВЫБРАТЬ
Цены.Товар КАК Товар,
Цены.Цена КАК Цена,
Цены.Примечание КАК Примечание,
Цены.КлючЗаписи,
Цены.Период
ИЗ
Цены КАК Цены}
Поля
Эта таблица содержит следующие поля:
- имя-измерения
- Значение измерения записи регистра сведений
- имя-ресурса
- Значение ресурса записи регистра сведений
- имя-реквизита
- Значение реквизита записи регистра сведений
- КлючЗаписи
- имя-регистра-сведений.КлючЗаписи
- КлючОсновногоОтбора
-
имя-регистра-сведений.КлючОсновногоОтбора. Структура содержит:
-
Период, если регистр сведений периодический и период входит в основной отбор
-
Поле для каждого измерения, входящего в основной отбор регистра сведений
-
- Период
- Момент | ДатаВремя | Дата. Период, к которому относится запись регистра. Это поле есть только у периодических регистров сведений
- СледующийПериод
-
Имеет значение поля Период следующей записи с такими же значениями измерений или максимальное значение типа поля Период, если следующей записи нет. Доступно только для чтения. Это поле есть только у периодических регистров сведений. Пример:
знч Запрос = Запрос{ ВЫБРАТЬ Период, Курс, Валюта, СледующийПериод ИЗ Курсы } знч Результат = Запрос.Выполнить().Единственный() пер СледующийПериод = Результат.СледующийПериод
Для того чтобы проверить наличие следующего периода у записи в таблице периодического регистра сведений, можно сравнить значение поля СледующийПериод с максимальным значением типа поля Период. Если они равны — значит значение следующего периода отсутствует для данной записи.
Получить максимальное значение типа поля Период можно за счет использования встроенного строкового литерала соответствующего типа:Тип{Максимум}
. Например, если поле Период имеет тип ДатаВремя, запрос может выглядеть следующим образом:ВЫБРАТЬ УчетРабочегоВремениСрезПоследних.Период КАК Период, ВЫБОР КОГДА УчетРабочегоВремени.СледующийПериод == ДатаВремя{Максимум} ТОГДА ДатаВремя{} ИНАЧЕ УчетРабочегоВремени.СледующийПериод КОНЕЦ КАК ПериодОкончания, УчетРабочегоВремениСрезПоследних.Статус КАК Статус, УчетРабочегоВремениСрезПоследних.Комментарий КАК Комментарий ИЗ УчетРабочегоВремени.СрезПоследних(%ДатаСреза) КАК УчетРабочегоВремениСрезПоследних
Индексы
Таблица непериодического регистра сведений имеет следующий индекс:
- имя-измерения-1 + ... + имя-измерения-N
- Индекс, включающий все поля-измерения в том порядке, в котором они описаны в регистре сведений
Таблица периодического регистра сведений имеет следующие индексы:
- Период + имя-измерения-1 + ... + имя-измерения-N
- Индекс, включающий поле Период и все поля-измерения в том порядке, в котором они описаны в регистре сведений
- имя-измерения-1 + ... + имя-измерения-N + Период
- Индекс, включающий все поля-измерения в том порядке, в котором они описаны в регистре сведений, и поле Период
- СледующийПериод + имя-измерения-1 + ... + имя-измерения-N
- Индекс, включающий поле СледующийПериод и все
поля-измерения в том порядке, в котором они описаны в регистре сведенийПримечание: Поле СледующийПериод содержит значение поля Период следующей (по возрастанию значения поля Период) записи с такими же значениями измерений.Если следующей записи нет, то это поле содержит максимальное значение того типа, который имеет поле Период:
- Дата{9999-12-31} для типа Дата
- ДатаВремя{9999-12-31 23:59.999} для типа ДатаВремя
Эти индексы удобны в общем случае, но могут не подходить для конкретных операций поиска и чтения элементов регистра сведений в вашем приложении. Тогда вы можете описать в проекте, какие дополнительные индексы «1С:Шина» должен создать в таблицах регистра сведений.
Для этого используйте свойство регистра сведений Индексы. В этом свойстве вы можете перечислить наборы полей. По каждому такому набору «1С:Шина» создает некластерный индекс в базе данных. Порядок следования полей в составном индексе определяется порядком следования реквизитов в наборе. На создаваемые индексы накладываются следующие ограничения:
- Суммарный размер полей, входящих в индекс, не должен превышать 900 байт;
- Суммарное количество полей, входящих в индекс, не должно превышать 16;
- В индексе не должно быть строковых или байтовых полей неограниченной длины.