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