1с как найти сумму документа

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

Это небольшое вычисление производится в модуле формы в процедуре, выполняющейся на клиенте. Такой процедурой являются обработчики события ПриИзменении полей Цена и Количество табличной части документа.

Итак, сначала нужно создать форму документа, чтобы в ней описать собственный алгоритм вычислений. Затем, открыв палитру свойств полей Цена и Количество табличной части документа, создать для них обработчики события ПриИзменении и внести в них следующий код:

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

При выполнении этого кода в переменную СтрокаТабличнойЧасти помещается объект, содержащий данные текущей строки документа, которую требуется пересчитать. Получив этот объект, можно обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Таким образом, во второй строке процедуры обработчика вычисляется значение колонки Сумма как произведение значений колонок Количество и Цена.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сумма ТЧ 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для начала создадим новую конфигурацию и откроем ее:

Чистая конфигурация 1С:Предприятие

Предварительно подготовимся и добавим справочник “Номенклатура” в Справочнике:

Добавим справочник Номенклатура

Таким же образом добавляем “Приходную накладную”, но уже в разделе документы:

Создаем приходную накладную

На вкладке “Данные”, в “Приходной накладной”, “Табличная часть” добавляем “Табличную часть” – “Материалы” и “Реквизиты табличной части”: материал, количество, цена, сумма:

табличная часть приходной накладной

При чем  тип Материала у нас  “СправочникСсылка.Номенклатура”, мы делали его ранее, а  количество, цена, сумма у нас “Число” с длинной 10, с точностью 2, неотрицательное.

Чтобы было где писать код, нам нужно добавить “Форму Документа”. Нажимаем правой кнопкой мыши на формы и добавляем:

Добавляем форму документа

Нажимаем на “Готово”

Конструктор форм

Мы хотим, чтобы у нас считалась сумма во всех документах, поэтому переключимся и добавим в дереве конфигурации на вкладке “Общие” – “Общие модули” новый модуль. Назовем его “СуммаПоДокументу”, он будет у нас “Клиентский”

Общий модуль

И в окне пишем код:

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

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

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

Сумма по документу

Теперь идем в “Документы” – “ПриходнаяНакладная” – Формы – ФормаДокумента, в окне формы находим “МатериалыКоличество”, открываем “Свойства” – “События” – при изменении и нажимем на “лупу”. Соглашаемся “Создать на клиенте”, нажимем “ОК”

Материал, количество

И пишем код:

&НаКлиенте

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

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

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

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

Тоже самое проделываем с “МатериалыСумма”, вставляем туда код:

&НаКлиенте

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

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

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

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

Должно получится вот так:

Код для суммы по документу

Сохраняем через бочонок. Запускаем. Добавляем “Номенклатуру” – Один админ – Добавляем “Приходную накладную” – ставим количество и сумму и получаем:

Ура, считает сумму

Поделиться ссылкой:

По просьбе бухгалтеров пишем шпаргалку об практичном способе суммирования документов в 1С.

Рассмотрим все на примере. Нужно вывести итоговую сумму всех реализаций в 1С за определенный период. Это возможно.

Откроем журнал Реализаций и установим необходимый период.

Следующим шагом выделяем любой документ обязательно в столбце Сумма.

Потом нажимаем комбинацию клавиш Ctrl+A, чтобы выделить все элементы.

Теперь нужно нажать кнопку М в верхней панели программы 1С.

И следом жмем на ярлык калькулятора, слева.

Результат выведен.

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

Приятной работы!

Уже более 10 000 компаний работают
в облачной 1С от 42Clouds

— Консультация по 1С Бесплатно!

— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте

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

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

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

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

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

&НаКлиенте

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте

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

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

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

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

&НаКлиенте

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

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

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

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

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

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти диагонали прямоугольника по двум сторонам
  • Самсунг а70 как найти корзину
  • Among us как найти комнату
  • Как найти площадь одной грани прямоугольного параллелепипеда
  • Как найти юристу работу высокооплачиваемую

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии