Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.4 kB
1
Indexable
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Дата = НачалоМесяца(Дата);
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	Движения.УчетнаяПолитика.Записывать = Истина;
	
	Движение = Движения.УчетнаяПолитика.Добавить();
	Движение.Период = Дата;
	Движение.МетодСписания = МетодСписания;
	
	Движения.ОстаткиНоменклатуры.Записывать = Истина;
	
	Если МетодСписания = Перечисления.УчетнаяПолитика.ПоСредней Тогда
		
		Движения.ОстаткиНоменклатуры.Записать();
		
		Блокировка = Новый БлокировкаДанных;
		ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
		ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
		Блокировка.Заблокировать();
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
		|	ОстаткиНоменклатурыОстатки.Партия КАК Партия,
		|	ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Количество,
		|	ОстаткиНоменклатурыОстатки.СуммаОстаток КАК Сумма
		|ИЗ
		|	РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментИтогов, ) КАК ОстаткиНоменклатурыОстатки
		|ИТОГИ
		|	СУММА(Количество),
		|	СУММА(Сумма)
		|ПО
		|	Номенклатура";
		
		Запрос.УстановитьПараметр("МоментИтогов", МоментВремени());
		
		РезультатЗапроса = Запрос.Выполнить();
		ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ВыборкаНоменклатура.Следующий() Цикл
			
			Движение = Движения.ОстаткиНоменклатуры.Добавить();
			Движение.Период = Дата;
			ЗаполнитьЗначенияСвойств(Движение, ВыборкаНоменклатура);
			Движение.Партия = Ссылка;
			
			Выборка = ВыборкаНоменклатура.Выбрать();
			Пока Выборка.Следующий() Цикл
				Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
				Движение.Период = Дата;
				ЗаполнитьЗначенияСвойств(Движение, Выборка);
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЕсли;	
	
КонецПроцедуры