Исходящая справка для расчета пособий / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

// ЗарплатаКадрыПодсистемы.ФиксацияВторичныхДанныхВДокументах

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

// Конец ЗарплатаКадрыПодсистемы.ФиксацияВторичныхДанныхВДокументах

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

// Возвращает строку - имя последнего актуального макета печатной формы приложения 1 к приказу 182н.
Функция ИмяМакетаПечатнойФормыСправки() Экспорт
	Возврат "ПФ_MXL_Справка_2022";
КонецФункции

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


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

#Область ПечатьСправки

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

Функция ТабличныйДокументСправки(МассивСсылок, ОбъектыПечати)
	КэшМакетов = Новый Соответствие;
	
	ДатаНачалаДействияСправки2022 = ДатаНачалаДействияСправки2022();
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СправкаОЗаработкеДляРасчетаПособий";
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	ДанныеДокументов          = ЗапросПоОсновнымДанным(МассивСсылок).Выполнить().Выгрузить();
	ВыборкаЗаработка          = ЗапросПоЗаработку(МассивСсылок).Выполнить().Выбрать();
	ВыборкаПериодовРаботы     = ЗапросПоПериодамРаботы(МассивСсылок).Выполнить().Выбрать();
	ПериодыНетрудоспособности = ЗапросПоПериодамНетрудоспособности(МассивСсылок).Выполнить().Выгрузить();
	
	Организации = КоллекцииБЗК.УникальныеЗначенияКолонки(ДанныеДокументов, "Организация");
	ВидЮридическийАдрес = Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации;
	АдресаОрганизаций = КонтактнаяИнформацияБЗК.КонтактнаяИнформацияОбъектов(Организации, , ВидЮридическийАдрес);
	Валюта = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();
	
	МассивФизлиц = Новый Массив;
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФизлиц, ДанныеДокументов.ВыгрузитьКолонку("Руководитель"), Истина);
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФизлиц, ДанныеДокументов.ВыгрузитьКолонку("ГлавныйБухгалтер"), Истина);
	КадровыеДанныеФизическихЛиц = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, МассивФизлиц, "ИОФамилия");
	
	ПервыйДокумент = Истина;
	Для Каждого ДанныеДокумента Из ДанныеДокументов Цикл
		Если ПервыйДокумент Тогда
			ПервыйДокумент = Ложь;
		Иначе
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		НачалоТекущегоФрагмента = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		Если ДанныеДокумента.Дата >= ДатаНачалаДействияСправки2022 Тогда
			ИмяМакета = "ПФ_MXL_Справка_2022";
		ИначеЕсли ДанныеДокумента.Дата >= '20130701' Тогда
			ИмяМакета = "ПФ_MXL_СправкаРасширенная";
		Иначе
			ИмяМакета = "ПФ_MXL_Справка";
		КонецЕсли;
		СоставМакета = СоставМакета(КэшМакетов, ИмяМакета);
		
		ПредставлениеЮридическогоАдреса = КонтактнаяИнформацияБЗК.ПредставлениеКонтактнойИнформации(
			АдресаОрганизаций,
			ДанныеДокумента.Организация,
			ВидЮридическийАдрес);
		
		ВывестиШапку(ТабличныйДокумент, СоставМакета.Шапка, ДанныеДокумента, ПредставлениеЮридическогоАдреса);
		
		СтруктураПоиска = Новый Структура("Ссылка", ДанныеДокумента.Ссылка);
		Если ИмяМакета = "ПФ_MXL_Справка_2022" Или ИмяМакета = "ПФ_MXL_СправкаРасширенная" Тогда
			ВывестиПериодРаботы(ТабличныйДокумент, СоставМакета.ПериодРаботы, СтруктураПоиска, ВыборкаПериодовРаботы);
		КонецЕсли;
		
		ВывестиЗаработок(ТабличныйДокумент, СоставМакета, СтруктураПоиска, ВыборкаЗаработка, Валюта);
		
		Если ИмяМакета = "ПФ_MXL_Справка_2022" Или ИмяМакета = "ПФ_MXL_СправкаРасширенная" Тогда
			ВывестиПериодыНетрудоспособности(ТабличныйДокумент, СоставМакета, ДанныеДокумента, ПериодыНетрудоспособности);
		КонецЕсли;
		
		Если ИмяМакета = "ПФ_MXL_Справка_2022" Тогда
			ВывестиПодвал_2022(ТабличныйДокумент, СоставМакета.Подвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц);
		Иначе
			ВывестиПодвал(ТабличныйДокумент, СоставМакета.Подвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц);
		КонецЕсли;
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НачалоТекущегоФрагмента, ОбъектыПечати, ДанныеДокумента.Ссылка);
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
КонецФункции

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

Процедура ВывестиШапку(ТабличныйДокумент, ОбластьШапка, ДанныеДокумента, ПредставлениеЮридическогоАдреса)
	ПараметрыОбластиШапка = ОбластьШапка.Параметры;
	
	ПараметрыОбластиШапка.Заполнить(ДанныеДокумента);
	
	ПараметрыОбластиШапка.ФИО = СтрШаблон("%1 %2 %3", ДанныеДокумента.Фамилия, ДанныеДокумента.Имя, ДанныеДокумента.Отчество);
	
	ПараметрыОбластиШапка.АдресСтрахователя = ПредставлениеЮридическогоАдреса;
	ПараметрыОбластиШапка.НаименованиеТерриториальногоОрганаФСС = СокрЛП(ПараметрыОбластиШапка.НаименованиеТерриториальногоОрганаФСС);
	ПараметрыОбластиШапка.КемВыданДокумент = СокрЛП(ПараметрыОбластиШапка.КемВыданДокумент);
	ПараметрыОбластиШапка.ДатаВыдачиДокумента = Формат(ПараметрыОбластиШапка.ДатаВыдачиДокумента,"ДЛФ=DD");
	
	СтруктураАдреса = СтруктураАдресаВФорматеКЛАДР(ДанныеДокумента.АдресМестаЖительства);
	ЗаполнитьЗначенияСвойств(ПараметрыОбластиШапка, СтруктураАдреса);
	
	ТабличныйДокумент.Вывести(ОбластьШапка);
КонецПроцедуры

Процедура ВывестиПериодРаботы(ТабличныйДокумент, ОбластьПериодРаботы, СтруктураПоиска, ВыборкаПериодовРаботы)
	ПараметрыОбластиПериодРаботы = ОбластьПериодРаботы.Параметры;
	
	ВыведеноСтрок = 0;
	ВыборкаПериодовРаботы.Сбросить();
	Пока ВыборкаПериодовРаботы.НайтиСледующий(СтруктураПоиска) Цикл
		ПараметрыОбластиПериодРаботы.Заполнить(ВыборкаПериодовРаботы);
		ТабличныйДокумент.Вывести(ОбластьПериодРаботы);
		ВыведеноСтрок = ВыведеноСтрок + 1;
	КонецЦикла;
	
	Если ВыведеноСтрок = 0 Тогда
		ПараметрыОбластиПериодРаботы.ПериодРаботыС  = "";
		ПараметрыОбластиПериодРаботы.ПериодРаботыПо = "";
		ТабличныйДокумент.Вывести(ОбластьПериодРаботы);
	КонецЕсли;
КонецПроцедуры

Процедура ВывестиЗаработок(ТабличныйДокумент, СоставМакета, СтруктураПоиска, ВыборкаЗаработка, Валюта)
	ПараметрыОбластиГод = СоставМакета.Год.Параметры;
	
	ТабличныйДокумент.Вывести(СоставМакета.Пункт3);
	
	ВыведеноСтрок = 0;
	ВыборкаЗаработка.Сбросить();
	Пока ВыборкаЗаработка.НайтиСледующий(СтруктураПоиска) Цикл
		
		ПараметрыОбластиГод.РасчетныйГод = ВыборкаЗаработка.РасчетныйГод;
		ПараметрыОбластиГод.Заработок    = Формат(Цел(ВыборкаЗаработка.Заработок),"ЧДЦ=0; ЧН=-");
		ПараметрыОбластиГод.ЗаработокКоп = Формат((ВыборкаЗаработка.Заработок - Цел(ВыборкаЗаработка.Заработок)) * 100,"ЧЦ=2; ЧДЦ=0; ЧН=-");
		ПараметрыОбластиГод.ЗаработокПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаЗаработка.Заработок, Валюта);
		ТабличныйДокумент.Вывести(СоставМакета.Год);
		ВыведеноСтрок = ВыведеноСтрок + 1;
		
	КонецЦикла;
	
	Если ВыведеноСтрок = 0 Тогда
		ТабличныйДокумент.Вывести(СоставМакета.ПустойГод);
	КонецЕсли;
КонецПроцедуры

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

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

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

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

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

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

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

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

Функция СтруктураАдресаВФорматеКЛАДР(Адрес)
	Результат = Новый Структура("Индекс, Регион, Район, НаселенныйПункт, Улица, Дом, Корпус, Квартира");
	
	СведенияОбАдресе = РаботаСАдресами.СведенияОбАдресе(Адрес);
	ЗаполнитьЗначенияСвойств(Результат, СведенияОбАдресе);
	
	// Заполнение пустыми строками.
	Для Каждого КлючИЗначение Из Результат Цикл
		Если Не ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
			Результат.Вставить(КлючИЗначение.Ключ, "");
		КонецЕсли;
	КонецЦикла;
	
	// Сокращения тоже являются частью адреса (определяют его смысл в плане уникальности).
	// Например, регион: "Кемеровская область -", сокращение: "Кузбасс".
	Если СведенияОбАдресе.Свойство("РегионТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.РегионТипКраткий) Тогда
		Результат.Регион = Результат.Регион + " " + СведенияОбАдресе.РегионТипКраткий;
	КонецЕсли;
	
	// Например, район: "Сходня", сокращение: "мкр".
	Если Результат.НаселенныйПункт <> ""
		И СведенияОбАдресе.Свойство("НаселенныйПунктТипКраткий")
		И ЗначениеЗаполнено(СведенияОбАдресе.НаселенныйПунктТипКраткий) Тогда
		Результат.НаселенныйПункт = Результат.НаселенныйПункт + " " + СведенияОбАдресе.НаселенныйПунктТипКраткий;
	КонецЕсли;
	
	// Например, улица: "10-я В.О.", сокращение: "линия".
	Если Результат.Улица <> ""
		И СведенияОбАдресе.Свойство("УлицаТипКраткий")
		И ЗначениеЗаполнено(СведенияОбАдресе.УлицаТипКраткий) Тогда
		Результат.Улица = Результат.Улица + " " + СведенияОбАдресе.УлицаТипКраткий;
	КонецЕсли;
	
	// Город записывается в населенный пункт.
	// Его сокращения тоже важны, т.к. например, в одном регионе бывают одноименная деревня/поселок и город.
	Если СведенияОбАдресе.Свойство("Город") И ЗначениеЗаполнено(СведенияОбАдресе.Город) Тогда
		ПредставлениеГорода = СведенияОбАдресе.Город;
		Если СведенияОбАдресе.Свойство("ГородТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.ГородТипКраткий) Тогда
			ПредставлениеГорода = ПредставлениеГорода + " " + СведенияОбАдресе.ГородТипКраткий;
		КонецЕсли;
		Результат.НаселенныйПункт = СоединитьЧерезЗапятую(ПредставлениеГорода, Результат.НаселенныйПункт);
	КонецЕсли;
	
	// Внутригородской район требуется выводить в населенном пункте только в том случае,
	// если не заполнен ни город, ни населенный пункт.
	// * ВнутригородскойРайон           - Строка - текстовое представление внутригородского района.
	// * ВнутригородскойРайонТипПолный  - Строка - полное наименование типа внутригородского района. Например: "микрорайон".
	// * ВнутригородскойРайонТипКраткий - Строка - краткое наименование типа внутригородского района. Например: "мкр".
	Если Результат.НаселенныйПункт = ""
		И СведенияОбАдресе.Свойство("ВнутригородскойРайон")
		И ЗначениеЗаполнено(СведенияОбАдресе.ВнутригородскойРайон) Тогда
		Результат.НаселенныйПункт = СведенияОбАдресе.ВнутригородскойРайон;
		Если СведенияОбАдресе.Свойство("ВнутригородскойРайонТипКраткий")
			И ЗначениеЗаполнено(СведенияОбАдресе.ВнутригородскойРайонТипКраткий) Тогда
			Результат.НаселенныйПункт = Результат.НаселенныйПункт + " " + СведенияОбАдресе.ВнутригородскойРайонТипКраткий;
		КонецЕсли;
	КонецЕсли;
	
	// Обратная совместимость.
	// * ДополнительнаяТерритория - Строка - устаревшее свойство. Текстовое представление дополнительной территории.
	Если Результат.Улица = ""
		И СведенияОбАдресе.Свойство("ДополнительнаяТерритория")
		И ЗначениеЗаполнено(СведенияОбАдресе.ДополнительнаяТерритория) Тогда
		Результат.Улица = СведенияОбАдресе.ДополнительнаяТерритория;
	КонецЕсли;
	
	// Территорию следует выводить либо в населенном пункте, либо в улице.
	// * Территория           - Строка - текстовое представление территории.
	// * ТерриторияТипПолный  - Строка - полное наименование типа территории. Например: "Гаражно-строительный кооп.".
	// * ТерриторияТипКраткий - Строка - краткое наименование типа территории. Например: "гск".
	Если СведенияОбАдресе.Свойство("Территория") И ЗначениеЗаполнено(СведенияОбАдресе.Территория) Тогда
		ПредставлениеТерритории = СведенияОбАдресе.Территория;
		Если СведенияОбАдресе.Свойство("ТерриторияТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.ТерриторияТипКраткий) Тогда
			ПредставлениеТерритории = ПредставлениеТерритории + " " + СведенияОбАдресе.ТерриторияТипКраткий;
		КонецЕсли;
		// Порядок проверок важен: в приоритете - пустой населенный пункт, затем пустая улица.
		Если Результат.НаселенныйПункт = "" Тогда
			Результат.НаселенныйПункт = ПредставлениеТерритории;
		ИначеЕсли Результат.Улица = "" Тогда
			Результат.Улица = ПредставлениеТерритории;
		Иначе
			Результат.НаселенныйПункт = СоединитьЧерезЗапятую(Результат.НаселенныйПункт, ПредставлениеТерритории);
		КонецЕсли;
	КонецЕсли;
	
	// * Здание - Структура - структура с информацией о здании адреса.
	//   ** ТипЗдания - Строка - тип объекта адресации адреса РФ согласно приказу Минфина России от 5.11.2015 г. N171н.
	//   ** Номер     - Строка - текстовое представление номера дома (только для адресов РФ).
	Если Результат.Дом = "" Тогда
		Здание = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Здание");
		Если ТипЗнч(Здание) = Тип("Структура") И Здание.Свойство("Номер") И ЗначениеЗаполнено(Здание.Номер) Тогда
			Результат.Дом = Здание.Номер;
		КонецЕсли;
	КонецЕсли;
	
	// * НомерЗемельногоУчастка - Строка - текстовое представление номера земельного участка (только для адресов РФ).
	Если Результат.Дом = ""
		И СведенияОбАдресе.Свойство("НомерЗемельногоУчастка")
		И ЗначениеЗаполнено(СведенияОбАдресе.НомерЗемельногоУчастка) Тогда
		Результат.Дом = СведенияОбАдресе.НомерЗемельногоУчастка;
	КонецЕсли;
	
	// * Корпуса - Массив - содержит структуры (поля структуры: ТипКорпуса, Номер) с перечнем корпусов адреса.
	// Известные типы корпусов: Корпус, Строение, Литера, Литер, Сооружение, Участок.
	Корпуса = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Корпуса");
	Литера = "";
	Если ТипЗнч(Корпуса) = Тип("Массив") Тогда
		Для Каждого Корпус Из Корпуса Цикл
			Если СтрСравнить(Корпус.ТипКорпуса, "ЛИТЕР") = 0
				Или СтрСравнить(Корпус.ТипКорпуса, "ЛИТЕРА") = 0 Тогда
				Литера = Литера + Строка(Корпус.Номер);
			Иначе
				Если Результат.Корпус = "" Тогда
					Результат.Корпус = Корпус.Номер;
				Иначе
					Результат.Корпус = Результат.Корпус + Корпус.Номер;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	Если Литера <> "" Тогда
		Результат.Корпус = Результат.Корпус + Литера;
	КонецЕсли;
	
	// * Помещения - Массив - содержит структуры (поля структуры: ТипПомещения, Номер) с перечнем помещений адреса.
	Помещения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Помещения");
	Если ТипЗнч(Помещения) = Тип("Массив") Тогда
		Для Каждого Помещение Из Помещения Цикл
			Результат.Квартира = СоединитьЧерезЗапятую(Результат.Квартира, Помещение.Номер);
		КонецЦикла;
	КонецЕсли;
	
	Возврат Результат;
КонецФункции

Функция СоединитьЧерезЗапятую(Фрагмент1, Фрагмент2)
	Возврат ?(
		ЗначениеЗаполнено(Фрагмент1) И ЗначениеЗаполнено(Фрагмент2),
		Фрагмент1 + ", " + Фрагмент2,
		Строка(Фрагмент1) + Строка(Фрагмент2));
КонецФункции

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

#Область ФиксацияВторичныхДанныхВДокументах

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

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

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

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

#КонецЕсли

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