&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
СтрокаТЧ = Элементы.Материалы.ТекущиеДанные;
Если СтрокаТЧ = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТЧ.Материал) Тогда
СтрокаТЧ.Цена = ПолучитьЦенуМатериала(СтрокаТЧ.Материал);
Иначе
СтрокаТЧ.Цена = 0;
КонецЕсли;
ПересчитатьСтрокуМатериалов(СтрокаТЧ);
ПересчитатьИтоговуюСумму();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТЧ = Элементы.Материалы.ТекущиеДанные;
Если СтрокаТЧ = Неопределено Тогда
Возврат;
КонецЕсли;
ПересчитатьСтрокуМатериалов(СтрокаТЧ);
ПересчитатьИтоговуюСумму();
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСтрокуМатериалов(СтрокаТЧ)
СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена;
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьИтоговуюСумму()
Объект.ИтоговаяСумма = 0;
Для Каждого СтрокаМатериалов Из Объект.Материалы Цикл
Объект.ИтоговаяСумма = Объект.ИтоговаяСумма + СтрокаМатериалов.Сумма;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЦенуМатериала(Материал)
Если Не ЗначениеЗаполнено(Материал) Тогда
Возврат 0;
КонецЕсли;
Возврат Материал.ЦенаЗакупки;
КонецФункции