#Если Не ВебКлиент И Не ТонкийКлиент И Не МобильныйКлиент Тогда

&НаКлиенте
Процедура ПоказатьЗначениеОтбора(Знач ЗначениеОтбора)
	
	ирКлиент.ОткрытьЗначениеЛкс(ЗначениеОтбора, Ложь,,,, Ложь);

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

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

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

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

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

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

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

&НаСервере
Функция ПолучитьПредставлениеНастроек(Знач Настройки)
	
	Представление = "";
	Если ЗначениеЗаполнено("" + Настройки.Отбор) Тогда 
		Представление = Представление + ",Отбор";
	КонецЕсли;
	Если ЗначениеЗаполнено("" + Настройки.Порядок) Тогда 
		Представление = Представление + ",Порядок";
	КонецЕсли;
	Если Не ЗначениеЗаполнено(Представление) Тогда
		Представление = ",0";
	КонецЕсли; 
	Представление = "(" + Сред(Представление, 2) + ")";
	Возврат Представление;

КонецФункции

&НаКлиенте
Процедура Применить(Команда = Неопределено)
	
	Если ВладелецФормы <> Неопределено Тогда
		ирОбщий.ДанныеЭлементаФормыЛкс(ВладелецФормы).КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);
		Если ирКэш.НомерВерсииПлатформыЛкс() >= 803017 Тогда
			ЭтаФорма.НастройкиМодифицированы = Ложь;
		КонецЕсли; 
	КонецЕсли; 
	
КонецПроцедуры

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

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

&НаКлиенте
Функция НачальныйИндексГруппыНастроек()
	
	Если ирОбщий.ЛиЦифраЛкс(Прав(Элементы.ГруппаПанель.ПодчиненныеЭлементы.СтраницаПользовательские.ПодчиненныеЭлементы.ПользовательскиеНастройки.ПодчиненныеЭлементы[0].Имя, 1)) Тогда 
		БазовыйИндекс = 0;
	Иначе
		БазовыйИндекс = 1;
	КонецЕсли;
	Возврат БазовыйИндекс;

КонецФункции

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

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

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

&НаКлиенте 
// Вызывается кодом
Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт

	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	ирКлиент.Форма_ПриЗакрытииЛкс(ЭтаФорма);
КонецПроцедуры

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

&НаКлиенте
Процедура НастройкаТехножурнала(Команда)
	ирКлиент.ОткрытьНастройкуТехножурналаПоПользователюЛкс();
КонецПроцедуры

#КонецЕсли

