Описание встроенного языка системы 1С Предприятие


         

ВвестиПерерасчет


Вводит перерасчет текущей записи журнала расчетов.

Синтаксис:

ВвестиПерерасчет()

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

InsertRecalc

Возвращаемое значение:

Число: 1 — если операция успешно выполнена, и 0 — в противном случае.

Описание:

Метод предназначен для ввода строк-перерасчетов в журнал расчетов. Как правило, используется в модуле документа, но может использоваться и в мо­дуле вида расчета. Метод вводит полную копию текущей записи в журнал рас­четов, не заполняя лишь атрибут Результат. Впоследствии система распознает «обычные» записи и записи-перерасчеты.

Записи-перерасчеты могут вводиться только для записей одного из про­шлых расчетных периодов. Невозможно ввести перерасчет записи, которая в свою очередь является перерасчетом. При этом система позволяет вводить не­сколько записей-перерасчетов в разных расчетных периодах для одной и той же записи журнала.

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

Для записей, введенных в журнал одним из методов ВвестиПерерасчет или ВвестиПерерасчетНаОсновании, атрибут Перерасчет принимает зна­чение 1.

При расчете записи-перерасчета результат вычисляется с учетом результата первичной (перерассчитываемой) записи. Это значит, что если в журнале рас­четов введен перерасчет записи прошлого периода, то результат перерасчета будет рассчитан за вычетом значения Результат первичной записи.



Пример:

Процедура Перерасчет(Группа, Сотрудник, Основание, Начало, Окончание)

   //Группа расчетов "оплата по среднему"

   ОС = ГруппаРасчетов.ОплатаПоСреднему;

   // перерасчет по журналу "зарплата"

   ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   // дата, начиная с которой нужно перерассчитывать и начисления

   ДатаНачислений = ЖрнЗарплата.КонецПериодаПоДате(Начало) + 1;

   // выделим все записи ЖР по сотруднику

   ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Сотрудник,

                    ЖрнЗарплата.НачалоПериодаПоДате(Начало),

                    Минимум(Окончание, ЖрнЗарплата.НачалоТекущегоПериода() - 1));

   Сч = 1;

   Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

      Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда

         Пересчитать = 1;

         Если ((ЖрнЗарплата.ВидРасч.ВходитВГруппу(ОС) = 1)И

               (ЖрнЗарплата.ДатаНачала<ДатаНачислений)) Тогда

            // надо перерассчитывать начисления, оплачиваемые

            //по среднему заработку только следующего

            // (за началом действия данного документа-основания)

            // периода расчета

            Пересчитать = 0;

         КонецЕсли;

         Если Пересчитать = 1 Тогда

            ЖрнЗарплата.ВвестиПерерасчет(};

         КонецЕсли;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

См. также: Перерасчет, ВвестиПерерасчетНаОсновании



Содержание раздела