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

07.04.23

Разработка - Универсальные функции

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

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

 

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

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

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

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

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

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

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

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

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

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

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

 

 

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

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

На эту.

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

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

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

Модуль

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


Документ


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

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

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


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

 

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    3014    Abysswalker    7    

43

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5851    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    47397    dimanich70    83    

167

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7099    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    58939    atdonya    31    

69

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8836    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tolyan_ekb 80 07.04.23 09:58 Сейчас в теме
Немного не понял что это за статья. Начинающий учит начинающих как писать с орфографическими ошибками ( Рассчет суммы) и некорректными именами функций (АвтоСумма)?
2. so-lf 2 07.04.23 21:10 Сейчас в теме
Ну хз, расчет суммы прост, я бы не стал так заморачиваться с выводом в функции в общий модуль
3. пользователь 14.04.23 09:36
Сообщение было скрыто модератором.
...
4. пользователь 14.04.23 09:36
Сообщение было скрыто модератором.
...
5. Lyns_owner 356 18.04.23 17:19 Сейчас в теме
Гениальная статья! Моё почтение.
6. VKuser254705251 07.06.23 13:22 Сейчас в теме
Прекрасная статья, спасибо.
Прикрепленные файлы:
ERD, диаграмма и ПЗ.pdf
Инструкция по тестированию.docx
7. YA_1051552270 19.06.23 20:39 Сейчас в теме
Я делаю общий модуль расчёта суммы таким образом.
Процедура РассчётСуммы(ТекСтрока) Экспорт
    ТекСтрока.Сумма = ТекСтрока.Цена * ТекСтрока.Количество; //Подсчет итоговой стоимости за товар
КонецПроцедуры 
Для отправки сообщения требуется регистрация/авторизация