Оборотная ведомость бюджетирования / Модуль объекта

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

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

// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//   Форма - ФормаКлиентскогоПриложения - Форма отчета.
//   КлючВарианта - Строка - Имя предопределенного варианта отчета или уникальный идентификатор пользовательского.
//   Настройки - См. ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	Настройки.События.ПриСозданииНаСервере = Истина;
	Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
	Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина;
КонецПроцедуры

// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
//
// Подробнее - см. ОтчетыПереопределяемый.ПередЗагрузкойВариантаНаСервере
//
Процедура ПередЗагрузкойВариантаНаСервере(ЭтаФорма, НовыеНастройкиКД) Экспорт
	
	
	Отчет = ЭтаФорма.Отчет;
	КомпоновщикНастроекФормы = Отчет.КомпоновщикНастроек;
	Если Не КомпоновщикНастроекФормы.Настройки.ДополнительныеСвойства.Свойство("КлючТекущегоВарианта") Тогда
		КомпоновщикНастроекФормы.Настройки.ДополнительныеСвойства.Вставить("КлючТекущегоВарианта", ЭтаФорма.КлючТекущегоВарианта);
	КонецЕсли;
	НовыеНастройкиКД = КомпоновщикНастроекФормы.Настройки;
	

КонецПроцедуры

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

КонецПроцедуры

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

#Область ОбработчикиСобытий

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

Процедура СкорректироватьСвязиНаборовДанныхМакетаКомпоновки(МакетКомпоновки)
	
	Для каждого СвязьНаборовДанных Из МакетКомпоновки.СвязиНаборовДанных Цикл
		
		Если СвязьНаборовДанных.НаборДанныхИсточник = "АналитикаОборотов"
			И СвязьНаборовДанных.НаборДанныхПриемник = "СтатьиБюджетов" Тогда
			СвязьНаборовДанных.ТипСвязи = ТипСвязиНаборовДанныхКомпоновкиДанных.Внутренняя;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

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

#Область СлужебныеПроцедурыИФункции

#Область ПолучениеДанныхОтчета

Функция НаборыДанных()
	
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
	ПараметрыПолученияФакта = ПараметрыПолученияФактаПоНастройкамОтчета(НастройкиОтчета);
	
	НаборыДанных = Новый Структура;
	НаборыДанных.Вставить("ОборотыПлан", ОборотыПлан(НастройкиОтчета));
	ОборотыФакт = ОборотыФакт(НастройкиОтчета, ПараметрыПолученияФакта);
	НаборыДанных.Вставить("ОборотыФакт", ОборотыФакт);
	СтруктураОтбора = Новый Структура("Сценарий", Справочники.Сценарии.ФактическиеДанные);
	НаборыДанных.Вставить("ОборотыТолькоФакт", ОборотыФакт.Скопировать(СтруктураОтбора));
	
	Возврат НаборыДанных;
	
КонецФункции

Функция ОборотыПлан(НастройкиОтчета)
	
	СхемаКомпоновкиПлана = Отчеты.ОборотнаяВедомостьБюджетирования.ПолучитьМакет("ОборотыПлан");
	Настройки = СхемаКомпоновкиПлана.НастройкиПоУмолчанию;
	
	БюджетированиеСервер.ДополнитьСКДАналитикойПоВиду(СхемаКомпоновкиПлана, "СтатьяБюджетов");
	
	Набор = СхемаКомпоновкиПлана.НаборыДанных.План;
	
	ПараметрыВыражения = БюджетированиеСервер.ШаблонПараметровПоляАналитикиСУсловиемПоКоличествуВидовАналитики();
	ПараметрыВыражения.ВыражениеКоличествоИспользуемыхАналитик = "ОборотыБюджетов.СтатьяБюджетов.КоличествоИспользуемыхАналитик";
	ПараметрыВыражения.ВыражениеЗначенияАналитикиБезИндекса = "ОборотыБюджетов.Аналитика";
	
	МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
	Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
		Набор.Запрос = СтрЗаменить(Набор.Запрос, "&ВыражениеАналитика" + НомерАналитики,
			БюджетированиеСервер.ТекстПоляАналитикиСУсловиемПоКоличествуВидовАналитики(ПараметрыВыражения, НомерАналитики));
	КонецЦикла;
	
	КомпоновкаДанныхКлиентСервер.ЗаполнитьЭлементы(Настройки.ПараметрыДанных, НастройкиОтчета.ПараметрыДанных);
	КомпоновкаДанныхКлиентСервер.СкопироватьОтборКомпоновкиДанных(СхемаКомпоновкиПлана, Настройки, НастройкиОтчета);
	
	Группировка = Настройки.Структура[0];
	
	Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "Регистратор", Истина) Тогда
		ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, "Регистратор");
	КонецЕсли;
	
	Для каждого Периодичность Из Перечисления.Периодичность.УпорядоченныеПериодичности() Цикл
		Если НЕ ЗначениеЗаполнено(Периодичность) Тогда
			ПолеПериод = "Период";
		Иначе
			ПолеПериод = ФинансоваяОтчетностьКлиентСервер.СтрокиПериода(Периодичность).Период;
		КонецЕсли;
		Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, ПолеПериод, Истина) Тогда
			ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, ПолеПериод);
		КонецЕсли;
	КонецЦикла;
	
	Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "ДатаАктуальности", Истина) Тогда
		ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, "ДатаАктуальности");
	КонецЕсли;
	
	ВалютаОтчета = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Валюта").Значение;
	ФункциональнаяВалюта = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "ФункциональнаяВалюта").Значение;
	
	Если ФункциональнаяВалюта = Перечисления.ВидыУчетаВФункциональнойВалюте.ВВалютеУпр Тогда
		Если ВалютаОтчета = Константы.ВалютаУправленческогоУчета.Получить() Тогда
			ВыражениеСуммы = "СуммаУпр";
		Иначе
			ВыражениеСуммы = "
			|ВЫБОР
			|	КОГДА Валюта = &Валюта ТОГДА
			|		СуммаВВалюте
			|	ИНАЧЕ
			|		СуммаУпр * ОтносительныйКурсУпрУчет / ОтносительныйКурсБазоваяВалютаСценарияУпрУчет * ЕСТЬNULL(ПрогнозныйКурс, 1)
			|КОНЕЦ
			|";
		КонецЕсли;
	ИначеЕсли ФункциональнаяВалюта = Перечисления.ВидыУчетаВФункциональнойВалюте.ВВалютеРегл Тогда
		ВыражениеСуммы = "
		|ВЫБОР
		|	КОГДА ВалютаРегламентированногоУчета = &Валюта ТОГДА
		|		СуммаРегл
		|	ИНАЧЕ
		|		ВЫБОР
		|			КОГДА Валюта = &Валюта ТОГДА
		|				СуммаВВалюте
		|			ИНАЧЕ
		|				СуммаРегл / ОтносительныйКурсБазоваяВалютаСценарияРеглУчет * ЕСТЬNULL(ПрогнозныйКурс, 1)
		|		КОНЕЦ
		|КОНЕЦ
		|";
	Иначе
		ВыражениеСуммы = "0";
	КонецЕсли;
	
	Ресурсы = Новый Структура;
	Ресурсы.Вставить("СуммаПлан", ВыражениеСуммы);
	Ресурсы.Вставить("КоличествоПлан", "Количество");
	Для каждого Ресурс Из Ресурсы Цикл
		ФинансоваяОтчетностьСервер.НовыйВычисляемыйРесурс(СхемаКомпоновкиПлана, Ресурс.Ключ, Ресурс.Значение, "Сумма");
		ФинансоваяОтчетностьСервер.НовоеПолеВыбора(Настройки, Ресурс.Ключ);
	КонецЦикла;
	
	План = ФинансоваяОтчетностьСервер.ВыгрузитьРезультатСКД(СхемаКомпоновкиПлана, Настройки);
	
	Возврат План;
	
КонецФункции

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

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

#Область Прочее

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

Функция НаличиеВНастройкахОтчетаСценарияФактическихДанных(НастройкиОтчета)
	
	СхемаСценарииОтчета = ФинансоваяОтчетностьСервер.НоваяСхема();
	НаборДанныхСценарии = КомпоновкаДанныхСервер.ДобавитьПустойНаборДанных(СхемаСценарииОтчета,
		Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"),
		"Сценарии");
	
	НаборДанныхСценарии.Запрос = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Сценарии.Ссылка КАК Сценарий
	|ИЗ
	|	Справочник.Сценарии КАК Сценарии
	|ГДЕ
	|	Сценарии.Ссылка В (ЗНАЧЕНИЕ(Справочник.Сценарии.ФактическиеДанные), ЗНАЧЕНИЕ(Справочник.Сценарии.ИсполнениеБюджета))";
	
	ФинансоваяОтчетностьСервер.НовоеПолеНабора(НаборДанныхСценарии, "Сценарий", "Сценарий",, Новый ОписаниеТипов("СправочникСсылка.Сценарии"));
	
	НастройкиСценарии = Новый НастройкиКомпоновкиДанных;
	КомпоновкаДанныхКлиентСервер.ДобавитьГруппировку(НастройкиСценарии);
	КомпоновкаДанныхКлиентСервер.ДобавитьВыбранноеПоле(НастройкиСценарии, "Сценарий");
	
	КомпоновкаДанныхКлиентСервер.СкопироватьОтборКомпоновкиДанных(СхемаСценарииОтчета, НастройкиСценарии, НастройкиОтчета);
	
	Сценарии = ФинансоваяОтчетностьСервер.ВыгрузитьРезультатСКД(СхемаСценарииОтчета, НастройкиСценарии);
	
	Возврат Сценарии.Количество() > 0;
	
КонецФункции

Функция ПараметрыПолученияФактаПоНастройкамОтчета(НастройкиОтчета)
	
	Параметры = БюджетированиеСервер.ШаблонПараметровПолученияФакта();
	
	Параметры.ВалютаОтчета = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Валюта").Значение;
	Параметры.ФункциональнаяВалюта = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "ФункциональнаяВалюта").Значение;
	Параметры.Период = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Период").Значение;
	
	Параметры.ПоОрганизациям = Истина;
	Параметры.ПоПодразделениям = Истина;
	
	Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "Регистратор") Тогда
		Параметры.ПоРегистратору = Истина;
	КонецЕсли;
	
	Периодичности = Новый Массив;
	Для Каждого Периодичность Из Перечисления.Периодичность.УпорядоченныеПериодичности() Цикл
		Если НЕ ЗначениеЗаполнено(Периодичность) Тогда
			ПолеПериод = "Период";
		Иначе
			ПолеПериод = ФинансоваяОтчетностьКлиентСервер.СтрокиПериода(Периодичность).Период;
		КонецЕсли;
		Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, ПолеПериод) Тогда
			Периодичности.Добавить(Периодичность);
		КонецЕсли;
	КонецЦикла;
	Параметры.Периодичность = БюджетнаяОтчетностьКлиентСервер.МинимальнаяПериодичность(Периодичности);
	
	ЕстьПериодичностьСекунда = КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета,
			"ДатаАктуальности",
			Истина);
	Параметры.Вставить("ЕстьПериодичностьСекунда", ЕстьПериодичностьСекунда);
	
	Возврат Параметры; 
	
КонецФункции

Процедура УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы)
	
	ПараметрВалютаПользовательские = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек, "Валюта");
	ПараметрВалютаФиксированные = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек.ФиксированныеНастройки, "Валюта");
	
	ЕстьВалюта = ПараметрВалютаПользовательские <> Неопределено И ЗначениеЗаполнено(ПараметрВалютаПользовательские.Значение);
	Если Не ЕстьВалюта Тогда
		ЕстьВалюта = ПараметрВалютаФиксированные <> Неопределено И ЗначениеЗаполнено(ПараметрВалютаФиксированные.Значение);
	КонецЕсли;
	
	Если Не ЕстьВалюта Тогда
		КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
			КомпоновщикНастроек, "Валюта", Константы.ВалютаУправленческогоУчета.Получить());
		ПользовательскиеНастройкиМодифицированы = Истина;
	Иначе
		ИспользоватьНесколькоВалют = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
		Если НЕ ИспользоватьНесколькоВалют Тогда
			ЗначениеВалюты = ?(ПараметрВалютаПользовательские = Неопределено, Неопределено, ПараметрВалютаПользовательские.Значение);
			Если НЕ ЗначениеЗаполнено(ЗначениеВалюты) Тогда
				ЗначениеВалюты = ?(ПараметрВалютаФиксированные = Неопределено, Неопределено, ПараметрВалютаФиксированные.Значение);
			КонецЕсли;
			ВалютаУпр = Константы.ВалютаУправленческогоУчета.Получить();
			Если ЗначениеВалюты <> ВалютаУпр Тогда
				КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
					КомпоновщикНастроек, "Валюта", ВалютаУпр);
				ПользовательскиеНастройкиМодифицированы = Истина;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

#КонецЕсли

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