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