ВвестиПерерасчет
Вводит перерасчет текущей записи журнала расчетов.
Синтаксис:
ВвестиПерерасчет()
Англоязычный синоним:
InsertRecalc
Возвращаемое значение:
Число: 1 — если операция успешно выполнена, и 0 — в противном случае.
Описание:
Метод предназначен для ввода строк-перерасчетов в журнал расчетов. Как правило, используется в модуле документа, но может использоваться и в модуле вида расчета. Метод вводит полную копию текущей записи в журнал расчетов, не заполняя лишь атрибут Результат. Впоследствии система распознает «обычные» записи и записи-перерасчеты.
Записи-перерасчеты могут вводиться только для записей одного из прошлых расчетных периодов. Невозможно ввести перерасчет записи, которая в свою очередь является перерасчетом. При этом система позволяет вводить несколько записей-перерасчетов в разных расчетных периодах для одной и той же записи журнала.
Например, в случае если журнал расчетов имеет месячную периодичность, для «мартовской» записи журнала могут быть введены перерасчеты в апреле, мае и т. д.
Для записей, введенных в журнал одним из методов ВвестиПерерасчет или ВвестиПерерасчетНаОсновании, атрибут Перерасчет принимает значение 1.
При расчете записи-перерасчета результат вычисляется с учетом результата первичной (перерассчитываемой) записи. Это значит, что если в журнале расчетов введен перерасчет записи прошлого периода, то результат перерасчета будет рассчитан за вычетом значения Результат первичной записи.
Пример:
Процедура Перерасчет(Группа, Сотрудник, Основание, Начало, Окончание)
//Группа расчетов "оплата по среднему"
ОС = ГруппаРасчетов.ОплатаПоСреднему;
// перерасчет по журналу "зарплата"
ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
// дата, начиная с которой нужно перерассчитывать и начисления
ДатаНачислений = ЖрнЗарплата.КонецПериодаПоДате(Начало) + 1;
// выделим все записи ЖР по сотруднику
ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Сотрудник,
ЖрнЗарплата.НачалоПериодаПоДате(Начало),
Минимум(Окончание, ЖрнЗарплата.НачалоТекущегоПериода() - 1));
Сч = 1;
Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл
Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда
Пересчитать = 1;
Если ((ЖрнЗарплата.ВидРасч.ВходитВГруппу(ОС) = 1)И
(ЖрнЗарплата.ДатаНачала<ДатаНачислений)) Тогда
// надо перерассчитывать начисления, оплачиваемые
//по среднему заработку только следующего
// (за началом действия данного документа-основания)
// периода расчета
Пересчитать = 0;
КонецЕсли;
Если Пересчитать = 1 Тогда
ЖрнЗарплата.ВвестиПерерасчет(};
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
См. также: Перерасчет, ВвестиПерерасчетНаОсновании