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