Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
6.1 kB
0
Indexable
Never
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	// ДВИЖЕНИЯ ПО РЕГИСТРУ ОСТАТКИ НОМЕНКЛАТУРЫ
	
	Движения.ОстаткиНоменклатуры.Записывать = Истина;
	Движения.ОстаткиНоменклатуры.Записать();
	
	// Установка блокировки данных в регистре Остатки номенклатуры по записям с истекшим сроком годности
	Блокировка = Новый БлокировкаДанных;	
	ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");	
	ЭлементБлокировки.УстановитьЗначение("СрокГодности", Новый Диапазон(, Дата));
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	Блокировка.Заблокировать();         
	
	// Получение данных для формирования движений
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
	|	ОстаткиНоменклатурыОстатки.СрокГодности КАК СрокГодности,
	|	ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Количество,
	|	ОстаткиНоменклатурыОстатки.СуммаОстаток КАК Сумма
	|ИЗ
	|	РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментВремени, СрокГодности < &Дата) КАК ОстаткиНоменклатурыОстатки";
	
	Запрос.УстановитьПараметр("Дата", Дата);
	Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
	
	// Заполнение набора записей регистра
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
		ЗаполнитьЗначенияСвойств(Движение, Выборка);
		Движение.Период = Дата;
	КонецЦикла;
	
	
	//ДВИЖЕНИЯ ПО РЕГИСТРУ ЭКСПЛУАТИРУЕМОЕ ОБОРУДОВАНИЕ
	
	Движения.ЭксплуатируемоеОборудование.Записывать = Истина;
	Движения.ЭксплуатируемоеОборудование.Записать();
	
	// Установка блокировки данных в регистре Эксплуатируемое оборудование по записям 
	// с истекшим сроком годности и записям с истекшим сроком эксплуатации
	Блокировка = Новый БлокировкаДанных;	
	
	ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ЭксплуатируемоеОборудование");
	ЭлементБлокировки.УстановитьЗначение("СрокГодности", Новый Диапазон(, Дата));
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	
	ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ЭксплуатируемоеОборудование");
	ЭлементБлокировки.УстановитьЗначение("СрокЭксплуатации", Новый Диапазон(, Дата));
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	
	Блокировка.Заблокировать();         
	
	// Получение данных для формирования движений
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ЭксплуатируемоеОборудованиеОстатки.Номенклатура КАК Номенклатура,
	|	ЭксплуатируемоеОборудованиеОстатки.СрокГодности КАК СрокГодности,
	|	ЭксплуатируемоеОборудованиеОстатки.СрокЭксплуатации КАК СрокЭксплуатации,
	|	ЭксплуатируемоеОборудованиеОстатки.КоличествоОстаток КАК Количество,
	|	ЭксплуатируемоеОборудованиеОстатки.СуммаОстаток КАК Сумма
	|ИЗ
	|	РегистрНакопления.ЭксплуатируемоеОборудование.Остатки(
	|			&МоментВремени,
	|			СрокГодности < &Дата
	|				ИЛИ СрокЭксплуатации < &Дата) КАК ЭксплуатируемоеОборудованиеОстатки";
	
	Запрос.УстановитьПараметр("Дата", Дата);
	Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
	
	// Заполнение набора записей регистра
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Движение = Движения.ЭксплуатируемоеОборудование.ДобавитьРасход();
		ЗаполнитьЗначенияСвойств(Движение, Выборка);
		Движение.Период = Дата;
	КонецЦикла;
	
КонецПроцедуры