Как рассчитать сумму в строке табличной части справочника или документа?
В реальной работе прикладного решения часто возникает необходимость автоматизировать некоторые подсчеты согласно собственному алгоритму. Например, сделать так, чтобы сумма в строке табличной части документа автоматически вычислялась при изменении цены или количества в строке.
Это небольшое вычисление производится в модуле формы в процедуре, выполняющейся на клиенте. Такой процедурой являются обработчики события ПриИзменении полей Цена и Количество табличной части документа.
Итак, сначала нужно создать форму документа, чтобы в ней описать собственный алгоритм вычислений. Затем, открыв палитру свойств полей Цена и Количество табличной части документа, создать для них обработчики события ПриИзменении и внести в них следующий код:
&НаКлиенте При выполнении этого кода в переменную СтрокаТабличнойЧасти помещается объект, содержащий данные текущей строки документа, которую требуется пересчитать. Получив этот объект, можно обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Таким образом, во второй строке процедуры обработчика вычисляется значение колонки Сумма как произведение значений колонок Количество и Цена .
Если процедура расчета суммы может понадобиться сразу для нескольких документов, то полезно разместить эту процедуру в общем модуле, и обращаться к ней из форм документов. Например, в общем модуле РаботаСДокументами поместить процедуру РассчитатьСумму() :
В модуле формы документа вызывать ее из обработчиков события ПриИзменении :
Как рассчитать сумму в строке табличной части справочника или документа?
В реальной работе прикладного решения часто возникает необходимость автоматизировать некоторые подсчеты согласно собственному алгоритму. Например, сделать так, чтобы сумма в строке табличной части документа автоматически вычислялась при изменении цены или количества в строке.
Это небольшое вычисление производится в модуле формы в процедуре, выполняющейся на клиенте. Такой процедурой являются обработчики события ПриИзменении полей Цена и Количество табличной части документа.
Итак, сначала нужно создать форму документа, чтобы в ней описать собственный алгоритм вычислений. Затем, открыв палитру свойств полей Цена и Количество табличной части документа, создать для них обработчики события ПриИзменении и внести в них следующий код:
&НаКлиенте Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
&НаКлиенте Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
При выполнении этого кода в переменную СтрокаТабличнойЧасти помещается объект, содержащий данные текущей строки документа, которую требуется пересчитать. Получив этот объект, можно обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Таким образом, во второй строке процедуры обработчика вычисляется значение колонки Сумма как произведение значений колонок Количество и Цена.
Если процедура расчета суммы может понадобиться сразу для нескольких документов, то полезно разместить эту процедуру в общем модуле, и обращаться к ней из форм документов. Например, в общем модуле РаботаСДокументами поместить процедуру РассчитатьСумму():
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
В модуле формы документа вызывать ее из обработчиков события ПриИзменении:
&НаКлиенте Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
Как посчитать сумму в «1С»?
В короткой статье мы расскажем, как в «1С» посчитать сумму чисел быстрее, чем на калькуляторе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.
В короткой статье мы расскажем, как в «1С» посчитать сумму чисел быстрее, чем на калькуляторе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.
Этот лайфхак «1С» поможет посчитать сумму чисел быстрее, чем на калькуляторе. В нашем примере мы зашли в оборотно-сальдовую ведомость раздела «Отчеты – Оборотно-сальдовая ведомость». Выделим ячейки, которые хотим суммировать. Программа сложила нужные значения, итоговая сумма отображается в правом верхнем углу в окне ∑ (рис.1).
Рис.1. Сложение чисел без калькулятора в «1С»
Этот прием вы можете использовать в любых отчетах и документах с любыми числовыми колонками и табличными частями (сумма, количество и т.д.).
Помимо этого, вы можете выделить не все документы, а только нужные при помощи следующего способа:
- зажмите на клавиатуре клавишу Ctrl;
- левой кнопкой мыши выделите (или отмените выделение) нужных строк. Отметим, что выделять строки в этом случае следует только в пределах одной колонки, которую вам требуется суммировать.
Подведем итоги
В короткой статье мы рассказали о хитрости в «1С», о которой мало кто знает и использует в работе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.
Как посчитать сумму в 1с
В любых стандартных отчетах программы можно просуммировать суммы в ячейках отчета. Поле для суммирования расположено в правой верхней части формы и обозначено знаком суммы (рис. 1).
Удерживая левую клавишу мыши, выделите диапазон ячеек – автоматически просуммируются суммы в ячейках выделенного диапазона (рис. 1).
Если необходимо просуммировать суммы в отдельных ячейках, отмечайте ячейки для суммирования, удерживая клавишу Ctrl (рис. 2).
Подпишитесь на новости
Не пропускайте последние новости — подпишитесь
на бесплатную рассылку сайта:
- десятки экспертов ежедневно мониторят изменения законодательства и судебную практику;
- рассылка бесплатная, независимо от наличия договора 1С:ИТС;
- ваш e-mail не передается третьим лицам;
Как рассчитать сумму в 1С?
Многим разработчикам 1С полезно уметь автоматизировать определенные процессы, подстраивая их под требования заказчика. Например, можно настроить программу таким образом, чтобы сумма в таблицах вычислялась автоматически при редактировании данных в других блоках (количество, цена за единицу и т.д.).
Чтобы сделать что-то похожее, необходимо произвести несколько простых действий. В частности, открыть конфигуратор, открыть форму нужного документа.
Далее нужно создать обработчик события «ПриИзменении» для колонок «Цена» и «Количество». Это можно сделать двумя способами.
- Правой кнопкой мыши вызвать меню колонки и выбрать обработчик во вкладке «События»:
- Создать обработчик в свойствах (нажать на лупу возле обработчика «ПриИзменении»)
После этого нужно выбрать подходящую директиву выполнения обработки. В данном случае «На клиенте»:
Откроется модуль формы с созданным обработчиком:
Далее требуется вписать следующий программный код:
То же самое нужно сделать и для колонки «Цена».
В переменную «СтрокаТабличнойЧасти» помещается текущая выделенная строка в табличной части (в которой меняется количество или цена товара). Для подсчета суммы необходимо обратиться к нужным реквизитам объекта («Количество» и «Цена») и перемножить их значения. Результат поместить в реквизит «Сумма».
Если данный процесс автоматического расчета нужен сразу для нескольких документов, можно внести вышеуказанный код в общий модуль. Например, процедуру «РассчитатьСумму» поместить в модуль «РаботаСДокументами». Если в модуле будут только функции, выполняемые на клиенте (обработки событий, связанные только с элементами формы), то в свойствах общего модуля нужно отметить «Клиент», чтобы к модулю можно было обратиться из функций с директивой «&НаКлиенте».
После имени процедуры «РассчитатьСумму» необходимо добавить «Экспорт», чтобы процедуру можно было вызвать из формы документа.
Данный код выглядит так:
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
Затем в модуле формы нужного документа следует создать обработчик события под названием «ПриИзменении» для колонок «Количество» и «Цена», и вызвать процедуру «РассчитатьСумму» из общего модуля.
Как рассчитать сумму табличной части документа 1с 8.3
Данная небольшая статья будет полезна тем кто только начал изучать 1С программирование. В ней я хочу рассказать о том как можно рассчитать сумму в табличной части документа по всем строкам и вывести её в отдельный реквизит на форме который будет называться «Сумма документа». На самом деле способов подсчета суммы ТЧ очень много. Можно даже вывести итог по колонке цена без написания кода.
Рекомендую прочитать следующие статьи, они будут очень полезны как начинающим так и опытным программистам и администраторам 1С.
Как рассчитать сумму всех строкам табличной части
Допустим что у нас есть документ с табличной частью «Товары». И нам нужно знать итоговую сумму всех позиций. Для этого мы создали реквизит «Сумма документа» и хотим видеть там итог.
Для этого нужно создать процедуру и написать вот такой код.
&НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) // Вставить содержимое обработчика. Объект.СуммаДокумента = 0; Для каждого СтрокаДокумента Из Объект.Товары Цикл Объект.СуммаДокумента = Объект.СуммаДокумента + (СтрокаДокумента.Количество * СтрокаДокумента.Цена); КонецЦикла; КонецПроцедуры
Немного поясню код.
Объект.СуммаДокумента = 0; — Обнуляем значение.
СтрокаДокумента — Объявляем переменную.
Объект.Товары — Табличная часть нашего документа.
Объект.СуммаДокумента = Объект.СуммаДокумента + (СтрокаДокумента.Количество * СтрокаДокумента.Цена); — высчитываем итоговую сумму по каждой строке ТЧ и складываем.
Процедуру создаем в модуле формы.
После этого открываем документ и после нажатия «Записать» сумма документа посчитается автоматически.
Если добавить позиции в табличную часть или удалить то после сохранения сумма также пересчитается.
На мой взгляд это самый простой и самый оптимальный способ решения поставленной задачи с вычислением суммы табличной части документа.
Если вы считаете по другому обязательно напишите!
Раздел: 1С Программирование Метки: Сумма ТЧ 1С
Сумма ТЧ 1С : 13 комментариев
- Кирилл 15.02.2022 А как рассчитать сумма табличной части в печатной форме, т.е в макете есть поле ИТОГО и в него должна подставляться сумма табличной части.
- admin Автор записи 15.02.2022 Если в самом документе нет суммы то вычислять в запросе СУММА(Документ.ТабличнаяЧасть.Цена) Как Сумма
Как посчитать сумму в 1с
Конфигурация БП.
Создаю программно документ:
=================================================
НовыйДокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
=================================================
Заполняю все поля документа. А как расчитать РассчитатьСуммуТабЧасти (). Откуда и как вызваь этот метод? И что ему передать?
СуммаТовара = НовыйДокумент.Товары.Итог(«Сумма»);
Извиняюсь, сумму по строкам
ну вот я тебе написал вроде б верный способ как получить итог табличной части по любому реквизиту.
вместо сумма пиши любой реквизит
(0) при обходе строк документа
(0) в конфе столько документов с итоговыми суммами, неужели так тяжело посмотреть?
В строке документа есть цена колицество, как сумму расчитать??
Не простым перемножением
Для Каждого СтрокаТовары Из НовыйДокумент.Товары Цикл
РассчитатьСуммуТабЧасти(СтрокаТовары);
КонецЦикла;
В модуле формы документа нашел такие вызовы:
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
А как их вызвать для документа вызванного программно??
Для Каждого СтрокаТовары Из НовыйДокумент.Товары Цикл
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЦикла;