Физические лица / Форма выбора ролей физического лица / Модуль формы

файл
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Параметры.Свойство("ФизическоеЛицоСсылка", ФизическоеЛицоСсылка);
	
	Если Не ЗначениеЗаполнено(ФизическоеЛицоСсылка) Тогда
		Отказ = Истина;
		Возврат;
	КонецЕсли; 
	
	ЗаполнитьТаблицуРолей(СотрудникиФормыРасширенный.ТаблицаДругихРолейФизическогоЛица(ФизическоеЛицоСсылка));
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура КомандаOK(Команда)
	
	Если Не Модифицированность Тогда
		Закрыть();
		Возврат;
	КонецЕсли;
		
	МассивРолей = Новый Массив;
	Для Каждого СтрокаРолиОрганизации Из РолиФизическогоЛица Цикл
		Если СтрокаРолиОрганизации.Акционер Тогда
			МассивРолей.Добавить(Новый Структура("Организация,Роль", СтрокаРолиОрганизации.Организация, ПредопределенноеЗначение("Перечисление.РолиФизическихЛиц.Акционер")));
		КонецЕсли;
		Если СтрокаРолиОрганизации.ПрочийПолучательДоходов Тогда
			МассивРолей.Добавить(Новый Структура("Организация,Роль", СтрокаРолиОрганизации.Организация, ПредопределенноеЗначение("Перечисление.РолиФизическихЛиц.ПрочийПолучательДоходов")));
		КонецЕсли;
		Если СтрокаРолиОрганизации.БывшийСотрудник Тогда
			МассивРолей.Добавить(Новый Структура("Организация,Роль", СтрокаРолиОрганизации.Организация, ПредопределенноеЗначение("Перечисление.РолиФизическихЛиц.БывшийСотрудник")));
		КонецЕсли;
		Если СтрокаРолиОрганизации.РаздатчикЗарплаты Тогда
			МассивРолей.Добавить(Новый Структура("Организация,Роль", СтрокаРолиОрганизации.Организация, ПредопределенноеЗначение("Перечисление.РолиФизическихЛиц.РаздатчикЗарплаты")));
		КонецЕсли;
	КонецЦикла;
	
	СохранитьДанные(МассивРолей);
	
	Закрыть(МассивРолей);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

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

&НаСервере
Процедура СохранитьДанные(МассивРолей) Экспорт
	
	РегистрыСведений.РолиФизическихЛиц.ОбновитьРолиФизическогоЛица(ФизическоеЛицоСсылка, МассивРолей);
	Модифицированность = Ложь;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы