Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51801
Скачиваний: 8725
у которых установлено свойство Период действия;
Период регистрации – имеет тип Дата. Отражает период регистра расчета, к
которому относится данная запись. Размер периода определяется периодичностью
регистра расчета.
Регистратор – имеет тип ДокументСсылка.<имя>. Содержит ссылку на документ,
который ввел запись в регистр;
Сторно – имеет тип Булево. Содержит признак того, является ли данная запись
сторно-записью. Сторно-записи записываются в регистр со значением Истина в этом
поле.
В нашей демонстрационной конфигурации существует регистр расчета Основные
начисления регламентированные, который хранит данные с периодичностью Месяц и
использует план видов расчета Основные начисления. Данный регистр позволяет
учитывать расчеты, протяженные во времени, – для работы с такими расчетами регистр
расчета использует регистр сведений Графики работы. Кроме того, регистр
поддерживает механизм зависимости по базовому периоду.
Регистр расчета имеет измерения ФизЛицо и Организация, ресурс Результат, а также
реквизиты Размер, ГрафикРаботы, ВидУчетаВремени, Подразделение и
СтатьяЗатрат для хранения дополнительной информации о расчете. Движения в
регистре формируются при проведении документа Начисление зарплаты, который
является регистратором регистра расчета.
Также в демонстрационной конфигурации существует регистр расчета Дополнительные
начисления регламентированные, который хранит данные с периодичностью Месяц и
использует план видов расчета Дополнительные начисления. Данный регистр
поддерживает механизм зависимости по базовому периоду.
Регистр расчета имеет измерения ФизЛицо и Организация, ресурс Результат, а также
реквизиты Размер, Подразделение и СтатьяЗатрат для хранения дополнительной
информации о расчете. Движения в регистре формируются при проведении документа
Начисление зарплаты, который является регистратором регистра расчета.
На примере этих регистров рассмотрим типичные задачи по получению данных из
регистров расчета.
Получение данных из регистра расчета
В рамках данной книги мы не будем рассматривать технологию формирования и расчета
записей регистров расчета. Эти вопросы подробно рассматриваются в документации.
Будем исходить из того, что в ресурсе регистра расчета Результат хранится уже
посчитанное значение для различных видов расчета, используемых при начислении
зарплаты сотрудникам, в соответствии с алгоритмами их расчета. Наша задача –
получить это значение из регистра в разрезах, интересующих пользователя.
Пример 1
Предположим, необходимо получить суммарные основные начисления по каждому
сотруднику за каждый месяц (период действия), в котором производился расчет, с
разбивкой по видам расчета. Это можно сделать с помощью следующего запроса
(листинг 3.80).
Листинг 3.80. Получение суммарных основных начислений сотрудникам по месяцам
Поскольку регистр расчета ОсновныеНачисленияРегл имеет периодичность Месяц, то в
поле ПериодДействия будут храниться даты начала каждого месяца, рассчитанные от
даты начала периода действия той записи, по которой был произведен расчет. В запросе
рассчитываются общие итоги, а также итоги по полям ПериодДействия и Сотрудник.
В результате мы видим сумму основных начислений по каждому сотруднику за каждый
месяц, а также видим, из каких начислений с разбивкой по видам расчета складывалась
общая сумма начислений каждого сотрудника (рис. 3.85).
Рис. 3.85. Получение суммарных основных начислений сотрудникам по месяцам
Пример 2
Рассмотрим следующую задачу. Пусть нам необходимо узнать сумму основных
начислений, начисленных за март 2013 года каждому сотруднику в каждом подразделении
в разрезе статей затрат. Это можно сделать с помощью следующего запроса (листинг
3.81).
Листинг 3.81. Получение суммарных основных начислений сотрудникам в разрезе статей затрат и подразделений
Результат выполнения запроса представлен на рис. 3.86.
Рис. 3.86. Получение суммарных основных начислений сотрудникам в разрезе статей затрат и подразделений
Получение данных о фактическом периоде действия записи для расчета
Для корректного расчета каждой записи в регистре расчета, прежде всего, необходимо
правильно определить фактический период действия этой записи. Дело в том, что при
вводе в регистр расчета записей с вытесняющими видами расчета (например,
командировок, больничных) фактический период действия записей с вытесняемыми
видами расчета (например, оклада) меняется.
При этом данные о фактическом периоде действия не хранятся в основной таблице
регистра расчета. Для получения фактического периода действия используется
виртуальная таблица фактического периода действия ФактическийПериодДействия().
Эта таблица формируется платформой только для регистров расчета, использующих
период действия.
Структура полей этой таблицы полностью идентична структуре основной таблицы
регистра расчета. Единственное ее отличие от основной таблицы состоит в том, что поля
ПериодДействияНачало и ПериодДействияКонец обозначают не собственно период
действия, а интервал фактического периода действия. В случае, если фактический
период действия записи задается несколькими интервалами, в виртуальной таблице
такая запись будет представлена несколькими строками. Например, если в регистр
расчета введены следующие записи (табл. 3.8), то в таблице фактического периода
действия для этих записей будут присутствовать следующие строки (табл. 3.9).
Таблица 3.8. Основная таблица регистра расчета
ПериодРегистрации ВидРасчета ПериодДействия ПериодДействияНачало ПериодДействияКонец
01.02.2013
Оклад
01.02.2013
01.02.2013
28.02.2013
01.02.2013
Надбавка
01.02.2013
01.02.2013
28.02.2013
01.02.2013
Больничный 01.02.2013
14.02.2013
17.02.2013
Таблица 3.9. Виртуальная таблица «ФактическийПериодДействия»
ПериодРегистрации ВидРасчета ПериодДействия ПериодДействияНачало ПериодДействияКонец
01.02.2013
Оклад
01.02.2013
01.02.2013
13.02.2013
01.02.2013
Оклад
01.02.2013
18.02.2013
28.02.2013
01.02.2013
Надбавка
01.02.2013
01.02.2013
28.02.2013
01.02.2013
Больничный 01.02.2013
14.02.2013
17.02.2013
Так как вид расчета Больничный вытесняет по фактическому периоду действия Оклад,
то в виртуальной таблице фактического периода действия запись об окладе
представлена двумя строками, исключающими временной интервал, в котором действует
больничный. Запись о надбавке одинакова в обеих таблицах, т. к. надбавка не
вытесняется больничным.
Рассмотрим пример получения данных из таблицы фактического периода действия. В
следующем запросе подсчитывается количество календарных дней фактического
периода действия каждой записи документа-регистратора (листинг 3.82).
Листинг 3.82. Получение фактического периода действия для записей документа
У виртуальной таблицы фактического периода действия существует единственный
параметр Условие. В этот параметр мы передаем условие отбора по регистратору
(Регистратор = &Регистратор), движения которого нас интересуют.
В результате мы видим, что для сотрудника Кузнецова записи о командировке вытеснили
записи об окладе. Поэтому количество календарных дней фактического периода действия
записи об окладе 17 = 31 - 14 (рис. 3.87).