Источники данных планирования / Форма настройка / Модуль формы

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

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекПользовательскиеНастройки

&НаКлиенте
Процедура КомпоновщикНастроекПользовательскиеНастройкиПриИзменении(Элемент)
	
	Параметр = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек, "ИзменитьНаСезонныйКоэффициент");
	
	Если Параметр.ИдентификаторПользовательскойНастройки = Строка(Элемент.ТекущаяСтрока) Тогда
		ИзменитьНаСезонныйКоэффициент = Элемент.ТекущиеДанные.Значение;
	КонецЕсли;
	
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗавершитьРедактирование(Команда)
	
	ПоместитьВоВременноеХранилище(КомпоновщикНастроек.ПользовательскиеНастройки, АдресПользовательскихНастроек);
	
	КомпоновщикНастроек.ЗагрузитьНастройки(ПрименитьПользовательскиеНастройки(КомпоновщикНастроек));
	
	КомпоновщикНастроек.Настройки.Структура.ИдентификаторПользовательскойНастройки = "";
	
	ПоляЗаполнения = ПланированиеКлиентСервер.ПолучитьТекстВыбираемыхПолейКомпоновки(КомпоновщикНастроек);
	
	Закрыть(Новый Структура("ИзменитьРезультатНа, ПоляЗаполнения", ИзменитьРезультатНа, ПоляЗаполнения));
	
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	
	Закрыть();
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьИНастроитьСезонныеКоэффициентыНажатие(Элемент)
	
	ОткрытьФорму("РегистрСведений.СезонныеКоэффициенты.Форма.СезонныеКоэффициенты"); 
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьСезонныйКоэффициентПриИзменении(Элемент)
	
	ПараметрИзменитьНаСезонныйКоэффициент = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,
		"ИзменитьНаСезонныйКоэффициент");
		
	Если ПараметрИзменитьНаСезонныйКоэффициент <> Неопределено Тогда
	
		ПараметрИзменитьНаСезонныйКоэффициент.Использование = Истина;
		ПараметрИзменитьНаСезонныйКоэффициент.Значение = ИзменитьНаСезонныйКоэффициент;
	
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

&НаСервереБезКонтекста
Функция ПрименитьПользовательскиеНастройки(КомпоновщикНастроек)
	Возврат КомпоновщикНастроек.ПолучитьНастройки();
КонецФункции

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

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

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