Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
3.3 kB
0
Indexable
Never
Процедура ОбработкаПроведения(Отказ, Режим)

	ЗаписатьДанныеДокументаВРегистр();
	
КонецПроцедуры

Процедура Рассчитать() Экспорт
	
	НачатьТранзакцию();
	
	// Формирование рабочих наборов записей
	ЗаписатьДанныеДокументаВРегистр();
	
	// В процедуре общего модуля выполняется окончательный расчет данных и заполнение табличных частей
	ПериодРегистрации = НачалоМесяца(Дата);
	Расчет.РассчитатьНачисления(Ссылка, Движения, ОсновныеНачисления, ДополнительныеНачисления, ПериодРегистрации);
	
	// Откатываем транзакцию, отменяя тем самым помещенные ранее движения в регистр, эти записи нужны были только для расчета данных в ТЧ
	ОтменитьТранзакцию();
	
КонецПроцедуры

Процедура ЗаписатьДанныеДокументаВРегистр()
	
	Движения.ОсновныеНачисления.Записывать = Истина;
	Движения.ДополнительныеНачисления.Записывать = Истина;
	
	ПериодРегистрации = НачалоМесяца(Дата);
	
	Для Каждого ТекСтрокаОсновныеНачисления Из ОсновныеНачисления Цикл
		
		Движение = Движения.ОсновныеНачисления.Добавить();
		
		ЗаполнитьЗначенияСвойств(Движение, ТекСтрокаОсновныеНачисления);
		
		Движение.ПериодДействияНачало = ТекСтрокаОсновныеНачисления.ДатаНачала;
		Движение.ПериодДействияКонец = ТекСтрокаОсновныеНачисления.ДатаОкончания;
		Движение.ПериодРегистрации = ПериодРегистрации;
		
	КонецЦикла;

	КонецБазовогоПериодаПремии = КонецМесяца(Дата);
	
	Для Каждого ТекСтрокаДополнительныеНачисления Из ДополнительныеНачисления Цикл
		
		Движение = Движения.ДополнительныеНачисления.Добавить();
				
		ЗаполнитьЗначенияСвойств(Движение, ТекСтрокаДополнительныеНачисления);
		
		Движение.ПериодРегистрации = ПериодРегистрации;
		Движение.БазовыйПериодНачало = ПериодРегистрации;
		Движение.БазовыйПериодКонец = КонецБазовогоПериодаПремии;
		
	КонецЦикла;

	Движения.Записать();
	
КонецПроцедуры