Рассчитать итоги. Рассчитывает итоги всех регистров бухгалтерии и накопления, у которых они включены.
// Рассчитывает итоги всех регистров бухгалтерии и накопления, у которых они включены.
Процедура РассчитатьИтоги() Экспорт
ДатаСеанса = ТекущаяДатаСеанса();
РегистрНакопленияПериод = КонецМесяца(ДобавитьМесяц(ДатаСеанса, -1)); // Конец прошлого месяца.
РегистрБухгалтерииПериод = КонецМесяца(ДатаСеанса); // Конец текущего месяца.
Кэш = КэшПроверкиРазделения();
// Расчет итогов для регистров накопления.
ВидОстатки = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки;
Для Каждого РегистрМетаданные Из Метаданные.РегистрыНакопления Цикл
Если РегистрМетаданные.ВидРегистра <> ВидОстатки Тогда
Продолжить;
КонецЕсли;
Если Не ОбъектМетаданныхДоступенПоРазделению(Кэш, РегистрМетаданные) Тогда
Продолжить;
КонецЕсли;
РегистрНакопленияМенеджер = РегистрыНакопления[РегистрМетаданные.Имя];
Если РегистрНакопленияМенеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() >= РегистрНакопленияПериод Тогда
Продолжить;
КонецЕсли;
РегистрНакопленияМенеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(РегистрНакопленияПериод);
Если Не РегистрНакопленияМенеджер.ПолучитьИспользованиеИтогов()
Или Не РегистрНакопленияМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда
Продолжить;
КонецЕсли;
РегистрНакопленияМенеджер.ПересчитатьТекущиеИтоги();
КонецЦикла;
// Расчет итогов для регистров бухгалтерии.
Для Каждого РегистрМетаданные Из Метаданные.РегистрыБухгалтерии Цикл
Если Не ОбъектМетаданныхДоступенПоРазделению(Кэш, РегистрМетаданные) Тогда
Продолжить;
КонецЕсли;
РегистрБухгалтерииМенеджер = РегистрыБухгалтерии[РегистрМетаданные.Имя];
Если РегистрБухгалтерииМенеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() >= РегистрБухгалтерииПериод Тогда
Продолжить;
КонецЕсли;
РегистрБухгалтерииМенеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(РегистрБухгалтерииПериод);
Если Не РегистрБухгалтерииМенеджер.ПолучитьИспользованиеИтогов()
Или Не РегистрБухгалтерииМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда
Продолжить;
КонецЕсли;
РегистрБухгалтерииМенеджер.ПересчитатьТекущиеИтоги();
КонецЦикла;
// Регистрация даты.
Если РежимРаботыЛокальныйФайловый() Тогда
ПараметрыИтогов = ПараметрыИтоговИАгрегатов();
ПараметрыИтогов.ДатаРасчетаИтогов = НачалоМесяца(ДатаСеанса);
ЗаписатьПараметрыИтоговИАгрегатов(ПараметрыИтогов);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
УстановкаПериодаРассчитанныхИтоговОбработчикЗадания (БСП)
НадоСдвинутьГраницуИтогов (БСП)
Итоги в подвале таблицы с учетом отбора
РассчитанныеДатыЗапретаИзменения (БСП)
Убрать итоги из готового текста запроса
ЭтоНаборЗаписейПоддерживающийИтоги (БСП)
ЗаписатьПараметрыИтоговИАгрегатов (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)