Сотрудники / Выплата зарплаты / Модуль формы

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

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

КонецПроцедуры

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

КонецПроцедуры

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

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

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

					КонецЕсли;
					
				КонецЕсли;
			
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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


#Область ОбработчикиСобытийЭлементовШапкиФормы

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

&НаКлиенте
Процедура ВидМестаВыплатыЗарплатыКассаПриИзменении(Элемент)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(ЭтотОбъект);
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ВидМестаВыплатыЗарплатыЗарплатныйПроектПриИзменении(Элемент)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	МестоВыплатыЗарплатныйПроектДоступноПолеПриИзмененииНаСервере();
	МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(ЭтотОбъект);
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ВидМестаВыплатыРаздатчикПриИзменении(Элемент)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(ЭтотОбъект);
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ВидМестаВыплатыЗарплатыБанковскийСчетПриИзменении(Элемент)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(ЭтотОбъект);
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыКассаДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыКассаНеДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыЗарплатныйПроектДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыКассаДоступноПолеПриИзменении(Элемент)
	
	МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника();
	
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	УстановитьДоступностьРаспределения(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыКассаДоступноПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыЗарплатныйПроектДоступноПолеПриИзменении(Элемент)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	МестоВыплатыЗарплатныйПроектДоступноПолеПриИзмененииНаСервере(МестаВыплатыЗарплатыСотрудников.МестоВыплаты);
	
	ЗаполнитьНомерТелефона();
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыЗарплатныйПроектДоступноПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыЗарплатныйПроектНеДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыРаздатчикДоступноПолеПриИзменении(Элемент)
	
	МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника();
	
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	УстановитьДоступностьРаспределения(ЭтотОбъект);
	
КонецПроцедуры

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

&НаКлиенте
Процедура МестоВыплатыРаздатчикДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыРаздатчикНеДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыБанковскийСчетДоступноПолеПриИзменении(Элемент)
	
	МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника();
	
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	УстановитьДоступностьРаспределения(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыБанковскийСчетДоступноПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если Не МестаВыплатыЗарплатыСотрудниковЗаблокироватьСотрудника() Тогда
		СтандартнаяОбработка = Ложь;
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыБанковскийСчетДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыБанковскийСчетНеДоступноПолеОткрытие(Элемент, СтандартнаяОбработка)
	МестаВыплатыЗарплатыКлиентРасширенный.МестоВыплатыОткрытие(Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура МестоВыплатыЛицевойСчетДоступноПолеПриИзменении(Элемент)
	
	Если Не ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамЗаблокироватьСотрудника() Тогда
		Возврат;
	КонецЕсли;
	
	ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамПриИзменении();
	
КонецПроцедуры

&НаКлиенте
Процедура РаспределениеПоСотрудникуНажатие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьФормуРаспределенияСпособаВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяССылка"), МестаВыплатыЗарплатыСотрудников.МестоВыплаты, МестаВыплатыЗарплатыСотрудников.Вид);
КонецПроцедуры

&НаКлиенте
Процедура СпособПоНомеруКартыПриИзменении(Элемент)
	
	ИзменениеСпособаЗачисление();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособПоНомеруСчетаВДругойБанкПриИзменении(Элемент)
	
	ИзменениеСпособаЗачисление();

КонецПроцедуры

&НаКлиенте
Процедура СпособПоСНИЛСПриИзменении(Элемент)
	
	ИзменениеСпособаЗачисление();

КонецПроцедуры

&НаКлиенте
Процедура СпособПоНомеруТелефонаПриИзменении(Элемент)
	
	ИзменениеСпособаЗачисление();

КонецПроцедуры

&НаКлиенте
Процедура СпособПоЛицевомуСчетуПриИзменении(Элемент)
	
	ИзменениеСпособаЗачисление();

КонецПроцедуры

&НаКлиенте
Процедура ТелефонПриИзменении(Элемент)
	НомерТелефона = НомерТелефона();
	ЗаполнитьНомерТелефона();
	УстановитьЗаголовокЗачисления(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура БанковскаяКартаПриИзменении(Элемент)
	УстановитьЗаголовокЗачисления(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура БанковскийСчетПриИзменении(Элемент)
	УстановитьЗаголовокЗачисления(ЭтотОбъект);
КонецПроцедуры


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

#Область ОбработчикиСобытийТЧМестаВыплатыЗарплатыДетализация

&НаКлиенте
Процедура МестаВыплатыЗарплатыДетализацияПриИзменении(Элемент)
	ЗаполнитьДетализациюМестВыплат(Ложь);
КонецПроцедуры

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

&НаКлиенте
Процедура МестаВыплатыЗарплатыДетализацияПередУдалением(Элемент, Отказ)
	ТекущиеДанные = Элементы.МестаВыплатыЗарплатыДетализация.ТекущиеДанные;
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ТекущиеДанные.СпособВыплаты);
КонецПроцедуры

&НаКлиенте
Процедура МестаВыплатыЗарплатыДетализацияВидПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.МестаВыплатыЗарплатыДетализация.ТекущиеДанные;
	ТекущиеДанные.МестоВыплаты = ПустоеМестоВыплатыПоВиду(ТекущиеДанные.Вид);
	Если ЗначениеЗаполнено(ТекущиеДанные.СпособВыплаты) Тогда
		УдалитьСтрокиРаспределенияПоСпособуВыплаты(ТекущиеДанные.СпособВыплаты);
	КонецЕсли;
	МестаВыплатыЗарплатыДетализацияУстановитьПараметрыВыбораМестаВыплаты(ТекущиеДанные.Вид);
	
КонецПроцедуры

&НаКлиенте
Процедура МестаВыплатыЗарплатыДетализацияМестоВыплатыПриИзменении(Элемент)
	ТекущиеДанные = Элементы.МестаВыплатыЗарплатыДетализация.ТекущиеДанные;
	Если ЗначениеЗаполнено(ТекущиеДанные.СпособВыплаты) Тогда
		УдалитьСтрокиРаспределенияПоСпособуВыплаты(ТекущиеДанные.СпособВыплаты);
	КонецЕсли;
КонецПроцедуры

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


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

&НаКлиенте
Процедура OK(Команда)
	
	СохранитьИЗакрытьНаКлиенте();
	
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	
	Модифицированность = Ложь;
	Закрыть();
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьЛицевыеСчетаЗарплатныхПроектов(Команда)
	СотрудникиКлиентРасширенный.ОткрытьСписокЛицевыхСчетовЗарплатныхПроектовСотрудника(ЭтотОбъект,ФизическоеЛицоСсылка,СотрудникСсылка);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСпособыИМестаВыплаты(Команда)

	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("СотрудникСсылка", СотрудникСсылка);
	
	ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаСпособыИМестаВыплаты", ПараметрыОткрытия, ЭтаФорма);
	
КонецПроцедуры

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


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

&НаСервере
Процедура УдалитьСтрокиРаспределенияПоСпособуВыплаты(СпособВыплаты)
	СтруктураОтбора = Новый Структура("СпособВыплаты", СпособВыплаты);
	СтрокиРаспределенияПоСпособуВыплат = РаспределениеМестВыплатЗарплаты.НайтиСтроки(СтруктураОтбора);
	Для Каждого СтрокаРаспределенияПоСпособуВыплат Из СтрокиРаспределенияПоСпособуВыплат Цикл
		РаспределениеМестВыплатЗарплаты.Удалить(СтрокаРаспределенияПоСпособуВыплат);
	КонецЦикла;
КонецПроцедуры

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

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

&НаСервере
Процедура ОбновитьДанныеРаспределенияСпособовВыплатСервере(АдресВременногоХранилища)
	
	Параметр = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
	
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(Параметр.СпособВыплаты);

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

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

&НаКлиенте
Функция ЗаблокироватьОбъектВФормеВладельце() Экспорт
	
	Возврат СотрудникиКлиент.ЗаблокироватьОбъектВФормеВладельцеДополнительнойФормы(ЭтотОбъект, Истина, Ложь);
	
КонецФункции

&НаСервере
Процедура ПрочитатьНаборЗаписейПериодическихСведенийПоСтруктуре(ИмяРегистра, СтруктураВедущихОбъектов) Экспорт
	
	РедактированиеПериодическихСведений.ПрочитатьНаборЗаписейПоСтруктуре(ЭтотОбъект, ИмяРегистра, СтруктураВедущихОбъектов);
	
КонецПроцедуры

&НаСервере
Процедура ПрочитатьНаборЗаписейПериодическихСведений(ИмяРегистра, ВедущийОбъект) Экспорт
	
	РедактированиеПериодическихСведений.ПрочитатьНаборЗаписей(ЭтотОбъект, ИмяРегистра, ВедущийОбъект);
	
КонецПроцедуры

&НаСервере
Функция АдресДанныхДополнительнойФормыНаСервере(ОписаниеДополнительнойФормы)
	
	Возврат СотрудникиФормы.АдресДанныхДополнительнойФормы(ОписаниеДополнительнойФормы, ЭтотОбъект);
	
КонецФункции

&НаКлиенте
Процедура СохранитьИЗакрыть(Результат, ДополнительныеПараметры) Экспорт 
	
	СохранитьИЗакрытьНаКлиенте();
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьИЗакрытьНаКлиенте(ЗакрытьФорму = Истина) Экспорт 

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

&НаКлиенте
Процедура СохранитьИЗакрытьНаКлиентеЗавершение(Отказ, ДополнительныеПараметры) Экспорт 

	Если Не Отказ И Открыта() Тогда
		
		Модифицированность = Ложь;
		Если ДополнительныеПараметры.ЗакрытьФорму Тогда
			Закрыть();
		КонецЕсли; 
		
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьДанные(Отказ, ОповещениеЗавершения = Неопределено)
	
	Если Не Модифицированность Тогда
		Если ОповещениеЗавершения <> Неопределено Тогда 
			ВыполнитьОбработкуОповещения(ОповещениеЗавершения, Отказ);
		КонецЕсли;
		Возврат;
	КонецЕсли;
	
	СохранитьДанныеЗавершение(Отказ, ОповещениеЗавершения);
	
КонецПроцедуры

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

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

КонецПроцедуры

&НаСервере
Процедура СпособыЗачисленияНастроитьПоля()
	
	Элементы.СпособПоНомеруКарты.СписокВыбора[0].Представление
		= Перечисления.СпособыЗачисленияВыплат.ПоНомеруКарты;
		
	Элементы.СпособПоНомеруСчетаВБанк.СписокВыбора[0].Представление
		= Перечисления.СпособыЗачисленияВыплат.ПоНомеруСчетаВБанк;
		
	Элементы.СпособПоСНИЛС.СписокВыбора[0].Представление 
		= Перечисления.СпособыЗачисленияВыплат.ПоСНИЛС;
		
	Элементы.СпособПоНомеруТелефона.СписокВыбора[0].Представление 
		= Перечисления.СпособыЗачисленияВыплат.ПоНомеруТелефона;
		
	Элементы.СпособПоЛицевомуСчету.СписокВыбора[0].Представление 
		= Перечисления.СпособыЗачисленияВыплат.ПоЛицевомуСчету;
		
	СпособЗачисления = ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СпособЗачисления;
	
	Если Не (ЗначениеЗаполнено(СпособЗачисления) 
		И (ЗарплатныйПроектПоддерживаетСпособыЗачисленияВыплат Или ЗарплатныйПроектДляПеречисленийНаКартыМир)) Тогда
		СпособЗачисления = Перечисления.СпособыЗачисленияВыплат.ПоЛицевомуСчету;
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаСервере
Функция ПолучитьСтрокуРаспределения(СпособВыплаты)
	СтрокаРаспределения = "Распределить...";
	СтруктураОтбора = Новый Структура("СпособВыплаты", СпособВыплаты);
	СтрокиПоСпособуВыплаты = РаспределениеМестВыплатЗарплаты.НайтиСтроки(СтруктураОтбора);
	Если СтрокиПоСпособуВыплаты.Количество() > 0 Тогда
		СтрокаРаспределения = "";
		Вид = "";
		Для Каждого СтрокаПоСпособуВыплаты из СтрокиПоСпособуВыплаты Цикл
			Если СтрокаПоСпособуВыплаты.Вид = Перечисления.ВидыМестВыплатыЗарплаты.Касса Тогда
				Вид = "Касса";
			ИначеЕсли СтрокаПоСпособуВыплаты.Вид = Перечисления.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект Тогда
				Вид = "Карточка";
			ИначеЕсли СтрокаПоСпособуВыплаты.Вид = Перечисления.ВидыМестВыплатыЗарплаты.Раздатчик Тогда
				Вид = "Раздатчик";
			ИначеЕсли СтрокаПоСпособуВыплаты.Вид = Перечисления.ВидыМестВыплатыЗарплаты.БанковскийСчет Тогда
				Вид = "Счет";
			КонецЕсли;
			СтрокаРаспределения = СтрокаРаспределения + Вид +" "+ Строка(СтрокаПоСпособуВыплаты.Размер) + ?(СтрокаПоСпособуВыплаты.СпособОграниченияВыплаты = Перечисления.СпособОграниченияВыплаты.Процентом,"%"," руб." )+" / ";
		КонецЦикла;
		СтрокаРаспределения = Лев(СтрокаРаспределения,СтрДлина(СтрокаРаспределения)-3);
	КонецЕсли;
	Возврат СтрокаРаспределения;
КонецФункции

&НаСервере
Процедура МестаВыплатыЗарплатыСотрудниковДобавитьОписаниеПоля(ОписателиПолейМестВыплаты, ИмяЭлемента, ВидМеста)
	
	Элемент = Элементы.Найти(ИмяЭлемента);
	Если Элемент <> Неопределено Тогда
		ОписателиПолейМестВыплаты.Вставить(Элемент, ВидМеста);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(Форма) Экспорт
	
	Элементы = Форма.Элементы;
	
	СтруктураГруппы = "Группа, СтраницаДоступно, СтраницаНеДоступно";
	
	ГруппыМестВыплаты = Новый Соответствие;
	
	ГруппыМестВыплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.ПустаяСсылка"),
		Новый Структура(СтруктураГруппы, Элементы.МестоВыплатыКакВсем, Элементы.МестоВыплатыКакВсемДоступно, Элементы.МестоВыплатыКакВсемНеДоступно));
	ГруппыМестВыплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.Касса"),
		Новый Структура(СтруктураГруппы, Элементы.МестоВыплатыКасса, Элементы.МестоВыплатыКассаДоступно, Элементы.МестоВыплатыКассаНеДоступно));
	ГруппыМестВыплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект"),
		Новый Структура(СтруктураГруппы, Элементы.МестоВыплатыЗарплатныйПроект, Элементы.МестоВыплатыЗарплатныйПроектДоступно, Элементы.МестоВыплатыЗарплатныйПроектНеДоступно));
	ГруппыМестВыплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.Раздатчик"),
		Новый Структура(СтруктураГруппы, Элементы.МестоВыплатыРаздатчик, Элементы.МестоВыплатыРаздатчикДоступно, Элементы.МестоВыплатыРаздатчикНеДоступно));
	ГруппыМестВыплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.БанковскийСчет"),
		Новый Структура(СтруктураГруппы, Элементы.МестоВыплатыБанковскийСчет, Элементы.МестоВыплатыБанковскийСчетДоступно, Элементы.МестоВыплатыБанковскийСчетНеДоступно));
	
	ГруппаМестВыплаты = ГруппыМестВыплаты[Форма.МестаВыплатыЗарплатыСотрудников.Вид];
	Для Каждого ГруппаМестВыплаты Из ГруппыМестВыплаты Цикл
		Если ГруппаМестВыплаты.Ключ = Форма.МестаВыплатыЗарплатыСотрудников.Вид Тогда
			ГруппаМестВыплаты.Значение.Группа.ТекущаяСтраница = ГруппаМестВыплаты.Значение.СтраницаДоступно
		Иначе
			ГруппаМестВыплаты.Значение.Группа.ТекущаяСтраница = ГруппаМестВыплаты.Значение.СтраницаНеДоступно
		КонецЕсли
	КонецЦикла;
	
	Если Форма.МестаВыплатыЗарплатыСотрудников.Вид = ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект") Тогда
		ВыплатаЧерезЗарплатныйПроект = Истина;
	ИначеЕсли Форма.МестаВыплатыЗарплатыСотрудников.Вид = ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.ПустаяСсылка")
			И Форма.МестаВыплатыЗарплатыПодразделений.Вид = ПредопределенноеЗначение("Перечисление.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект") Тогда
		
		ВыплатаЧерезЗарплатныйПроект = Истина;
		
	Иначе
		ВыплатаЧерезЗарплатныйПроект = Ложь;
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ГруппаСпособыЗачисления",
		"Видимость",
		ВыплатаЧерезЗарплатныйПроект);
		
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ГруппаДетализацияМестВыплат",
		"Доступность",
		ЗначениеЗаполнено(Форма.МестаВыплатыЗарплатыСотрудников.Вид));
		
	УстановитьДоступностьРаспределения(Форма);
	
КонецПроцедуры

&НаСервере
Процедура МестоВыплатыЗарплатныйПроектДоступноПолеПриИзмененииНаСервере(ЗарплатныйПроект = Неопределено)
	ПрочитатьРеквизитыФормы(ЗарплатныйПроект);
	ЗаполнитьДоступностьСпособовЗачисления();
	ЛицевыеСчетаСотрудниковПрочитать(ЗарплатныйПроект);
	УстановитьСвязьПараметровВыбораДляБанковскихКарт();
	УдалитьСтрокиРаспределенияПоСпособуВыплаты(ПредопределенноеЗначение("Справочник.СпособыВыплатыЗарплаты.ПустаяСсылка"));
	ЗаполнитьДетализациюМестВыплат(Ложь);
	УстановитьДоступностьРаспределения(ЭтотОбъект);
	
КонецПроцедуры

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

КонецПроцедуры

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

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

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

&НаСервере
Функция ДанныеРаспределенияМестВыплатЗарплаты(СпособВыплаты)
	СтрокиПоСпособуВыплаты = РаспределениеМестВыплатЗарплаты.НайтиСтроки(Новый Структура("СпособВыплаты", СпособВыплаты));
	Возврат ПоместитьВоВременноеХранилище(РаспределениеМестВыплатЗарплаты.Выгрузить(СтрокиПоСпособуВыплаты), ЭтаФорма.УникальныйИдентификатор);
КонецФункции

// Работа с лицевыми счетами

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

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

	Если СтруктураПояснения <> Неопределено
		И Не ПустаяСтрока(СтруктураПояснения.СообщенияПроверки) Тогда
		
		Если СтруктураПояснения.Картинка.Вид = ВидКартинки.Пустая Тогда
			ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока("");
		Иначе
			ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока(СтруктураПояснения.Картинка);
		КонецЕсли;
		
		ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока(
			ПодсказкаЛицевогоСчета,
			" ",
			Новый ФорматированнаяСтрока(СтруктураПояснения.СообщенияПроверки, , СтруктураПояснения.ЭлементЦветТекста));
		
	ИначеЕсли ЗначениеЗаполнено(ТекущаяОрганизация) Тогда
		ПодсказкаЛицевогоСчета = "";
	Иначе
		
		ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока(
			БиблиотекаКартинок.Информация,
			" ",
			НСтр("ru = 'Для ввода лицевого счета, необходимо оформить прием на работу'"));
		
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ДокументОснование) Тогда
		
		Если ЗначениеЗаполнено(ПодсказкаЛицевогоСчета) Тогда
			
			ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока(
				ПодсказкаЛицевогоСчета,
				Символы.ПС);
			
		КонецЕсли;
		
		ПодсказкаЛицевогоСчета = Новый ФорматированнаяСтрока(
			ПодсказкаЛицевогоСчета,
			НСтр("ru='Введен документом'") + ": ",
			Новый ФорматированнаяСтрока(
				Строка(ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ДокументОснование),
				,
				,
				,
				ПолучитьНавигационнуюСсылку(ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ДокументОснование)));
		
	КонецЕсли;
	
	ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(
		Форма, "ЛицевойСчет", ПодсказкаЛицевогоСчета);
	
КонецПроцедуры

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

КонецПроцедуры

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

	ЗаполнитьДоступностьСпособовЗачисления();
	
	ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамУстановитьОтображение(ЭтотОбъект);
	
	СпособыЗачисленияНастроитьПоля();
	
	ИзменениеСпособаЗачисление();
	
КонецПроцедуры

&НаКлиенте
Процедура ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамПриИзменении()
	
	Если Не ЗначениеЗаполнено(ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ДатаОткрытияЛицевогоСчета) Тогда
		ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ДатаОткрытияЛицевогоСчета = НачалоМесяца(ОбщегоНазначенияКлиент.ДатаСеанса());
	КонецЕсли;
	
	МестаВыплатыЗарплатыСотрудниковУстановитьДоступность(ЭтотОбъект);
	
	ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамУстановитьОтображение(ЭтотОбъект);
	
	УстановитьЗаголовокЗачисления(ЭтотОбъект);
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция СтруктураПоясненияКНомеруЛицевогоСчета(ФизическоеЛицо, ЗарплатныйПроект, НомерЛицевогоСчета, ЛицевыеСчета, ЛицевыеСчетаПрежняя, ПерсонализироватьСообщение)
	СтруктураПояснения = ОбменСБанкамиПоЗарплатнымПроектамФормы.СтруктураПоясненияКНомеруЛицевогоСчета(
		ФизическоеЛицо,
		ЗарплатныйПроект,
		НомерЛицевогоСчета,
		ЛицевыеСчета,
		ЛицевыеСчетаПрежняя,
		ПерсонализироватьСообщение);
	Возврат СтруктураПояснения	
КонецФункции

&НаСервере
Процедура ИзменениеСпособаЗачисление()
	
	ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СпособЗачисления = СпособЗачисления;
	СпособыЗачисленияУстановитьДоступность(ЭтотОбъект);
	УстановитьЗаголовокЗачисления(ЭтотОбъект);
	
КонецПроцедуры

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

	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамНомерЛицевогоСчета",
		"Доступность",
		СпособЗачисленияПоЛицевомуСчету);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Форма.Элементы,
		"ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамДатаОткрытияЛицевогоСчета",
		"Доступность",
		СпособЗачисленияПоЛицевомуСчету);
		
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНомерТелефона()
	НадписьНомерТелефона = ?(ЗначениеЗаполнено(НомерТелефона), НомерТелефона, НСтр("ru = 'не заполнен'"));
	Элементы.НадписьНомерТелефона.Заголовок = НадписьНомерТелефона;
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСНИЛС()
	НадписьСНИЛС = ?(ЗначениеЗаполнено(СНИЛС), СНИЛС, НСтр("ru = 'не заполнен'"));
	Элементы.НадписьСНИЛС.Заголовок = НадписьСНИЛС;
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДанныеФизическогоЛица()
	ЗаполнитьСНИЛС();
	ЗаполнитьНомерТелефона();
КонецПроцедуры

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

КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокЗачисления(Форма)
	
	Если Форма.СпособЗачисления = 
		ПредопределенноеЗначение("Перечисление.СпособыЗачисленияВыплат.ПоНомеруКарты") Тогда
		Форма.Элементы.ГруппаСпособыЗачисления.ЗаголовокСвернутогоОтображения = 
			СтрШаблон(НСтр("ru ='Зачислять по номеру карты %1'"), 
				Форма.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.БанковскаяКарта);
	ИначеЕсли Форма.СпособЗачисления = 
		ПредопределенноеЗначение("Перечисление.СпособыЗачисленияВыплат.ПоНомеруСчетаВБанк") Тогда
			Форма.Элементы.ГруппаСпособыЗачисления.ЗаголовокСвернутогоОтображения = 
				СтрШаблон(НСтр("ru ='Зачислять по номеру счета %1'"), 
					Форма.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.БанковскийСчет);
	ИначеЕсли Форма.СпособЗачисления =
		ПредопределенноеЗначение("Перечисление.СпособыЗачисленияВыплат.ПоНомеруТелефона") Тогда
			Форма.Элементы.ГруппаСпособыЗачисления.ЗаголовокСвернутогоОтображения = 
				СтрШаблон(НСтр("ru ='Зачислять по номеру телефона %1'"), 
					Форма.НомерТелефона);
	ИначеЕсли Форма.СпособЗачисления =
		ПредопределенноеЗначение("Перечисление.СпособыЗачисленияВыплат.ПоСНИЛС") Тогда
			Форма.Элементы.ГруппаСпособыЗачисления.ЗаголовокСвернутогоОтображения = 
				СтрШаблон(НСтр("ru ='Зачислять по СНИЛС %1'"), 
					Форма.СНИЛС);
	ИначеЕсли Форма.СпособЗачисления =
		ПредопределенноеЗначение("Перечисление.СпособыЗачисленияВыплат.ПоЛицевомуСчету") Тогда
			Форма.Элементы.ГруппаСпособыЗачисления.ЗаголовокСвернутогоОтображения = 
				СтрШаблон(НСтр("ru ='Зачислять по лицевому счету %1'"), 
					Форма.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.НомерЛицевогоСчета);
	КонецЕсли;
	
КонецПроцедуры

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

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

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