Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.03.2019

Просмотров: 50455

Скачиваний: 8600

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Иванов Иван Сергеевич

Отдел продаж

Руководитель

Семенов Сергей Петрович

Отдел продаж

Менеджер

Семенов Сергей Петрович

Отдел закупок

Руководитель

Петровский Семен Иванович

Руководство компании

Руководитель

Петровская Ирина Ивановна

Бухгалтерия

Бухгалтер

Это самый простой вид регистра, для которого в информационной базе создается
таблица, содержащая набор измерений и ресурсов, определенных в конфигураторе.
Получение информации из такого регистра с помощью языка запросов аналогично
обращению к обычному справочнику. Например, с помощью следующего запроса можно
выбрать из регистра тех сотрудников, в наименовании подразделения которых
встречается подстрока «Отдел» (листинг 3.1).

Листинг 3.1. Получение информации из регистра сведений «Сотрудники»

Результат выполнения этого запроса в консоли запросов представлен на рис. 3.2.

Рис. 3.2. Отбор в регистре сведений

Рассмотрим следующую задачу. Предположим, что из регистра сведений нам нужно
получить информацию о внутренних совместителях, то есть вывести данные о
сотрудниках, которые занимают несколько должностей или в одном, или в различных
подразделениях предприятия. Для этого нужно выполнить следующий запрос (листинг
3.2).

Листинг 3.2. Получение информации из регистра сведений «Сотрудники»


background image

В данном пакетном запросе сначала ссылки на совместителей помещаются во временную
таблицу Совместители. Для этого записи регистра сведений группируются по полю
ФизическоеЛицо и в условии ИМЕЮЩИЕ отбираются только группировки, содержащие
больше одной записи. Затем ссылки на такие физические лица из временной таблицы
подставляются в условие отбора основного запроса.

Результат выполнения этого запроса представлен на рис. 3.3.

Рис. 3.3. Информация о совместителях

Иногда требуется представить данные регистра сведений в виде дерева с некоторым
подчинением. Например, требуется вывести информацию о сотрудниках по
подразделениям. Для этого можно сформировать итоги по полю Подразделение без
расчета самих итоговых полей (листинг 3.3).

Листинг 3.3. Получение информации из регистра сведений «Сотрудники»

Результат выполнения этого запроса представлен на рис. 3.4.


background image

Рис. 3.4. Информация о сотрудниках по подразделениям

Получение данных из периодических регистров сведений
Рассмотрим теперь пример периодического регистра сведений, который хранит методы
списания себестоимости в разрезе организаций с заданной периодичностью. Ресурсом
регистра Учетная политика предприятия является Метод списания себестоимости,
измерением – Организация, периодичность регистра – В пределах года (рис. 3.5).

Рис. 3.5. Периодический независимый регистр сведений

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

Например, в регистре Учетная политика предприятия хранятся методы списания
себестоимости, установленные в конкретной организации на начало года. Таблица,
хранящая информацию регистра в информационной базе, содержит следующие данные
(табл. 3.2).

Таблица 3.2. Пример заполнения регистра сведений «Учетная политика предприятия»

Период

Организация

Метод списания себестоимости

01.01.2011

ООО "АвтоматикаСвязьПроект"

FIFO


background image

01.01.2011

ООО "Информационные системы"

Средневзвешенный

01.01.2011

ООО "Мультимедиа Плюс"

Средневзвешенный

01.01.2012

ООО "АвтоматикаСвязьПроект"

Средневзвешенный

01.01.2012

ООО "Мультимедиа Плюс"

LIFO

01.01.2013

ООО "Информационные системы"

LIFO

Чтобы получить такие данные, достаточно выполнить следующий запрос (листинг 3.4).

Листинг 3.4. Получение информации из периодического регистра сведений

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

Для решения таких задач платформа позволяет использовать виртуальные таблицы
периодических регистров сведений – СрезПоследних и СрезПервых. Срез последних
записей регистра возвращает по одной, наиболее поздней по времени, для каждого
значения измерения (или комбинации значений измерений) записи регистра сведений. Срез
первых, наоборот, возвращает наиболее ранние записи регистра для каждого значения
измерения.

Как и другие виртуальные таблицы, эти таблицы не хранятся в информационной базе, а
формируются на основе данных основной таблицы в момент обращения к ней запросом.
Таким образом, разработчик может манипулировать сразу «производными» данными,
необходимыми для решения прикладных задач. А тонкости организации оптимального
получения этих данных обеспечиваются системой.

Виртуальные таблицы СрезПоследних и СрезПервых имеют следующий состав полей:

<Имя измерения> – поле, содержащее значения измерения регистра с именем,
заданным в конфигурации. Количество таких полей равно количеству измерений,
определенных для регистра как объекта конфигурации;
<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем,
заданным в конфигурации. Такие поля создаются для общих реквизитов, не
являющихся разделителями, или для разделителей с режимом использования


background image

разделяемых данных НезависимоИСовместно, в которых участвует данный регистр;
<Имя реквизита> – поле, содержащее значения реквизита регистра с именем,
заданным в конфигурации. Количество таких полей равно количеству реквизитов,
определенных для регистра как объекта конфигурации;
<Имя ресурса> – поле, содержащее значения ресурса регистра с именем, заданным
в конфигурации. Количество таких полей равно количеству ресурсов, определенных
для регистра как объекта конфигурации;
Активность – имеет тип Булево. Содержит признак активности записи и влияния на
получение «первых» и «последних» записей регистра. Это поле существует только
для регистров с режимом записи Подчинение регистратору;
Период – дата записи. Определяет положение данной записи на временной оси. Это
поле существует только для периодических регистров;
Регистратор – содержит ссылку на документ, которому подчинена данная запись.
Это поле существует только для регистров с режимом записи Подчинение
регистратору
;
НомерСтроки – уникальный номер данной записи в наборе записей регистра,
подчиненных документу, указанному в поле Регистратор. Это поле существует
только для регистров с режимом записи Подчинение регистратору;

При построении этих виртуальных таблиц могут использоваться параметры, с помощью
которых настраивается или уточняется состав получаемых данных:

Период – имеет тип ДатаМоментВремени или Граница. Указывает период, на
который должен быть получен срез. Если параметр не задан, будут выбираться
наиболее поздние/ранние записи, то есть без ограничения по времени;
Условие – содержит конструкцию языка запросов – условие. Строится по любым
полям регистра сведений (или подчиненным им полям). Используется для
ограничения состава исходных записей, по которым при построении виртуальной
таблицы будет выполняться срез. То есть условие будет применяться к исходным
записям, а не к уже отобранным. Если параметр не указан, будут использоваться все
активные записи регистра.

Рассмотрим все вышесказанное на примере. Для получения среза первых записей
регистра Учетная политика предприятия можно использовать следующий запрос
(листинг 3.5).

Листинг 3.5. Получение среза первых записей периодического регистра сведений