Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51842
Скачиваний: 8727
Иванов Иван Сергеевич
Отдел продаж
Руководитель
Семенов Сергей Петрович
Отдел продаж
Менеджер
Семенов Сергей Петрович
Отдел закупок
Руководитель
Петровский Семен Иванович
Руководство компании
Руководитель
Петровская Ирина Ивановна
Бухгалтерия
Бухгалтер
Это самый простой вид регистра, для которого в информационной базе создается
таблица, содержащая набор измерений и ресурсов, определенных в конфигураторе.
Получение информации из такого регистра с помощью языка запросов аналогично
обращению к обычному справочнику. Например, с помощью следующего запроса можно
выбрать из регистра тех сотрудников, в наименовании подразделения которых
встречается подстрока «Отдел» (листинг 3.1).
Листинг 3.1. Получение информации из регистра сведений «Сотрудники»
Результат выполнения этого запроса в консоли запросов представлен на рис. 3.2.
Рис. 3.2. Отбор в регистре сведений
Рассмотрим следующую задачу. Предположим, что из регистра сведений нам нужно
получить информацию о внутренних совместителях, то есть вывести данные о
сотрудниках, которые занимают несколько должностей или в одном, или в различных
подразделениях предприятия. Для этого нужно выполнить следующий запрос (листинг
3.2).
Листинг 3.2. Получение информации из регистра сведений «Сотрудники»
В данном пакетном запросе сначала ссылки на совместителей помещаются во временную
таблицу Совместители. Для этого записи регистра сведений группируются по полю
ФизическоеЛицо и в условии ИМЕЮЩИЕ отбираются только группировки, содержащие
больше одной записи. Затем ссылки на такие физические лица из временной таблицы
подставляются в условие отбора основного запроса.
Результат выполнения этого запроса представлен на рис. 3.3.
Рис. 3.3. Информация о совместителях
Иногда требуется представить данные регистра сведений в виде дерева с некоторым
подчинением. Например, требуется вывести информацию о сотрудниках по
подразделениям. Для этого можно сформировать итоги по полю Подразделение без
расчета самих итоговых полей (листинг 3.3).
Листинг 3.3. Получение информации из регистра сведений «Сотрудники»
Результат выполнения этого запроса представлен на рис. 3.4.
Рис. 3.4. Информация о сотрудниках по подразделениям
Получение данных из периодических регистров сведений
Рассмотрим теперь пример периодического регистра сведений, который хранит методы
списания себестоимости в разрезе организаций с заданной периодичностью. Ресурсом
регистра Учетная политика предприятия является Метод списания себестоимости,
измерением – Организация, периодичность регистра – В пределах года (рис. 3.5).
Рис. 3.5. Периодический независимый регистр сведений
В случае указания периодичности регистра (свойство Периодичность установлено в
значение В пределах дня, В пределах месяца, В пределах года и т. п.) в структуру
основной таблицы регистра добавляется стандартное поле Период, благодаря которому
в регистр сведений добавляется хронологический разрез хранения данных. То есть
периодический регистр позволяет хранить данные для одного и того же значения
измерения (или комбинации значений измерений) за разные периоды времени.
Например, в регистре Учетная политика предприятия хранятся методы списания
себестоимости, установленные в конкретной организации на начало года. Таблица,
хранящая информацию регистра в информационной базе, содержит следующие данные
(табл. 3.2).
Таблица 3.2. Пример заполнения регистра сведений «Учетная политика предприятия»
Период
Организация
Метод списания себестоимости
01.01.2011
ООО "АвтоматикаСвязьПроект"
FIFO
01.01.2011
ООО "Информационные системы"
Средневзвешенный
01.01.2011
ООО "Мультимедиа Плюс"
Средневзвешенный
01.01.2012
ООО "АвтоматикаСвязьПроект"
Средневзвешенный
01.01.2012
ООО "Мультимедиа Плюс"
LIFO
01.01.2013
ООО "Информационные системы"
LIFO
Чтобы получить такие данные, достаточно выполнить следующий запрос (листинг 3.4).
Листинг 3.4. Получение информации из периодического регистра сведений
Однако когда записей в регистре много и периодичность регистра более частая, вывод
такого списка особого смысла не имеет, так как трудно проследить историю изменения во
времени какого-то значения. В таких случаях обычно бывает нужно получить актуальные
данные из регистра, то есть срез записей регистра на определенный момент времени.
Для решения таких задач платформа позволяет использовать виртуальные таблицы
периодических регистров сведений – СрезПоследних и СрезПервых. Срез последних
записей регистра возвращает по одной, наиболее поздней по времени, для каждого
значения измерения (или комбинации значений измерений) записи регистра сведений. Срез
первых, наоборот, возвращает наиболее ранние записи регистра для каждого значения
измерения.
Как и другие виртуальные таблицы, эти таблицы не хранятся в информационной базе, а
формируются на основе данных основной таблицы в момент обращения к ней запросом.
Таким образом, разработчик может манипулировать сразу «производными» данными,
необходимыми для решения прикладных задач. А тонкости организации оптимального
получения этих данных обеспечиваются системой.
Виртуальные таблицы СрезПоследних и СрезПервых имеют следующий состав полей:
<Имя измерения> – поле, содержащее значения измерения регистра с именем,
заданным в конфигурации. Количество таких полей равно количеству измерений,
определенных для регистра как объекта конфигурации;
<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем,
заданным в конфигурации. Такие поля создаются для общих реквизитов, не
являющихся разделителями, или для разделителей с режимом использования
разделяемых данных НезависимоИСовместно, в которых участвует данный регистр;
<Имя реквизита> – поле, содержащее значения реквизита регистра с именем,
заданным в конфигурации. Количество таких полей равно количеству реквизитов,
определенных для регистра как объекта конфигурации;
<Имя ресурса> – поле, содержащее значения ресурса регистра с именем, заданным
в конфигурации. Количество таких полей равно количеству ресурсов, определенных
для регистра как объекта конфигурации;
Активность – имеет тип Булево. Содержит признак активности записи и влияния на
получение «первых» и «последних» записей регистра. Это поле существует только
для регистров с режимом записи Подчинение регистратору;
Период – дата записи. Определяет положение данной записи на временной оси. Это
поле существует только для периодических регистров;
Регистратор – содержит ссылку на документ, которому подчинена данная запись.
Это поле существует только для регистров с режимом записи Подчинение
регистратору;
НомерСтроки – уникальный номер данной записи в наборе записей регистра,
подчиненных документу, указанному в поле Регистратор. Это поле существует
только для регистров с режимом записи Подчинение регистратору;
При построении этих виртуальных таблиц могут использоваться параметры, с помощью
которых настраивается или уточняется состав получаемых данных:
Период – имеет тип Дата, МоментВремени или Граница. Указывает период, на
который должен быть получен срез. Если параметр не задан, будут выбираться
наиболее поздние/ранние записи, то есть без ограничения по времени;
Условие – содержит конструкцию языка запросов – условие. Строится по любым
полям регистра сведений (или подчиненным им полям). Используется для
ограничения состава исходных записей, по которым при построении виртуальной
таблицы будет выполняться срез. То есть условие будет применяться к исходным
записям, а не к уже отобранным. Если параметр не указан, будут использоваться все
активные записи регистра.
Рассмотрим все вышесказанное на примере. Для получения среза первых записей
регистра Учетная политика предприятия можно использовать следующий запрос
(листинг 3.5).
Листинг 3.5. Получение среза первых записей периодического регистра сведений