Изменение условий исполнительного листа / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

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

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

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

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

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

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

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

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

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

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

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

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли

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