1С: Итоги в подвале на форме списка

Если в таблице значений на форме, это штатный функционал, то на форме списка, там где по сути табличный документы, возможно лишь вывести пустую строку подвала. А итоги считать нужно самостоятельно. Описанный способ не претендует на идеальную правильность. Скорее это всего лишь самый простой способ. Есть более красивые способы — при помощи правки СКД динамического списка и т.д. Но я СКД недолюбливаю, потому у меня так.

1. Ставим галочку подвал в свойствах списка

2. На событие «ПриАктивацииСтроки» у списка вешаем следующий код:

&НаСервере
Функция СписокВКоллекциюЗначений()
	//Получаем схема компановки данных (здесь хранится текст запроса)
	Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();	
	//Получаем настройки пользователя (отборы, сортировки и т.п.)
	Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();	
	//Выводим динамический список в таблицу значений
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);	
	//Возвращаем полученную таблицу значений
	Возврат  Результат;	
КонецФункции

&НаСервере
Функция ПосчитатьИтогиНаСервере()
	ВсеЭлементы=СписокВКоллекциюЗначений();
	ЗадолженостьПоУведомлению=0;ОстатокЗадолженности=0;ТекущаяЗадолженость=0;	
	для каждого стр из ВсеЭлементы цикл
		ЗадолженостьПоУведомлению=ЗадолженостьПоУведомлению+стр.ЗадолженостьПоУведомлению;
		ОстатокЗадолженности=ОстатокЗадолженности+стр.ОстатокЗадолженности;
		ТекущаяЗадолженость=ТекущаяЗадолженость+стр.ТекущаяЗадолженость;
	КонецЦикла;	
	элементы.Список.ПодчиненныеЭлементы.ЗадолженостьПоУведомлению.ТекстПодвала=ЗадолженостьПоУведомлению;
	элементы.Список.ПодчиненныеЭлементы.ОстатокЗадолженности.ТекстПодвала=ОстатокЗадолженности;
	элементы.Список.ПодчиненныеЭлементы.ТекущаяЗадолженость.ТекстПодвала=ТекущаяЗадолженость;
КонецФункции

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	ПосчитатьИтогиНаСервере();
КонецПроцедуры

И вуаля, видим нечто подобное:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.