Найти в Дзене

Как сделать подсчет суммы в 1с

В 1С подсчет суммы можно реализовать разными способами, в зависимости от того, где вам нужно получить эту сумму: в табличном поле формы, в отчете, в запросе или в коде.

1. Подсчет суммы в табличном поле формы (управляемая форма):

Это самый распространенный случай, когда нужно автоматически подсчитывать сумму по колонке в табличной части документа или справочника.

Использование итога по колонке: Откройте форму, содержащую табличное поле, в конфигураторе. Выберите элемент формы “Табличное поле” (Table field) в дереве элементов формы. В окне свойств найдите свойство “Отображать итоги” (Show total). Установите его в значение “Истина” (True). В свойстве “Итоги” (Totals) укажите колонку, по которой нужно считать итог. Выберите колонку с суммой (например, “Сумма”). Запустите 1С:Предприятие в режиме пользователя. Теперь внизу табличного поля будет отображаться итог по указанной колонке. Программный подсчет суммы (если итоги не подходят или нужна более сложная логика):

· &НаКлиенте

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

·

· // Предположим, у вас есть табличная часть "Товары" с колонками "Цена" и "Количество"

· // и реквизит "СуммаДокумента" для хранения общей суммы

· Сумма = 0;

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

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

· КонецЦикла;

·

· Объект. СуммаДокумента = Сумма;

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

·

· &НаСервере

· Процедура ПриЗаписиНаСервере(Отказ)

·

· // Альтернативный способ подсчета суммы на сервере (если нужно перед записью)

· Объект. СуммаДокумента = 0;

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

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

· КонецЦикла;

·

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

В этом примере сумма пересчитывается при изменении любой строки табличной части. Можно использовать событие “ПриИзменении” (OnChange) для колонки “Количество” или “Цена”, чтобы пересчитывать сумму только при изменении этих колонок. Серверная процедура “ПриЗаписиНаСервере” гарантирует, что сумма будет рассчитана правильно перед записью данных в базу.

2. Подсчет суммы в отчете (система компоновки данных — СКД):

В отчетах, построенных на системе компоновки данных, суммирование выполняется в конструкторе отчета.

Откройте отчет в конфигураторе. Откройте схему компоновки данных (СКД). Выберите набор данных, с которым связана таблица отчета. Перейдите на вкладку “Выбранные поля” (Selected fields). Для поля, которое нужно суммировать:

Установите флажок “Вычисляемое поле” (Calculated field) (если необходимо). В поле “Выражение” (Expression) укажите выражение для расчета суммы, например: Сумма(Выручка).

На вкладке “Ресурсы” (Resources) укажите, что это поле является ресурсом. Ресурсы — это поля, которые будут суммироваться в отчете. На вкладке “Макеты” (Layouts) настройте отображение суммы в отчете (например, в итогах по группировке или в общих итогах).

3. Подсчет суммы в запросе:

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

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

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

"ВЫБРАТЬ

| СУММА(РеализацияТоваровУслугТовары. Сумма) КАК СуммаПродаж

|ИЗ

| Документ. РеализацияТоваровУслуг. Товары КАК РеализацияТоваровУслугТовары";

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

Если Результат. Пустой() Тогда

СуммаПродаж = 0;

Иначе

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

Если Выборка. Следующий() Тогда

СуммаПродаж = Выборка. СуммаПродаж;

КонецЕсли;

КонецЕсли;

Сообщить("Сумма продаж: " + СуммаПродаж);

В этом примере используется функция СУММА() (SUM()) в запросе, чтобы получить сумму значений из колонки “Сумма” (Amount) таблицы “РеализацияТоваровУслугТовары” (SalesInvoiceGoods).

4. Подсчет суммы в коде (без запроса):

Если у вас уже есть данные в коллекции (например, в табличной части документа), вы можете подсчитать сумму в цикле.

Сумма = 0;

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

Сумма = Сумма + СтрокаТЧ. Сумма;

КонецЦикла;

Сообщить("Сумма: " + Сумма);

5. Использование агрегатов (для платформ 8.3.23 и выше):

В новых версиях платформы 1С можно использовать агрегаты для более эффективного суммирования данных в коллекциях.

Сумма = Объект. Товары. Итог("Сумма");

Сообщить("Сумма: " + Сумма);

Важные моменты:

Типы данных: Убедитесь, что колонки, которые вы суммируете, имеют числовой тип данных. Пустые значения: Обрабатывайте пустые значения (NULL) в колонках, которые вы суммируете. Точность: Учитывайте точность числовых данных. Используйте функции округления (например, Окр()) для получения корректных результатов. Производительность: Для больших объемов данных используйте запросы или агрегаты, так как они работают быстрее, чем перебор данных в цикле. Контекст: Выбор способа подсчета суммы зависит от контекста, в котором вам нужно получить результат.

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