В данном разделе мы рассмотрим порядок формирования записей таблицы фактического периода действия регистра расчета.
Фактический период действия определен только для регистров расчета с поддержкой периода действия и имеет функциональную зависимость от записей регистра расчета. Это своего рода итоги по периоду действия записей регистра. Отличие от обычных итогов в том, что, во-первых, расчет итоговых интервалов времени - более сложная задача, чем простое суммирование числовых ресурсов; во-вторых, правила расчета таких "итоговых" интервалов времени не определены в системе раз и навсегда, а задаются пользователем.
Фактический период действия формируется каждый раз, когда выполняется запись набора записей регистра расчета.
Для формирования фактического периода действия системой используются следующие данные:
Ниже мы рассмотрим влияние всех перечисленных данных на формирование записей фактического периода действия.
Для видов расчета плана видов расчета с поддержкой периода действия (свойство "Использует период действия") есть возможность задавать список вытесняющих видов расчета. Этот список используется системой при расчете фактического периода действия соответствующих регистров расчета (т.е. тех, которым назначен план видов расчета). Отношения "вытесняющий-вытесняемый" между записями регистра расчета возникают в том случае, если периоды действия записей пересекаются. На рисунке ниже приведены примеры. В них принято, что для вида расчета А вытесняющими являются виды расчета B и C, а для вида расчета B вытесняющим является вид расчета C. В примере не учитываются такие нюансы как наличие сторно-записей и период регистрации записей.
рис. 1
В примере 1 фактический период действия записи A - три интервала времени. Т.е. при запросе к таблице фактического периода действия мы получим три записи для вида расчета A, и по одной записи для видов расчета B и C. В примере 2 иллюстрация того, что фактический период действия может оказаться "пустым". О таком случае будем говорить, что вид расчета A полностью "вытеснен".
Практический пример для приведенной выше иллюстрации - виды начислений при расчете заработной платы - "больничный", "отпуск" (вытесняется больничным) и "по окладу" (вытесняется и больничным и отпуском).
Итак, правила формирования фактического периода действия описываются только вытесняющими видами расчета. При этом список вытесняющих видов расчета может быть задан как разработчиком прикладного решения при конфигурировании (предопределенные виды расчета), так и пользователем в режиме исполнения. При этом следует помнить следующие правила:
При вычислении фактического периода действия учитывается период регистрации записей регистров расчета.
Итак, следует помнить, что правила вытеснения (списки вытесняющих видов расчета) не оказывают влияния на расчет фактического периода действия записей разных периодов регистрации. Более ранние по периоду регистрации записи безусловно (без "оглядки" на правила вытеснения) приоритетны, по отношению к более поздним.
Для иллюстрации того, как при расчете фактического периода действия учитываются сторно-записи, рассмотрим практический пример. Допустим, при расчете начислений работнику в некотором периоде была на основании трудового договора начислена оплата по окладу. Если в следующем периоде выяснилось что оплатить весь период или его часть нужно по другому основанию (например, по больничному листу), то необходимо:
Очевидно, что нельзя просто начислить по новому основанию, не отменив выполненного прежде начисления.
Это востребованное практикой поведение и реализовано в регистре расчета при расчете фактического периода действия. До тех пор, пока мы не введем сторнирующей записи, при вводе новых записей, претендующих на тот же период действия, их фактический период действия будет "пустым", т.е. новые записи будут полностью вытесняться.
рис. 2
На приведенном выше рисунке записи более раннего и более позднего периодов регистрации разделены прерывистой линией. Фактический период действия записи B в примере 1 - пустой. В примере 2, в условиях присутствия сторнирующей записи фактический период действия записи B - не пустой. В примере 3 проиллюстирован случай, когда при расчете фактического периода действия для вида расчета B дал в результате два интервала времени - до начала периода действия вида расчета A более раннего периода и в интервале, "открытом" сторно-записью вида расчета A.
Обратим внимание на то, что, во-первых, при любых обстоятельствах фактический период действия записи A более раннего периода не изменен; во-вторых, для сторнирующей записи также определен фактический период действия. Как рассчитывается фактический период действия сторнирующих записей описано ниже.
Отметим также, что существует метод набора записей регистра расчета ПолучитьДополнение, который, используя правила вытеснения, помогает вычислить период действия сторно-записей (см. Работа метода ПолучитьДополнение набора записей регистра расчета).
Расчет фактического периода действия сторно-записей выполняется по простому правилу - сторно запись фактически действует только, если в заданном интервале существует фактически действующая запись (т.е. имеющая фактический период действия) с таким же видом расчета и с более ранним периодом регистрации. Рассмотрим примеры.
рис. 3.
На примере 1 изображен простой случай, из которого видно, что фактический период действия сторно-записи более позднего периода регистрации ограничен периодом действия записи более раннего периода с тем же видом расчета. На примере 2 - более сложный случай, когда в более раннем периоде фактический период действия вид расчета A не совпадает с ее периодом действия. На этом примере показано, что фактический период действия сторнирующей записи может состоять из нескольких интервалов времени.
Мы рассмотрели все обстоятельства, которые влияют на расчет фактического периода действия. Разумеется, мы рассматривали упрощенные схемы - на практике могут встречаться более сложные случаи. При рассмотрении примеров мы идентифицировали записи регистра только видами расчета, что было существенно для нашей статьи. Но, разумеется, следует помнить, что записи регистра идентифицируются еще и всеми измерениями регистра.
Приведем краткие выводы и определения этого раздела.