Каталог решений - Общий модуль расчета суммы

Общий модуль расчета суммы

Общий модуль расчета суммы

В наличии

О том, как рассчитать сумму по строкам табличной части документа, рассказывают на всех курсах по 1С программированию, это одна из первых тем, в интернете на эту тему также очень много информации. В своих статьях я и рассказываю про самые элементарные вещи, но этот вопрос пропустил, так как думал, что это умеют делать все.

Категория:

Описание

О том, как рассчитать сумму по строкам табличной части документа, рассказывают на всех курсах по 1С программированию, это одна из первых тем, в интернете на эту тему также очень много информации. В своих статьях я и рассказываю про самые элементарные вещи, но этот вопрос пропустил, так как думал, что это умеют делать все. Но недавно к одной из моих статей написали комментарий, в котором спросили, как не просто настроить автоматический подсчет суммы по строкам, а сделать это с помощью общего модуля, так как в конфигурации может быть много документов, в которых необходимо это делать, можно, конечно, написать в каждом документе (модуле документа) один и тот же код, но это не совсем правильно и профессионально.

 

Расчет суммы строк табличной части документа с помощью общего модуля

Давайте для начала посмотрим, как можно настроить автоматический расчет суммы по строкам табличной части. Для примера возьму вот такой документ поступления, у него есть ТЧ, в которой отображается «Количество» и «Цена» нам нужно, чтобы при изменении одного из этих полей производился перерасчет суммы.

Для этого открываем в конфигураторе форму документа, выделяем поле «Количество» и создаем обработку события «При изменении».

В созданной процедуре пишем вот такой код.

СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
 

То же самое делаем и для поля «Цена».

Все, теперь в этом документе при изменении значений какого-либо поля «Количество» или «Цена» автоматически будет происходить расчет суммы.

Как правило, производить расчет суммы нужно не в одном документе, а в нескольких, поэтому для лучше сделать общий модуль с данной процедурой и при необходимости просто вызывать её из нужного места.

Для этого в дереве конфигурации создаем общий модуль, в котором создаем процедуру для расчета суммы по строкам табличной части.

Процедура АвтоСумма(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцеду
 

Не забываем открыть свойства общего модуля и отметить два пункта «Клиент» и «Сервер».

 

 

Далее в модуле формы меняем эту строчку.

СтрокаТабличнойЧасти.Сумма=СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

На эту.

ОбщийМодуль.АвтоСумма(СтрокаТабличнойЧасти);
 

То же самое делаем и для события при изменении поля «Цена».

Вот в принципе и все, общий модуль для расчета суммы строк табличной части готов, его нужно только вызывать из нужного места.

Модуль

Процедура ИтогСуммы(СтрокаТЧ)Экспорт
СтрокаТЧ.Всего=СтрокаТЧ.Цена*СтрокаТЧ.Количество;    
КонецПроцедуры

Документ


&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
	СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
	РассчетСуммы.ИтогСуммы(СтрокаТЧ);
КонецПроцедуры

&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
	СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
	РассчетСуммы.ИтогСуммы(СтрокаТЧ);
КонецПроцедуры

&НаКлиенте
Процедура МатериалыМатериалыПриИзменении(Элемент)
СтрокаТЧ=Элементы.Материалы.ТекущиеДанные;
СтрокаТЧ.Цена= ПолучитьЦенуКомплектующих(СтрокаТЧ.Материалы)
КонецПроцедуры


&НаСервере
Функция ПолучитьЦенуКомплектующих(Комплектующие)
	Возврат Комплектующие.Цена
КонецФункции // ПолучитьЦенуКомплектующих()
 &НаСервере
Функция ПолучитьЦенуМатериалов(Материалы)
	Возврат Материалы.Цена
КонецФункции // ПолучитьЦенуМатериалов()

 

has been added to your cart:
Оформление заказа