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