1С-Предприятие 8.0. Практическое пособие разработчика


Создание процедуры расчета записей регистра Начисления - часть 2


   КонецЦикла;

   // записываем движения регистров

   Движения.Начисления.Записать();

 

   //получим список всех сотрудников, содержащихся в документе

   Запрос = Новый Запрос(

      "ВЫБРАТЬ РАЗЛИЧНЫЕ

      |    НачисленияСотрудникамНачисления.Сотрудник [349]

      |ИЗ

      |    Документ.НачисленияСотрудникам.Начисления КАК НачисленияСотрудникамНачисления

      |ГДЕ

      |    НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент");

   Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);

   //сформируем список сотрудников

   ТаблЗнач = Запрос.Выполнить().Выгрузить();

   МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник");

   СписокСотрудников = Новый СписокЗначений;

   СписокСотрудников.ЗагрузитьЗначения(МассивСотрудников);

   РасчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, СписокСотрудников);

   Движения.Начисления.Записать(,Истина);

   РасчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, СписокСотрудников);

   Движения.Начисления.Записать(,Истина);

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

 

Обратите внимание, что при проведении документа мы сначала записываем движения, сформированные документом, в регистр, а затем передаем этот набор записей регистра в процедуру расчета. Сначала для расчета первичных записей ("Оклад"), а затем для расчета вторичных ("Премия"). Процедура расчета, на основе описанных в ней алгоритмов и данных, содержащихся в записях регистра, должна сформировать значения ресурсов регистра. После того, как ресурсы будут рассчитаны, мы перезаписываем набор записей регистра без формирования записей перерасчета (второй параметр в методе Записать() – Истина).




Начало  Назад  Вперед