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