Найти в Дзене

Как просуммировать строки в 1с

Суммирование строк в 1С может выполняться различными способами в зависимости от контекста: суммирование значений в табличной части документа, суммирование данных в запросе, суммирование значений в цикле и т.д. Рассмотрим наиболее распространенные сценарии. Этот способ используется, когда необходимо просуммировать значения определенной колонки в табличной части документа (например, "Количество" или "Сумма"). // Пример выражения для поля вычисления (например, для колонки "Сумма" табличной части "Товары") Итог(Товары.Сумма) Программный код в обработчике события "ПриИзменении" колонки табличной части: &НаСервере Процедура ТоварыКоличествоПриИзменении(Элемент) //Получаем текущий объект (документ) Объект = Элемент.Родитель; //Переменная для хранения суммы Сумма = 0; //Обходим строки табличной части Для Каждого СтрокаТЧ Из Объект.Товары Цикл //Прибавляем значение поля "Количество" к сумме Сумма = Сумма + СтрокаТЧ.Количество; КонецЦикла; //Присваиваем вычисленную сумму реквизиту формы Объект.О
Оглавление

Суммирование строк в 1С может выполняться различными способами в зависимости от контекста: суммирование значений в табличной части документа, суммирование данных в запросе, суммирование значений в цикле и т.д. Рассмотрим наиболее распространенные сценарии.

1. Суммирование значений в табличной части документа:

Этот способ используется, когда необходимо просуммировать значения определенной колонки в табличной части документа (например, "Количество" или "Сумма").

1.1. В форме документа:

  • Использование элемента управления "Поле вычисления":Добавьте на форму документа элемент управления "Поле вычисления".
    В свойстве "Выражение" укажите функцию Итог() для табличной части, указав имя колонки, которую нужно просуммировать.

// Пример выражения для поля вычисления (например, для колонки "Сумма" табличной части "Товары")

Итог(Товары.Сумма)

Программный код в обработчике события "ПриИзменении" колонки табличной части:

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

&НаСервере

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

//Получаем текущий объект (документ)

Объект = Элемент.Родитель;

//Переменная для хранения суммы

Сумма = 0;

//Обходим строки табличной части

Для Каждого СтрокаТЧ Из Объект.Товары Цикл

//Прибавляем значение поля "Количество" к сумме

Сумма = Сумма + СтрокаТЧ.Количество;

КонецЦикла;

//Присваиваем вычисленную сумму реквизиту формы

Объект.ОбщаяСумма = Сумма;

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

1.2. При записи документа:

  • Использование программного кода в обработчике события "ПередЗаписью" или "ПриЗаписи":В обработчике события получите табличную часть, просуммируйте значения в цикле и сохраните результат в реквизите документа.
    &НаСервере

Процедура ПередЗаписью(Отказ, РежимЗаписи)

//Переменная для хранения суммы

Сумма = 0;

//Обходим строки табличной части

Для Каждого СтрокаТЧ Из Объект.Товары Цикл

//Прибавляем значение поля "Количество" к сумме

Сумма = Сумма + СтрокаТЧ.Количество;

КонецЦикла;

//Присваиваем вычисленную сумму реквизиту документа

Объект.ОбщаяСумма = Сумма;

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

2. Суммирование данных в запросе:

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

  • Использование функции СУММА() в запросе:

// Пример запроса для суммирования продаж по товарам

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Товары.Наименование КАК НаименованиеТовара,

| СУММА(Продажи.Количество) КАК ОбщееКоличество

|ИЗ

| Справочник.Товары КАК Товары

| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Продажи

| ПО Товары.Ссылка = Продажи.Номенклатура

|ГДЕ

| Продажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

|

|СГРУППИРОВАТЬ ПО

| Товары.Наименование

|

|УПОРЯДОЧИТЬ ПО

| ОбщееКоличество УБЫВ";

Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала));

Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ДатаКонца));

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

//Обработка результатов запроса

Пока Выборка.Следующий() Цикл

Сообщить("Товар: " + Выборка.НаименованиеТовара + ", Общее количество: " + Выборка.ОбщееКоличество);

КонецЦикла;

3. Суммирование значений в цикле:

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

// Пример суммирования значений в цикле

Сумма = 0;

Для i = 1 По 10 Цикл

Сумма = Сумма + i;

КонецЦикла;

Сообщить("Сумма чисел от 1 до 10: " + Сумма);

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