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

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

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

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

Процедура КлсКомандаНажатие(Кнопка) Экспорт 
	
	ирКлиент.УниверсальнаяКомандаФормыЛкс(ЭтаФорма, Кнопка);
	
КонецПроцедуры

Процедура ОбработчикОжиданияСПараметрамиЛкс() Экспорт 
	
	ирКлиент.ОбработчикОжиданияСПараметрамиЛкс();

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

Процедура СписокЗначенийПриИзмененииФлажка(Элемент, Колонка)
	
	ирКлиент.ТабличноеПолеПриИзмененииФлажкаЛкс(ЭтаФорма, Элемент, Колонка, ЭлементыФормы.ДействияФормы.Кнопки.ТолькоПомеченные);

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

Процедура СписокЗначенийПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Экспорт
	
	ирКлиент.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);

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

Процедура СписокЗначенийПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);

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

Процедура СписокЗначенийВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	
	ВыбраннаяСтрока.Пометка = Истина;
	ОсновныеДействияФормыОК();
	
КонецПроцедуры

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

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

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

Процедура ТабличноеПолеПриПолученииДанных(Элемент, ОформленияСтрок) Экспорт 
	
	ирКлиент.ТабличноеПолеПриПолученииДанныхЛкс(ЭтаФорма, Элемент, ОформленияСтрок);

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

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

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

Процедура ПодстрокаПоискаПриИзменении(Элемент)
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма);
	ОбновитьОтбор();
КонецПроцедуры

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

Процедура ПодстрокаПоискаАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
	Если ирКлиент.ПромежуточноеОбновлениеСтроковогоЗначенияПоляВводаЛкс(ЭтаФорма, Элемент, Текст) Тогда 
		ОбновитьОтбор();
	КонецЕсли;
КонецПроцедуры

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирАнализЖурналаРегистрации.Форма.РедакторСписка");
