Работаем удаленно и с выездом
Наши филиалыМоскваЯрославль
АВТОМАТИЗАЦИЯ, ВНЕДРЕНИЕ, СОПРОВОЖДЕНИЕ

Как рассчитать сумму в 1С?

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

Чтобы сделать что-то похожее, необходимо произвести несколько простых действий. В частности, открыть конфигуратор, открыть форму нужного документа.

Как рассчитать сумму в 1С?

Как рассчитать сумму в 1С?

Далее нужно создать обработчик события «ПриИзменении» для колонок «Цена» и «Количество». Это можно сделать двумя способами.

  1. Правой кнопкой мыши вызвать меню колонки и выбрать обработчик <ПриИзменении> во вкладке «События»:

Как рассчитать сумму в 1С?

  1. Создать обработчик в свойствах (нажать на лупу возле обработчика «ПриИзменении»)

Как рассчитать сумму в 1С?

После этого нужно выбрать подходящую директиву выполнения обработки. В данном случае «На клиенте»:

Как рассчитать сумму в 1С?

Откроется модуль формы с созданным обработчиком:

Как рассчитать сумму в 1С?

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

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

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

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

КонецПроцедуры

То же самое нужно сделать и для колонки «Цена».

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

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

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

КонецПроцедуры

В переменную «СтрокаТабличнойЧасти» помещается текущая выделенная строка в табличной части (в которой меняется количество или цена товара). Для подсчета суммы необходимо обратиться к нужным реквизитам объекта («Количество» и «Цена») и перемножить их значения. Результат поместить в реквизит «Сумма».

Если данный процесс автоматического расчета нужен сразу для нескольких документов, можно внести вышеуказанный код в общий модуль. Например, процедуру «РассчитатьСумму» поместить в модуль «РаботаСДокументами». Если в модуле будут только функции, выполняемые на клиенте (обработки событий, связанные только с элементами формы), то в свойствах общего модуля нужно отметить «Клиент», чтобы к модулю можно было обратиться из функций с директивой «&НаКлиенте».

Как рассчитать сумму в 1С?

После имени процедуры «РассчитатьСумму» необходимо добавить «Экспорт», чтобы процедуру можно было вызвать из формы документа.

Данный код выглядит так:

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

       СтрокаТабличнойЧасти.Сумма =

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

КонецПроцедуры

Затем в модуле формы нужного документа следует создать обработчик события под названием «ПриИзменении» для колонок «Количество» и «Цена», и вызвать процедуру «РассчитатьСумму» из общего модуля.

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

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

        РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

КонецПроцедуры

&НаКлиенте

Процедура ТоварыЦенаПриИзменении(Элемент)

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

       РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); 

КонецПроцедуры

Теперь необходимый процесс успешно автоматизирован.

Получить помощь в программировании 1С