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