Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
3.2 kB
1
Indexable
Never
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	Движения.Бюджет.Записывать = Истина;
	
	ДоляБюджетаПоМесяцам = Новый Соответствие;
	НачалоТекущегоПериода = НачалоПериода;
	ДнейЗаВесьПериод = (КонецПериода - НачалоПериода) / 86400 + 1;
	
	Пока НачалоТекущегоПериода < КонецПериода Цикл
		
		ОкончаниеТекущегоПериода = Мин(КонецМесяца(НачалоТекущегоПериода), КонецДня(КонецПериода));
		ДнейВТекущемМесяце = (ОкончаниеТекущегоПериода + 1 - НачалоТекущегоПериода) / 86400; 
		ДоляБюджетаПоМесяцам.Вставить(НачалоМесяца(НачалоТекущегоПериода), Окр(ДнейВТекущемМесяце / ДнейЗаВесьПериод, 2));
		
		НачалоТекущегоПериода = ОкончаниеТекущегоПериода + 1;
		
	КонецЦикла;;	
	
	Для Каждого СтрокаТаблицы Из СписокСтатей Цикл
		
		СуммаВРегистре = 0;
		ПревышениеВРегистре = 0;
		
		Для Каждого ДоляБюджетаМесяца Из ДоляБюджетаПоМесяцам Цикл
			
			Движение = Движения.Бюджет.Добавить();
			Движение.Период = ДоляБюджетаМесяца.Ключ;
			Движение.Подразделение = Подразделение;
			Движение.СтатьяЗатрат = СтрокаТаблицы.СтатьяЗатрат;
			Движение.План = ДоляБюджетаМесяца.Значение * СтрокаТаблицы.Сумма;
			Движение.ДопустимоеПревышение = ДоляБюджетаМесяца.Значение * СтрокаТаблицы.Превышение;
			
			СуммаВРегистре = СуммаВРегистре + Движение.План;
			ПревышениеВРегистре = ПревышениеВРегистре + Движение.ДопустимоеПревышение;
			
		КонецЦикла;
		
		РасхождениеСумма = СтрокаТаблицы.Сумма - СуммаВРегистре;
		Если РасхождениеСумма <> 0 Тогда
			Движение.План = Движение.План + РасхождениеСумма;	
		КонецЕсли;
		
		РасхождениеПревышение = СтрокаТаблицы.Превышение - ПревышениеВРегистре;
		Если РасхождениеПревышение <> 0 Тогда
			Движение.ДопустимоеПревышение = Движение.ДопустимоеПревышение + РасхождениеПревышение;	
		КонецЕсли;
		
	КонецЦикла;	
	
КонецПроцедуры