← Назад к вопросам
Суммирование количества строк табличной части
1.0 Junior🔥 271 комментариев
#Запросы и оптимизация#Стандарты разработки
Условие
Реализуйте цикл суммирования количества из всех строк табличной части документа.
Дано:
- Документ с табличной частью "Товары"
- Колонка "Количество" в табличной части
Пример
Итого = 0;
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Итого = Итого + СтрокаТовары.Количество;
КонецЦикла;
Сообщить("Всего: " + Итого);
Задание
Предложите несколько способов решения (цикл, агрегатная функция, запрос).
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Суммирование количества строк табличной части
Способ 1: Цикл (базовый, медленный)
Итого = 0;
Для Каждого Строка Из Объект.Товары Цикл
Итого = Итого + Строка.Количество;
КонецЦикла;
Сообщить("Всего: " + Итого);
Плюсы: простой, понятный Минусы: медленный для больших таблиц
Способ 2: Функция Итого (быстрый)
Итого = Объект.Товары.Итого("Количество");
Сообщить("Всего: " + Итого);
Плюсы: быстро, одна строка Минусы: только если в памяти
Способ 3: Запрос на БД (очень быстро для больших)
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(Товары.Количество) КАК ИтогоКол
|ИЗ Документ.Накладная.Товары КАК Товары
|ГДЕ Товары.Ссылка = &Документ";
Запрос.УстановитьПараметр("Документ", Объект.Ссылка);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Итого = Результат.ИтогоКол;
КонецЕсли;
Плюсы: работает с БД, очень быстро для больших Минусы: сложнее, требует сохранённого документа
Способ 4: Проверка со сложным условием
Итого = 0;
Для Каждого Строка Из Объект.Товары Цикл
// Только если активна строка
Если Строка.Активная = Истина Тогда
Итого = Итого + Строка.Количество;
КонецЕсли;
КонецЦикла;
Рекомендация
На форме (редактирование): используй Способ 2 (Итого()) В отчёте (уже сохранено): используй Способ 3 (запрос) В циклах с условиями: используй Способ 4 (цикл с проверкой)