#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ВывестиАктуальностьОтчета(КомпоновщикНастроек, ДокументРезультат) Экспорт
МассивОрганизаций = Неопределено;
ОтборОрганизаций = ФинансоваяОтчетностьСервер.НайтиЭлементОтбора(КомпоновщикНастроек.Отбор,"Организация");
Если ТипЗнч(ОтборОрганизаций) = Тип("ЭлементОтбораКомпоновкиДанных") И ОтборОрганизаций.Использование Тогда
Если ТипЗнч(ОтборОрганизаций.ПравоеЗначение) = Тип("СписокЗначений") Тогда
МассивОрганизаций = ОтборОрганизаций.ПравоеЗначение.ВыгрузитьЗначения();
Иначе
МассивОрганизаций = ОбщегоНазначенияУТКлиентСервер.Массив(ОтборОрганизаций.ПравоеЗначение);
КонецЕсли;
КонецЕсли;
ПериодОтчета = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек, "ПериодОтчета").Значение;
СостояниеРасчета = РасчетСебестоимостиПрикладныеАлгоритмы.ТекущееСостояниеРасчета(
ПериодОтчета.ДатаОкончания, МассивОрганизаций, Справочники.ОперацииЗакрытияМесяца.РасчетПартийИСебестоимости);
ВыполненоРаспределениеВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов")
ИЛИ ВзаиморасчетыАктуальны(МассивОрганизаций, ПериодОтчета);
ТекстПредупреждения = "";
УстановитьПривилегированныйРежим(Истина);
ЗаполненыДвиженияАктивовПассивов = Константы.ЗаполненыДвиженияАктивовПассивов.Получить();
Если НЕ ЗаполненыДвиженияАктивовПассивов Тогда
ТекстПредупреждения = НСтр("ru ='Для работы отчета после обновления конфигурации на новую редакцию требуется выполнить первоначальное заполнение данных по статьям активов и пассивов.
|Для этого необходимо выполнить одноименную команду из раздела НСИ и администрирование - Финансовый результат и контроллинг.'");
ИначеЕсли СостояниеРасчета = Перечисления.СостоянияОперацийЗакрытияМесяца.ВыполненоСОшибками
ИЛИ СостояниеРасчета = Перечисления.СостоянияОперацийЗакрытияМесяца.НеВыполнено
ИЛИ НЕ ВыполненоРаспределениеВзаиморасчетов Тогда
ТекстПредупреждения = НСтр("ru ='Данные отчета могут быть не актуальны, так как выполнены не все этапы закрытия месяца, влияющие на финансовый результат в управленческом учете.'");
КонецЕсли;
Если НЕ ПустаяСтрока(ТекстПредупреждения) Тогда
ТаблицаПредупреждение = Новый ТабличныйДокумент;
ОбластьПредупреждение = ТаблицаПредупреждение.Область(1,1,1,1);
ОбластьПредупреждение.Текст = ТекстПредупреждения;
ОбластьПредупреждение.ЦветТекста = ЦветаСтиля.ЦветОтрицательногоЧисла;
ДокументРезультат.ВставитьОбласть(ОбластьПредупреждение, ДокументРезультат.Область(1,1,1,1), ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЕсли;
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура НастроитьВариантыОтчета(Настройки) Экспорт
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.УправленческийБаланс);
ОписаниеОтчета.ОпределитьНастройкиФормы = Истина;
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "");
ОписаниеВарианта.Описание = НСтр("ru= 'Анализ финансовых показателей на начало и конец периода и их изменения.'");
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "УправленческийБаланс");
ОписаниеВарианта.Описание = НСтр("ru= 'Каковы финансовые показатели по статьям активов и пассивов?
|Каковы финансовые показатели по организациям и подразделениям?
|Есть ли нарушение баланса?'");
ВариантыОтчетовУТПереопределяемый.УстановитьВажностьВариантаОтчета(ОписаниеВарианта, "Важный");
ОписаниеВарианта.ФункциональныеОпции.Добавить("НеБазоваяВерсия");
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "УпрБалансПоНаправлениям");
ОписаниеВарианта.Описание = НСтр("ru= 'Контроль финансовых показателей по направлениям и статьям активов/пассивов.'");
ОписаниеВарианта.ФункциональныеОпции.Добавить("УправлениеПредприятием");
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "УпрБалансПоОрганизациям");
ОписаниеВарианта.Описание = НСтр("ru= 'Контроль финансовых показателей по организациям и статьям активов/пассивов.'");
ОписаниеВарианта.ФункциональныеОпции.Добавить("УправлениеПредприятием");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Функция ВзаиморасчетыАктуальны(Организации, ПериодОтчета)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Расчеты.АналитикаУчетаПоПартнерам
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК Аналитики
| ПО Расчеты.АналитикаУчетаПоПартнерам = Аналитики.Ссылка
|ГДЕ
| Расчеты.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И (Аналитики.Организация В (&МассивОрганизаций) ИЛИ &ПоВсемОрганизациям)
| И Расчеты.Активность
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| Расчеты.АналитикаУчетаПоПартнерам
|ИЗ
| РегистрНакопления.РасчетыСПоставщиками КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК Аналитики
| ПО Расчеты.АналитикаУчетаПоПартнерам = Аналитики.Ссылка
|ГДЕ
| Расчеты.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И (Аналитики.Организация В (&МассивОрганизаций) ИЛИ &ПоВсемОрганизациям)
| И Расчеты.Активность";
Запрос.УстановитьПараметр("НачалоПериода", ПериодОтчета.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", ПериодОтчета.ДатаОкончания);
Запрос.УстановитьПараметр("МассивОрганизаций", Организации);
Запрос.УстановитьПараметр("ПоВсемОрганизациям", НЕ ЗначениеЗаполнено(Организации));
АналитикиРасчета = РаспределениеВзаиморасчетовВызовСервера.АналитикиРасчета();
АналитикиРасчета.Организации = Организации;
НачалоРасчета = РаспределениеВзаиморасчетовВызовСервера.НачалоРасчетов(КонецМесяца(ПериодОтчета.ДатаОкончания), АналитикиРасчета);
ЕстьДвиженияПоРасчетам = НЕ Запрос.Выполнить().Пустой();
ПериодВДиапазонеПересчета = (ЗначениеЗаполнено(НачалоРасчета) И НачалоРасчета <= ПериодОтчета.ДатаОкончания);
Возврат (ЕстьДвиженияПоРасчетам И НЕ ПериодВДиапазонеПересчета) ИЛИ НЕ ЕстьДвиженияПоРасчетам;
КонецФункции
#КонецЕсли