Объекты эксплуатации / Настройка отборов формы выбора / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;

	ИнициализацияФормыПриСозданииНаСервере();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОчиститьОтборы(Команда)

	ОтборСтатус = ПредопределенноеЗначение("Перечисление.СтатусыОбъектовЭксплуатации.ПустаяСсылка"); 
	ОтборСостояниеСписок.Очистить();
	ОтборОрганизация = ПредопределенноеЗначение("Справочник.Организации.ПустаяСсылка");
	ОтборПодразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
	ОтборМОЛ = ПредопределенноеЗначение("Справочник.ФизическиеЛица.ПустаяСсылка");
	ОтборЭксплуатирующееПодразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
	ОтборГруппаОССписок.Очистить();
	ОтборАмортизационнаяГруппаСписок.Очистить();
	ОтборОстаточныйСрокИспользования = 0;
	ОтборРемонтирующееПодразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
		
КонецПроцедуры

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

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

&НаСервере
Процедура ИнициализацияФормыПриСозданииНаСервере()
	
	РежимОтображенияСведений = Параметры.РежимОтображенияСведений;
	
	СлужебныеПараметрыФормы = Новый ФиксированнаяСтруктура(Новый Структура(Параметры.СлужебныеПараметрыФормы));
	
	ЗаполнитьОтборы();
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	
КонецПроцедуры

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

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

	Если НЕ СлужебныеПараметрыФормы.ИспользоватьУправлениеРемонтами  Тогда

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

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

		Элементы.ОтборПодразделение.Видимость = Ложь;
		
	КонецЕсли; 
	
	Если НЕ ПравоДоступа("Чтение", Метаданные.РегистрыСведений.МестонахождениеОС)
		ИЛИ РежимОтображенияСведений = "НеПоказывать" Тогда

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

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

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

&НаСервере
Процедура ЗаполнитьБыстрыйОтбор(ИмяОтбора, ОтборСписка, ЭлементОтбора)

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

		ЭлементОтбора = ЗначениеОтбора;

	КонецЕсли;
		
КонецПроцедуры

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

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

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