Условия труда / Форма списка / Модуль формы

файл

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

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

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

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

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

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

	Если Не Элементы.Список.МножественныйВыбор Тогда
		Возврат;
	КонецЕсли;

	СтандартнаяОбработка = Ложь;
	ОбновитьПодобранные(ВыбраннаяСтрока);
	
КонецПроцедуры

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

	ОповеститьОВыборе(ВсеВыбранные.ВыгрузитьЗначения());
	ВсеВыбранные.Очистить();
	Закрыть();
	
КонецПроцедуры

&НаСервере
Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки)
	ЗарплатаКадры.ПроверитьПользовательскиеНастройкиДинамическогоСписка(ЭтотОбъект, Настройки);
КонецПроцедуры

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ИдентификаторПользовательскойНастройкиВыделениеПодобранных()
	Возврат "ВыделениеПодобранных";
КонецФункции

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

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

&НаКлиенте
Функция ЕстьВПодобранных(ЭтапСсылка)
	Возврат Подобранные.НайтиПоЗначению(ЭтапСсылка) <> Неопределено;
КонецФункции

&НаКлиенте
Процедура НачатьВопросОВыбореПодобранных()
	
	ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
	ПараметрыВопроса.Заголовок = НСтр("ru = 'Подбор условия труда'");
	ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
	
	СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
		Новый ОписаниеОповещения("ЗавершитьВопросОВыбореВыбранных", ЭтотОбъект), 
		НСтр("ru = 'Выбрать подобранные условия труда?'"), 
		РежимДиалогаВопрос.ДаНетОтмена,
		ПараметрыВопроса);
		
КонецПроцедуры

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

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

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