Бюджетный отчет / Модуль менеджера

файл

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

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

// СтандартныеПодсистемы.ВариантыОтчетов

// Настройки вариантов этого отчета.
// Параметры:
//   Настройки - См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки
//   ОписаниеОтчета - См. ВариантыОтчетов.ОписаниеОтчета
//
Процедура НастроитьВариантыОтчета(Настройки, ОписаниеОтчета) Экспорт
	
	ВариантыОтчетовУТПереопределяемый.ОтключитьОтчет(ОписаниеОтчета);
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ВариантыОтчетов

#КонецОбласти

#КонецЕсли

Связанные материалы