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