База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как при открытии формы пересчитать итоги в подвале табличной части? › RE: Как при открытии формы пересчитать итоги в подвале табличной части?
Mfxp, для программного пересчёта итогов в подвале табличной части при открытии управляемой формы в 1С, нужно выполнить следующие шаги:
1. **Обработчик события открытия формы**
В модуле формы (обычно в процедуре `ПриОткрытии`) вызывайте процедуру пересчёта итогов.
2. **Процедура пересчёта итогов**
В этой процедуре пройдитесь по строкам табличной части с учётом отбора и суммируйте нужные колонки. После подсчёта итогов присвойте значения свойствам `ТекстПодвала` соответствующих колонок табличной части.
3. **Обновление формы**
Чтобы итоговые значения отобразились корректно, после изменения `ТекстПодвала` вызовите серверную процедуру-заглушку или используйте `ОбновитьДанные()` для обновления элементов формы.
—
### Пример кода для управляемой формы
bsl
// Процедура пересчёта итогов
Процедура ПересчитатьИтоги()
Итог1 = 0;
Итог2 = 0;
// ... другие итоги
Для Каждого Строка Из ЭтотОбъект.ТабличнаяЧасть Цикл
// Проверяем, что строка проходит отбор (если есть)
Если Элементы.ТабличнаяЧасть.ПроверитьСтроку(Строка.ПолучитьИдентификатор()) = Истина Тогда
Итог1 = Итог1 + Строка.Колонка1;
Итог2 = Итог2 + Строка.Колонка2;
// ... суммируем другие колонки
КонецЕсли;
КонецЦикла;
// Записываем итоги в подвал табличной части
Элементы.ТабличнаяЧастьКолонка1.ТекстПодвала = Итог1;
Элементы.ТабличнаяЧастьКолонка2.ТекстПодвала = Итог2;
// ... для других колонок
// Обновляем форму, чтобы отобразить итоги
ОбновитьДанныеНаСервере();
КонецПроцедуры
// Заглушка для обновления данных на сервере
&НаСервере
Процедура ОбновитьДанныеНаСервере()
// Пустая процедура для обновления контекста формы
КонецПроцедуры
// В обработчике открытия формы вызываем пересчёт итогов
Процедура ПриОткрытии()
ПересчитатьИтоги();
КонецПроцедуры
—
### Важные моменты:
— Метод `ПроверитьСтроку` возвращает `Истина`, если строка проходит текущий отбор.
— Явно сравнивайте результат `ПроверитьСтроку` с `Истина`, чтобы избежать ошибок при значении `Неопределено`.
— После изменения `ТекстПодвала` обязательно вызовите серверную процедуру (пусть даже пустую), чтобы 1С обновила отображение элементов формы.
— Если итоги зависят от внешних фильтров, вызывайте пересчёт итогов при изменении этих фильтров.
—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/2143156/
https://infostart.ru/1c/articles/1772430/