Объект конфигурации Регистр расчета
Объект конфигурации Регистр расчета является прикладным объектом и предназначен для описания структуры накопления данных, являющихся результатами расчетов. На основе объекта конфигурации "Регистр расчета" платформа создает в базе данных информационную структуру, в которой будут накапливаться данные, формируемые различными объектами базы данных.
Отличительной особенностью регистра расчета является то, что он не предназначен для интерактивного редактирования пользователем. Разработчик может, при необходимости, предоставить пользователю возможность редактировать регистр расчета, но предназначение регистра расчета заключается в том, чтобы его модификация производилась на основе алгоритмов работы объектов базы данных, а не в результате непосредственных действий пользователя.
Как и другие регистры, регистр расчета имеет ресурсы, в которых хранит числовые данные, имеет измерения, в разрезе которых можно получать значения ресурсов регистра, имеет реквизиты, которые характеризуют каждую запись регистра расчета.
Отличительными же особенностями регистра расчета является его периодичность, возможность использования механизмов вытеснения по периоду действия и зависимости по базовому периоду, и связь с планом видов расчета. Рассмотрим все эти особенности по порядку.
Периодичность регистра расчета может быть определена одним из следующих значений:
· | День, |
· | Месяц, |
· | Квартал, |
· | Год. |
Периодичность регистра расчета определяет промежуток времени, к которому будет относиться каждая запись регистра. Если указана периодичность "День", то каждая запись регистра будет относиться к какому либо дню, если периодичность "Месяц" – то к какому либо месяцу и т.д. Для указания факта принадлежности записи к какому либо периоду, регистр имеет служебный реквизит [327] "ПериодРегистрации" типа Дата. При записи данных в регистр платформа всегда приводит значение этого реквизита к началу того периода, в который он попадает.
Например, если в регистр расчета с периодичностью месяц записать данные, где "ПериодРегистрации" задан как 08.04.2004, то регистр сохранит эти данные со значением поля "ПериодРегистрации" 01.04.2004:
[328]
Если в этой же ситуации периодичность регистра будет год, сохраненное значение периода регистрации будет 01.01.2004:
[329]
Следующей важной особенностью регистра расчета является возможность использования механизма вытеснения одних записей другими по периоду действия. При этом для каждой записи регистр расчета формирует фактический период действия, который является, в общем случае, совокупностью нескольких периодов, расположенных внутри периода действия.
Если рассмотреть структуру записей таблиц регистра расчета, то после внесения записи о начислении по окладу, таблицы регистра будут выглядеть следующим образом:
[330]
После добавления в регистр записи вида расчета "Невыход", который вытесняет вид расчета "Оклад" по периоду действия, записи о начислении по окладу примут следующий вид:
Другим механизмом, который поддерживает регистр расчета, является зависимость записей по базовому периоду. Этот механизм позволяет основывать расчет зависимых (вторичных) записей регистра на данных, полученных в результате расчета первичных записей. Регистр расчета может поддерживать два вида зависимости от базы: зависимость по периоду действия и зависимость по периоду регистрации.
Зависимость по периоду действия означает, что при анализе базовых записей, будут выбираться те записи, для которых найдено пересечение их фактического периода действия и указанного базового периода. [331]
Например, в начале апреля производится расчет зарплаты за март. Премия за март должна быть начислена исходя из оплаты по окладу за март. В этом случае, как правило, используется зависимость по периоду действия:
Следует сделать два замечания к приведенному рисунку.
Поля "Начало базового периода" и "Конец базового периода" имеют смысл только для записей тех видов расчета, для которых определена зависимость по базовому периоду (в нашем случае для записи расчета премии).
Значение базы, которая будет получена от конкретной влияюшеи записи, в общем случае не равно результату, который содержит эта запись. База будет рассчитана пропорционально тому, какую часть от фактического интервала влияющей записи составляет [332] перекрывающийся, с указанным базовым периодом, участок. При этом будут использованы данные графика, связанного с записью.
Зависимость по периоду регистрации означает, что при анализе базовых записей, будут выбираться те записи, которые попадают в указанный базовый период значением своего поля "Период регистрации".
В качестве примера можно привести расчет штрафов при начислении зарплаты за март. В качестве базы для расчета суммы штрафов должны браться записи о прогулах, зарегистрированные в марте месяце (это могут быть как записи о мартовских прогулах, так и записи о прогулах в феврале). В этом случае, как правило, используется зависимость по периоду регистрации:
Заключительной важной особенностью регистра расчета является его связь с планом видов расчета. Именно на основе этой связи работают механизмы вытеснения по периоду действия и зависимости по базовому периоду, поскольку в плане видов расчета описано взаимное влияние видов расчета друг на друга.
У регистра расчета могут существовать подчиненные объекты Перерасчет. Они предназначены для регистрации фактов появления в регистре записей, влияющих на результат расчета уже существующих записей регистра. Объект конфигурации Перерасчет может иметь несколько измерений, каждое из которых может устанавливать связь между измерениями данного регистра расчета и влияющих регистров расчета. В частном случае это может быть один и тот же регистр. [333]
В информационной структуре, созданной в базе данных на основе объекта конфигурации Перерасчет, платформа хранит информацию о том, какие записи регистра подлежат перерасчету. Таблицы перерасчета заполняются автоматически как на основании записей регистров расчета, затронутых ведущими видами расчета, так и на основании записей регистра расчета, для которых изменился фактический период действия. Исходя из этой информации разработчик может принимать решение о необходимости перерасчета записей регистра.
Последним замечанием, которое следует сделать, говоря о регистре расчета, является возможность установки связи регистра расчета с графиком времени. Такой график времени должен представлять собой регистр сведений (непериодический, с обязательным измерением типа Дата и ресурсом типа Число), в котором содержится временная схема исходных данных, участвующих в расчетах. Измерениями этого графика могут быть, например, график работы (ссылка на справочник) и дата, а ресурсом – количество рабочих часов в этой дате. В этом случае можно будет связать запись регистра расчета с каким-либо конкретным графиком работы (указав в качестве реквизита записи ссылку на справочник график работы) и в дальнейшем, средствами встроенного языка получать информацию о количестве рабочих часов в периоде действия, фактическом периоде действия или периоде регистрации этой записи.
О структуре объектов встроенного языка, предназначенных для работы с регистром расчета, можно прочитать в главе "Регистры расчета" на странице 606. [334]