«Правила перерасчета» являются вспомогательными объектами метаданных компоненты «Расчет». Они предназначены для автоматического отслеживания актуальности результатов проведенных расчетов при вводе новых записей журнала расчетов.


При создании правила перерасчета в конфигураторе определяются виды расчетов, при редактировании которых правило перерасчета «срабатывает», и виды расчетов, которые должны быть перерасчитаны при срабатывании данно­го правила.


Список видов расчета, на основании которых срабатывает правило перерасчета условно называется «ведущие виды расчета». Список видов расчета, которые должны быть перерасчитаны при срабатывании данного правила условно называется «зависимые виды расчета».


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


После ввода в систему такого правила перерасчетов журнал расчетов будет вести себя описанным ниже образом. При этом сначала рассмотрим случай для взаимосвязи видов расчета в одном периоде.


Итак, если в журнале расчетов появится новая (в результате проведения документа), исчезнет (при отмене проведения) или будет исправлена существующая запись с одним из «ведущих» видов расчета (в нашем примере оклад, тариф, сдельная оплата), то будет снят признак «Рассчитана» со всех записей, соответствующих доплатам, если найдутся таковые с тем же периодом действия, что и введенная, удаленная или исправленная запись.


Если при этом вводится запись с периодом действия не в текущем расчетном периоде, а в одном из прошлых (например, расчет оклада задним числом за прошлый месяц), то система введет записи-перерасчеты для всех доплат соот­ветствующего прошлого периода.


Правило перерасчета может быть двух типов: перерасчет «по текущему периоду» или «по будущим периодам».


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


Контекст работы с правилами перерасчета


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


Цитата
ПравилоПерерасчета.<ХХХХХ>
,


где <ХХХХХ> — идентификатор Правила Перерасчета, объявленный в конфигураторе.
Англоязычный синоним ключевого слова ПравилоПерерасчета — RecalculationRule.


Пример:



КолПериодов = ПравилоПерерасчета.Главное.КоличествоПериодов;
ВР = ВидРасчета.ПоОкладу;
ЗависитОтОклада = ПравилоПерерасчета.ПересчДоплат.ИмеетВедущий(ВР);


Атрибуты правил перерасчета

Тип
Тип правила перерасчета.

Синтаксис:
Тип

Англоязычный синоним:
Type

Описание:
Атрибут Тип позволяет прочитать/установить значение типа правила перерасчета. Данный атрибут может принимать следующие значения:

· 0 — зависимые виды расчетов должны быть перерасчитаны в том же периоде, что и вводимая запись журнала расчетов;
· 1 — зависимые виды расчетов должны быть перерасчитаны в нескольких периодах, следующих за периодом действия вводимой записи журнала расчетов (количество периодов задано атрибутом КоличествоПериодов).


Пример:



Тип = ПравилоПерерасчета.Главное.Тип;
КоличествоПериодов
Количество перерасчитываемых периодов для правила перерасчета.


Синтаксис:
КоличествоПериодов

Англоязычный синоним:
NumberOfPeriods

Описание:
Атрибут КоличествоПериодов позволяет прочитать/установить количество периодов перерасчета.


Пример:



КолПер = ПравилоПерерасчета.Главное.КоличествоПериодов;


Методы правил перерасчета

КоличествоВедущих
Возвращает количество «ведущих» видов расчета.

Синтаксис:
КоличествоВедущих()

Англоязычный синоним:
NumberOfLeadings

Возвращаемое значение:
Количество «ведущих» видов расчета.

Описание:
Метод КоличествоВедущих возвращает количество «ведущих» видов расчета (при вводе которых в журнал расчетов необходимо произвести перерасчеты согласно данного правила).

Пример:


// выведем все виды расчета от которых зависят доплаты
Для Сч = 1 По ПравилоПерерасчета.Доплаты.КоличествоВедущих() Цикл
Сообщить(ПравилоПерерасчета.Доплаты.ПолучитьВедущий(Сч));
КонецЦикла;


ИмеетВедущий
Установить принадлежность вида расчета к ведущим для правила перерасчета.

Синтаксис:
ИмеетВедущий(<ВидРасчета>)

Англоязычный синоним:
HasLeading

Возвращаемое значение:
Число: 1, если данное правило перерасчета имеет заданный вид расчета в качестве ведущего (т. е. при вводе этого вида расчета в журнал расчетов сработает данное правило перерасчета); 0, если данное правило перерасчета не имеет заданный вид расчета в качестве ведущего.

Описание:
Метод ИмеетВедущий позволяет установить принадлежность вида расчета к ведущим для правила перерасчета.

Пример:


// зависит ли доплата от премии?
Зависит = ПравилоПерерасчета.Доплаты.ИмеетВедущий(ВидРасчета.Премия);