О том, как рассчитать сумму по строкам табличной части документа, рассказывают на всех курсах по 1С программированию, это одна из первых тем, в интернете на эту тему также очень много информации. В своих статьях я и рассказываю про самые элементарные вещи, но этот вопрос пропустил, так как думал, что это умеют делать все. Но недавно к одной из моих статей написали комментарий, в котором спросили, как не просто настроить автоматический подсчет суммы по строкам, а сделать это с помощью общего модуля, так как в конфигурации может быть много документов, в которых необходимо это делать, можно, конечно, написать в каждом документе (модуле документа) один и тот же код, но это не совсем правильно и профессионально.
Расчет суммы строк табличной части документа с помощью общего модуля
Давайте для начала посмотрим, как можно настроить автоматический расчет суммы по строкам табличной части. Для примера возьму вот такой документ поступления, у него есть ТЧ, в которой отображается «Количество» и «Цена» нам нужно, чтобы при изменении одного из этих полей производился перерасчет суммы.
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
То же самое делаем и для поля «Цена».
Для этого в дереве конфигурации создаем общий модуль, в котором создаем процедуру для расчета суммы по строкам табличной части.
Процедура АвтоСумма(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцеду
Не забываем открыть свойства общего модуля и отметить два пункта «Клиент» и «Сервер».
Далее в модуле формы меняем эту строчку.
СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
На эту.
ОбщийМодуль.АвтоСумма(СтрокаТабличнойЧасти);
То же самое делаем и для события при изменении поля «Цена».
Процедура ИтогСуммы(СтрокаТЧ)Экспорт
СтрокаТЧ.Всего=СтрокаТЧ.Цена*СтрокаТЧ.Количество;
КонецПроцедуры
Документ
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
РассчетСуммы.ИтогСуммы(СтрокаТЧ);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
РассчетСуммы.ИтогСуммы(СтрокаТЧ);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыМатериалыПриИзменении(Элемент)
СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
СтрокаТЧ.Цена= ПолучитьЦенуКомплектующих(СтрокаТЧ.Материалы)
КонецПроцедуры
&НаСервере
Функция ПолучитьЦенуКомплектующих(Комплектующие)
Возврат Комплектующие.Цена
КонецФункции // ПолучитьЦенуКомплектующих()
&НаСервере
Функция ПолучитьЦенуМатериалов(Материалы)
Возврат Материалы.Цена
КонецФункции // ПолучитьЦенуМатериалов()