Опись заявлений сотрудников на выплату пособий / Модуль менеджера

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

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

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

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

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

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

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

// СтандартныеПодсистемы.Печать

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Печать описи заявлений сотрудников о выплате пособий.
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Идентификатор = "ОписьЗаявленийСотрудниковНаВыплатуПособий";
	КомандаПечати.Представление = НСтр("ru = 'Опись заявлений сотрудников на выплату пособий'");
	
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Идентификатор = "ПФ_MXL_ПриказСФР_2024_172";
	КомандаПечати.Представление = НСтр("ru = 'Приложение к приказу СФР от 06.02.2024 N 172'");
	УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ОтдельнаяСтрокаПодКаждыйДокумент", Истина);
	
КонецПроцедуры

// См. УправлениеПечатьюПереопределяемый.ПриПечати.
Процедура Печать(МассивСсылок, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОписьЗаявленийСотрудниковНаВыплатуПособий") Тогда
		ТабличныйДокумент = ПечатьОписиЗаявленийСотрудниковНаВыплатуПособий(МассивСсылок, ОбъектыПечати);
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ОписьЗаявленийСотрудниковНаВыплатуПособий",
			НСтр("ru = 'Опись заявлений сотрудников на выплату пособий'"),
			ТабличныйДокумент);
	КонецЕсли;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_ПриказСФР_2024_172") Тогда
		ТабличныйДокумент = ТабличныйДокумент_ПриказСФР_2024_172(МассивСсылок, ОбъектыПечати);
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ПФ_MXL_ПриказСФР_2024_172",
			НСтр("ru = 'Приложение к приказу СФР от 06.02.2024 N 172'"),
			ТабличныйДокумент);
	КонецЕсли;
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.Печать

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

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

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

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

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

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

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

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

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

#Область НПА

Функция ДатаНачалаПриказаСФР_2024_172() Экспорт
	Возврат '20240602';
КонецФункции

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

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

Функция ЗапросДляПечатиОписи(МассивСсылок)
	ДатаФорм2017 = ПрямыеВыплатыПособийСоциальногоСтрахования.ДатаВступленияВСилуФорм2017Года();
	ДатаФорм2021 = ПрямыеВыплатыПособийСоциальногоСтрахования.ДатаВступленияВСилуФорм2021Года();
	
	// Получаем запросом необходимые данные.
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
	Запрос.УстановитьПараметр("ДатаФорм2017", ДатаФорм2017);
	Запрос.УстановитьПараметр("ДатаФорм2021", ДатаФорм2021);
	
	// Создание ВТ кадровых данных.
	Запрос.Текст =
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ОписьЗаявленийСотрудниковНаВыплатуПособий.ПредставительСФР КАК ФизическоеЛицо,
	|	ОписьЗаявленийСотрудниковНаВыплатуПособий.Дата КАК Период
	|ПОМЕСТИТЬ ВТФизическиеЛица
	|ИЗ
	|	Документ.ОписьЗаявленийСотрудниковНаВыплатуПособий КАК ОписьЗаявленийСотрудниковНаВыплатуПособий
	|ГДЕ
	|	ОписьЗаявленийСотрудниковНаВыплатуПособий.Ссылка В(&МассивСсылок)";
	Запрос.Выполнить();
	Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеФизическихЛиц(Запрос.МенеджерВременныхТаблиц, "ВТФизическиеЛица");
	КадровыйУчет.СоздатьВТКадровыеДанныеФизическихЛиц(Описатель, Истина, "ФИОПолные");
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ДокументОпись.Ссылка КАК Ссылка,
	|	ДокументЗаявление.Номер КАК Номер,
	|	ДокументОпись.Дата КАК Дата,
	|	ВЫБОР
	|		КОГДА ДокументОпись.Дата < &ДатаФорм2017
	|			ТОГДА ""ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2012""
	|		КОГДА ДокументОпись.Дата < &ДатаФорм2021
	|			ТОГДА ""ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2017""
	|		ИНАЧЕ ""ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2021""
	|	КОНЕЦ КАК ИмяМакета,
	|	ТаблицаЗаявленияДокументаОпись.Заявление КАК Заявление,
	|	ТаблицаЗаявленияДокументаОпись.КраткоеНаименованиеДокументов КАК КраткоеНаименованиеДокументов,
	|	ТаблицаЗаявленияДокументаОпись.КоличествоСтраниц КАК КоличествоСтраниц,
	|	ТаблицаЗаявленияДокументаОпись.КоличествоДокументов КАК КоличествоДокументов,
	|	ДокументОпись.НаименованиеОрганизации КАК НаименованиеОрганизации,
	|	ДокументОпись.РегистрационныйНомерФСС КАК РегистрационныйНомерФСС,
	|	ДокументОпись.КодПодчиненностиФСС КАК КодПодчиненностиФСС,
	|	ДокументОпись.ИНН КАК ИНН,
	|	ДокументОпись.КПП КАК КПП,
	|	ДокументОпись.ДополнительныйКодФСС КАК ДополнительныйКодФСС,
	|	ДокументОпись.НаименованиеТерриториальногоОрганаФСС КАК НаименованиеТерриториальногоОрганаФСС,
	|	ДокументОпись.ТелефонСтрахователя КАК ТелефонСтрахователя,
	|	ДокументОпись.ТелефонУполномоченногоПредставителя КАК ТелефонУполномоченногоПредставителя,
	|	ДокументОпись.ДолжностьПредставителяСФР КАК ДолжностьПредставителяСФР,
	|	ДокументОпись.УдалитьФИОУполномоченного КАК УдалитьФИОУполномоченного,
	|	ВЫБОР
	|		КОГДА КадровыеДанныеУполномоченных.ФИОПолные ЕСТЬ NULL
	|				ИЛИ КадровыеДанныеУполномоченных.ФИОПолные = """"
	|			ТОГДА ДокументОпись.УдалитьФИОУполномоченного
	|		ИНАЧЕ КадровыеДанныеУполномоченных.ФИОПолные
	|	КОНЕЦ КАК ФИОУполномоченногоПредставителя,
	|	ВЫБОР
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ПособиеПоБеременностиИРодам)
	|			ТОГДА 2
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ПособиеВставшимНаУчетВРанниеСроки)
	|			ТОГДА 3
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ЕдиновременноеПособиеПриРожденииРебенка)
	|			ТОГДА 4
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком)
	|			ТОГДА 5
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ПособиеВСвязиСНесчастнымСлучаемНаПроизводстве)
	|			ТОГДА 6
	|		КОГДА ДокументЗаявление.ВидПособия = ЗНАЧЕНИЕ(Перечисление.ПособияНазначаемыеФСС.ОтпускСверхЕжегодногоНаПериодЛечения)
	|			ТОГДА 9
	|		ИНАЧЕ 1
	|	КОНЕЦ КАК ВидПособия,
	|	ДокументЗаявление.ФамилияЗаявителя КАК ФамилияЗаявителя,
	|	ДокументЗаявление.ИмяЗаявителя КАК ИмяЗаявителя,
	|	ДокументЗаявление.ОтчествоЗаявителя КАК ОтчествоЗаявителя,
	|	ДокументЗаявление.СНИЛСПолучателя КАК СНИЛСПолучателя,
	|	ДокументОпись.АдресЭлектроннойПочтыУполномоченногоПредставителя КАК АдресЭлектроннойПочтыУполномоченногоПредставителя,
	|	ВЫБОР
	|		КОГДА (ВЫРАЗИТЬ(Организации.НаименованиеПолное КАК СТРОКА(1000))) = """"
	|			ТОГДА Организации.НаименованиеСокращенное
	|		ИНАЧЕ ВЫРАЗИТЬ(Организации.НаименованиеПолное КАК СТРОКА(1000))
	|	КОНЕЦ КАК ОрганизацияНаименование,
	|	ТаблицаЗаявленияДокументаОпись.НомерСтроки КАК НомерСтроки
	|ИЗ
	|	Документ.ОписьЗаявленийСотрудниковНаВыплатуПособий КАК ДокументОпись
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОписьЗаявленийСотрудниковНаВыплатуПособий.Заявления КАК ТаблицаЗаявленияДокументаОпись
	|			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявлениеСотрудникаНаВыплатуПособия КАК ДокументЗаявление
	|			ПО ТаблицаЗаявленияДокументаОпись.Заявление = ДокументЗаявление.Ссылка
	|		ПО (ТаблицаЗаявленияДокументаОпись.Ссылка = ДокументОпись.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК КадровыеДанныеУполномоченных
	|		ПО ДокументОпись.ПредставительСФР = КадровыеДанныеУполномоченных.ФизическоеЛицо
	|			И ДокументОпись.Дата = КадровыеДанныеУполномоченных.Период
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
	|		ПО ДокументОпись.Организация = Организации.Ссылка
	|ГДЕ
	|	ДокументОпись.Ссылка В(&МассивСсылок)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Дата,
	|	Ссылка,
	|	НомерСтроки";
	
	Возврат Запрос;
КонецФункции

Функция ПечатьОписиЗаявленийСотрудниковНаВыплатуПособий(МассивСсылок, ОбъектыПечати)
	// Создаем табличный документ и устанавливаем имя параметров печати.
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_ОписьЗаявленийСотрудниковНаВыплатуПособий";
	ТабличныйДокумент.ПолеСлева = 0;
	ТабличныйДокумент.ПолеСправа = 0;
	ТабличныйДокумент.ПолеСнизу = 0;
	ТабличныйДокумент.ПолеСверху = 0;
	
	Запрос = ЗапросДляПечатиОписи(МассивСсылок);
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	ТаблицаСтрок = Новый ТаблицаЗначений;
	Для Каждого КолонкаРезультатаЗапроса Из РезультатЗапроса.Колонки Цикл
		ТаблицаСтрок.Колонки.Добавить(КолонкаРезультатаЗапроса.Имя, КолонкаРезультатаЗапроса.ТипЗначения);
	КонецЦикла;
	
	Пока Выборка.СледующийПоЗначениюПоля("ИмяМакета") Цикл
		Если Выборка.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2012" Тогда
			КоличествоСтрокВМакете = 15;
		ИначеЕсли Выборка.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2017" Тогда
			КоличествоСтрокВМакете = 13;
		Иначе
			КоличествоСтрокВМакете = 5;
		КонецЕсли;
		
		Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
			// Подготовка таблицы строк со свернутыми данными.
			ТаблицаСтрок.Очистить();
			Пока Выборка.Следующий() Цикл
				Если Не ЗначениеЗаполнено(Выборка.Заявление) Тогда
					Продолжить;
				КонецЕсли;
				СтрокаТаблицы = ТаблицаСтрок.Найти(Выборка.Заявление, "Заявление");
				Если СтрокаТаблицы = Неопределено Тогда
					СтрокаТаблицы = ТаблицаСтрок.Добавить();
					ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
				Иначе
					СтрокаТаблицы.КраткоеНаименованиеДокументов = СтрокаТаблицы.КраткоеНаименованиеДокументов
						+ ", " + Выборка.КраткоеНаименованиеДокументов;
					СтрокаТаблицы.КоличествоСтраниц = СтрокаТаблицы.КоличествоСтраниц + Выборка.КоличествоСтраниц;
					СтрокаТаблицы.КоличествоДокументов = СтрокаТаблицы.КоличествоДокументов + Выборка.КоличествоДокументов;
				КонецЕсли;
			КонецЦикла;
			
			Макет = Неопределено;
			ВыведеноСтрок = 0;
			
			Для Каждого СтрокаТаблицы Из ТаблицаСтрок Цикл
				ВыведеноСтрок = (ВыведеноСтрок + 1) % КоличествоСтрокВМакете;
				НомерСтроки = ?(ВыведеноСтрок = 0, КоличествоСтрокВМакете, ВыведеноСтрок);
				
				Если ВыведеноСтрок = 1 Тогда
					Если Макет <> Неопределено Тогда
						Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
							ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
						КонецЕсли;
						ТабличныйДокумент.Вывести(Макет);
					КонецЕсли;
					Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ОписьЗаявленийСотрудниковНаВыплатуПособий." + СтрокаТаблицы.ИмяМакета);
					Если СтрокаТаблицы.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2012" Тогда
						ВывестиШапкуИПодвалОписиЗаявлений_2012(Макет, СтрокаТаблицы);
					ИначеЕсли СтрокаТаблицы.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2017" Тогда
						ВывестиШапкуИПодвалОписиЗаявлений_2017(Макет, СтрокаТаблицы);
					Иначе
						ВывестиШапкуИПодвалОписиЗаявлений_2021(Макет, СтрокаТаблицы);
					КонецЕсли;
				КонецЕсли;
				
				Если СтрокаТаблицы.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2012" Тогда
					ВывестиСтрокуОписиЗаявлений_2012(Макет, СтрокаТаблицы, НомерСтроки);
				ИначеЕсли СтрокаТаблицы.ИмяМакета = "ПФ_MXL_ОписьЗаявленийИДокументовВФСС_2017" Тогда
					ВывестиСтрокуОписиЗаявлений_2017(Макет, СтрокаТаблицы, НомерСтроки);
				Иначе
					ВывестиСтрокуОписиЗаявлений_2021(Макет, СтрокаТаблицы, НомерСтроки);
				КонецЕсли;
			КонецЦикла;
			Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			ТабличныйДокумент.Вывести(Макет);
		КонецЦикла;
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
КонецФункции

Процедура ВывестиСтрокуОписиЗаявлений_2012(Макет, Выборка, НомерСтроки)
	
	ПрефиксСтроки = "ФИО_" + Формат(НомерСтроки,"ЧЦ=2; ЧВН=") + "_";
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.ФамилияЗаявителя),  Макет, ПрефиксСтроки, 20);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.ИмяЗаявителя),      Макет, ПрефиксСтроки, 20, 21);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.ОтчествоЗаявителя), Макет, ПрефиксСтроки, 20, 41);
	
	Макет.Области["ВидВыплаты" + НомерСтроки].Текст = Выборка.ВидПособия;
	Макет.Области["Документы_" + НомерСтроки].Текст = Лев(Выборка.КраткоеНаименованиеДокументов, 105);
	
	Если Выборка.КоличествоСтраниц < 10 Тогда
		Макет.Области["Страниц" + НомерСтроки].Текст = "      " + Выборка.КоличествоСтраниц;
	Иначе
		КоличествоСтраниц = Формат(Выборка.КоличествоСтраниц, "ЧЦ=2");
		КоличествоСтраниц = Лев("    ", 2 - СтрДлина(КоличествоСтраниц)) + КоличествоСтраниц;
		Макет.Области["Страниц" + НомерСтроки].Текст = Лев(КоличествоСтраниц, 1) + "    " + Прав(КоличествоСтраниц, 1);
	КонецЕсли;
	
КонецПроцедуры

Процедура ВывестиСтрокуОписиЗаявлений_2017(Макет, Выборка, НомерСтроки)
	
	Макет.Параметры["Фамилия"           + НомерСтроки] = Выборка.ФамилияЗаявителя;
	Макет.Параметры["Имя"               + НомерСтроки] = Выборка.ИмяЗаявителя;
	Макет.Параметры["Отчество"          + НомерСтроки] = Выборка.ОтчествоЗаявителя;
	Макет.Параметры["ВидВыплаты"        + НомерСтроки] = Выборка.ВидПособия;
	Макет.Параметры["Документы"         + НомерСтроки] = Лев(Выборка.КраткоеНаименованиеДокументов, 290);
	Макет.Параметры["КоличествоСтраниц" + НомерСтроки] = Выборка.КоличествоСтраниц;
	
КонецПроцедуры

Процедура ВывестиСтрокуОписиЗаявлений_2021(Макет, Выборка, НомерСтроки)
	
	Макет.Параметры["Фамилия"           + НомерСтроки] = Выборка.ФамилияЗаявителя;
	Макет.Параметры["Имя"               + НомерСтроки] = Выборка.ИмяЗаявителя;
	Макет.Параметры["Отчество"          + НомерСтроки] = Выборка.ОтчествоЗаявителя;
	Макет.Параметры["СНИЛС"             + НомерСтроки] = Выборка.СНИЛСПолучателя;
	Макет.Параметры["ВидВыплаты"        + НомерСтроки] = Выборка.ВидПособия;
	Макет.Параметры["Документы"         + НомерСтроки] = Лев(Выборка.КраткоеНаименованиеДокументов, 290);
	Макет.Параметры["КоличествоСтраниц" + НомерСтроки] = Выборка.КоличествоСтраниц;
	
КонецПроцедуры

Процедура ВывестиШапкуИПодвалОписиЗаявлений_2012(Макет, Выборка)
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.РегистрационныйНомерФСС, Макет, "РегистрационныйНомер_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныйКодФСС, Макет, "ДополнительныйКод_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КодПодчиненностиФСС, Макет, "КодПодчиненности_", 5);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ИНН, Макет, "ИНН_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КПП, Макет, "КПП_", 9);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.НаименованиеОрганизации), Макет, "Страхователь_", 30);
	ДлиныСтрок = Новый Массив();
	ДлиныСтрок.Добавить(35);
	ДлиныСтрок.Добавить(39);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.НаименованиеТерриториальногоОрганаФСС), ДлиныСтрок), Макет, "Фонд_", 74);
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(КраткоеПредставлениеТелефона(Выборка.ТелефонУполномоченногоПредставителя), Макет, "ТелефонСоставителя_", 10);
	
	Макет.Параметры.ДолжностьРуководителя = "" + Выборка.ДолжностьПредставителяСФР;
	Макет.Параметры.ФИОРуководителя       = "" + Выборка.УдалитьФИОУполномоченного;
	
КонецПроцедуры

Процедура ВывестиШапкуИПодвалОписиЗаявлений_2017(Макет, Выборка)
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.РегистрационныйНомерФСС, Макет, "РегистрационныйНомер_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныйКодФСС, Макет, "ДополнительныйКод_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КодПодчиненностиФСС, Макет, "КодПодчиненности_", 5);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ИНН, Макет, "ИНН_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КПП, Макет, "КПП_", 9);
	Макет.Параметры.Страхователь = Выборка.НаименованиеОрганизации;
	Макет.Параметры.Фонд         = Выборка.НаименованиеТерриториальногоОрганаФСС;
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(КраткоеПредставлениеТелефона(Выборка.ТелефонУполномоченногоПредставителя), Макет, "ТелефонСоставителя_", 10);
	
	Макет.Параметры.ДолжностьРуководителя = "" + Выборка.ДолжностьПредставителяСФР;
	Макет.Параметры.ФИОРуководителя       = "" + Выборка.УдалитьФИОУполномоченного;
	
КонецПроцедуры

Процедура ВывестиШапкуИПодвалОписиЗаявлений_2021(Макет, Выборка)
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.РегистрационныйНомерФСС, Макет, "РегистрационныйНомер_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныйКодФСС, Макет, "ДополнительныйКод_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КодПодчиненностиФСС, Макет, "КодПодчиненности_", 5);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ИНН, Макет, "ИНН_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КПП, Макет, "КПП_", 9);
	Макет.Параметры.Страхователь = Выборка.ОрганизацияНаименование;
	Макет.Параметры.Фонд         = Выборка.НаименованиеТерриториальногоОрганаФСС;
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(КраткоеПредставлениеТелефона(Выборка.ТелефонУполномоченногоПредставителя), Макет, "ТелефонСоставителя_", 10);
	
	Макет.Параметры.ДолжностьРуководителя = "" + Выборка.ДолжностьПредставителяСФР;
	Макет.Параметры.ФИОРуководителя       = "" + Выборка.ФИОУполномоченногоПредставителя;
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.АдресЭлектроннойПочтыУполномоченногоПредставителя, Макет, "АдресЭлектроннойПочты_", 28);
	
КонецПроцедуры

Функция КраткоеПредставлениеТелефона(ПредставлениеТелефона)
	Телефон = ПредставлениеТелефона;
	Если Лев(Телефон,3) = "+7 " Тогда
		Телефон = Сред(Телефон,4)
	ИначеЕсли Лев(Телефон,2) = "8 " Тогда
		Телефон = Сред(Телефон,3)
	КонецЕсли;
	Телефон = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Телефон,"(",""),")","")," ",""),"-",""),",","");
	Возврат Телефон;
КонецФункции

Функция ТабличныйДокумент_ПриказСФР_2024_172(МассивСсылок, ОбъектыПечати)
	МетаданныеМакета = Метаданные.Документы.ОписьЗаявленийСотрудниковНаВыплатуПособий.Макеты.ПФ_MXL_ПриказСФР_2024_172;
	КонтекстПечати = УправлениеПечатьюБЗК.КонтекстПечати(МетаданныеМакета, МассивСсылок, ОбъектыПечати);
	
	ТабличныйДокумент = КонтекстПечати.ТабличныйДокумент;
	УправлениеПечатьюБЗК.УстановитьОтступ(ТабличныйДокумент, 0, 5, 0, 5);
	
	Запрос = ЗапросДляПечатиОписи(МассивСсылок);
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	ТаблицаСтрок = Новый ТаблицаЗначений;
	Для Каждого КолонкаРезультатаЗапроса Из РезультатЗапроса.Колонки Цикл
		ТаблицаСтрок.Колонки.Добавить(КолонкаРезультатаЗапроса.Имя, КолонкаРезультатаЗапроса.ТипЗначения);
	КонецЦикла;
	ТаблицаСтрок.Колонки.Добавить("КоличествоВложенныхСтрок", ОбщегоНазначения.ОписаниеТипаЧисло(2, 0));
	Для НомерВложеннойСтроки = 1 По 10 Цикл
		ТаблицаСтрок.Колонки.Добавить("ВидДокументов_"        + НомерВложеннойСтроки);
		ТаблицаСтрок.Колонки.Добавить("КоличествоДокументов_" + НомерВложеннойСтроки);
		ТаблицаСтрок.Колонки.Добавить("КоличествоСтраниц_"    + НомерВложеннойСтроки);
	КонецЦикла;
	
	Пока Выборка.Следующий() Цикл
		Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
			ТаблицаСтрок.Очистить();
			Пока Выборка.Следующий() Цикл
				Если Не ЗначениеЗаполнено(Выборка.Заявление)
					Или Не ЗначениеЗаполнено(Выборка.КраткоеНаименованиеДокументов) Тогда
					Продолжить;
				КонецЕсли;
				СтрокаТаблицы = ТаблицаСтрок.Найти(Выборка.Заявление, "Заявление");
				Если СтрокаТаблицы = Неопределено Тогда
					СтрокаТаблицы = ТаблицаСтрок.Добавить();
					ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
				КонецЕсли;
				СтрокаТаблицы.КоличествоВложенныхСтрок = СтрокаТаблицы.КоличествоВложенныхСтрок + 1;
				НомерВложеннойСтроки = СтрокаТаблицы.КоличествоВложенныхСтрок;
				ВидСНомером = Строка(НомерВложеннойСтроки) + ". " + Выборка.КраткоеНаименованиеДокументов;
				СтрокаТаблицы["ВидДокументов_"        + НомерВложеннойСтроки] = ВидСНомером;
				СтрокаТаблицы["КоличествоДокументов_" + НомерВложеннойСтроки] = Выборка.КоличествоДокументов;
				СтрокаТаблицы["КоличествоСтраниц_"    + НомерВложеннойСтроки] = Выборка.КоличествоСтраниц;
			КонецЦикла;
			Если ТаблицаСтрок.Количество() = 0 Тогда
				Для НомерСтроки = 1 По 7 Цикл
					ТаблицаСтрок.Добавить();
				КонецЦикла;
			КонецЕсли;
			
			УправлениеПечатьюБЗК.ПередПечатьюОчередногоОбъекта(КонтекстПечати);
			
			ВывестиШапкуПриказаСФР_2024_172(КонтекстПечати, Выборка);
			
			ТабличныйДокумент.Вывести(КонтекстПечати.Макет.ПолучитьОбласть("Таблица_Шапка"));
			НомерСтроки = 0;
			КоличествоСтрок = ТаблицаСтрок.Количество();
			Для Каждого СтрокаТаблицы Из ТаблицаСтрок Цикл
				НомерСтроки = НомерСтроки + 1;
				ВывестиСтрокуТаблицыПриказаСФР_2024_172(КонтекстПечати, СтрокаТаблицы, НомерСтроки, КоличествоСтрок);
			КонецЦикла;
			
			ВывестиПодвалПриказаСФР_2024_172(КонтекстПечати, Выборка);
			
			УправлениеПечатьюБЗК.ПослеПечатиОчередногоОбъекта(КонтекстПечати, Выборка.Ссылка);
		КонецЦикла;
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
КонецФункции

Процедура ВывестиШапкуПриказаСФР_2024_172(КонтекстПечати, Выборка)
	// Подготовка параметров.
	Параметры = Новый Структура(КонтекстПечати.ИменаПараметровОбластей.Шапка);
	Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "Шапка");
	// Номер / дата описи.
	Параметры.Опись_Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Выборка.Номер);
	Параметры.Опись_Дата  = Формат(Выборка.Дата, "ДЛФ=DD");
	// Наименование страхователя.
	ДлиныСтрок = ОбщегоНазначенияКлиентСервер.МассивЗначений(100);
	СтрокаСПереносами = ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(Выборка.ОрганизацияНаименование, ДлиныСтрок);
	Позиция = СтрНайти(СтрокаСПереносами, Символы.ПС);
	Параметры.Страхователь_Наименование_1 = СокрЛП(СтрПолучитьСтроку(СтрокаСПереносами, 1));
	Параметры.Страхователь_Наименование_2 = СокрЛП(?(Позиция = 0, "", Сред(СтрокаСПереносами, Позиция + 1)));
	// Реквизиты страхователя.
	УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Выборка.РегистрационныйНомерФСС, "РегистрационныйНомер");
	УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Выборка.ИНН, "ИНН");
	УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Выборка.КПП, "КПП");
	// Наименование ТОФ.
	ДлиныСтрок = ОбщегоНазначенияКлиентСервер.МассивЗначений(100);
	СтрокаСПереносами = ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(Выборка.НаименованиеТерриториальногоОрганаФСС, ДлиныСтрок);
	Позиция = СтрНайти(СтрокаСПереносами, Символы.ПС);
	Параметры.ТОФ_Наименование_1 = СокрЛП(СтрПолучитьСтроку(СтрокаСПереносами, 1));
	Параметры.ТОФ_Наименование_2 = СокрЛП(?(Позиция = 0, "", Сред(СтрокаСПереносами, Позиция + 1)));
	// Вывод.
	Секция.ТабличныйДокумент.Параметры.Заполнить(Параметры);
	КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
КонецПроцедуры

Процедура ВывестиСтрокуТаблицыПриказаСФР_2024_172(КонтекстПечати, СтрокаТаблицы, НомерСтроки, КоличествоСтрок)
	// Подготовка параметров.
	Параметры = Новый Структура(КонтекстПечати.ИменаПараметровОбластей.Таблица_Строка);
	Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "Таблица_Строка");
	// Данные по вложенным строкам.
	ЗаполнитьЗначенияСвойств(Параметры, СтрокаТаблицы);
	// Номер строки и код вида выплаты.
	Параметры.НомерСтроки = Формат(НомерСтроки, "ЧГ=");
	Параметры.КодВидаВыплаты = СтрокаТаблицы.ВидПособия;
	// Видимость вложенных строк.
	ЭтоПоследняяСтрока = (НомерСтроки = КоличествоСтрок);
	Для НомерВложеннойСтроки = 5 По 10 Цикл
		ВидимостьСтроки = НомерВложеннойСтроки <= СтрокаТаблицы.КоличествоВложенныхСтрок;
		НомерПредшествующейСтроки = НомерВложеннойСтроки - 1;
		Секция.ТабличныйДокумент.Область("Таблица_Строка_" + НомерВложеннойСтроки).Видимость = ВидимостьСтроки;
		Секция.ТабличныйДокумент.Область("Таблица_Строка_" + НомерПредшествующейСтроки).ВместеСоСледующим =
			ВидимостьСтроки Или ЭтоПоследняяСтрока;
	КонецЦикла;
	// ФИО и СНИЛС.
	СНИЛС = ?(ЗначениеЗаполнено(СтрокаТаблицы.СНИЛСПолучателя),
		СтрШаблон(НСтр("ru = 'СНИЛС: %1'"), СтрокаТаблицы.СНИЛСПолучателя),
		"");
	Параметры.Застрахованный_ФИО_1 = СтрокаТаблицы.ФамилияЗаявителя;
	Параметры.Застрахованный_ФИО_2 = СтрокаТаблицы.ИмяЗаявителя;
	Параметры.Застрахованный_ФИО_3 = СтрокаТаблицы.ОтчествоЗаявителя;
	Параметры.Застрахованный_ФИО_4 = СНИЛС;
	// Вывод.
	Секция.ТабличныйДокумент.Параметры.Заполнить(Параметры);
	КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
КонецПроцедуры

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

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

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

#КонецЕсли

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