Единовременное пособие за счет ФСС / Модуль менеджера

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

#Область ПрограммныйИнтерфейс

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(ФизическоеЛицо)";
КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

#Область СлужебныйПрограммныйИнтерфейс

#Область ОбработчикиПравилРегистрации

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

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

// Возвращает описание состава документа
//
// Возвращаемое значение:
//  Структура - см. ЗарплатаКадрыСоставДокументов.НовоеОписаниеСоставаОбъекта.
Функция ОписаниеСоставаОбъекта() Экспорт
	Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаФизическоеЛицоВШапке("ФизическоеЛицо", "");
КонецФункции

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

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

Функция ПараметрыИсправляемогоДокумента(ДокументСсылка) Экспорт
	
	Возврат ИсправлениеДокументовЗарплатаКадры.ПараметрыИсправляемогоДокумента(ДокументСсылка,
		СвойстваИсправляемогоДокумента(ДокументСсылка));
	
КонецФункции

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

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

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

Функция СотрудникПолучающийПособие(РеквизитыДляПроведения)

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

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

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

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

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

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

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

#Область Печать

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
КонецПроцедуры

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

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

#КонецЕсли

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