Сумма ТЧ 1С

Автор: | 13.04.2021

Как рассчитать сумму табличной части документа 1с 8.3

Данная небольшая статья будет полезна тем кто только начал изучать 1С программирование. В ней я хочу рассказать о том как можно рассчитать сумму в табличной части документа по всем строкам и вывести её в отдельный реквизит на форме который будет называться «Сумма документа». На самом деле способов подсчета суммы ТЧ очень много. Можно даже вывести итог по колонке цена без написания кода.

Рекомендую прочитать следующие статьи, они будут очень полезны как начинающим так и опытным программистам и администраторам 1С.

Сортировка номенклатуры в любом типовом отчете

Как включить кнопку «Подробнее» в окне ошибки

Что делать если не отображается элемент на форме

Как узнать что было изменено в типовой конфигурации 1С

Как избавиться от ошибки (COMOбъект)

Как рассчитать сумму всех строкам табличной части

Допустим что у нас есть документ с табличной частью «Товары». И нам нужно знать итоговую сумму всех позиций. Для этого мы создали реквизит «Сумма документа» и хотим видеть там итог.

Сумма ТЧ 1С

Для этого нужно создать процедуру и написать вот такой код.

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
// Вставить содержимое обработчика.
Объект.СуммаДокумента = 0;
Для каждого СтрокаДокумента Из Объект.Товары Цикл
Объект.СуммаДокумента = Объект.СуммаДокумента + (СтрокаДокумента.Количество * СтрокаДокумента.Цена);
КонецЦикла;
КонецПроцедуры

Немного поясню код.

Объект.СуммаДокумента = 0; — Обнуляем значение.

СтрокаДокумента — Объявляем переменную.

Объект.Товары — Табличная часть нашего документа.

Объект.СуммаДокумента = Объект.СуммаДокумента + (СтрокаДокумента.Количество * СтрокаДокумента.Цена); — высчитываем итоговую сумму по каждой строке ТЧ и складываем.

Процедуру создаем в модуле формы.

Лучший способ расчета суммы табличной части документа в 1с 8.3

После этого открываем документ и после нажатия «Записать» сумма документа посчитается автоматически.

Как подставить сумму табличной части в реквизит документа

Если добавить позиции в табличную часть или удалить то после сохранения сумма также пересчитается.

Как создать реквизит в который подставить сумму ТЧ документа

На мой взгляд это самый простой и самый оптимальный способ решения поставленной задачи с вычислением суммы табличной части документа.

Если вы считаете по другому обязательно напишите!

Сумма ТЧ 1С: 13 комментариев

  1. Кирилл

    А как рассчитать сумма табличной части в печатной форме, т.е в макете есть поле ИТОГО и в него должна подставляться сумма табличной части.

    1. admin Автор записи

      Если в самом документе нет суммы то вычислять в запросе СУММА(Документ.ТабличнаяЧасть.Цена) Как Сумма

  2. Иван

    Здравствуйте! Есть несколько документов с ТЧ в которых есть цена, количество и сумма, как написать один общий модуль для расчета суммы?

  3. admin Автор записи

    Вот тут можете посмотреть как создать общий модуль для этих целей

  4. Артем

    Здравствуйте, как посчитать итоги суммы в табличной части если она заполнена ссылками на документы. Допустим счет на оплату, где сумма документа собирается из документов актов выполненных работ внесенных в табличную часть счета.

  5. Вячеслав

    я добавил расчет общей Суммы в обработчики ПриИзменении цены и количества и тогда общая сумма считается сразу без нажатия Записать или провести
    &НаКлиенте
    Процедура ТоварыКоличествоПриИзменении(Элемент)
    Товары = Элементы.Товары.ТекущиеДанные;
    Товары.Сумма = Товары.Цена*Товары.Количество;
    Объект.СуммаДокумента = Объект.Товары.Итог(«Сумма»); // сюда добавил расчет Общей суммы
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыЦенаПриИзменении(Элемент)
    Товары = Элементы.Товары.ТекущиеДанные;
    Товары.Сумма = Товары.Цена*Товары.Количество;
    Объект.СуммаДокумента = Объект.Товары.Итог(«Сумма»);
    КонецПроцедуры

    1. admin Автор записи

      Ну да все верно меняется цена или количество и выполняется процедура.

    2. Вячеслав

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

      &НаКлиенте
      Процедура СуммаДокументаПриИзменении(Элемент)
      Объект.СуммаДокумента = Объект.Товары.Итог(«Сумма»);
      КонецПроцедуры

  6. Вячеслав

    я добавил расчет общей Суммы в обработчики ПриИзменении цены и количества и тогда общая сумма считается сразу без нажатия Записать или провести
    &НаКлиенте
    Процедура ТоварыКоличествоПриИзменении(Элемент)
    Товары = Элементы.Товары.ТекущиеДанные;
    Товары.Сумма = Товары.Цена*Товары.Количество;
    Объект.СуммаДокумента = Объект.Товары.Итог(«Сумма»); // сюда добавил расчет Общей суммы
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыЦенаПриИзменении(Элемент)
    Товары = Элементы.Товары.ТекущиеДанные;
    Товары.Сумма = Товары.Цена*Товары.Количество;
    Объект.СуммаДокумента = Объект.Товары.Итог(«Сумма»);
    КонецПроцедуры

    1. admin Автор записи

      Все проверенно и должно работать смотрите ошибку у себя или скиньте код

  7. Михаил

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *