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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;

	ИнициализацияФормыПриСозданииНаСервере();
	
	НастроитьЗависимыеЭлементыФормыНаСервере();

	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект,
		Элементы.Список.КоманднаяПанель);
	// Конец ИнтеграцияС1СДокументооборотом
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура РежимОтображенияСведенийПриИзменении(Элемент)
	
	ПриИзмененииРежимаОтображения();
	
КонецПроцедуры

&НаКлиенте
Процедура ИнформацияОбОтбореНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("СлужебныеПараметрыФормы", СлужебныеПараметрыФормы);
	ПараметрыФормы.Вставить("РежимОтображенияСведений", РежимОтображенияСведений);
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ИнформацияОбОтбореНажатиеЗавершение", ЭтотОбъект);
	ОткрытьФорму("Справочник.ОбъектыЭксплуатации.Форма.НастройкаОтборовФормыВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);

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

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

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

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОбработатьВыборСтрокСписка();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВыбратьЭлементы(Команда)
	
	ОбработатьВыборСтрокСписка();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьГрупповоеОС(Команда)
	
	ВнеоборотныеАктивыКлиент.СоздатьОбъектЭксплуатацииПоТипу(ПредопределенноеЗначение("Перечисление.ТипыОС.ГрупповоеОС"));

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

&НаКлиенте
Процедура СоздатьОСУзел(Команда)
	
	ВнеоборотныеАктивыКлиент.СоздатьОбъектЭксплуатацииПоТипу(ПредопределенноеЗначение("Перечисление.ТипыОС.Узел"));

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

&НаКлиенте
Процедура СоздатьКомпонентАмортизации(Команда)
	
	ВнеоборотныеАктивыКлиент.СоздатьОбъектЭксплуатацииПоТипу(ПредопределенноеЗначение("Перечисление.ТипыОС.КомпонентАмортизации"));

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

&НаКлиенте
Процедура СоздатьКапитальноеВложение(Команда)
	
	ВнеоборотныеАктивыКлиент.СоздатьОбъектЭксплуатацииПоТипу(ПредопределенноеЗначение("Перечисление.ТипыОС.КапитальноеВложение"));

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

// ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
		Команда,
		ЭтотОбъект,
		Элементы.Список);
	
КонецПроцедуры

// Конец ИнтеграцияС1СДокументооборотом

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

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

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

	ИнициализироватьСлужебныеПараметрыФормы();
	
	ВосстановитьНастройкиФормы();
	
	УстановитьСвойстваДинамическогоСписка();
	
	УстановитьОтборыСписка();
	
	ЗаполнитьИнформациюОбОтборе(ЭтотОбъект);
	
	УстановитьЗаголовок();

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

&НаСервере
Процедура ВосстановитьНастройкиФормы()
	
	НастройкиФормы = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(
		Метаданные.Справочники.ОбъектыЭксплуатации.Формы.ФормаВыбора2_4.ПолноеИмя(), "НастройкиФормы");

	РежимОтображенияСведений = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиФормы, "РежимОтображенияСведений", "НаДату");
	
КонецПроцедуры

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

	НовыеСлужебныеПараметрыФормы.Вставить(
		"ИспользоватьПодразделения", 
		ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения"));

	НовыеСлужебныеПараметрыФормы.Вставить(
		"ИспользоватьУправлениеРемонтами", 
		ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеРемонтами"));

	НовыеСлужебныеПараметрыФормы.Вставить(
		"РегламентированныйУчетВНА", 
		ПолучитьФункциональнуюОпцию("РегламентированныйУчетВНА"));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_МестонахождениеОС", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.МестонахождениеОС));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_ПорядокУчетаОСУУ", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПорядокУчетаОСУУ));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_ПорядокУчетаОСБУ", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПорядокУчетаОСБУ));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_ПорядокУчетаОС", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПорядокУчетаОС));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_ПараметрыАмортизацииОСУУ", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПараметрыАмортизацииОСУУ));

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

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_ПервоначальныеСведенияОС", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПервоначальныеСведенияОС));

	НовыеСлужебныеПараметрыФормы.НастройкиПрав.Вставить(
		"ЕстьПравоЧтение_АрендованныеОС", 
		ПравоДоступа("Чтение", Метаданные.РегистрыСведений.АрендованныеОС));

	ПолучитьПараметрыВыбора(НовыеСлужебныеПараметрыФормы);

	СлужебныеПараметрыФормы = Новый ФиксированнаяСтруктура(НовыеСлужебныеПараметрыФормы);
	
КонецПроцедуры

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

		КонецЕсли; 
		
	КонецЦикла;
	
	Для Каждого ИмяЭлемента Из ЭлементыДляУдаления Цикл
		Параметры.Отбор.Удалить(ИмяЭлемента);
	КонецЦикла;
		
КонецПроцедуры

&НаСервере
Процедура ПриИзмененииРежимаОтображения()
	
	НастройкиФормы = Новый Структура;
	НастройкиФормы.Вставить("РежимОтображенияСведений", РежимОтображенияСведений);
	
	ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(
		Метаданные.Справочники.ОбъектыЭксплуатации.Формы.ФормаВыбора2_4.ПолноеИмя(), "НастройкиФормы", НастройкиФормы);
		
	УстановитьСвойстваДинамическогоСписка();
	
	УстановитьОтборыСписка();

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

&НаСервере
Процедура УстановитьСвойстваДинамическогоСписка()

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

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

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

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

&НаСервере
Функция СформироватьСвойстваСписка()

	СвойстваСписка = Новый Структура;
	СвойстваСписка.Вставить("ТекстСоединения", "");
	СвойстваСписка.Вставить("ТекстОтборы", "");
	СвойстваСписка.Вставить("ПараметрыЗапроса", Новый Структура);
	СвойстваСписка.Вставить("ПоляЗапроса", Новый Структура);

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

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

	Если ОписаниеЗапросаДляВыбора.НеобходимыеТаблицы.Свойство("ПорядокУчетаОСБУ") Тогда
		
		СвойстваСписка.ТекстСоединения = СвойстваСписка.ТекстСоединения + "
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПорядокУчетаОСБУ.СрезПоследних(
		|			&ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_Период,
		|			&ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_ДатаИсправления
		|				И &ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_Условия) КАК ПорядокУчетаОСБУ
		|		ПО ПорядокУчетаОСБУ.Организация = МестонахождениеОС.Организация
		|			И ПорядокУчетаОСБУ.ОсновноеСредство = МестонахождениеОС.ОсновноеСредство";
		
	КонецЕсли;

	Если ОписаниеЗапросаДляВыбора.НеобходимыеТаблицы.Свойство("ПорядокУчетаОС") Тогда
		
		СвойстваСписка.ТекстСоединения = СвойстваСписка.ТекстСоединения + "
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПорядокУчетаОС.СрезПоследних(
		|			&ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_Период, 
		|			&ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_ДатаИсправления
		|				И &ПАРАМЕТРЫ_СРЕЗАПОСЛЕДНИХ_Условия) КАК ПорядокУчетаОС
		|		ПО ПорядокУчетаОС.ОсновноеСредство = ДанныеСправочникаПереопределяемый.Ссылка";
		
	КонецЕсли;
	
	ПараметрыСрезаПоследних_Период = "";
	ПараметрыСрезаПоследних_ДатаИсправления = "ИСТИНА";
	ПараметрыСрезаПоследних_Условия = "ИСТИНА";
	ПараметрыСрезаПоследних_Регистрация = "ИСТИНА";
	
	Если РежимОтображенияСведений = "НаДату" Тогда
		
		ПараметрыСрезаПоследних_ДатаИсправления = "ДатаИсправления = ДАТАВРЕМЯ(1,1,1)";

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

	#КонецОбласти	
		
	Возврат СвойстваСписка;
	
КонецФункции

&НаКлиенте
Процедура ОбработатьВыборСтрокСписка()

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

&НаКлиенте
Функция ПроверитьВыбор(ДанныеСтроки, ПроверитьРеквизиты, ТекущиеЗначенияРеквизитов)

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

	Если ТекстПредупреждения <> Неопределено Тогда
		ПоказатьПредупреждение(, ТекстПредупреждения);
		Возврат Ложь;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции

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

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

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

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

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

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

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

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

	УстановитьОтборыСписка();

	ЗаполнитьИнформациюОбОтборе(ЭтотОбъект);

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

&НаСервере
Процедура УстановитьОтборыСписка()

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

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

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

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

&НаСервереБезКонтекста
Процедура ЗаполнитьИнформациюОбОтборе(Форма)
	
	ПредставлениеОтбора = Новый Массив;
	
	СлужебныеПараметрыФормы = Форма.СлужебныеПараметрыФормы; // Структура
	ОтборСписка = СлужебныеПараметрыФормы.ПараметрыВыбора.Отбор; // Структура
	
	Если ОтборСписка.Свойство("Статус")
		И ЗначениеЗаполнено(ОтборСписка.Статус) Тогда
		
		ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Статус:</b> %1'"), ОтборСписка.Статус);
		ПредставлениеОтбора.Добавить(ЗначениеОтбора);
		
	КонецЕсли;
	
	Если ОтборСписка.Свойство("Состояние")
		И ЗначениеЗаполнено(ОтборСписка.Состояние)
		И Форма.РежимОтображенияСведений <> "НеПоказывать" Тогда
		
		Если ПредставлениеОтбора.Количество() <> 0 Тогда
			ПредставлениеОтбора.Добавить("; ");
		КонецЕсли;

		Если ОтборСписка.Состояние.Количество() = 1 Тогда

			ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Состояние:</b> %1'"), ОтборСписка.Состояние[0]);
			ПредставлениеОтбора.Добавить(ЗначениеОтбора);
			
		Иначе
			
			ПринятоКУчету = Ложь;
			НеПринятоКУчету = Ложь;
			ПереданоВАренду = Ложь;
			Прочее = Ложь;
			
			Для Каждого Элемент Из ОтборСписка.Состояние Цикл
				
				Если Элемент = Перечисления.СостоянияОС.ПринятоКУчету
					ИЛИ Элемент = Перечисления.СостоянияОС.ПринятоКЗабалансовомуУчету Тогда
					
					ПринятоКУчету = Истина;
					
				ИначеЕсли Элемент = Перечисления.СостоянияОС.СнятоСУчета
					ИЛИ Элемент = Перечисления.СостоянияОС.НеПринятоКУчету Тогда
						
					НеПринятоКУчету = Истина;
					
				ИначеЕсли Элемент = Перечисления.СостоянияОС.ПереданоВАренду Тогда
						
					ПереданоВАренду = Истина;
				
				Иначе
					
					Прочее = Истина;
					
				КонецЕсли;
				
			КонецЦикла;
			
			Если ПринятоКУчету
				И НЕ НеПринятоКУчету
				И НЕ ПереданоВАренду
				И НЕ Прочее Тогда
				
				ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Состояние:</b> Принято к учету'"));
				ПредставлениеОтбора.Добавить(ЗначениеОтбора);
				
			ИначеЕсли НеПринятоКУчету
				И НЕ ПринятоКУчету
				И НЕ ПереданоВАренду
				И НЕ Прочее Тогда
				
				ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Состояние:</b> Не принято к учету'"));
				ПредставлениеОтбора.Добавить(ЗначениеОтбора);
					
			ИначеЕсли ПереданоВАренду
				И НЕ ПринятоКУчету
				И НЕ НеПринятоКУчету
				И НЕ Прочее Тогда
				
				ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Состояние:</b> Передано в аренду'"));
				ПредставлениеОтбора.Добавить(ЗначениеОтбора);
					
			Иначе
				
				ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '<b>Состояние:</b> В списке'"));
				ПредставлениеОтбора.Добавить(ЗначениеОтбора);
					
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если Форма.РежимОтображенияСведений <> "НеПоказывать" Тогда
		ДобавитьПредставлениеОтбора(ОтборСписка, "Организация", НСтр("ru = 'Организация'"), ПредставлениеОтбора);
		ДобавитьПредставлениеОтбора(ОтборСписка, "Подразделение", НСтр("ru = 'Подразделение'"), ПредставлениеОтбора);
		ДобавитьПредставлениеОтбора(ОтборСписка, "МОЛ", НСтр("ru = 'МОЛ'"), ПредставлениеОтбора);
	КонецЕсли;

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

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

		ЗначениеСвойства = СтрШаблон(НСтр("ru = 'Не превышает %1 мес'"), ОтборСписка.ОстаточныйСрокИспользованияБУ);
		ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока("<b>%1:</b> %2", НСтр("ru = 'Остаточный СПИ (БУ)'"), ЗначениеСвойства);
		
		ПредставлениеОтбора.Добавить(ЗначениеОтбора);

	КонецЕсли;
		
	Если ОтборСписка.Свойство("ОстаточныйСрокИспользованияУУ")
		И ОтборСписка.ОстаточныйСрокИспользованияУУ <> 0
		И Форма.РежимОтображенияСведений <> "НеПоказывать" Тогда
		
		Если ПредставлениеОтбора.Количество() <> 0 Тогда
			ПредставлениеОтбора.Добавить("; ");
		КонецЕсли;

		ЗначениеСвойства = СтрШаблон(НСтр("ru = 'Не превышает %1 мес'"), ОтборСписка.ОстаточныйСрокИспользованияУУ);
		
		Если СлужебныеПараметрыФормы.РеглУчетВНАВедетсяНезависимо Тогда
			ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока("<b>%1:</b> %2", НСтр("ru = 'Остаточный СПИ (УУ)'"), ЗначениеСвойства);
		Иначе
			ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока("<b>%1:</b> %2", НСтр("ru = 'Остаточный СПИ'"), ЗначениеСвойства);
		КонецЕсли;
		
		ПредставлениеОтбора.Добавить(ЗначениеОтбора);

	КонецЕсли;
		
	Если ПредставлениеОтбора.Количество() <> 0 Тогда
		Форма.ИнформацияОбОтборе = Новый ФорматированнаяСтрока(ПредставлениеОтбора);
	Иначе
		Форма.ИнформацияОбОтборе = Новый ФорматированнаяСтрока(НСтр("ru = 'Не установлен'"));
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ДобавитьПредставлениеОтбора(ОтборСписка, ИмяСвойства, ПредставлениеСвойства, ПредставлениеОтбора)
	
	Если ОтборСписка.Свойство(ИмяСвойства)
		И ЗначениеЗаполнено(ОтборСписка[ИмяСвойства]) Тогда
		
		Если ПредставлениеОтбора.Количество() <> 0 Тогда
			ПредставлениеОтбора.Добавить("; ");
		КонецЕсли;

		Если (ТипЗнч(ОтборСписка[ИмяСвойства]) = Тип("Массив")
				ИЛИ ТипЗнч(ОтборСписка[ИмяСвойства]) = Тип("ФиксированныйМассив")) Тогда
					
			Если ОтборСписка[ИмяСвойства].Количество() = 1 Тогда
				ПредставлениеЗначения = Строка(ОтборСписка[ИмяСвойства][0]);
			Иначе	
				ПредставлениеЗначения = НСтр("ru = 'В списке'");
			КонецЕсли;
			
		ИначеЕсли ТипЗнч(ОтборСписка[ИмяСвойства]) = Тип("СписокЗначений") Тогда
			
			Если ОтборСписка[ИмяСвойства].Количество() = 1 Тогда
				ПредставлениеЗначения = Строка(ОтборСписка[ИмяСвойства][0].Значение);
			Иначе	
				ПредставлениеЗначения = НСтр("ru = 'В списке'");
			КонецЕсли;
					
		Иначе
			
			ПредставлениеЗначения = Строка(ОтборСписка[ИмяСвойства]);
			
		КонецЕсли;
		
		ЗначениеОтбора = СтроковыеФункции.ФорматированнаяСтрока("<b>%1:</b> %2", ПредставлениеСвойства, ПредставлениеЗначения);
		
		ПредставлениеОтбора.Добавить(ЗначениеОтбора);

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

&НаКлиентеНаСервереБезКонтекста
Функция ЭтоНастраиваемыйОтбор(ИмяОтбора)

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

&НаСервере
Процедура УстановитьЗаголовок()

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

	//++ Локализация
	
	ИначеЕсли СлужебныеПараметрыФормы.ПараметрыВыбора.Свойство("ЗарегистрированоВРеестреСистемыПлатон") Тогда
		
		Заголовок = НСтр("ru = 'Транспортные средства, зарегистрированные в системе ""Платон""'");

	ИначеЕсли СлужебныеПараметрыФормы.ПараметрыВыбора.Свойство("ЕстьПараметрыНачисленияТранспортногоНалога") Тогда

		Заголовок = НСтр("ru = 'Зарегистрированные транспортные средства'");

	ИначеЕсли СлужебныеПараметрыФормы.ПараметрыВыбора.Свойство("ЕстьПараметрыНачисленияЗемельногоНалога") Тогда

		Заголовок = НСтр("ru = 'Зарегистрированные земельные участки'");

	ИначеЕсли СлужебныеПараметрыФормы.ПараметрыВыбора.Свойство("ВидНалога") Тогда

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

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

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

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