РассчитатьИтоги (БСП)

Автор: 1С
ОбщийМодуль.УправлениеИтогамиИАгрегатамиСлужебный
БСП

Рассчитать итоги. Рассчитывает итоги всех регистров бухгалтерии и накопления, у которых они включены.

// Рассчитывает итоги всех регистров бухгалтерии и накопления, у которых они включены.
Процедура РассчитатьИтоги() Экспорт
	
	ДатаСеанса = ТекущаяДатаСеанса();
	РегистрНакопленияПериод  = КонецМесяца(ДобавитьМесяц(ДатаСеанса, -1)); // Конец прошлого месяца.
	РегистрБухгалтерииПериод = КонецМесяца(ДатаСеанса); // Конец текущего месяца.
	
	Кэш = КэшПроверкиРазделения();
	
	// Расчет итогов для регистров накопления.
	ВидОстатки = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки;
	Для Каждого РегистрМетаданные Из Метаданные.РегистрыНакопления Цикл
		Если РегистрМетаданные.ВидРегистра <> ВидОстатки Тогда
			Продолжить;
		КонецЕсли;
		Если Не ОбъектМетаданныхДоступенПоРазделению(Кэш, РегистрМетаданные) Тогда
			Продолжить;
		КонецЕсли;
		РегистрНакопленияМенеджер = РегистрыНакопления[РегистрМетаданные.Имя];
		Если РегистрНакопленияМенеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() >= РегистрНакопленияПериод Тогда
			Продолжить;
		КонецЕсли;
		РегистрНакопленияМенеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(РегистрНакопленияПериод);
		Если Не РегистрНакопленияМенеджер.ПолучитьИспользованиеИтогов()
			Или Не РегистрНакопленияМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда
			Продолжить;
		КонецЕсли;
		РегистрНакопленияМенеджер.ПересчитатьТекущиеИтоги();
	КонецЦикла;
	
	// Расчет итогов для регистров бухгалтерии.
	Для Каждого РегистрМетаданные Из Метаданные.РегистрыБухгалтерии Цикл
		Если Не ОбъектМетаданныхДоступенПоРазделению(Кэш, РегистрМетаданные) Тогда
			Продолжить;
		КонецЕсли;
		РегистрБухгалтерииМенеджер = РегистрыБухгалтерии[РегистрМетаданные.Имя];
		Если РегистрБухгалтерииМенеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() >= РегистрБухгалтерииПериод Тогда
			Продолжить;
		КонецЕсли;
		РегистрБухгалтерииМенеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(РегистрБухгалтерииПериод);
		Если Не РегистрБухгалтерииМенеджер.ПолучитьИспользованиеИтогов()
			Или Не РегистрБухгалтерииМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда
			Продолжить;
		КонецЕсли;
		РегистрБухгалтерииМенеджер.ПересчитатьТекущиеИтоги();
	КонецЦикла;
	
	// Регистрация даты.
	Если РежимРаботыЛокальныйФайловый() Тогда
		ПараметрыИтогов = ПараметрыИтоговИАгрегатов();
		ПараметрыИтогов.ДатаРасчетаИтогов = НачалоМесяца(ДатаСеанса);
		ЗаписатьПараметрыИтоговИАгрегатов(ПараметрыИтогов);
	КонецЕсли;
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

УстановкаПериодаРассчитанныхИтоговОбработчикЗадания (БСП)

НадоСдвинутьГраницуИтогов (БСП)

Итоги в подвале таблицы с учетом отбора

РассчитанныеДатыЗапретаИзменения (БСП)

Убрать итоги из готового текста запроса

ЭтоНаборЗаписейПоддерживающийИтоги (БСП)

ЗаписатьПараметрыИтоговИАгрегатов (БСП)

РассчитатьРассмотреноПоПапкам (БСП)

РассчитатьРассмотреноПоКонтактам (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом