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