Расчетная ведомость по средствам ФСС (форма 4-ФСС) / Модуль объекта

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

Перем мПолноеИмяФайлаВнешнейОбработки Экспорт;

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

Функция ПолныйШифрСтрахователяФСС(ШифрСтрахователяФСС, СистемыНалогообложения, ВидПлательщикаСтраховыхВзносов) Экспорт
	
	ПолныйШифр = Новый Структура;
	ПолныйШифр.Вставить("Часть1", ШифрСтрахователяФСС);
	ПолныйШифр.Вставить("Часть2", "");
	ПолныйШифр.Вставить("Часть3", "");
	
	ПрименяетсяОСНО = СтрНайти(СистемыНалогообложения, "ОСНО") > 0;
	ПрименяетсяУСН  = СтрНайти(СистемыНалогообложения, "УСН") > 0;
	ПрименяетсяЕНВД = СтрНайти(СистемыНалогообложения, "ЕНВД") > 0;
	ПрименяетсяЕСХН = СтрНайти(СистемыНалогообложения, "ЕСХН") > 0;
	ПрименяетсяПСН  = СтрНайти(СистемыНалогообложения, "ПСН") > 0;
	
	Если ЗначениеЗаполнено(ШифрСтрахователяФСС) Тогда
		КодТипаНалогообложения = "";
		
		Если ШифрСтрахователяФСС = "071"
		   И ПрименяетсяОСНО И НЕ ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
			КодТипаНалогообложения = "00";
		КонецЕсли;
		
		Если ШифрСтрахователяФСС = "071"
		   И НЕ ПрименяетсяОСНО И ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
			КодТипаНалогообложения = "01";
		КонецЕсли;
		
		Если ШифрСтрахователяФСС = "071"
		   И НЕ ПрименяетсяОСНО И НЕ ПрименяетсяУСН И ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
			КодТипаНалогообложения = "02";
		КонецЕсли;
				
		Если ШифрСтрахователяФСС = "121"
		   И НЕ ПрименяетсяОСНО И ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
			КодТипаНалогообложения = "01";
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(КодТипаНалогообложения) Тогда
			// ОСНО.
			Если ПрименяетсяОСНО И НЕ ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "00";
			КонецЕсли;
			
			// УСН.
			Если НЕ ПрименяетсяОСНО И ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "01";
			КонецЕсли;
			
			// ЕНВД.
			Если НЕ ПрименяетсяОСНО И НЕ ПрименяетсяУСН И ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И НЕ ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "02";
			КонецЕсли;
			
			// ПСН.
			Если НЕ ПрименяетсяОСНО И НЕ ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "00";
			КонецЕсли;
			
			// ОСНО + ПСН.
			Если ПрименяетсяОСНО И НЕ ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "00";
			КонецЕсли;
			
			// ЕНВД + ПСН.
			Если НЕ ПрименяетсяОСНО И НЕ ПрименяетсяУСН И ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "02";
			КонецЕсли;
			
			// УСН + ПСН и шифр страхователя не 171.
			Если ЗначениеЗаполнено(ШифрСтрахователяФСС) И ШифрСтрахователяФСС <> "171"
			   И НЕ ПрименяетсяОСНО И ПрименяетсяУСН И НЕ ПрименяетсяЕНВД И НЕ ПрименяетсяЕСХН И ПрименяетсяПСН Тогда
				КодТипаНалогообложения = "01";
			КонецЕсли;
		КонецЕсли;
		
		ПолныйШифр.Вставить("Часть2", КодТипаНалогообложения);
		ПолныйШифр.Вставить("Часть3", ВидПлательщикаСтраховыхВзносов);
	КонецЕсли;
	
	Возврат ПолныйШифр;
	
КонецФункции

#Область ФормированиеРегламентированногоОтчета

Функция СформироватьАвтоматическиРеглОтчет(ПараметрыАвтоформирования, КорректирующийОтчет) Экспорт
	
	ИмяФормы = ПараметрыАвтоформирования.ИмяФормыОтчета;
	
	РазделыОтчета = РазделыРеглОтчета(ИмяФормы);
			
	ДанныеРеглОтчета = Новый Структура;
	ДанныеРеглОтчета.Вставить("ДатаПодписи", ТекущаядатаСеанса());
	
	ПараметрыАвтоФормирования.Вставить("ДатаПодписи", ДанныеРеглОтчета.ДатаПодписи);
	
	ПараметрыАвтоФормирования.Вставить("НомерКорректировки", ?(КорректирующийОтчет, "001", "000"));
	
	ДеревоСтраницОтчета = СтруктураСтраницОтчета(ИмяФормы);
	
	ДанныеРеглОтчета.Вставить("ДеревоСтраницОтчета", ДеревоСтраницОтчета);
	
	ЗаполнитьРеглОтчет(ИмяФормы,
					   ПараметрыАвтоформирования,
					   КорректирующийОтчет,
					   РазделыОтчета,
					   ДанныеРеглОтчета);
		
	РазделыОтчета.Титульный.Данные.НомерКорректировки = ПараметрыАвтоФормирования.НомерКорректировки;
	РазделыОтчета.Титульный.Данные.ДатаПодписи = ДанныеРеглОтчета.ДатаПодписи;
	
	ДанныеРеглОтчета.СтруктураРеквизитовФормы.ВидДокумента = ?(КорректирующийОтчет, 1, 0);
	
	ДанныеРеглОтчета.Вставить("СтруктураВариантыЗаполнения", Новый Структура);
	СформироватьВариантыЗаполнения(ИмяФормы,
								   ДанныеРеглОтчета.СтруктураРеквизитовФормы,
								   ДанныеРеглОтчета.СтруктураВариантыЗаполнения);
													  
	ПоказатьПериод(ИмяФормы, РазделыОтчета.Титульный.Данные, ДанныеРеглОтчета.СтруктураРеквизитовФормы);
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		РегламентированнаяОтчетностьКлиентСервер.ИзменитьВариантыЗаполненияПоказателейТаблицы2Формы4ФСС(
		ДанныеРеглОтчета.СтруктураВариантыЗаполнения.Таблица2[0], ДанныеРеглОтчета.СтруктураРеквизитовФормы);
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		РегламентированнаяОтчетностьКлиентСервер.ИзменитьВариантыЗаполненияПоказателейТаблицы1_1Формы4ФСС(
		ДанныеРеглОтчета.СтруктураВариантыЗаполнения.Таблица1_1[0], ДанныеРеглОтчета.СтруктураРеквизитовФормы);
		
		РегламентированнаяОтчетностьКлиентСервер.ИзменитьВариантыЗаполненияПоказателейТаблицы91Формы4ФСС(
		ДанныеРеглОтчета.СтруктураВариантыЗаполнения.Таблица91[0], ДанныеРеглОтчета.СтруктураРеквизитовФормы);
		
	КонецЕсли;
	
	ЗаполнитьСведенияОбОрганизации(ИмяФормы,
								   РазделыОтчета.Титульный.Данные,
								   ДанныеРеглОтчета.СтруктураДокУпПред,
								   ДанныеРеглОтчета.СтруктураРеквизитовФормы,
								   ДанныеРеглОтчета.ДатаПодписи);
													  
	УстановитьРазмерСтраховогоТарифа(ИмяФормы,
									 ДанныеРеглОтчета.СтруктураРеквизитовФормы,
									 РазделыОтчета.Таблица1.Данные);
														  
	ПараметрыЗаписи = Новый Структура;
	ПараметрыЗаписи.Вставить("ИсточникОтчета", ПараметрыАвтоформирования.ИсточникОтчета);
	ПараметрыЗаписи.Вставить("ИмяФормыОтчета", ПараметрыАвтоформирования.ИмяФормыОтчета);
	ПараметрыЗаписи.Вставить("Организация", ПараметрыАвтоформирования.Организация);
	ПараметрыЗаписи.Вставить("ДатаНачала", ПараметрыАвтоформирования.ДатаНачала);
	ПараметрыЗаписи.Вставить("ДатаОкончания", ПараметрыАвтоформирования.ДатаОкончания);
	ПараметрыЗаписи.Вставить("СохраняемыйРеглОтчет", ПараметрыАвтоформирования.СсылкаНаСохрРеглОтчет);
	ПараметрыЗаписи.Вставить("Ошибки", ПараметрыАвтоформирования.Ошибки);
	ПараметрыЗаписи.Вставить("ДатаПодписи", ДанныеРеглОтчета.ДатаПодписи);
	ПараметрыЗаписи.Вставить("ЕдиницаИзмерения", Перечисления.ПорядкиОкругленияОтчетности.Окр1);
	ПараметрыЗаписи.Вставить("ТочностьЕдиницыИзмерения", 2);
	ПараметрыЗаписи.Вставить("Комментарий", "");
	ПараметрыЗаписи.Вставить("СтруктураРеквизитовФормы", ДанныеРеглОтчета.СтруктураРеквизитовФормы);
	ПараметрыЗаписи.Вставить("СтруктураВариантыЗаполнения", ДанныеРеглОтчета.СтруктураВариантыЗаполнения);
	ПараметрыЗаписи.Вставить("ДокументУпПред", ДанныеРеглОтчета.СтруктураДокУпПред);
	ПараметрыЗаписи.Вставить("ВерсияФормы", ДанныеРеглОтчета.СтруктураРеквизитовФормы.мВерсияФормы);
	ПараметрыЗаписи.Вставить("ФлОтклВыборЗначений", Ложь);
	ПараметрыЗаписи.Вставить("ФлажокОтклАвтоРасчет", Ложь);
	ПараметрыЗаписи.Вставить("ФлПроверятьСоотношенияПриПечатиИВыгрузки", Ложь);
	ПараметрыЗаписи.Вставить("ФлПодсчетСтраниц", Неопределено);
	ПараметрыЗаписи.Вставить("ДеревоСтраницОтчета", ДеревоСтраницОтчета);
	ПараметрыЗаписи.Вставить("Вариант", ?(КорректирующийОтчет, 1, 0));
	ПараметрыЗаписи.Вставить("РазделыОтчета", РазделыОтчета);
	ПараметрыЗаписи.Вставить("НаименованиеОтчета", ДанныеРеглОтчета.СтруктураРеквизитовФормы.НаименованиеОтчета);
	 				
	Возврат ЗаписатьРеглОтчет(ИмяФормы, ПараметрыЗаписи);
	
КонецФункции

Процедура СформироватьСтруктуруРеквизитовФормы(ИмяФормы, СтруктураРеквизитовФормы) Экспорт
	
	СтруктураРеквизитовФормы = Новый Структура;
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		СтруктураРеквизитовФормы.Вставить("мВерсияФормы", "11/06/2022");
		
		СтруктураРеквизитовФормы.Вставить("ИдГруппы92", "П0009200001");
		СтруктураРеквизитовФормы.Вставить("ИдГруппы11", "П0001100001");
		СтруктураРеквизитовФормы.Вставить("ИдГруппы2",  "П0000200001");
		
		СтруктураРеквизитовФормы.Вставить("СообщенияПослеАвтозаполнения");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		СтруктураРеквизитовФормы.Вставить("мВерсияФормы", "25/08/2017");
		
		СтруктураРеквизитовФормы.Вставить("ИдГруппы1",        "П0001100001");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_1", "П0000200161");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_2", "П0000200162");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_3", "П0000200163");
		СтруктураРеквизитовФормы.Вставить("ИдГруппы91",       "П0009100001");
		
		СтруктураРеквизитовФормы.Вставить("ВариантЗаполненияП000910000107", "0");
		СтруктураРеквизитовФормы.Вставить("ВариантЗаполненияП000910000108", "0");
		
		СтруктураРеквизитовФормы.Вставить("СообщенияПослеАвтозаполнения");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
		
		СтруктураРеквизитовФормы.Вставить("мВерсияФормы", "09/03/2017");
		
		СтруктураРеквизитовФормы.Вставить("ИдГруппы1",        "П0001100001");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_1", "П0000200161");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_2", "П0000200162");
		СтруктураРеквизитовФормы.Вставить("ИдМСЧ_Таблица2_3", "П0000200163");
		
	КонецЕсли;
	
	СтруктураРеквизитовФормы.Вставить("мСоставПоказателей", "СоставПоказателей" + Прав(СокрЛП(ИмяФормы), 7));
	СтруктураРеквизитовФормы.Вставить("НаименованиеОтчета", "4-ФСС");
	СтруктураРеквизитовФормы.Вставить("ОКВЭД", "");
	СтруктураРеквизитовФормы.Вставить("ОКВЭД2", "");
	СтруктураРеквизитовФормы.Вставить("ЦветБелый", Новый Цвет(255, 255, 255));
	СтруктураРеквизитовФормы.Вставить("ЦветЖелтый", Новый Цвет(255, 255, 192));
	СтруктураРеквизитовФормы.Вставить("СписокПечатаемыхЛистов", Новый СписокЗначений);
	СтруктураРеквизитовФормы.Вставить("мПечатныеФормы", Новый СписокЗначений);
	СтруктураРеквизитовФормы.Вставить("ФлажокОтклАвтоРасчет", Ложь);
	СтруктураРеквизитовФормы.Вставить("мВПрограммеИзмененаОрганизация", Истина);
	СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуЗаполнить", Ложь);
	СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуРасшифровать", Ложь);
	СтруктураРеквизитовФормы.Вставить("ВыводитьСтраницуВТаблДокНаСервере");
	СтруктураРеквизитовФормы.Вставить("НаимТекущегоРаздела");
	СтруктураРеквизитовФормы.Вставить("Организация");
	СтруктураРеквизитовФормы.Вставить("ЕдиницаИзмерения");
	СтруктураРеквизитовФормы.Вставить("ТочностьЕдиницыИзмерения");
	СтруктураРеквизитовФормы.Вставить("ВидДокумента");
	СтруктураРеквизитовФормы.Вставить("мСчетчикСтраниц");
	СтруктураРеквизитовФормы.Вставить("мАвтоВыборКодов");
	СтруктураРеквизитовФормы.Вставить("мБезОткрытияФормы");
	СтруктураРеквизитовФормы.Вставить("мРежимПечати");
	СтруктураРеквизитовФормы.Вставить("мВариант");
	СтруктураРеквизитовФормы.Вставить("мКодОтчета");
	СтруктураРеквизитовФормы.Вставить("мВыбраннаяФорма");
	СтруктураРеквизитовФормы.Вставить("мДатаНачалаПериодаОтчета");
	СтруктураРеквизитовФормы.Вставить("мДатаКонцаПериодаОтчета");
	СтруктураРеквизитовФормы.Вставить("мДелитель");
	СтруктураРеквизитовФормы.Вставить("мДокументВосстановлен");
	СтруктураРеквизитовФормы.Вставить("мЗаписываетсяНовыйДокумент");
	СтруктураРеквизитовФормы.Вставить("мЗаписьЗапрещена");
	СтруктураРеквизитовФормы.Вставить("мИнтервалАвтосохранения");
	СтруктураРеквизитовФормы.Вставить("мОписаниеТиповБулево");
	СтруктураРеквизитовФормы.Вставить("мОписаниеТиповЧислоЕ");
	СтруктураРеквизитовФормы.Вставить("мПериодичность");
	СтруктураРеквизитовФормы.Вставить("мПолноеИмяФайлаВнешнейОбработки");
	СтруктураРеквизитовФормы.Вставить("мПоляПоискаПоказателяВТСП");
	СтруктураРеквизитовФормы.Вставить("мСкопированаФорма");
	СтруктураРеквизитовФормы.Вставить("мСохраненныйДок");
	СтруктураРеквизитовФормы.Вставить("мСтрокаФормата");
	СтруктураРеквизитовФормы.Вставить("мЧтоОчищать");
	СтруктураРеквизитовФормы.Вставить("НомерГода");
	СтруктураРеквизитовФормы.Вставить("ФлагСохранения");
	СтруктураРеквизитовФормы.Вставить("ЕстьРеквизитКодПодчиненностиФСС");
	СтруктураРеквизитовФормы.Вставить("ТекущаяСтрокаРазделовОтчета");
	СтруктураРеквизитовФормы.Вставить("мПроверятьСоотношенияПриПечатиИВыгрузки");
	СтруктураРеквизитовФормы.Вставить("ТекстДляЗаголовочнойЧасти");
	СтруктураРеквизитовФормы.Вставить("СформироватьФормуОтчетаАвтоматически");
	СтруктураРеквизитовФормы.Вставить("КонтрольныеСоотношенияАдресФормул");
	СтруктураРеквизитовФормы.Вставить("КонтрольныеСоотношенияАдресПоказателей");
	
	// ПроцессыОбработкиДокументов
	//
	СтруктураРеквизитовФормы.Вставить("ПустаяСсылкаНаРегламентированныйОтчет",
		Документы.РегламентированныйОтчет.ПустаяСсылка());
	//
	// ПроцессыОбработкиДокументов
	
КонецПроцедуры

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

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

Процедура УстановитьРазмерСтраховогоТарифа(ИмяФормы, СтруктураРеквизитовФормы, СтруктураДанныхТаблица1) Экспорт
	
	Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
		ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000503)) Тогда
		
		СтруктураДанныхТаблица1.П000010000503 = РазмерСтраховогоТарифа(ИмяФормы, СтруктураРеквизитовФормы);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			СтруктураДанныхТаблица1.П000010000803 = СтруктураДанныхТаблица1.П000010000503;
			
		ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
			ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
			
			СтруктураДанныхТаблица1.П000010000903 = СтруктураДанныхТаблица1.П000010000503;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Функция РазмерСтраховогоТарифа(ИмяФормы, СтруктураРеквизитовФормы) Экспорт

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

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

Процедура СформироватьВариантыЗаполнения(ИмяФормы,
										 СтруктураРеквизитовФормы,
										 СтруктураВариантыЗаполнения,
										 ТаблицаСоставПоказателей = Неопределено) Экспорт
	
	МакетСоставаПоказателей = ЭтотОбъект.ПолучитьМакет(СтруктураРеквизитовФормы.мСоставПоказателей);
	
	Для Инд = 0 По МакетСоставаПоказателей.Области.Количество() - 1 Цикл
		
		ТекОбласть  = МакетСоставаПоказателей.Области[Инд];
		ИмяСтраницы = ТекОбласть.Имя;
		
		ТаблицаВариантыЗаполнения = Новый ТаблицаЗначений;
		ТаблицаВариантыЗаполнения.Колонки.Добавить("КодПоказателя",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50)));
		ТаблицаВариантыЗаполнения.Колонки.Добавить("ВариантЗаполнения",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0)));
		ТаблицаВариантыЗаполнения.Колонки.Добавить("ЗначениеАвто",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2)));
		ТаблицаВариантыЗаполнения.Колонки.Добавить("Дельта",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2)));
		ТаблицаВариантыЗаполнения.Колонки.Добавить("Комментарий",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
		ТаблицаВариантыЗаполнения.Колонки.Добавить("КодПоказателяПоСтруктуре",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50)));
		
		Для Ном = ТекОбласть.Верх По ТекОбласть.Низ Цикл
			
			КодПоказателя = СокрП(МакетСоставаПоказателей.Область(Ном, 1).Текст);
			ИмяПоказателя = КодПоказателя;
									
			Если Лев(КодПоказателя, 2) = "//" Тогда
				Продолжить;
			КонецЕсли;
			
			КодПоказателяПоФорме 	 = СокрЛП(МакетСоставаПоказателей.Область(Ном, 2).Текст);
			ПризнМногострочность 	 = СокрЛП(МакетСоставаПоказателей.Область(Ном, 3).Текст);
			ТипДанныхРеквизита	     = СокрЛП(МакетСоставаПоказателей.Область(Ном, 4).Текст);
			КодПоказателяПоСтруктуре = СокрЛП(МакетСоставаПоказателей.Область(Ном, 9).Текст);
			
			стрВариантЗаполнения = РегламентированнаяОтчетность.ПолучитьВариантЗаполненияПоказателяРегОтчета(
								   	МакетСоставаПоказателей, Ном);

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

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

	МассивМесяцев = РегламентированнаяОтчетностьКлиентСервер.РазобратьСтрокуВМассивПоРазделителю("1.2.4.5.7.8.10.11");
	Если МассивМесяцев.Найти(НомерМесяца) <> Неопределено Тогда
		НомерМесяца = "1";
	КонецЕсли;
	
	НомерКвартала = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=к");
	СтруктураРеквизитовФормы.НомерГода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=гггг");
	
	КодПериода = Формат(КонецКвартала(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета), "ДФ=ММ");
	КодПериода = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(КодПериода,2,0);
	
	КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
	
	Если ТипЗнч(СтруктураДанныхТитульный) = Тип("ТабличныйДокумент") Тогда
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			Если (КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12") Тогда
				СтруктураДанныхТитульный.Области.Период.Значение = КодПериода;
			Иначе
				СтруктураДанныхТитульный.Области.Период.Значение = "";
			КонецЕсли;
			
		Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
			
			Если (КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12")
				И НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.НомДопРасчета.Значение) Тогда
				СтруктураДанныхТитульный.Области.Период.Значение = КодПериода;
			Иначе
				СтруктураДанныхТитульный.Области.Период.Значение = "";
			КонецЕсли;
			
		КонецЕсли;
		
		СтруктураДанныхТитульный.Области.ОтчетГод.Значение = СтруктураРеквизитовФормы.НомерГода;
		
	ИначеЕсли ТипЗнч(СтруктураДанныхТитульный) = Тип("Структура") Тогда
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			Если (КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12") Тогда
				СтруктураДанныхТитульный.Период = КодПериода;
			Иначе
				СтруктураДанныхТитульный.Период = "";
			КонецЕсли;
			
		Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
			
			Если (КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12")
				И НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.НомДопРасчета) Тогда
				СтруктураДанныхТитульный.Период = КодПериода;
			Иначе
				СтруктураДанныхТитульный.Период = "";
			КонецЕсли;
			
		КонецЕсли;
		
		СтруктураДанныхТитульный.ОтчетГод = СтруктураРеквизитовФормы.НомерГода;
		
	КонецЕсли;
	
КонецПроцедуры

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

Функция СтруктураСтраницОтчета(ИмяФормы) Экспорт
	
	ДеревоСтраницОтчета = Новый ДеревоЗначений;
	
	ДеревоСтраницОтчета.Колонки.Добавить("Представление",
		Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
	ДеревоСтраницОтчета.Колонки.Добавить("ИмяСтраницы",
		Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
	ДеревоСтраницОтчета.Колонки.Добавить("ИмяПоляТабличногоДокум",
		Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));	
	ДеревоСтраницОтчета.Колонки.Добавить("ИмяОбластиТабличногоПоля",
		Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
	ДеревоСтраницОтчета.Колонки.Добавить("ОриентацияСтраницы");
	ДеревоСтраницОтчета.Колонки.Добавить("ВыводНаПечать",
		Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0)));
	ДеревоСтраницОтчета.Колонки.Добавить("ПоказатьСтраницу",
		Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0)));
	
	ДеревоСтраницОтчета.Строки.Очистить();
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Титульный";
		СтрокаУровня1.Представление      = "Титульный лист";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица92";
		СтрокаУровня1.Представление      = "Платежи";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица1";
		СтрокаУровня1.Представление      = "Таблица 1";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица1_1";
		СтрокаУровня1.Представление      = "Таблица 1.1";
		СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица2";
		СтрокаУровня1.Представление      = "Таблица 2";
		СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица3";
		СтрокаУровня1.Представление      = "Таблица 3";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица4";
		СтрокаУровня1.Представление      = "Таблица 4";
		СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Титульный";
		СтрокаУровня1.Представление      = "Титульный лист";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица1";
		СтрокаУровня1.Представление      = "Таблица 1";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица1_1";
		СтрокаУровня1.Представление      = "Таблица 1.1";
		СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица2";
		СтрокаУровня1.Представление      = "Таблица 2";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица3_4";
		СтрокаУровня1.Представление      = "Таблицы 3, 4";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 0;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
		СтрокаУровня1.ИмяСтраницы        = "Таблица5";
		СтрокаУровня1.Представление      = "Таблица 5";
		СтрокаУровня1.ОриентацияСтраницы = "Портрет";
		СтрокаУровня1.ВыводНаПечать      = 1;
		СтрокаУровня1.ПоказатьСтраницу   = 1;
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			СтрокаУровня1 = ДеревоСтраницОтчета.Строки.Добавить();
			СтрокаУровня1.ИмяСтраницы        = "Таблица91";
			СтрокаУровня1.Представление      = "Самостоятельные классификационные единицы / источники финансирования";
			СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
			СтрокаУровня1.ВыводНаПечать      = 0;
			СтрокаУровня1.ПоказатьСтраницу   = 1;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат ДеревоСтраницОтчета;
	
КонецФункции

Процедура СформироватьСтруктуруДокУпПред(ИмяФормы, СтруктураДокУпПред) Экспорт
	
	СтруктураДокУпПред = Новый Структура;
	СтруктураДокУпПред.Вставить("НаименованиеУдостоверяющего", " ");
	СтруктураДокУпПред.Вставить("СерияРимскиеЦифры"          , " ");
	СтруктураДокУпПред.Вставить("СерияРусскиеБуквы"          , " ");
	СтруктураДокУпПред.Вставить("НомерУдостоверяющего"       , " ");
	СтруктураДокУпПред.Вставить("ДатаВыдачи"                 , "");
	СтруктураДокУпПред.Вставить("КемВыдан"                   , " ");
	
КонецПроцедуры

Процедура ЗаполнитьСведенияОбОрганизации(ИмяФормы,
										 СтруктураДанныхТитульный,
										 СтруктураДокУпПред,
										 СтруктураРеквизитовФормы,
										 ДатаПодписи,
										 ВПрограммеИзмененаДатаПодписи = Ложь,
										 СменилсяПризнакПодписанта = Ложь) Экспорт
	
	Если (СтруктураРеквизитовФормы.Организация = Неопределено)
	 ИЛИ (СтруктураРеквизитовФормы.Организация = РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа(
	 	  "СправочникСсылка.Организации")) Тогда
	 
		Возврат;
		
	КонецЕсли;
	
	ПБОЮЛ = НЕ РегламентированнаяОтчетностьВызовСервера.ЭтоЮридическоеЛицо(СтруктураРеквизитовФормы.Организация);
	
	Сведения = Новый СписокЗначений;
	
	Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
		
		Сведения.Добавить("", "ИННЮЛ");
		Сведения.Добавить("", "КППЮЛ");
		Сведения.Добавить("", "НаимЮЛПол");
		Сведения.Добавить("", "ОГРН"); 
		Сведения.Добавить("", "РегистрационныйНомерФСС");
		Сведения.Добавить("", "НомерСтрахователяФСС");
		Сведения.Добавить("", "КодПодчиненностиФСС");
		Сведения.Добавить("", "АдрЮР");
		Сведения.Добавить("", "АдрПрописки");
		
	КонецЕсли;
	
	Сведения.Добавить("", "ФИОРук");
	Сведения.Добавить("", "ФИО");
	Сведения.Добавить("", "ТелОрганизации");
	Сведения.Добавить("", "ТелСлуж");
	
	ОргСведения = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
		СтруктураРеквизитовФормы.Организация, ДатаПодписи, Сведения);
	
	СтруктураПараметров = Новый Структура("Организация, ДатаЗначения, СведенияОбОрганизации",
	СтруктураРеквизитовФормы.Организация, ДатаПодписи, ОргСведения);
	РегламентированнаяОтчетность.ЗаменитьСведенияОбОрганизацииСведениямиОКрупнейшемНалогоплательщике(
	СтруктураПараметров);
	
	Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
			
		ИННЮЛ                   = "";
		КППЮЛ                   = "";
		НаимЮЛПол               = "";
		ОГРН                    = "";
		РегистрационныйНомерФСС = "";
		КодПодчиненностиФСС     = "";
		АдрЮР                   = "";
		АдрПрописки             = "";
		
	КонецЕсли;
	
	ФИОРук         = "";
	ФИО            = "";
	ТелОрганизации = "";
	ТелСлуж        = "";
	
	Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
		
		ОргСведения.Свойство("ИННЮЛ",                ИННЮЛ);
		ОргСведения.Свойство("КППЮЛ",                КППЮЛ);
		ОргСведения.Свойство("НаимЮЛПол",            НаимЮЛПол);
		ОргСведения.Свойство("ОГРН",                 ОГРН);
		ОргСведения.Свойство("НомерСтрахователяФСС", РегистрационныйНомерФСС);
		Если НЕ ЗначениеЗаполнено(РегистрационныйНомерФСС) Тогда
			ОргСведения.Свойство("РегистрационныйНомерФСС", РегистрационныйНомерФСС);
		КонецЕсли;
		ОргСведения.Свойство("КодПодчиненностиФСС",  КодПодчиненностиФСС);
		ОргСведения.Свойство("АдрЮР",                АдрЮР);
		ОргСведения.Свойство("АдрПрописки",          АдрПрописки);
		
	КонецЕсли;
	
	ОргСведения.Свойство("ФИОРук",         ФИОРук);
	ОргСведения.Свойство("ФИО",            ФИО);
	ОргСведения.Свойство("ТелОрганизации", ТелОрганизации);
	ОргСведения.Свойство("ТелСлуж",        ТелСлуж);
	
	Если ПБОЮЛ Тогда
		
		НаимЮлПол      = ФИО;
		Адрес          = АдрПрописки;
		ТелОрганизации = ТелСлуж;
		ФИОРук         = ФИО;
		
	КонецЕсли;
	
	РегламентированнаяОтчетность.ПолучитьЗначениеОКВЭД(ДатаПодписи, СтруктураРеквизитовФормы);
	РегламентированнаяОтчетностьКлиентСервер.УстановитьЗначениеОКВЭД(ДатаПодписи,
																	 СтруктураРеквизитовФормы,
								?(ТипЗнч(СтруктураДанныхТитульный) = Тип("ТабличныйДокумент"),
								 			  СтруктураДанныхТитульный.Области.ОКВЭД.Значение,
											  				   СтруктураДанныхТитульный.ОКВЭД));
	
	Если ВПрограммеИзмененаДатаПодписи Тогда
		
		Если ТипЗнч(СтруктураДанныхТитульный) = Тип("ТабличныйДокумент") Тогда
			
			СтруктураДанныхТитульный.Области.ПрПодп.Значение = "1";
			СтруктураДанныхТитульный.Области.ОргПодписантФамилия.Значение = ФИОРук;
			
		ИначеЕсли ТипЗнч(СтруктураДанныхТитульный) = Тип("Структура") Тогда
			
			СтруктураДанныхТитульный.ПрПодп = "1";
			СтруктураДанныхТитульный.ОргПодписантФамилия = ФИОРук;
			
		КонецЕсли;
		
		ЗапретитьВводДокументаПредставителя(ИмяФормы,
											СтруктураДанныхТитульный,
											СтруктураДокУпПред,
											СтруктураРеквизитовФормы);
		
		Возврат;
		
	КонецЕсли;
	
	ИННЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(ИННЮЛ, 12, "0", 0);
	КППЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(КППЮЛ, 9, "-", 1);
	
	ОГРН = СокрЛП(ОГРН);
	Если ЗначениеЗаполнено(ОГРН) Тогда
		ОГРН = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(ОГРН, 15, "0", 0);
	КонецЕсли;
	
	РазрешенныеЗнаки = "0123456789";
	ОткорректированныйНомерТелефона = "";
	Для Инд = 1 По СтрДлина(ТелОрганизации) Цикл
		ТекущийСимвол = Сред(ТелОрганизации, Инд, 1);
		Если СтрНайти(РазрешенныеЗнаки, ТекущийСимвол) <> 0 Тогда
			ОткорректированныйНомерТелефона = ОткорректированныйНомерТелефона + ТекущийСимвол;
		КонецЕсли;
	КонецЦикла;
	ТелОрганизации = ОткорректированныйНомерТелефона;
	
	Если НЕ ПБОЮЛ Тогда
		Адрес = АдрЮр;
	КонецЕсли;
	
	СтруктураАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Адрес);
		
	Если ТипЗнч(СтруктураДанныхТитульный) = Тип("ТабличныйДокумент") Тогда
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ОргНазв.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.ОргНазв.Значение = НаимЮЛПол;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ПрПодп.Значение))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			СтруктураДанныхТитульный.Области.ПрПодп.Значение = "1";
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ОргПодписантФамилия.Значение))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			СтруктураДанныхТитульный.Области.ОргПодписантФамилия.Значение = ФИОРук;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ДокУпПред.Значение))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			ЗапретитьВводДокументаПредставителя(ИмяФормы,
												СтруктураДанныхТитульный,
												СтруктураДокУпПред,
												СтруктураРеквизитовФормы);
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ИНН.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.ИНН.Значение = ИННЮЛ;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.КПП.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.КПП.Значение = КППЮЛ;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ОГРН.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.ОГРН.Значение = ОГРН;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ТелОрганизации.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.ТелОрганизации.Значение = ТелОрганизации;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.ОргФССКод.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.ОргФССКод.Значение = РегистрационныйНомерФСС;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.Области.КодПодчиненности.Значение)) Тогда
			
			СтруктураДанныхТитульный.Области.КодПодчиненности.Значение = КодПодчиненностиФСС;
			
		КонецЕсли;
		
		Если НЕ СтруктураАдреса = Неопределено Тогда
			
			СтруктураДанныхТитульный.Области.Адрес1.Значение = СтруктураАдреса.Индекс;
			СтруктураДанныхТитульный.Области.Адрес2.Значение = СтруктураАдреса.Регион;
			СтруктураДанныхТитульный.Области.Адрес3.Значение = СтруктураАдреса.Район;
			СтруктураДанныхТитульный.Области.Адрес4.Значение = СтруктураАдреса.Город;
			
			Если ЗначениеЗаполнено(СтруктураАдреса.Город)
				И ЗначениеЗаполнено(СтруктураАдреса.НаселенныйПункт) Тогда
				
				СтруктураДанныхТитульный.Области.Адрес4.Значение = СтруктураАдреса.Город + "," + СтруктураАдреса.НаселенныйПункт;
				
			ИначеЕсли НЕ ЗначениеЗаполнено(СтруктураАдреса.Город)
				И ЗначениеЗаполнено(СтруктураАдреса.НаселенныйПункт) Тогда
				
				СтруктураДанныхТитульный.Области.Адрес4.Значение = СтруктураАдреса.НаселенныйПункт;
				
			КонецЕсли;
			
			СтруктураДанныхТитульный.Области.Адрес6.Значение = СтруктураАдреса.Улица;
			СтруктураДанныхТитульный.Области.Адрес7.Значение = СтруктураАдреса.Дом;
			СтруктураДанныхТитульный.Области.Адрес8.Значение = СтруктураАдреса.Корпус;
			СтруктураДанныхТитульный.Области.Адрес9.Значение = СтруктураАдреса.Квартира;
			
		КонецЕсли;
		
	ИначеЕсли ТипЗнч(СтруктураДанныхТитульный) = Тип("Структура") Тогда
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ОргНазв)) Тогда
			
			СтруктураДанныхТитульный.ОргНазв = НаимЮЛПол;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ПрПодп))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			СтруктураДанныхТитульный.ПрПодп = "1";
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ОргПодписантФамилия))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			СтруктураДанныхТитульный.ОргПодписантФамилия = ФИОРук;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ДокУпПред))
			ИЛИ (СменилсяПризнакПодписанта) Тогда
			
			ЗапретитьВводДокументаПредставителя(ИмяФормы,
												СтруктураДанныхТитульный,
												СтруктураДокУпПред,
												СтруктураРеквизитовФормы);
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ИНН)) Тогда
			
			СтруктураДанныхТитульный.ИНН = ИННЮЛ;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.КПП)) Тогда
			
			СтруктураДанныхТитульный.КПП = КППЮЛ;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ОГРН)) Тогда
			
			СтруктураДанныхТитульный.ОГРН = ОГРН;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ТелОрганизации)) Тогда
			
			СтруктураДанныхТитульный.ТелОрганизации = ТелОрганизации;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.ОргФССКод)) Тогда
			
			СтруктураДанныхТитульный.ОргФССКод = РегистрационныйНомерФСС;
			
		КонецЕсли;
		
		Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация)
			ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхТитульный.КодПодчиненности)) Тогда
			
			СтруктураДанныхТитульный.КодПодчиненности = КодПодчиненностиФСС;
			
		КонецЕсли;
		
		Если НЕ СтруктураАдреса = Неопределено Тогда
			
			СтруктураДанныхТитульный.Адрес1 = СтруктураАдреса.Индекс;
			СтруктураДанныхТитульный.Адрес2 = СтруктураАдреса.Регион;
			СтруктураДанныхТитульный.Адрес3 = СтруктураАдреса.Район;
			СтруктураДанныхТитульный.Адрес4 = СтруктураАдреса.Город;
			
			Если ЗначениеЗаполнено(СтруктураАдреса.Город)
			   И ЗначениеЗаполнено(СтруктураАдреса.НаселенныйПункт) Тогда
				
				СтруктураДанныхТитульный.Адрес4 = СтруктураАдреса.Город + "," + СтруктураАдреса.НаселенныйПункт;
				
			ИначеЕсли НЕ ЗначениеЗаполнено(СтруктураАдреса.Город)
				       И ЗначениеЗаполнено(СтруктураАдреса.НаселенныйПункт) Тогда
				
				СтруктураДанныхТитульный.Адрес4 = СтруктураАдреса.НаселенныйПункт;
				
			КонецЕсли;
			
			СтруктураДанныхТитульный.Адрес6 = СтруктураАдреса.Улица;
			СтруктураДанныхТитульный.Адрес7 = СтруктураАдреса.Дом;
			СтруктураДанныхТитульный.Адрес8 = СтруктураАдреса.Корпус;
			СтруктураДанныхТитульный.Адрес9 = СтруктураАдреса.Квартира;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

Функция РазделыРеглОтчета(ИмяФормы) Экспорт
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		ДанныеДопСтрок = Новый Структура;
		
		ДанныеДопСтрок.Вставить("Таблица92", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Таблица92.Колонки.Добавить("П000920000101",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица92.Колонки.Добавить("П000920000102",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
		ДанныеДопСтрок.Таблица92.Колонки.Добавить("П000920000103",
			Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата)));
		ДанныеДопСтрок.Таблица92.Колонки.Добавить("П000920000104",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		
		ДанныеДопСтрок.Вставить("Таблица1_1", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000101",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000102",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(255)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000103",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(8)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000104",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(255)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000105",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000109",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000110",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000111",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000112",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000113",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000114",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000115",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000116",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000117",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000118",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000119",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000120",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000121",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000122",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000123",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000124",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		
		ДанныеДопСтрок.Вставить("Таблица2", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000101",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000102",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000103",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(12)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000104",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(9)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000105",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(8)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000106",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000107",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000108",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000109",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000110",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000111",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000112",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000113",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000114",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000115",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000116",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000117",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000118",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица2.Колонки.Добавить("П000020000119",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 3, ДопустимыйЗнак.Неотрицательный)));
		
		РазделыОтчета = Новый Структура;
		
		РазделыОтчета.Вставить("Титульный", Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		
		РазделыОтчета.Вставить("Таблица92",
		Новый Структура("МногостраничностьВРазделе, Данные, ДанныеДопСтрок, ИдентификаторДопСтрок",
		Ложь, Новый Структура, ДанныеДопСтрок.Таблица92, "П0009200001"));
		
		РазделыОтчета.Вставить("Таблица1", Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		
		РазделыОтчета.Вставить("Таблица1_1",
		Новый Структура("МногостраничностьВРазделе, Данные, ДанныеДопСтрок, ИдентификаторДопСтрок",
		Ложь, Новый Структура, ДанныеДопСтрок.Таблица1_1, "П0001100001"));
		
		РазделыОтчета.Вставить("Таблица2",
		Новый Структура("МногостраничностьВРазделе, Данные, ДанныеДопСтрок, ИдентификаторДопСтрок",
		Ложь, Новый Структура, ДанныеДопСтрок.Таблица2, "П0000200001"));
		
		РазделыОтчета.Вставить("Таблица3", Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		
		РазделыОтчета.Вставить("Таблица4", Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		ДанныеДопСтрок = Новый Структура;
		ДанныеДопСтрок.Вставить("Таблица1_1", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Вставить("Таблица2", Новый Структура);
		ДанныеДопСтрок.Таблица2.Вставить("П0000200161", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Таблица2.Вставить("П0000200162", Новый ТаблицаЗначений);
		ДанныеДопСтрок.Таблица2.Вставить("П0000200163", Новый ТаблицаЗначений);
		
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000101",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000102",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000103",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(12)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000104",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(8)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000105",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000106",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));	
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000107",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000108",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000109",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000110",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000111",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000112",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000113",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000114",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
		ДанныеДопСтрок.Таблица1_1.Колонки.Добавить("П000110000115",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(4, 2, ДопустимыйЗнак.Неотрицательный)));	
		
		ДанныеДопСтрок.Таблица2.П0000200161.Колонки.Добавить("П000020016101",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.П0000200161.Колонки.Добавить("П000020016104",
			Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата)));	
		ДанныеДопСтрок.Таблица2.П0000200161.Колонки.Добавить("П000020016105",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(254)));	
			
		ДанныеДопСтрок.Таблица2.П0000200162.Колонки.Добавить("П000020016201",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.П0000200162.Колонки.Добавить("П000020016204",
			Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата)));	
		ДанныеДопСтрок.Таблица2.П0000200162.Колонки.Добавить("П000020016205",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(254)));		
			
		ДанныеДопСтрок.Таблица2.П0000200163.Колонки.Добавить("П000020016301",
			Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
		ДанныеДопСтрок.Таблица2.П0000200163.Колонки.Добавить("П000020016304",
			Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.Дата)));	
		ДанныеДопСтрок.Таблица2.П0000200163.Колонки.Добавить("П000020016305",
			Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(254)));			
		
		РазделыОтчета = Новый Структура;
		РазделыОтчета.Вставить("Титульный",  Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		РазделыОтчета.Вставить("Таблица1",   Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		РазделыОтчета.Вставить("Таблица1_1",
			Новый Структура("МногостраничностьВРазделе, Данные,	ДанныеДопСтрок, ИдентификаторДопСтрок",
							Ложь, Новый Структура, ДанныеДопСтрок.Таблица1_1, "П0001100001"));
		РазделыОтчета.Вставить("Таблица2",
			Новый Структура("МногостраничностьВРазделе, Данные,	ДанныеДопСтрок",
							Ложь, Новый Структура, ДанныеДопСтрок.Таблица2));
		РазделыОтчета.Вставить("Таблица3_4", Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		РазделыОтчета.Вставить("Таблица5",   Новый Структура("МногостраничностьВРазделе, Данные", Ложь, Новый Структура));
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			ДанныеДопСтрок.Вставить("Таблица91", Новый ТаблицаЗначений);
			
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000101",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(6, 0, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000102",
				Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(8)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000103",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000104",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000105",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000106",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000107",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000108",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000109",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000110",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000111",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000112",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000113",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000114",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000115",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			ДанныеДопСтрок.Таблица91.Колонки.Добавить("П000910000116",
				Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2, ДопустимыйЗнак.Любой)));
			
			РазделыОтчета.Вставить("Таблица91",
				Новый Структура("МногостраничностьВРазделе, Данные, ДанныеДопСтрок, ИдентификаторДопСтрок",
								Ложь, Новый Структура, ДанныеДопСтрок.Таблица91, "П0009100001"));
			
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат РазделыОтчета;
	
КонецФункции

Процедура ЗаполнитьРеглОтчет(ИмяФормы,
							 ПараметрыАвтоформирования,
							 КорректирующийОтчет,
							 РазделыОтчета,
							 ДанныеРеглОтчета)
	
	ИсточникОтчета = ПараметрыАвтоформирования.ИсточникОтчета;
	ИмяФормыОтчета = ПараметрыАвтоформирования.ИмяФормыОтчета;
	
	Организация = ПараметрыАвтоформирования.Организация;
	
	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("ДатаНачала", ПараметрыАвтоформирования.ДатаНачала);
	ДопПараметры.Вставить("ДатаОкончания", ПараметрыАвтоформирования.ДатаОкончания);
	
	ДанныеРеглОтчета.Вставить("СтруктураРеквизитовФормы");
	ДанныеРеглОтчета.Вставить("СтруктураДокУпПред");
	
	СформироватьСтруктуруРеквизитовФормы(ИмяФормы, ДанныеРеглОтчета.СтруктураРеквизитовФормы);
	
	СформироватьСтруктуруДокУпПред(ИмяФормы, ДанныеРеглОтчета.СтруктураДокУпПред);
	
	ДанныеРеглОтчета.СтруктураРеквизитовФормы.Организация = ПараметрыАвтоформирования.Организация;
	
	ДанныеРеглОтчета.СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета = ПараметрыАвтоформирования.ДатаОкончания;
	
	ДобавитьПризнакПериодОтчетаВходитВПервыйКвартал(ИмяФормы, ДанныеРеглОтчета.СтруктураРеквизитовФормы);
	
	ЗаполнитьПустыеСтруктурыДанных(ИмяФормы, РазделыОтчета);
	
	ПараметрыОтчета = Новый Структура();
	ПараметрыОтчета.Вставить("Организация",             ПараметрыАвтоформирования.Организация);
	ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", ПараметрыАвтоформирования.ДатаНачала);
	ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета",  ПараметрыАвтоформирования.ДатаОкончания);
	ПараметрыОтчета.Вставить("НомерКорректировки",      ПараметрыАвтоформирования.НомерКорректировки);
	ПараметрыОтчета.Вставить("ДатаПодписи",             ПараметрыАвтоформирования.ДатаПодписи);
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2")
		ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		ПараметрыОтчета.Вставить("СообщенияПослеАвтозаполнения", ДанныеРеглОтчета.СтруктураРеквизитовФормы.СообщенияПослеАвтозаполнения);
		
	КонецЕсли;
	
	Контейнер = Новый Структура;
	Контейнер.Вставить("Титульный",  РазделыОтчета.Титульный.Данные);
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		Контейнер.Вставить("Таблица92",  РазделыОтчета.Таблица92.Данные);
		Контейнер.Вставить("Таблица92_ДанныеДопСтрок", РазделыОтчета.Таблица92.ДанныеДопСтрок);
		Контейнер.Вставить("Таблица1",   РазделыОтчета.Таблица1.Данные);
		Контейнер.Вставить("Таблица1_1", РазделыОтчета.Таблица1_1.Данные);
		Контейнер.Вставить("Таблица1_1_ДанныеДопСтрок", РазделыОтчета.Таблица1_1.ДанныеДопСтрок);
		Контейнер.Вставить("Таблица2",   РазделыОтчета.Таблица2.Данные);
		Контейнер.Вставить("Таблица2_ДанныеДопСтрок", РазделыОтчета.Таблица2.ДанныеДопСтрок);
		Контейнер.Вставить("Таблица3",   РазделыОтчета.Таблица3.Данные);
		Контейнер.Вставить("Таблица4",   РазделыОтчета.Таблица4.Данные);
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		Контейнер.Вставить("Таблица1",   РазделыОтчета.Таблица1.Данные);
		Контейнер.Вставить("Таблица1_1", РазделыОтчета.Таблица1_1.Данные);
		Контейнер.Вставить("Таблица1_1_ДанныеДопСтрок", РазделыОтчета.Таблица1_1.ДанныеДопСтрок);
		Контейнер.Вставить("Таблица2",   РазделыОтчета.Таблица2.Данные);
		Контейнер.Вставить("Таблица2_1_ДанныеДопСтрок", РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200161);
		Контейнер.Вставить("Таблица2_2_ДанныеДопСтрок", РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200162);
		Контейнер.Вставить("Таблица2_3_ДанныеДопСтрок", РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200163);
		Контейнер.Вставить("Таблица3_4", РазделыОтчета.Таблица3_4.Данные);
		Контейнер.Вставить("Таблица5",   РазделыОтчета.Таблица5.Данные);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			Контейнер.Вставить("Таблица91", РазделыОтчета.Таблица91.Данные);
			Контейнер.Вставить("Таблица91_ДанныеДопСтрок", РазделыОтчета.Таблица91.ДанныеДопСтрок);
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если ПараметрыАвтоформирования.Свойство("ЗаполнятьВнешнимиДанными")
	   И ПараметрыАвтоформирования.ЗаполнятьВнешнимиДанными = Истина Тогда

		ЗаполнитьРеглОтчетВнешнимиДанными(ИмяФормы, Контейнер, ПараметрыАвтоформирования.ВнешниеДанные);
		
	Иначе
		
		РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ИсточникОтчета, ИмяФормыОтчета, ПараметрыОтчета,
																	Контейнер);
																	
		ЗаполнитьПустыеСтруктурыДанных(ИмяФормы, РазделыОтчета);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			Если РазделыОтчета.Таблица92.ДанныеДопСтрок.Количество() = 0 Тогда
				РазделыОтчета.Таблица92.ДанныеДопСтрок.Добавить();
			КонецЕсли;
			
			Если РазделыОтчета.Таблица1_1.ДанныеДопСтрок.Количество() = 0 Тогда
				РазделыОтчета.Таблица1_1.ДанныеДопСтрок.Добавить();
			КонецЕсли;
			
			Если РазделыОтчета.Таблица2.ДанныеДопСтрок.Количество() = 0 Тогда
				РазделыОтчета.Таблица2.ДанныеДопСтрок.Добавить();
			КонецЕсли;
			
		Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
			
			Если РазделыОтчета.Таблица1_1.ДанныеДопСтрок.Количество() = 0 Тогда
				РазделыОтчета.Таблица1_1.ДанныеДопСтрок.Добавить();
			КонецЕсли;
			
			Если РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200161.Количество() = 0 Тогда
				РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200161.Добавить();
			КонецЕсли;
			
			Если РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200162.Количество() = 0 Тогда
				РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200162.Добавить();
			КонецЕсли;
			
			Если РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200163.Количество() = 0 Тогда
				РазделыОтчета.Таблица2.ДанныеДопСтрок.П0000200163.Добавить();
			КонецЕсли;
			
			Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
				
				Если РазделыОтчета.Таблица91.ДанныеДопСтрок.Количество() = 0 Тогда
					РазделыОтчета.Таблица91.ДанныеДопСтрок.Добавить();
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЕсли;
		
		ЗаполнитьСтруктурыДанныхРазделовЗначениямиИзДопСтрок(ИмяФормы, Контейнер);
		
		РассчитатьИтоги(ИмяФормы, Контейнер, ДанныеРеглОтчета.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал);
		
		Для Каждого СтраницаОтчета Из ДанныеРеглОтчета.ДеревоСтраницОтчета.Строки Цикл
			
			Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
				
				Если СтраницаОтчета.ИмяСтраницы = "Таблица92" Тогда
					
					ПрефиксПоказателейРаздела = "П00092";
					
					Для Каждого Показатель Из РазделыОтчета.Таблица92.Данные Цикл
						
						ЭтоПоказатель = (СтрНайти(Показатель.Ключ, ПрефиксПоказателейРаздела) = 1);
						
						Если ЭтоПоказатель И ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				ИначеЕсли СтраницаОтчета.ИмяСтраницы = "Таблица1_1" Тогда
					
					ПрефиксПоказателейРаздела = "П00011";
					
					Для Каждого Показатель Из РазделыОтчета.Таблица1_1.Данные Цикл
						
						ЭтоПоказатель = (СтрНайти(Показатель.Ключ, ПрефиксПоказателейРаздела) = 1);
						
						Если ЭтоПоказатель И ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				ИначеЕсли СтраницаОтчета.ИмяСтраницы = "Таблица2" Тогда
					
					ПрефиксПоказателейРаздела = "П00002";
					
					Для Каждого Показатель Из РазделыОтчета.Таблица2.Данные Цикл
						
						ЭтоПоказатель = (СтрНайти(Показатель.Ключ, ПрефиксПоказателейРаздела) = 1);
						
						Если ЭтоПоказатель И ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				ИначеЕсли СтраницаОтчета.ИмяСтраницы = "Таблица3" Тогда
					
					Для Каждого Показатель Из РазделыОтчета.Таблица3.Данные Цикл
						
						Если ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				КонецЕсли;
				
			Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
				
				Если СтраницаОтчета.ИмяСтраницы = "Таблица1_1" Тогда
					
					ПрефиксПоказателейРаздела = "П00011";
					
					Для Каждого Показатель Из РазделыОтчета.Таблица1_1.Данные Цикл
																
						ЭтоПоказатель = (СтрНайти(Показатель.Ключ, ПрефиксПоказателейРаздела) = 1);
						
						Если ЭтоПоказатель И ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") И СтраницаОтчета.ИмяСтраницы = "Таблица91" Тогда
					
					ПрефиксПоказателейРаздела = "П00091";
					
					Для Каждого Показатель Из РазделыОтчета.Таблица91.Данные Цикл
						
						ЭтоПоказатель = (СтрНайти(Показатель.Ключ, ПрефиксПоказателейРаздела) = 1);
						
						Если ЭтоПоказатель И ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				ИначеЕсли СтраницаОтчета.ИмяСтраницы = "Таблица3_4" Тогда
					
					Для Каждого Показатель Из РазделыОтчета.Таблица3_4.Данные Цикл
						
						Если ЗначениеЗаполнено(Показатель.Значение) Тогда
							
							СтраницаОтчета.ВыводНаПечать = 1;
							
							Прервать;
							
						КонецЕсли;
						
					КонецЦикла;
					
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

Процедура ЗаполнитьСтруктурыДанныхРазделовЗначениямиИзДопСтрок(ИмяФормы, Контейнер) Экспорт
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
			Контейнер.Таблица92, Контейнер.Таблица92_ДанныеДопСтрок);
		
		РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
			Контейнер.Таблица1_1, Контейнер.Таблица1_1_ДанныеДопСтрок);
		
		РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
			Контейнер.Таблица2, Контейнер.Таблица2_ДанныеДопСтрок);
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
			Контейнер.Таблица1_1, Контейнер.Таблица1_1_ДанныеДопСтрок);
		
		МассивДанныхДопСтрок = Новый Массив;
		
		МассивДанныхДопСтрок.Добавить(Контейнер.Таблица2_1_ДанныеДопСтрок);
		МассивДанныхДопСтрок.Добавить(Контейнер.Таблица2_2_ДанныеДопСтрок);
		МассивДанныхДопСтрок.Добавить(Контейнер.Таблица2_3_ДанныеДопСтрок);
		
		РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
			Контейнер.Таблица2, МассивДанныхДопСтрок);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
				Контейнер.Таблица91, Контейнер.Таблица91_ДанныеДопСтрок);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

Процедура ЗаполнитьРеглОтчетВнешнимиДанными(ИмяФормы, Приемник, Источник)
	
	Возврат;
	
КонецПроцедуры

Процедура РассчитатьИтоги(ИмяФормы, Контейнер, ПериодОтчетаВходитВПервыйКвартал)
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		// Таблица 1.
		//
		СтруктураДанныхРаздела = Контейнер["Таблица1"];
		СтруктураДанныхРаздела.П000010000303 = СтруктураДанныхРаздела.П000010000103 - СтруктураДанныхРаздела.П000010000203;
		СтруктураДанныхРаздела.П000010000304 = СтруктураДанныхРаздела.П000010000104 - СтруктураДанныхРаздела.П000010000204;
		СтруктураДанныхРаздела.П000010000305 = СтруктураДанныхРаздела.П000010000105 - СтруктураДанныхРаздела.П000010000205;
		СтруктураДанныхРаздела.П000010000306 = СтруктураДанныхРаздела.П000010000106 - СтруктураДанныхРаздела.П000010000206;
		
		СтруктураДанныхРаздела.П000010000803 = Окр(СтруктураДанныхРаздела.П000010000503 * (1
		+ СтруктураДанныхРаздела.П000010000703 / 100 - СтруктураДанныхРаздела.П000010000603 / 100), 3);
		
		// Таблица 1.1.
		//
		СтруктураДанныхРаздела = Контейнер["Таблица1_1"];
		ТаблицаБлока = Контейнер["Таблица1_1_ДанныеДопСтрок"];
		
		СтруктураДанныхРаздела.П00011ОСВЭД08 = Окр(СтруктураДанныхРаздела.П00011ОСВЭД05 * (1
		+ СтруктураДанныхРаздела.П00011ОСВЭД07 / 100 - СтруктураДанныхРаздела.П00011ОСВЭД06 / 100), 3);
		
		СтруктураДанныхРаздела.П00011ОСВЭД21 = СтруктураДанныхРаздела.П00011ОСВЭД22
		+ СтруктураДанныхРаздела.П00011ОСВЭД23 + СтруктураДанныхРаздела.П00011ОСВЭД24;
		
		СтруктураДанныхРаздела.П00011ОСВЭД09
		= СтруктураДанныхРаздела.П00011ОСВЭД11 + СтруктураДанныхРаздела.П00011ОСВЭД13
		+ СтруктураДанныхРаздела.П00011ОСВЭД15 + СтруктураДанныхРаздела.П00011ОСВЭД17;
		
		СтруктураДанныхРаздела.П00011ОСВЭД10
		= СтруктураДанныхРаздела.П00011ОСВЭД12 + СтруктураДанныхРаздела.П00011ОСВЭД14
		+ СтруктураДанныхРаздела.П00011ОСВЭД16 + СтруктураДанныхРаздела.П00011ОСВЭД18;
		
		СтруктураДанныхРаздела.П00011ОСВЭД19
		= СтруктураДанныхРаздела.П00011ОСВЭД20 + СтруктураДанныхРаздела.П00011ОСВЭД21;
		
		П00011ВСЕГО09 = СтруктураДанныхРаздела.П00011ОСВЭД09;
		П00011ВСЕГО10 = СтруктураДанныхРаздела.П00011ОСВЭД10;
		П00011ВСЕГО11 = СтруктураДанныхРаздела.П00011ОСВЭД11;
		П00011ВСЕГО12 = СтруктураДанныхРаздела.П00011ОСВЭД12;
		П00011ВСЕГО13 = СтруктураДанныхРаздела.П00011ОСВЭД13;
		П00011ВСЕГО14 = СтруктураДанныхРаздела.П00011ОСВЭД14;
		П00011ВСЕГО15 = СтруктураДанныхРаздела.П00011ОСВЭД15;
		П00011ВСЕГО16 = СтруктураДанныхРаздела.П00011ОСВЭД16;
		П00011ВСЕГО17 = СтруктураДанныхРаздела.П00011ОСВЭД17;
		П00011ВСЕГО18 = СтруктураДанныхРаздела.П00011ОСВЭД18;
		П00011ВСЕГО19 = СтруктураДанныхРаздела.П00011ОСВЭД19;
		П00011ВСЕГО20 = СтруктураДанныхРаздела.П00011ОСВЭД20;
		П00011ВСЕГО21 = СтруктураДанныхРаздела.П00011ОСВЭД21;
		П00011ВСЕГО22 = СтруктураДанныхРаздела.П00011ОСВЭД22;
		П00011ВСЕГО23 = СтруктураДанныхРаздела.П00011ОСВЭД23;
		П00011ВСЕГО24 = СтруктураДанныхРаздела.П00011ОСВЭД24;
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			Постфикс = Формат(Ном, "ЧГ=");
			СтрБлока = ТаблицаБлока[Ном - 1];
			
			СтрБлока["П000110000121"] = СтрБлока["П000110000122"]
			+ СтрБлока["П000110000123"] + СтрБлока["П000110000124"];
			СтруктураДанныхРаздела["П000110000121_" + Постфикс] = СтрБлока["П000110000121"];
			
			СтрБлока["П000110000109"]
			= СтрБлока["П000110000111"] + СтрБлока["П000110000113"]
			+ СтрБлока["П000110000115"] + СтрБлока["П000110000117"];
			СтруктураДанныхРаздела["П000110000109_" + Постфикс] = СтрБлока["П000110000109"];
			
			СтрБлока["П000110000110"]
			= СтрБлока["П000110000112"] + СтрБлока["П000110000114"]
			+ СтрБлока["П000110000116"] + СтрБлока["П000110000118"];
			СтруктураДанныхРаздела["П000110000110_" + Постфикс] = СтрБлока["П000110000110"];
			
			СтрБлока["П000110000119"]
			= СтрБлока["П000110000120"] + СтрБлока["П000110000121"];
			СтруктураДанныхРаздела["П000110000119_" + Постфикс] = СтрБлока["П000110000119"];
			
			П00011ВСЕГО09 = П00011ВСЕГО09 + СтрБлока["П000110000109"];
			П00011ВСЕГО10 = П00011ВСЕГО10 + СтрБлока["П000110000110"];
			П00011ВСЕГО11 = П00011ВСЕГО11 + СтрБлока["П000110000111"];
			П00011ВСЕГО12 = П00011ВСЕГО12 + СтрБлока["П000110000112"];
			П00011ВСЕГО13 = П00011ВСЕГО13 + СтрБлока["П000110000113"];
			П00011ВСЕГО14 = П00011ВСЕГО14 + СтрБлока["П000110000114"];
			П00011ВСЕГО15 = П00011ВСЕГО15 + СтрБлока["П000110000115"];
			П00011ВСЕГО16 = П00011ВСЕГО16 + СтрБлока["П000110000116"];
			П00011ВСЕГО17 = П00011ВСЕГО17 + СтрБлока["П000110000117"];
			П00011ВСЕГО18 = П00011ВСЕГО18 + СтрБлока["П000110000118"];
			П00011ВСЕГО19 = П00011ВСЕГО19 + СтрБлока["П000110000119"];
			П00011ВСЕГО20 = П00011ВСЕГО20 + СтрБлока["П000110000120"];
			П00011ВСЕГО21 = П00011ВСЕГО21 + СтрБлока["П000110000121"];
			П00011ВСЕГО22 = П00011ВСЕГО22 + СтрБлока["П000110000122"];
			П00011ВСЕГО23 = П00011ВСЕГО23 + СтрБлока["П000110000123"];
			П00011ВСЕГО24 = П00011ВСЕГО24 + СтрБлока["П000110000124"];
			
		КонецЦикла;
		
		СтруктураДанныхРаздела.П00011ВСЕГО09 = П00011ВСЕГО09;
		СтруктураДанныхРаздела.П00011ВСЕГО10 = П00011ВСЕГО10;
		СтруктураДанныхРаздела.П00011ВСЕГО11 = П00011ВСЕГО11;
		СтруктураДанныхРаздела.П00011ВСЕГО12 = П00011ВСЕГО12;
		СтруктураДанныхРаздела.П00011ВСЕГО13 = П00011ВСЕГО13;
		СтруктураДанныхРаздела.П00011ВСЕГО14 = П00011ВСЕГО14;
		СтруктураДанныхРаздела.П00011ВСЕГО15 = П00011ВСЕГО15;
		СтруктураДанныхРаздела.П00011ВСЕГО16 = П00011ВСЕГО16;
		СтруктураДанныхРаздела.П00011ВСЕГО17 = П00011ВСЕГО17;
		СтруктураДанныхРаздела.П00011ВСЕГО18 = П00011ВСЕГО18;
		СтруктураДанныхРаздела.П00011ВСЕГО19 = П00011ВСЕГО19;
		СтруктураДанныхРаздела.П00011ВСЕГО20 = П00011ВСЕГО20;
		СтруктураДанныхРаздела.П00011ВСЕГО21 = П00011ВСЕГО21;
		СтруктураДанныхРаздела.П00011ВСЕГО22 = П00011ВСЕГО22;
		СтруктураДанныхРаздела.П00011ВСЕГО23 = П00011ВСЕГО23;
		СтруктураДанныхРаздела.П00011ВСЕГО24 = П00011ВСЕГО24;
		
		// Таблица 2.
		//
		СтруктураДанныхРаздела = Контейнер["Таблица2"];
		ТаблицаБлока = Контейнер["Таблица2_ДанныеДопСтрок"];
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			Постфикс = Формат(Ном, "ЧГ=");
			СтрБлока = ТаблицаБлока[Ном - 1];
			
			Если ПериодОтчетаВходитВПервыйКвартал Тогда
				
				СтрБлока["П000020000108"] = СтрБлока["П000020000110"] + СтрБлока["П000020000112"] + СтрБлока["П000020000114"];
				СтруктураДанныхРаздела["П000020000108_" + Постфикс] = СтрБлока["П000020000108"];
				СтрБлока["П000020000109"] = СтрБлока["П000020000111"] + СтрБлока["П000020000113"] + СтрБлока["П000020000115"];
				СтруктураДанныхРаздела["П000020000109_" + Постфикс] = СтрБлока["П000020000109"];
				
			КонецЕсли;
			
			СтрБлока["П000020000119"] = Окр(СтрБлока["П000020000116"] * (1
			+ СтрБлока["П000020000118"] / 100 - СтрБлока["П000020000117"] / 100), 3);
			СтруктураДанныхРаздела["П000020000119_" + Постфикс] = СтрБлока["П000020000119"];
			
		КонецЦикла;
		
		// Таблица 3.
		//
		СтруктураДанныхРаздела = Контейнер["Таблица3"];
		СтруктураДанныхРаздела.П000030000403 = СтруктураДанныхРаздела.П000030000103 + СтруктураДанныхРаздела.П000030000303;
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		СтруктураДанныхРаздела = Контейнер["Таблица1"];
		СтруктураДанныхРаздела.П000010000303 = СтруктураДанныхРаздела.П000010000103
											 - СтруктураДанныхРаздела.П000010000203;
		СтруктураДанныхРаздела.П000010000304 = СтруктураДанныхРаздела.П000010000104
											 - СтруктураДанныхРаздела.П000010000204;
		СтруктураДанныхРаздела.П000010000305 = СтруктураДанныхРаздела.П000010000105
											 - СтруктураДанныхРаздела.П000010000205;
		СтруктураДанныхРаздела.П000010000306 = СтруктураДанныхРаздела.П000010000106
											 - СтруктураДанныхРаздела.П000010000206;
		СтруктураДанныхРаздела.П000010000903 = СтруктураДанныхРаздела.П000010000503
										* (1 - СтруктураДанныхРаздела.П000010000603 / 100
											 + СтруктураДанныхРаздела.П000010000703 / 100);
		
		Если ПериодОтчетаВходитВПервыйКвартал Тогда
			
			СтруктураДанныхРаздела = Контейнер["Таблица1_1"];
			ТаблицаБлока = Контейнер["Таблица1_1_ДанныеДопСтрок"];
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				Постфикс = Формат(Ном, "ЧГ=");
				СтрБлока = ТаблицаБлока[Ном - 1];
				СтрБлока["П000110000106"] =
					СтрБлока["П000110000108"] + СтрБлока["П000110000110"] + СтрБлока["П000110000112"];
				СтруктураДанныхРаздела["П000110000106_" + Постфикс] = СтрБлока["П000110000106"];
				СтрБлока["П000110000107"] =
					СтрБлока["П000110000109"] + СтрБлока["П000110000111"] + СтрБлока["П000110000113"];
				СтруктураДанныхРаздела["П000110000107_" + Постфикс] = СтрБлока["П000110000107"];
			КонецЦикла;
			
			Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
				
				СтруктураДанныхРаздела = Контейнер["Таблица91"];
				ТаблицаБлока = Контейнер["Таблица91_ДанныеДопСтрок"];
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					СтрБлока = ТаблицаБлока[Ном - 1];
					СтрБлока["П000910000107"] =
						СтрБлока["П000910000109"] + СтрБлока["П000910000111"] + СтрБлока["П000910000113"];
					СтруктураДанныхРаздела["П000910000107_" + Постфикс] = СтрБлока["П000910000107"];
					СтрБлока["П000910000108"] =
						СтрБлока["П000910000110"] + СтрБлока["П000910000112"] + СтрБлока["П000910000114"];
					СтруктураДанныхРаздела["П000910000108_" + Постфикс] = СтрБлока["П000910000108"];
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
		СтруктураДанныхРаздела = Контейнер["Таблица2"];
		СтруктураДанныхРаздела.П000020002401 = СтруктураДанныхРаздела.П000020002101
											 + СтруктураДанныхРаздела.П000020002201
											 + СтруктураДанныхРаздела.П000020002301;
		СтруктураДанныхРаздела.П000020015401 = СтруктураДанныхРаздела.П000020015101
											 + СтруктураДанныхРаздела.П000020015201
											 + СтруктураДанныхРаздела.П000020015301;
		
		ТаблицаБлока = Контейнер["Таблица2_1_ДанныеДопСтрок"];
		
		МСЧ1 = 0;
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			МСЧ1 = МСЧ1 + ТаблицаБлока[Ном-1]["П000020016101"];
		КонецЦикла;
		
		ТаблицаБлока = Контейнер["Таблица2_2_ДанныеДопСтрок"];
		
		МСЧ2 = 0;
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			МСЧ2 = МСЧ2 + ТаблицаБлока[Ном-1]["П000020016201"];
		КонецЦикла;
		
		ТаблицаБлока = Контейнер["Таблица2_3_ДанныеДопСтрок"];
		
		МСЧ3 = 0;
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			МСЧ3 = МСЧ3 + ТаблицаБлока[Ном-1]["П000020016301"];
		КонецЦикла;
		
		СтруктураДанныхРаздела.П000020016401 = МСЧ1 + МСЧ2 + МСЧ3;
		СтруктураДанныхРаздела.П000020002003 = СтруктураДанныхРаздела.П000020002001
											 + СтруктураДанныхРаздела.П000020002401;
		СтруктураДанныхРаздела.П000020012003 = СтруктураДанныхРаздела.П000020013003
											 + СтруктураДанныхРаздела.П000020014003;
		СтруктураДанныхРаздела.П000020015003 = СтруктураДанныхРаздела.П000020015001
											 + СтруктураДанныхРаздела.П000020015401;
		СтруктураДанныхРаздела.П000020016003 = СтруктураДанныхРаздела.П000020016001
											 + СтруктураДанныхРаздела.П000020016401;
		СтруктураДанныхРаздела.П000020008003 = СтруктураДанныхРаздела.П000020001003
											 + ?(СтруктураДанныхРаздела.Свойство("П000020001103"),
											 	 СтруктураДанныхРаздела.П000020001103, 0)
											 + СтруктураДанныхРаздела.П000020002003
											 + СтруктураДанныхРаздела.П000020003003
											 + СтруктураДанныхРаздела.П000020004003
											 + СтруктураДанныхРаздела.П000020005003
											 + СтруктураДанныхРаздела.П000020006003
											 + СтруктураДанныхРаздела.П000020007003;
		СтруктураДанныхРаздела.П000020018003 = СтруктураДанныхРаздела.П000020012003
											 + ?(СтруктураДанныхРаздела.Свойство("П000020014103"),
											 	 СтруктураДанныхРаздела.П000020014103, 0)
											 + СтруктураДанныхРаздела.П000020015003
											 + СтруктураДанныхРаздела.П000020016003
											 + СтруктураДанныхРаздела.П000020017003;
		СтруктураДанныхРаздела.П000020009003 = ?(СтруктураДанныхРаздела.П000020018003
											   > СтруктураДанныхРаздела.П000020008003,
											     СтруктураДанныхРаздела.П000020018003
											   - СтруктураДанныхРаздела.П000020008003, 0);
		СтруктураДанныхРаздела.П000020010003 = СтруктураДанныхРаздела.П000020009003
											 - СтруктураДанныхРаздела.П000020011003;
		
		СтруктураДанныхРаздела.П000020019003 = ?(СтруктураДанныхРаздела.П000020008003
											   > СтруктураДанныхРаздела.П000020018003,
											     СтруктураДанныхРаздела.П000020008003
											   - СтруктураДанныхРаздела.П000020018003, 0);
		
		СтруктураДанныхРаздела = Контейнер["Таблица3_4"];
		СтруктураДанныхРаздела.П000030010004 = СтруктураДанныхРаздела.П000030001004
											 + СтруктураДанныхРаздела.П000030004004
											 + СтруктураДанныхРаздела.П000030007004
											 + СтруктураДанныхРаздела.П000030009004;
		СтруктураДанныхРаздела.П000040004003 = СтруктураДанныхРаздела.П000040001003
											 + СтруктураДанныхРаздела.П000040003003;
		
	КонецЕсли;
	
КонецПроцедуры

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

#Область ВыгрузкаРегламентированногоОтчета

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

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

Функция СоздатьНовыйПотокXML(ИмяФормы, КодировкаФайлаВыгрузки)
	
	ПотокXML = Новый ЗаписьXML();
	ПотокXML.УстановитьСтроку(КодировкаФайлаВыгрузки);
	ПотокXML.ЗаписатьОбъявлениеXML();
	ПотокXML.Отступ = Истина;
	
	ВерсПрог = РегламентированнаяОтчетность.ВерсияПрограммы();
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.94""?>");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.93""?>");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
		
		ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.92"" appname=""1С"" version_app=""" + ВерсПрог + """?>");
		
	КонецЕсли;
	
	Возврат ПотокXML;
	
КонецФункции

Функция ЗаписатьУзелДереваВXML(ИмяФормы, СтрокаДерева, ПотокXML, ПараметрыВыгрузки)
	
	Если ТипЗнч(СтрокаДерева) = Тип("ДеревоЗначений") Тогда
		
		ПотокXML.ЗаписатьНачалоЭлемента("F4REPORT");
		ПотокXML.ЗаписатьАтрибут("xmlns", "http://fz122.fss.ru");
		ПотокXML.ЗаписатьАтрибут("xmlns:xsd", "http://www.w3.org/2001/XMLSchema-instance");
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			ПотокXML.ЗаписатьАтрибут("xsd:schemaLocation", "http://fz122.fss.ru http://fz122.fss.ru/doc/f4form_2022_2.xsd");
			
		ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			ПотокXML.ЗаписатьАтрибут("xsd:schemaLocation", "http://fz122.fss.ru/doc/f4form_2017_3.xsd");
			
		ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
			
			ПотокXML.ЗаписатьАтрибут("xsd:schemaLocation", "http://fz122.fss.ru/doc/f4form_2017.xsd");
			
		КонецЕсли;
		
		Для Каждого Стр Из СтрокаДерева.Строки Цикл
			ЗаписатьУзелДереваВXML(ИмяФормы, Стр, ПотокXML, ПараметрыВыгрузки);
		КонецЦикла;
		
		ПотокXML.ЗаписатьКонецЭлемента();
		
	Иначе
		
		Если СтрокаДерева.Тип = "А" ИЛИ СтрокаДерева.Тип = "A" Тогда
			
			ПотокXML.ЗаписатьАтрибут(СтрокаДерева.Код, Строка(СтрокаДерева.Значение));
			
		Иначе
			
			ПотокXML.ЗаписатьНачалоЭлемента(СтрокаДерева.Код);
			
			Для Каждого Лист Из СтрокаДерева.Строки Цикл
				ЗаписатьУзелДереваВXML(ИмяФормы, Лист, ПотокXML, ПараметрыВыгрузки);
			КонецЦикла;
			
			ПотокXML.ЗаписатьТекст(Строка(СтрокаДерева.Значение));
			ПотокXML.ЗаписатьКонецЭлемента();
			
		КонецЕсли;
		
	КонецЕсли;

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

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

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

Функция АдресПоказателя(ИмяФормы, СтрокаПоказателя)
	
	Результат = СтрокаПоказателя.Код;
	
	СтрокаВерхнегоУровня = СтрокаПоказателя.Родитель;
	
	Пока ЗначениеЗаполнено(СтрокаВерхнегоУровня) Цикл
		Результат = СтрокаВерхнегоУровня.Код + "\" + Результат;
		СтрокаВерхнегоУровня = СтрокаВерхнегоУровня.Родитель;
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

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

Процедура ОтсечьНезаполненныеНеобязательныеУзлы(ИмяФормы, Узел)
	
	КоличествоСтрок = Узел.Строки.Количество();
	Для Инд = 1 По КоличествоСтрок Цикл
		Стр = Узел.Строки.Получить(КоличествоСтрок - Инд);
		ОтсечьНезаполненныеНеобязательныеУзлы(ИмяФормы, Стр);
	КонецЦикла;
	
	Если ТипЗнч(Узел) <> Тип("ДеревоЗначений") Тогда
		Если (СтрНайти(Узел.Обязательность, "Н") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "H") <> 0)
			И УзелПуст(ИмяФормы, Узел) Тогда
			РегламентированнаяОтчетность.УдалитьУзел(Узел);
		// Учтем оба варианта: кириллицу и латиницу.	
		ИначеЕсли (СтрНайти(Узел.Обязательность, "М") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "M") <> 0)
				И УзелПуст(ИмяФормы, Узел)
				И ?(СтрНайти(Узел.Обязательность, "О") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "O") <> 0,
								 ИмеютсяАналогичныеСоседниеУзлы(ИмяФормы, Узел), Истина) Тогда
			РегламентированнаяОтчетность.УдалитьУзел(Узел);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Функция ИмеютсяАналогичныеСоседниеУзлы(ИмяФормы, Стр)
	
	РодительСтроки = ?(Стр.Родитель = Неопределено, Стр.Владелец(), Стр.Родитель);
	Возврат (РодительСтроки.Строки.НайтиСтроки(Новый Структура("Ключ", Стр.Ключ), Ложь).Количество() > 1);
	
КонецФункции

Функция УзелПуст(ИмяФормы, Узел)
	
	Для Каждого Стр из Узел.Строки Цикл
		Если НЕ УзелПуст(ИмяФормы, Стр) Тогда
			Возврат Ложь;
		КонецЕсли;
	КонецЦикла;
	
	Если НЕ ЗначениеЗаполнено(Узел.Значение) Тогда
		Возврат Истина;
	КонецЕсли;
	
	Если Узел.Формат = "N" Тогда
		Возврат Узел.Значение = "0";
	ИначеЕсли Узел.Формат = "D" Тогда
		Возврат Узел.Значение = "0001-01-01";
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции

Процедура ЗаполнитьСодержательнуюЧасть(ИмяФормы, ДанныеОтчета, ПараметрыВыгрузки, УзелРодитель)
	
	УзелTITLE = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "TITLE");
	ЗаполнитьДаннымиУзел(ИмяФормы, ПараметрыВыгрузки, УзелTITLE);
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		// Выгрузка таблиц 1, 3, 4.
		//
		Узел_F4INFO = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4INFO");
		
		Таблица1 = ОбщегоНазначения.СкопироватьРекурсивно(ДанныеОтчета.ПолеТабличногоДокументаТаблица1);
		Таблица1.Вставить("Льгота60Процентов", ПараметрыВыгрузки.Льгота60Процентов);
		Таблица1.Вставить("ЧастичноеФинансированиеИзБюдж", ПараметрыВыгрузки.ЧастичноеФинансированиеИзБюдж);
		
		ЗаполнитьДаннымиУзел(ИмяФормы, Таблица1, Узел_F4INFO);
		ЗаполнитьДаннымиУзел(ИмяФормы, ДанныеОтчета.ПолеТабличногоДокументаТаблица3, Узел_F4INFO);
		ЗаполнитьДаннымиУзел(ИмяФормы, ДанныеОтчета.ПолеТабличногоДокументаТаблица4, Узел_F4INFO);
		
		// Выгрузка таблицы "Платежи" (многострочная).
		//
		// Особая обработка: случай отчета, сохраненного без раздела "Платежи".
		Таблица92 = Неопределено;
		ДанныеОтчета.Свойство("ПолеТабличногоДокументаТаблица92", Таблица92);
		Если ТипЗнч(Таблица92) = Тип("Структура") Тогда
			УзелPAYM_ORDERШаблон = ПолучитьПодчиненныйЭлемент(ИмяФормы, Узел_F4INFO, "PAYM_ORDER");
			НомСтр = 1;
			Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(
				Таблица92, "П000920000102_" + Формат(НомСтр, "ЧГ=")) Цикл
				Если ЗначениеЗаполнено(Таблица92["П000920000102_" + Формат(НомСтр, "ЧГ=")]) Тогда
					УзелPAYM_ORDER = СкопироватьУзел(ИмяФормы, Узел_F4INFO, УзелPAYM_ORDERШаблон);
					ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Таблица92, УзелPAYM_ORDER, НомСтр);
				КонецЕсли;
				НомСтр = НомСтр + 1;
			КонецЦикла;
		КонецЕсли;
		
		// Выгрузка таблицы 1.1 (многострочная).
		//
		УзелF4CALCШаблон = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4CALC");
		
		Таблица1_1 = ОбщегоНазначения.СкопироватьРекурсивно(ДанныеОтчета.ПолеТабличногоДокументаТаблица1_1);
		// Всего.
		ВыгружатьСпецсимволы_Таблица1_1 = Ложь;
		Для Каждого Показатель Из Таблица1_1 Цикл
			Если СтрНачинаетсяС(Показатель.Ключ, "П00011") И СтрДлина(Показатель.Ключ) >= 13
				И ЗначениеЗаполнено(Показатель.Значение) Тогда
				ВыгружатьСпецсимволы_Таблица1_1 = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Всего_Данные = Новый Структура;
		Для НомГрафы = 2 По 24 Цикл
			НомГрафыСтр = Формат(НомГрафы, "ЧЦ=2;ЧВН=");
			ВиртуальноеИмяПоказателя = "П0001100001" + НомГрафыСтр + "_1";
			Если НомГрафы <= 4 Тогда
				Всего_Данные.Вставить(ВиртуальноеИмяПоказателя, ?(ВыгружатьСпецсимволы_Таблица1_1, "X", ""));
			ИначеЕсли НомГрафы <= 8 Тогда
				Всего_Данные.Вставить(ВиртуальноеИмяПоказателя, 0);
			Иначе
				РеальноеИмяПоказателя = "П00011ВСЕГО" + НомГрафыСтр;
				Всего_Данные.Вставить(ВиртуальноеИмяПоказателя, Таблица1_1[РеальноеИмяПоказателя]);
			КонецЕсли;
		КонецЦикла;
		УзелF4CALC = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4CALCШаблон);
		ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Всего_Данные, УзелF4CALC, 1);
		// Основной ВЭД.
		ОсновнойВЭД_Данные = Новый Структура;
		Для НомГрафы = 2 По 24 Цикл
			НомГрафыСтр = Формат(НомГрафы, "ЧЦ=2;ЧВН=");
			ВиртуальноеИмяПоказателя = "П0001100001" + НомГрафыСтр + "_1";
			РеальноеИмяПоказателя = "П00011ОСВЭД" + НомГрафыСтр;
			ОсновнойВЭД_Данные.Вставить(ВиртуальноеИмяПоказателя, Таблица1_1[РеальноеИмяПоказателя]);
		КонецЦикла;
		УзелF4CALC = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4CALCШаблон);
		ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, ОсновнойВЭД_Данные, УзелF4CALC, 1);
		// СКЕ.
		НомСтр = 1;
		Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(
			Таблица1_1, "П000110000103_" + Формат(НомСтр, "ЧГ=")) Цикл
			Если ЗначениеЗаполнено(Таблица1_1["П000110000103_" + Формат(НомСтр, "ЧГ=")]) Тогда
				Таблица1_1.Вставить("П000110000106_" + Формат(НомСтр, "ЧГ="), 0);
				Таблица1_1.Вставить("П000110000107_" + Формат(НомСтр, "ЧГ="), 0);
				Таблица1_1.Вставить("П000110000108_" + Формат(НомСтр, "ЧГ="), 0);
				УзелF4CALC = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4CALCШаблон);
				ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Таблица1_1, УзелF4CALC, НомСтр);
			КонецЕсли;
			НомСтр = НомСтр + 1;
		КонецЦикла;
		
		// Выгрузка таблицы 2 (многострочная).
		//
		УзелF4DOGOVШаблон = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4DOGOV");
		
		Таблица2 = ДанныеОтчета.ПолеТабличногоДокументаТаблица2;
		НомСтр = 1;
		Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(
			Таблица2, "П000020000102_" + Формат(НомСтр, "ЧГ=")) Цикл
			Если ЗначениеЗаполнено(Таблица2["П000020000102_" + Формат(НомСтр, "ЧГ=")]) Тогда
				УзелF4DOGOV = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4DOGOVШаблон);
				ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Таблица2, УзелF4DOGOV, НомСтр);
			КонецЕсли;
			НомСтр = НомСтр + 1;
		КонецЦикла;
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		Таблица1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1;
		Таблица1.Вставить("Льгота60Процентов", ПараметрыВыгрузки.Льгота60Процентов);
		Таблица1.Вставить("ЧастичноеФинансированиеИзБюдж", ПараметрыВыгрузки.ЧастичноеФинансированиеИзБюдж);
		
		Таблица1_1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
		
		Таблица2 = ДанныеОтчета.ПолеТабличногоДокументаТаблица2;
		Таблица2.Вставить("Табл2Стр16Месяц1", ПараметрыВыгрузки.Табл2Стр16Месяц1);
		Таблица2.Вставить("Табл2Стр16Месяц2", ПараметрыВыгрузки.Табл2Стр16Месяц2);
		Таблица2.Вставить("Табл2Стр16Месяц3", ПараметрыВыгрузки.Табл2Стр16Месяц3);
		
		Таблица3_4 = ДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
		
		Таблица5 = ДанныеОтчета.ПолеТабличногоДокументаТаблица5;
		
		// Выгрузка таблицы 1.1 (многострочная).
		УзелF4DOGOVШаблон = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4DOGOV");
		
		НомСтр = 1;
		Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(Таблица1_1, "П000110000101_"
																	   + Формат(НомСтр, "ЧГ=")) Цикл
			Если ЗначениеЗаполнено(Таблица1_1["П000110000102_" + Формат(НомСтр, "ЧГ=")]) Тогда
				// Заполнен "Регистрационный номер принимающей организации в территориальном органе Фонда".
				УзелF4DOGOV = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4DOGOVШаблон);
				ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Таблица1_1, УзелF4DOGOV, НомСтр);
			КонецЕсли;
			НомСтр = НомСтр + 1;
		КонецЦикла;
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
			И ДанныеОтчета.Свойство("ПолеТабличногоДокументаТаблица91") Тогда
			
			// СКЕ / ИФ.
			Таблица91 = ДанныеОтчета.ПолеТабличногоДокументаТаблица91;
			УзелF4DECODEШаблон = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4DECODE");
			НомСтр = 1;
			Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(
				Таблица91, "П000910000101_" + Формат(НомСтр, "ЧГ=")) Цикл
				Если ЗначениеЗаполнено(Таблица91["П000910000102_" + Формат(НомСтр, "ЧГ=")]) Тогда
					// Заполнен "ОКВЭД".
					УзелF4DECODE = СкопироватьУзел(ИмяФормы, УзелРодитель, УзелF4DECODEШаблон);
					ВыгрузитьСтрокуМногострочнойЧасти(ИмяФормы, Таблица91, УзелF4DECODE, НомСтр);
				КонецЕсли;
				НомСтр = НомСтр + 1;
			КонецЦикла;
			
		КонецЕсли;
		
		Узел_F4INFO = ПолучитьПодчиненныйЭлемент(ИмяФормы, УзелРодитель, "F4INFO");
		ЗаполнитьДаннымиУзел(ИмяФормы, Таблица1,   Узел_F4INFO);
		ЗаполнитьДаннымиУзел(ИмяФормы, Таблица2,   Узел_F4INFO);
		ЗаполнитьДаннымиУзел(ИмяФормы, Таблица3_4, Узел_F4INFO);
		ЗаполнитьДаннымиУзел(ИмяФормы, Таблица5,   Узел_F4INFO);
		
		ПрототипУзла_PAYM_ORDER = ПолучитьПодчиненныйЭлемент(ИмяФормы, Узел_F4INFO, "PAYM_ORDER");
		
		ДанныеПП = Новый Структура;
		ДанныеПП.Вставить("ДанныеМСЧ", Таблица2);
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016105");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016104");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016101");
		
		ЗаполнитьСведенияПП(ИмяФормы, ПрототипУзла_PAYM_ORDER, ДанныеПП);
		
		ДанныеПП = Новый Структура;
		ДанныеПП.Вставить("ДанныеМСЧ", Таблица2);
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016205");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016204");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016201");
		
		ЗаполнитьСведенияПП(ИмяФормы, ПрототипУзла_PAYM_ORDER, ДанныеПП);
		
		ДанныеПП = Новый Структура;
		ДанныеПП.Вставить("ДанныеМСЧ", Таблица2);
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016305");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016304");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016301");
		
		ЗаполнитьСведенияПП(ИмяФормы, ПрототипУзла_PAYM_ORDER, ДанныеПП);
		
		РегламентированнаяОтчетность.УдалитьУзел(ПрототипУзла_PAYM_ORDER);
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

Функция ЗначениеПоказателяЗаполнено(ИмяФормы, ЗначениеПоказателя, ЯвляетсяСуммой)
	
	Если ТипЗнч(ЯвляетсяСуммой) = Тип("Булево") Тогда
		ПоказательЯвляетсяСуммой = ЯвляетсяСуммой;
	Иначе
		ПоказательЯвляетсяСуммой = (
			ЯвляетсяСуммой.Формат = "N" И ЯвляетсяСуммой.МаксРазмерность >= 10 И ЯвляетсяСуммой.МинРазмерность = 99999);
	КонецЕсли;
	
	Возврат ?(ПоказательЯвляетсяСуммой, ЗначениеСуммыЗаполнено(ИмяФормы, ЗначениеПоказателя),
										ЗначениеЗаполнено(ЗначениеПоказателя));
	
КонецФункции

Функция ЗначениеСуммыЗаполнено(ИмяФормы, ЗначениеСуммы)
	
	Возврат (Окр(ЗначениеСуммы) <> 0);
	
КонецФункции

Процедура ЗаполнитьСведенияПП(ИмяФормы, ПрототипУзла_PAYM_ORDER, ДанныеПП)
	
	ДанныеМСЧ = ДанныеПП.ДанныеМСЧ;
	ИмяПоказателяНомераПП = ДанныеПП.ИмяПоказателяНомераПП;
	ИмяПоказателяДатыПП = ДанныеПП.ИмяПоказателяДатыПП;
	ИмяПоказателяСуммыПП = ДанныеПП.ИмяПоказателяСуммыПП;
	
	НомСтр = 1;
	Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(ДанныеМСЧ,
							ИмяПоказателяНомераПП + "_" + Формат(НомСтр, "ЧГ=")) Цикл
		Посфикс = "_" + Формат(НомСтр, "ЧГ=");
		
		Узел_PAYM_ORDER = НовыйУзелИзПрототипа(ИмяФормы, ПрототипУзла_PAYM_ORDER);
		ЗадатьЗначениеЭлемента(ИмяФормы, Узел_PAYM_ORDER, "NUM", ДанныеМСЧ[ИмяПоказателяНомераПП + Посфикс]);
		ЗадатьЗначениеЭлемента(ИмяФормы, Узел_PAYM_ORDER, "DT",  ДанныеМСЧ[ИмяПоказателяДатыПП + Посфикс]);
		ЗадатьЗначениеЭлемента(ИмяФормы, Узел_PAYM_ORDER, "SUM", ДанныеМСЧ[ИмяПоказателяСуммыПП + Посфикс]);
		
		НомСтр = НомСтр + 1;
	КонецЦикла;
	
КонецПроцедуры

Процедура ЗадатьЗначениеЭлемента(ИмяФормы, Узел, КодЭлемента, Значение)
	
	ВывестиПоказательВXML(ИмяФормы, ПолучитьПодчиненныйЭлемент(ИмяФормы, Узел, КодЭлемента), Значение);
	
КонецПроцедуры

Функция ВывестиПоказательВXML(ИмяФормы, Узел, ЗначениеПоказателя)
	
	МинШирина = Узел.МинРазмерность;
	МаксШирина = Узел.МаксРазмерность;
	
	Если Узел.Формат = "T" ИЛИ Узел.Формат = "Т" Тогда // Учтем оба варианта: кириллицу и латиницу.
		Если ТипЗнч(ЗначениеПоказателя) = Тип("Дата") Тогда
			ЗначениеПоказателяСтр = Формат(ЗначениеПоказателя, "ДФ=yyyy-MM-dd");
		Иначе
			ЗначениеПоказателяСтр = СокрЛП(ЗначениеПоказателя);
		КонецЕсли;
		Узел.Значение = ?(МаксШирина < СтрДлина(ЗначениеПоказателяСтр),
			СокрЛП(Лев(ЗначениеПоказателяСтр, МаксШирина)), ЗначениеПоказателяСтр);
	ИначеЕсли Узел.Формат = "N" Тогда
		СтрокаФормата = "ЧРД=.;ЧН=0;ЧГ=;";
		Если Узел.МаксРазмерность <> 0 И Узел.МаксРазмерность <> 99999 Тогда
			СтрокаФормата = СтрокаФормата + "ЧЦ=" + Формат(Узел.МаксРазмерность, "ЧГ=") + ";";
		КонецЕсли;
		Если Узел.МинРазмерность <> 99999 Тогда
			СтрокаФормата = СтрокаФормата + "ЧДЦ=" + Формат(Узел.МинРазмерность, "ЧГ=") + ";";
		КонецЕсли;
		Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, СтрокаФормата));
	ИначеЕсли Узел.Формат = "D" Тогда
		Если ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
			Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, "ДФ=yyyy-MM-dd"));
		Иначе
			Узел.Значение = "0001-01-01";
		КонецЕсли;
	ИначеЕсли Узел.Формат = "gYear" Тогда
		Если ТипЗнч(ЗначениеПоказателя) = Тип("Дата") Тогда
			Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, "ДФ=гггг"));
		Иначе
			Узел.Значение = Прав(СокрЛП(ЗначениеПоказателя), 4);
		КонецЕсли;
	КонецЕсли;
	
КонецФункции

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

Функция ПолучитьПодчиненныйЭлемент(ИмяФормы, Узел, КодЭлемента)
	
	Для Каждого Стр Из Узел.Строки Цикл
		Если Стр.Код = КодЭлемента Тогда
			Возврат Стр;
		КонецЕсли;
	КонецЦикла;
	
КонецФункции

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

Функция ВыгрузкаВозможна(ИмяФормы,
						 ДанныеОтчета,
						 ПараметрыВыгрузки,
						 ДеревоВыгрузки,
						 РезультатВыгрузки,
						 СтруктураРеквизитовФормы) Экспорт
	
	СтатусПроверки = Истина;
	
	// Проверка показателей титульного листа.
	//
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.НомерСтрахователя) Тогда
		
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Не задан номер страхователя'"), "Титульный", "ОргФССКод");
		СтатусПроверки = Ложь;
		
	ИначеЕсли НЕ СтрДлина(СокрЛП(ПараметрыВыгрузки.НомерСтрахователя)) = 10 Тогда
		
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Длина регистрационного номера страхователя должна быть равна 10-ти символам'"), "Титульный", "ОргФССКод");
		СтатусПроверки = Ложь;
		
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.КодПодчиненности) Тогда
		
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Не задан код подчиненности'"), "Титульный", "КодПодчиненности");
		СтатусПроверки = Ложь;
		
	ИначеЕсли СтрДлина(ПараметрыВыгрузки.КодПодчиненности) <> 5 Тогда
		
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Задан код подчиненности, не состоящий из 5 цифр'"), "Титульный", "КодПодчиненности");
		СтатусПроверки = Ложь;
		
	Иначе
		
		ПоследнийСимвол = Прав(ПараметрыВыгрузки.КодПодчиненности, 1);
		Если ПоследнийСимвол <> "1" И ПоследнийСимвол <> "2" И ПоследнийСимвол <> "3" И ПоследнийСимвол <> "4" Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
			НСтр("ru='Код подчиненности должен заканчиваться на цифру 1, 2, 3 или 4'"),
			"Титульный", "КодПодчиненности");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
	КонецЕсли;
	
	Если ПустаяСтрока(ПараметрыВыгрузки.ИНН)
		ИЛИ ПараметрыВыгрузки.ИНН = "000000000000" Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Не задан ИНН организации'"), "Титульный", "ИНН");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если РегламентированнаяОтчетностьПереопределяемый.ЭтоЮридическоеЛицо(
		СтруктураРеквизитовФормы.мСохраненныйДок.Организация) И СтрДлина(ПараметрыВыгрузки.КПП) <> 9 Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='Неверно задан КПП организации'"), "Титульный", "КПП");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2")
		ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		БюджетнаяОрганизация = Неопределено;
		ПараметрыВыгрузки.Свойство("БюджетнаяОрганизация", БюджетнаяОрганизация);
		ВозможныеЗначенияПризнакаБюджетнойОрганизации = СтрРазделить("1,2,3,4", ",", Ложь);
		ВозможныеЗначенияПризнакаБюджетнойОрганизацииДляСообщения
		= СтрСоединить(ВозможныеЗначенияПризнакаБюджетнойОрганизации, """, """);
		Если ЗначениеЗаполнено(БюджетнаяОрганизация)
			И ВозможныеЗначенияПризнакаБюджетнойОрганизации.Найти(БюджетнаяОрганизация) = Неопределено Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
			НСтр("ru='Неверно задан признак страхователя бюджетной организации. Возможны значения: """
			+ ВозможныеЗначенияПризнакаБюджетнойОрганизацииДляСообщения + """'"), "Титульный", "БюджетнаяОрганизация");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
	КонецЕсли;
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
		ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
		
		Если ПараметрыВыгрузки.НомерКорректировки <> 0 Тогда
			Если ПараметрыВыгрузки.НомДопРасчета <> 0 Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
				НСтр("ru='При номере корректировки, отличном от 000 вторая часть кода ""Отчетный период"" не должна заполняться'"),
				"Титульный", "НомДопРасчета");
				СтатусПроверки = Ложь;
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.ОргДиректор) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='На титульном листе не заданы Ф.И.О. руководителя организации, индивидуального предпринимателя, "
		+ "физического лица, представителя плательщика страховых взносов (страхователя)'"), "Титульный", "ОргПодписантФамилия");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ПустаяСтрока(СокрЛП(СтрЗаменить(ПараметрыВыгрузки.ОКВЭД, ".", "")))
		И НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ПараметрыВыгрузки.ОКВЭД) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки,
		НСтр("ru='На титульном листе указано некорректное значение кода вида деятельности по ОКВЭД'"), "Титульный", "ОКВЭД");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		// Таблица "Платежи".
		//
		// Особая обработка: случай отчета, сохраненного без раздела "Платежи".
		ДанныеТаблица92 = Неопределено;
		ДанныеОтчета.Свойство("ПолеТабличногоДокументаТаблица92", ДанныеТаблица92);
		Если ТипЗнч(ДанныеТаблица92) = Тип("Структура") Тогда
			
			НомСтроки = 1;
			Пока ДанныеТаблица92.Свойство("П000920000102_" + Формат(НомСтроки, "ЧГ=")) Цикл
				НомерСтроки = Формат(НомСтроки, "ЧГ=");
				
				СтрокаЗаполнена
				= ЗначениеЗаполнено(ДанныеТаблица92["П000920000102_" + НомерСтроки])
				ИЛИ ЗначениеЗаполнено(ДанныеТаблица92["П000920000103_" + НомерСтроки])
				ИЛИ ДанныеТаблица92["П000920000104_" + НомерСтроки] <> 0;
				
				Если СтрокаЗаполнена Тогда
					
					ИмяПок = "П000920000102_" + НомерСтроки;
					Если НЕ ЗначениеЗаполнено(ДанныеТаблица92[ИмяПок]) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Платежи: в строке "
						+ НомерСтроки + " не указан номер платежного поручения'"), "Таблица92", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000920000103_" + НомерСтроки;
					Если НЕ ЗначениеЗаполнено(ДанныеТаблица92[ИмяПок]) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Платежи: в строке "
						+ НомерСтроки + " не указана дата платежного поручения'"), "Таблица92", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000920000104_" + НомерСтроки;
					Если ДанныеТаблица92[ИмяПок] = 0 Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Платежи: в строке "
						+ НомерСтроки + " не указана сумма платежа'"), "Таблица92", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
				КонецЕсли;
				
				НомСтроки = НомСтроки + 1;
				
			КонецЦикла;
			
		КонецЕсли;
		
		// Таблица 1.
		//
		ДанныеТаблица1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1;
		
		Если ДанныеТаблица1["П000010000503"] = 0 Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1: "
			+ "строка 5 должна быть заполнена'"), "Таблица1", "П000010000503");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
		// Таблица 1.1.
		//
		ЗаполненаТаблица1_1 = Ложь;
		ДанныеТаблица1_1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
		ПрефиксПоказателейРаздела = "П00011";
		Для Каждого Показатель Из ДанныеТаблица1_1 Цикл
			Если СтрНачинаетсяС(Показатель.Ключ, "П00011") И СтрДлина(Показатель.Ключ) >= 13
				И ЗначениеЗаполнено(Показатель.Значение) Тогда
				ЗаполненаТаблица1_1 = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Если ЗаполненаТаблица1_1 Тогда
			
			ИмяПок = "П00011ОСВЭД02";
			Если НЕ ЗначениеЗаполнено(ДанныеТаблица1_1[ИмяПок]) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" не указано наименование ВЭД организации'"), "Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ИмяПок = "П00011ОСВЭД03";
			ЗначПок = СокрЛП(ДанныеТаблица1_1[ИмяПок]);
			Если НЕ ЗначениеЗаполнено(ЗначПок) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" не указан код по ОКВЭД организации'"), "Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			ИначеЕсли НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ЗначПок) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" указано некорректное значение кода по ОКВЭД организации'"), "Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ИмяПок = "П00011ОСВЭД04";
			Если НЕ ЗначениеЗаполнено(ДанныеТаблица1_1[ИмяПок]) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" не указано наименование организации'"), "Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ИмяПок = "П00011ОСВЭД09";
			Если ДанныеТаблица1_1[ИмяПок] < ДанныеТаблица1_1["П00011ОСВЭД11"] + ДанныеТаблица1_1["П00011ОСВЭД13"]
				+ ДанныеТаблица1_1["П00011ОСВЭД15"] + ДанныеТаблица1_1["П00011ОСВЭД17"] Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" значение в графе 9 должно быть больше или равно сумме значений в графах 11, 13, 15, 17'"),
				"Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ИмяПок = "П00011ОСВЭД10";
			Если ДанныеТаблица1_1[ИмяПок] < ДанныеТаблица1_1["П00011ОСВЭД12"] + ДанныеТаблица1_1["П00011ОСВЭД14"]
				+ ДанныеТаблица1_1["П00011ОСВЭД16"] + ДанныеТаблица1_1["П00011ОСВЭД18"] Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" значение в графе 10 должно быть больше или равно сумме значений в графах 12, 14, 16, 18'"),
				"Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ИмяПок = "П00011ОСВЭД19";
			Если ДанныеТаблица1_1[ИмяПок] < ДанныеТаблица1_1["П00011ОСВЭД20"] + ДанныеТаблица1_1["П00011ОСВЭД21"] Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: "
				+ "в строке ""основной ВЭД"" значение в графе 19 должно быть больше или равно сумме значений в графах 20, 21'"),
				"Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ЗаполненаХотяБыОднаСКЕ = Ложь;
			НомСтроки = 1;
			Пока ДанныеТаблица1_1.Свойство("П000110000103_" + Формат(НомСтроки, "ЧГ=")) Цикл
				НомерСтроки = Формат(НомСтроки, "ЧГ=");
				
				СтрокаЗаполнена
				= ЗначениеЗаполнено(ДанныеТаблица1_1["П000110000102_" + НомерСтроки])
				ИЛИ ЗначениеЗаполнено(ДанныеТаблица1_1["П000110000103_" + НомерСтроки])
				ИЛИ ЗначениеЗаполнено(ДанныеТаблица1_1["П000110000104_" + НомерСтроки])
				ИЛИ ДанныеТаблица1_1["П000110000105_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000109_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000110_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000111_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000112_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000113_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000114_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000115_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000116_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000117_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000118_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000119_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000120_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000121_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000122_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000123_" + НомерСтроки] <> 0
				ИЛИ ДанныеТаблица1_1["П000110000124_" + НомерСтроки] <> 0;
				
				ЗаполненаХотяБыОднаСКЕ = ЗаполненаХотяБыОднаСКЕ ИЛИ СтрокаЗаполнена;
				
				Если СтрокаЗаполнена Тогда
					
					ИмяПок = "П000110000102_" + НомерСтроки;
					Если НЕ ЗначениеЗаполнено(ДанныеТаблица1_1[ИмяПок]) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " не указано наименование ВЭД СКЕ'"), "Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000110000103_" + НомерСтроки;
					ЗначПок = СокрЛП(ДанныеТаблица1_1[ИмяПок]);
					Если НЕ ЗначениеЗаполнено(ЗначПок) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " не указан код по ОКВЭД СКЕ'"), "Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					ИначеЕсли НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ЗначПок) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " указано некорректное значение кода по ОКВЭД СКЕ'"), "Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000110000104_" + НомерСтроки;
					Если НЕ ЗначениеЗаполнено(ДанныеТаблица1_1[ИмяПок]) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " не указано наименование структурного подразделения - СКЕ'"), "Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000110000109_" + НомерСтроки;
					Если ДанныеТаблица1_1[ИмяПок]
						< ДанныеТаблица1_1["П000110000111_" + НомерСтроки] + ДанныеТаблица1_1["П000110000113_" + НомерСтроки]
						+ ДанныеТаблица1_1["П000110000115_" + НомерСтроки] + ДанныеТаблица1_1["П000110000117_" + НомерСтроки] Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " значение в графе 9 должно быть больше или равно сумме значений в графах 11, 13, 15, 17'"),
						"Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000110000110_" + НомерСтроки;
					Если ДанныеТаблица1_1[ИмяПок]
						< ДанныеТаблица1_1["П000110000112_" + НомерСтроки] + ДанныеТаблица1_1["П000110000114_" + НомерСтроки]
						+ ДанныеТаблица1_1["П000110000116_" + НомерСтроки] + ДанныеТаблица1_1["П000110000118_" + НомерСтроки] Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " значение в графе 10 должно быть больше или равно сумме значений в графах 12, 14, 16, 18'"),
						"Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					ИмяПок = "П000110000119_" + НомерСтроки;
					Если ДанныеТаблица1_1[ИмяПок]
						< ДанныеТаблица1_1["П000110000120_" + НомерСтроки] + ДанныеТаблица1_1["П000110000121_" + НомерСтроки] Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 1.1: в строке "
						+ НомерСтроки + " значение в графе 19 должно быть больше или равно сумме значений в графах 20, 21'"),
						"Таблица1_1", ИмяПок);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
				КонецЕсли;
				
				НомСтроки = НомСтроки + 1;
				
			КонецЦикла;
			
			Если НЕ ЗаполненаХотяБыОднаСКЕ Тогда
				
				ИмяПок = ?(ЗначениеЗаполнено(ДанныеТаблица1_1["П000110000101_1"]), "П000110000102_1", "П000110000101_1");
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
				"ru='Таблица 1.1 должна содержать сведения по выделенным самостоятельным классификационным единицам'"),
				"Таблица1_1", ИмяПок);
				СтатусПроверки = Ложь;
				
			КонецЕсли;
			
		КонецЕсли;
		
		// Таблица 2.
		//
		ДанныеТаблица2 = ДанныеОтчета.ПолеТабличногоДокументаТаблица2;
		НомСтроки = 1;
		Пока ДанныеТаблица2.Свойство("П000020000102_" + Формат(НомСтроки, "ЧГ=")) Цикл
			НомерСтроки = Формат(НомСтроки, "ЧГ=");
			
			СтрокаЗаполнена
			= ЗначениеЗаполнено(ДанныеТаблица2["П000020000102_" + НомерСтроки])
			ИЛИ ЗначениеЗаполнено(ДанныеТаблица2["П000020000103_" + НомерСтроки])
			ИЛИ ЗначениеЗаполнено(ДанныеТаблица2["П000020000104_" + НомерСтроки])
			ИЛИ ЗначениеЗаполнено(ДанныеТаблица2["П000020000105_" + НомерСтроки])
			ИЛИ ДанныеТаблица2["П000020000106_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000107_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000108_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000109_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000110_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000111_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000112_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000113_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000114_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000115_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000116_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000117_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000118_" + НомерСтроки] <> 0
			ИЛИ ДанныеТаблица2["П000020000119_" + НомерСтроки] <> 0;
			
			Если СтрокаЗаполнена Тогда
				
				ИмяПок = "П000020000102_" + НомерСтроки;
				Если НЕ ЗначениеЗаполнено(ДанныеТаблица2[ИмяПок]) Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " не указан регистрационный номер принимающей организации в территориальном органе ФСС РФ'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				ИначеЕсли СтрДлина(СокрЛП(ДанныеТаблица2[ИмяПок])) <> 10 Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " указан регистрационный номер принимающей организации в территориальном органе ФСС РФ, "
					+ "не состоящий из 10 символов'"), "Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				
				ИмяПок = "П000020000103_" + НомерСтроки;
				Если НЕ ЗначениеЗаполнено(ДанныеТаблица2[ИмяПок]) Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " не указан ИНН принимающей организации'"), "Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				ИначеЕсли СтрДлина(СокрЛП(ДанныеТаблица2[ИмяПок])) <> 10 И СтрДлина(СокрЛП(ДанныеТаблица2[ИмяПок])) <> 12 Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " указан ИНН принимающей организации, не состоящий из 10 или 12 символов'"), "Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				ИначеЕсли СтрДлина(СокрЛП(ДанныеТаблица2[ИмяПок])) = 12
					И ЗначениеЗаполнено(ДанныеТаблица2["П000020000104_" + НомерСтроки]) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " КПП принимающей организации не должен быть указан, если ИНН состоит из 12 символов'"),
					"Таблица2", "П000020000104_" + НомерСтроки);
					СтатусПроверки = Ложь;
					
				ИначеЕсли СтрДлина(СокрЛП(ДанныеТаблица2[ИмяПок])) = 10
					И ЗначениеЗаполнено(ДанныеТаблица2["П000020000104_" + НомерСтроки])
					И СтрДлина(СокрЛП(ДанныеТаблица2["П000020000104_" + НомерСтроки])) <> 9 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " указан КПП принимающей организации, не состоящий из 9 символов'"),
					"Таблица2", "П000020000104_" + НомерСтроки);
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				ИмяПок = "П000020000105_" + НомерСтроки;
				ЗначПок = СокрЛП(ДанныеТаблица2[ИмяПок]);
				Если ЗначениеЗаполнено(ЗначПок)
					И НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ЗначПок) Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " указано некорректное значение кода по ОКВЭД принимающей организации'"), "Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				
				ИмяПок = "П000020000106_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000107_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 6 должно быть больше или равно значению в графе 7'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				ИмяПок = "П000020000108_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000109_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 8 должно быть больше или равно значению в графе 9'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				ИмяПок = "П000020000110_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000111_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 10 должно быть больше или равно значению в графе 11'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				ИмяПок = "П000020000112_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000113_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 12 должно быть больше или равно значению в графе 13'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				ИмяПок = "П000020000114_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000115_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 14 должно быть больше или равно значению в графе 15'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				
				ИмяПок = "П000020000108_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000110_" + НомерСтроки]
					+ ДанныеТаблица2["П000020000112_" + НомерСтроки] + ДанныеТаблица2["П000020000114_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 8 должно быть больше или равно сумме значений в графах 10, 12, 14'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				ИмяПок = "П000020000109_" + НомерСтроки;
				Если ДанныеТаблица2[ИмяПок] < ДанныеТаблица2["П000020000111_" + НомерСтроки]
					+ ДанныеТаблица2["П000020000113_" + НомерСтроки] + ДанныеТаблица2["П000020000115_" + НомерСтроки] Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 2: в строке "
					+ НомерСтроки + " значение в графе 9 должно быть больше или равно сумме значений в графах 11, 13, 15'"),
					"Таблица2", ИмяПок);
					СтатусПроверки = Ложь;
				КонецЕсли;
				
			КонецЕсли;
			
			НомСтроки = НомСтроки + 1;
			
		КонецЦикла;
		
		// Таблица 3.
		//
		ДанныеТаблица3 = ДанныеОтчета.ПолеТабличногоДокументаТаблица3;
		
		Если ДанныеТаблица3["П000030000103"] < ДанныеТаблица3["П000030000203"] Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 3: значение "
			+ "в строке 1 должно быть больше или равно значению в строке 2'"), "Таблица3", "П000030000103");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
		Если ДанныеТаблица3["П000030000403"] < ДанныеТаблица3["П000030000503"] Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 3: значение "
			+ "в строке 4 должно быть больше или равно значению в строке 5'"), "Таблица3", "П000030000403");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
		// Таблица 4.
		//
		ДанныеТаблица4 = ДанныеОтчета.ПолеТабличногоДокументаТаблица4;
		
		Если ДанныеТаблица4["П000040000104"] < ДанныеТаблица4["П000040000105"] + ДанныеТаблица4["П000040000106"]
			+ ДанныеТаблица4["П000040000107"] + ДанныеТаблица4["П000040000108"] + ДанныеТаблица4["П000040000109"]
			+ ДанныеТаблица4["П000040000110"] + ДанныеТаблица4["П000040000111"] Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр("ru='Таблица 4: значение "
			+ "в графе 4 должно быть больше или равно сумме значений в графах 5-11'"), "Таблица4", "П000040000104");
			СтатусПроверки = Ложь;
		КонецЕсли;
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		// Таблица 1.
		ДанныеТаблица1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1;
		Если ДанныеТаблица1["П000010000503"] = 0 Тогда
			
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
				РезультатВыгрузки, НСтр("ru='В таблице 1, в строке 5 не указан размер страхового тарифа в соответствии с классом профессионального риска.'"),
				"Таблица1", "П000010000503");
			
			СтатусПроверки = Ложь;
			
		КонецЕсли;
		
		// Таблица 1.1.
		ДанныеТаблица1_1 = ДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
		НомСтроки = 1;
		
		НомерПатента = Неопределено;
		
		Пока ДанныеТаблица1_1.Свойство("П000110000101_" + Формат(НомСтроки, "ЧГ="), НомерПатента) Цикл
			
			НомерСтроки = Формат(НомСтроки, "ЧГ=");
			
			СтрокаЗаполнена = Ложь;
			
			РегНомерПринОрг 	   = СокрЛП(ДанныеТаблица1_1["П000110000102_" + НомерСтроки]);
			ИННПринОрг      	   = СокрЛП(ДанныеТаблица1_1["П000110000103_" + НомерСтроки]);
			ОКВЭДПринОрг      	   = СокрЛП(ДанныеТаблица1_1["П000110000104_" + НомерСтроки]);
			ЧислВремНапрРаб 	   = ДанныеТаблица1_1["П000110000105_" + НомерСтроки];
			БазаРасчПериодВсего    = ДанныеТаблица1_1["П000110000106_" + НомерСтроки];
			БазаРасчПериодИнвалиды = ДанныеТаблица1_1["П000110000107_" + НомерСтроки];
			База1МесяцВсего        = ДанныеТаблица1_1["П000110000108_" + НомерСтроки];
			База1МесяцИнвалиды     = ДанныеТаблица1_1["П000110000109_" + НомерСтроки];
			База2МесяцВсего        = ДанныеТаблица1_1["П000110000110_" + НомерСтроки];
			База2МесяцИнвалиды     = ДанныеТаблица1_1["П000110000111_" + НомерСтроки];
			База3МесяцВсего        = ДанныеТаблица1_1["П000110000112_" + НомерСтроки];
			База3МесяцИнвалиды     = ДанныеТаблица1_1["П000110000113_" + НомерСтроки];
			СтраховойТарифГрафа14  = ДанныеТаблица1_1["П000110000114_" + НомерСтроки];
			СтраховойТарифГрафа15  = ДанныеТаблица1_1["П000110000115_" + НомерСтроки];
			
			Если ЗначениеЗаполнено(РегНомерПринОрг)
			 ИЛИ ЗначениеЗаполнено(ИННПринОрг)
			 ИЛИ ЗначениеЗаполнено(ОКВЭДПринОрг)
			 ИЛИ ЗначениеЗаполнено(ЧислВремНапрРаб)
			 ИЛИ ЗначениеЗаполнено(БазаРасчПериодВсего)
			 ИЛИ ЗначениеЗаполнено(БазаРасчПериодИнвалиды)
			 ИЛИ ЗначениеЗаполнено(База1МесяцВсего)
			 ИЛИ ЗначениеЗаполнено(База1МесяцИнвалиды)
			 ИЛИ ЗначениеЗаполнено(База2МесяцВсего)
			 ИЛИ ЗначениеЗаполнено(База2МесяцИнвалиды)
			 ИЛИ ЗначениеЗаполнено(База3МесяцВсего)
			 ИЛИ ЗначениеЗаполнено(База3МесяцИнвалиды)
			 ИЛИ ЗначениеЗаполнено(СтраховойТарифГрафа14)
			 ИЛИ ЗначениеЗаполнено(СтраховойТарифГрафа15) Тогда
			 
				СтрокаЗаполнена = Истина;
				
			КонецЕсли;
			
			Если СтрокаЗаполнена Тогда
				
				Если НЕ ЗначениеЗаполнено(РегНомерПринОрг) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указан регистрационный номер принимающей организации в территориальном органе Фонда.'"),
						"Таблица1_1", "П000110000102_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				ИначеЕсли СтрДлина(СокрЛП(РегНомерПринОрг)) <> 10 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " указан регистрационный номер принимающей организации в территориальном органе Фонда, не состоящий из 10 символов.'"),
						"Таблица1_1", "П000110000102_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ ЗначениеЗаполнено(ИННПринОрг) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указан ИНН принимающей организации.'"),
						"Таблица1_1", "П000110000103_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				ИначеЕсли СтрДлина(СокрЛП(ИННПринОрг)) <> 10 И СтрДлина(СокрЛП(ИННПринОрг)) <> 12 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " указан ИНН принимающей организации, не состоящий из 10 или 12 символов.'"),
						"Таблица1_1", "П000110000103_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ ЗначениеЗаполнено(ОКВЭДПринОрг) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указан ОКВЭД принимающей организации.'"),
						"Таблица1_1", "П000110000104_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;	
										
				Если ЧислВремНапрРаб = 0 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указана численность временно направленных работников.'"),
						"Таблица1_1", "П000110000105_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (БазаРасчПериодВсего
					>= База1МесяцВсего + База2МесяцВсего + База3МесяцВсего) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 6 должно быть больше или равно сумме значений в графах 8, 10, 12.'"),
						"Таблица1_1", "П000110000106_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (БазаРасчПериодИнвалиды
					>= База1МесяцИнвалиды + База2МесяцИнвалиды + База3МесяцИнвалиды) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 7 должно быть больше или равно сумме значений в графах 9, 11, 13.'"),
						"Таблица1_1", "П000110000107_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (БазаРасчПериодВсего >= БазаРасчПериодИнвалиды) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 6 должно быть больше или равно значению в графе 7.'"),
						"Таблица1_1", "П000110000106_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (База1МесяцВсего >= База1МесяцИнвалиды) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 8 должно быть больше или равно значению в графе 9.'"),
						"Таблица1_1", "П000110000108_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (База2МесяцВсего >= База2МесяцИнвалиды) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 10 должно быть больше или равно значению в графе 11.'"),
						"Таблица1_1", "П000110000110_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если НЕ (База3МесяцВсего >= База3МесяцИнвалиды) Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " значение в графе 12 должно быть больше или равно значению в графе 13.'"),
						"Таблица1_1", "П000110000112_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если СтраховойТарифГрафа14 = 0 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указан размер страхового тарифа в соответствии с классом профессионального риска.'"),
						"Таблица1_1", "П000110000114_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
				Если СтраховойТарифГрафа15 = 0 Тогда
					
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(
						РезультатВыгрузки, НСтр("ru='В таблице 1.1, в строке " + НомерСтроки
						+ " не указан размер страхового тарифа с учетом скидки (надбавки).'"),
						"Таблица1_1", "П000110000115_" + НомерСтроки);
					
					СтатусПроверки = Ложь;
					
				КонецЕсли;
				
			КонецЕсли;
			
			НомСтроки = НомСтроки +1;
			
		КонецЦикла;
		
		ДанныеТаблица2 = ДанныеОтчета.ПолеТабличногоДокументаТаблица2;
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
			И Год(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания) = 2021 Тогда
			
			ИменаПроверяемыхПоказателей = Новый Массив;
			ИменаПроверяемыхПоказателей.Добавить("П000020015001");
			ИменаПроверяемыхПоказателей.Добавить("П000020015401");
			ИменаПроверяемыхПоказателей.Добавить("П000020015101");
			ИменаПроверяемыхПоказателей.Добавить("П000020015201");
			ИменаПроверяемыхПоказателей.Добавить("П000020015301");
			ИменаПроверяемыхПоказателей.Добавить("П000020015003");
			
			Для каждого ИмяПоказателя Из ИменаПроверяемыхПоказателей Цикл
				
				ЗначениеПоказателя = Неопределено;
				Если ДанныеТаблица2.Свойство(ИмяПоказателя, ЗначениеПоказателя) И ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
					"ru='В 2021 году показатели строки 15 в таблице 2 не заполняются (информация опубликована на сайте ФСС РФ: "
					+ "http://fss.ru/ru/news/567885/586264.shtml).'"), "Таблица2", ИмяПоказателя);
					СтатусПроверки = Ложь;
					Прервать;
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
		// Многострочные части таблицы 2.
		ДанныеПП = Новый Структура;
		ДанныеПП.Вставить("ДанныеМСЧ", ДанныеТаблица2);
		ДанныеПП.Вставить("ИмяРаздела", "Таблица2");
		ДанныеПП.Вставить("ОписаниеРаздела", "в таблице 2");
		
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016104");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016105");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016101");
		
		ПроверитьСведенияПП(ИмяФормы, ДанныеПП, СтатусПроверки, РезультатВыгрузки);
		
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016204");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016205");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016201");
		
		ПроверитьСведенияПП(ИмяФормы, ДанныеПП, СтатусПроверки, РезультатВыгрузки);
		
		ДанныеПП.Вставить("ИмяПоказателяНомераПП", "П000020016304");
		ДанныеПП.Вставить("ИмяПоказателяДатыПП",   "П000020016305");
		ДанныеПП.Вставить("ИмяПоказателяСуммыПП",  "П000020016301");
		
		ПроверитьСведенияПП(ИмяФормы, ДанныеПП, СтатусПроверки, РезультатВыгрузки);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
			И Год(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания) = 2021 Тогда
			
			ДанныеТаблица3_4 = ДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
			
			ИменаПроверяемыхПоказателей = Новый Массив;
			ИменаПроверяемыхПоказателей.Добавить("П000030001003");
			ИменаПроверяемыхПоказателей.Добавить("П000030001004");
			ИменаПроверяемыхПоказателей.Добавить("П000030002003");
			ИменаПроверяемыхПоказателей.Добавить("П000030002004");
			ИменаПроверяемыхПоказателей.Добавить("П000030003003");
			ИменаПроверяемыхПоказателей.Добавить("П000030003004");
			ИменаПроверяемыхПоказателей.Добавить("П000030004003");
			ИменаПроверяемыхПоказателей.Добавить("П000030004004");
			ИменаПроверяемыхПоказателей.Добавить("П000030005003");
			ИменаПроверяемыхПоказателей.Добавить("П000030005004");
			ИменаПроверяемыхПоказателей.Добавить("П000030006003");
			ИменаПроверяемыхПоказателей.Добавить("П000030006004");
			ИменаПроверяемыхПоказателей.Добавить("П000030007003");
			ИменаПроверяемыхПоказателей.Добавить("П000030007004");
			ИменаПроверяемыхПоказателей.Добавить("П000030008003");
			ИменаПроверяемыхПоказателей.Добавить("П000030008004");
			ИменаПроверяемыхПоказателей.Добавить("П000030009004");
			ИменаПроверяемыхПоказателей.Добавить("П000030010004");
			ИменаПроверяемыхПоказателей.Добавить("П000030011004");
			
			Для каждого ИмяПоказателя Из ИменаПроверяемыхПоказателей Цикл
				
				ЗначениеПоказателя = Неопределено;
				Если ДанныеТаблица3_4.Свойство(ИмяПоказателя, ЗначениеПоказателя) И ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
					РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
					"ru='В 2021 году таблица 3 не заполняется и не представляется (информация опубликована на сайте ФСС РФ: "
					+ "http://fss.ru/ru/news/567885/586264.shtml).'"), "Таблица3_4", ИмяПоказателя);
					СтатусПроверки = Ложь;
					Прервать;
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
			И ДанныеОтчета.Свойство("ПолеТабличногоДокументаТаблица91") Тогда
			
			// СКЕ / ИФ.
			ДанныеТаблица91 = ДанныеОтчета.ПолеТабличногоДокументаТаблица91;
			НомСтроки = 1;
			Пока ДанныеТаблица91.Свойство("П000910000101_" + Формат(НомСтроки, "ЧГ=")) Цикл
				
				НомерСтроки = Формат(НомСтроки, "ЧГ=");
				
				СтрокаЗаполнена = Ложь;
				
				ОКВЭД = СокрЛП(ДанныеТаблица91["П000910000102_" + НомерСтроки]);
				
				КлассПрофРиска         = ДанныеТаблица91["П000910000103_" + НомерСтроки];
				СтрахТариф             = ДанныеТаблица91["П000910000104_" + НомерСтроки];
				СкидкаКСтрахТарифу     = ДанныеТаблица91["П000910000105_" + НомерСтроки];
				НадбавкаКСтрахТарифу   = ДанныеТаблица91["П000910000106_" + НомерСтроки];
				
				ВыплРасчПериодВсего    = ДанныеТаблица91["П000910000107_" + НомерСтроки];
				ВыплРасчПериодИнвалиды = ДанныеТаблица91["П000910000108_" + НомерСтроки];
				Выпл1МесяцВсего        = ДанныеТаблица91["П000910000109_" + НомерСтроки];
				Выпл1МесяцИнвалиды     = ДанныеТаблица91["П000910000110_" + НомерСтроки];
				Выпл2МесяцВсего        = ДанныеТаблица91["П000910000111_" + НомерСтроки];
				Выпл2МесяцИнвалиды     = ДанныеТаблица91["П000910000112_" + НомерСтроки];
				Выпл3МесяцВсего        = ДанныеТаблица91["П000910000113_" + НомерСтроки];
				Выпл3МесяцИнвалиды     = ДанныеТаблица91["П000910000114_" + НомерСтроки];
				
				ВыплНеНачислСВ  = ДанныеТаблица91["П000910000115_" + НомерСтроки];
				ЗачтеноРасходов = ДанныеТаблица91["П000910000116_" + НомерСтроки];
				
				Если ЗначениеЗаполнено(ОКВЭД) ИЛИ ЗначениеЗаполнено(КлассПрофРиска) ИЛИ ЗначениеЗаполнено(СтрахТариф)
					ИЛИ ЗначениеЗаполнено(СкидкаКСтрахТарифу) ИЛИ ЗначениеЗаполнено(НадбавкаКСтрахТарифу)
					ИЛИ ЗначениеЗаполнено(ВыплРасчПериодВсего) ИЛИ ЗначениеЗаполнено(ВыплРасчПериодИнвалиды)
					ИЛИ ЗначениеЗаполнено(Выпл1МесяцВсего) ИЛИ ЗначениеЗаполнено(Выпл1МесяцИнвалиды)
					ИЛИ ЗначениеЗаполнено(Выпл2МесяцВсего) ИЛИ ЗначениеЗаполнено(Выпл2МесяцИнвалиды)
					ИЛИ ЗначениеЗаполнено(Выпл3МесяцВсего) ИЛИ ЗначениеЗаполнено(Выпл3МесяцИнвалиды)
					ИЛИ ЗначениеЗаполнено(ВыплНеНачислСВ) ИЛИ ЗначениеЗаполнено(ЗачтеноРасходов) Тогда
					
					Если НЕ ЗначениеЗаполнено(ОКВЭД) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " не указан код по ОКВЕД.'"), "Таблица91", "П000910000102_" + НомерСтроки);
						СтатусПроверки = Ложь;
					ИначеЕсли НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ОКВЭД) Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " указано некорректное значение кода по ОКВЕД.'"), "Таблица91", "П000910000102_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					Если КлассПрофРиска = 0 Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " не указан класс профессионального риска.'"), "Таблица91", "П000910000103_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					Если СтрахТариф = 0 Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " не указан страховой тариф.'"), "Таблица91", "П000910000104_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
					Если ВыплРасчПериодВсего < Выпл1МесяцВсего + Выпл2МесяцВсего + Выпл3МесяцВсего Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 7 должно быть больше или равно сумме значений в графах 9, 11, 13.'"),
						"Таблица91", "П000910000107_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					Если ВыплРасчПериодИнвалиды < Выпл1МесяцИнвалиды + Выпл2МесяцИнвалиды + Выпл3МесяцИнвалиды Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 8 должно быть больше или равно сумме значений в графах 10, 12, 14.'"),
						"Таблица91", "П000910000108_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					Если ВыплРасчПериодВсего < ВыплРасчПериодИнвалиды Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 7 должно быть больше или равно значению в графе 8.'"),
						"Таблица91", "П000910000107_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					Если Выпл1МесяцВсего < Выпл1МесяцИнвалиды Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 9 должно быть больше или равно значению в графе 10.'"),
						"Таблица91", "П000910000109_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					Если Выпл2МесяцВсего < Выпл2МесяцИнвалиды Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 11 должно быть больше или равно значению в графе 12.'"),
						"Таблица91", "П000910000111_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					Если Выпл3МесяцВсего < Выпл3МесяцИнвалиды Тогда
						РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(РезультатВыгрузки, НСтр(
						"ru='В разделе ""Самостоятельные классификационные единицы / источники финансирования"", в строке "
						+ НомерСтроки + " значение в графе 13 должно быть больше или равно значению в графе 14.'"),
						"Таблица91", "П000910000113_" + НомерСтроки);
						СтатусПроверки = Ложь;
					КонецЕсли;
					
				КонецЕсли;
				
				НомСтроки = НомСтроки + 1;
				
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат СтатусПроверки;
	
КонецФункции

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

Функция СформироватьСтруктуруПараметров(ИмяФормы,
										ДанныеОтчета,
										СтруктураРеквизитовФормы) Экспорт
	
	Титульный = ДанныеОтчета.ПолеТабличногоДокументаТитульный;
	
	ПараметрыВыгрузки = Новый Структура;
	
	ПараметрыВыгрузки.Вставить("НомерСтрахователя", СокрЛП(Титульный.ОргФССКод));
	ПараметрыВыгрузки.Вставить("КодПодчиненности", СокрЛП(Титульный.КодПодчиненности));
	ПараметрыВыгрузки.Вставить("РасчПериод", СокрЛП(Титульный.ОтчетГод));
	
	ПараметрыВыгрузки.Вставить("ОтчПериод", СокрЛП(Титульный.Период));
	Если ПустаяСтрока(ПараметрыВыгрузки.ОтчПериод) Тогда
		ПараметрыВыгрузки.ОтчПериод = Формат(КонецКвартала(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания), "ДФ=ММ");
	КонецЕсли;
	
	ПараметрыВыгрузки.Вставить("НомерКорректировки", СтрокаВЧисло(ИмяФормы, Титульный.НомерКорректировки));
	ПараметрыВыгрузки.Вставить("ПрекращениеДеятельности", ?(ПустаяСтрока(Титульный.ПрекращениеДеятельности), 0, 1));
	ПараметрыВыгрузки.Вставить("ОргНазв", Лев(СокрЛП(Титульный.ОргНазв), 255));
	ПараметрыВыгрузки.Вставить("ИНН", СокрЛП(Титульный.ИНН));
	ПараметрыВыгрузки.Вставить("КПП", СокрЛП(СтрЗаменить(Титульный.КПП, "-", "")));
	ПараметрыВыгрузки.Вставить("ОГРН", СокрЛП(Титульный.ОГРН));
	ПараметрыВыгрузки.Вставить("Телефон", СокрЛП(Титульный.ТелОрганизации));
	
	ПараметрыВыгрузки.Вставить("ОКВЭД", СтрЗаменить(СокрЛП(СтрЗаменить(СтрЗаменить(Титульный.ОКВЭД,
		" ", ""), ".", " ")), " ", "."));
	
	ПараметрыВыгрузки.Вставить("ЧислРаботников", СтрокаВЧисло(ИмяФормы, Титульный.ЧислРаботников));
	ПараметрыВыгрузки.Вставить("ЧислИнвалидов", СтрокаВЧисло(ИмяФормы, Титульный.ЧислИнвалидов));
	ПараметрыВыгрузки.Вставить("ЧислВред", СтрокаВЧисло(ИмяФормы, Титульный.ЧислВред));
	
	ПараметрыВыгрузки.Вставить("ПризнакПодписанта", Титульный.ПрПодп);
	ПараметрыВыгрузки.Вставить("ОргДиректор", Лев(СокрЛП(Титульный.ОргПодписантФамилия), 64));
	
	ПараметрыВыгрузки.Вставить("ДатаПредставления", ТекущаяДатаСеанса());
	ПараметрыВыгрузки.Вставить("ДокументПредставителя", Лев(СокрЛП(Титульный.ДокУпПред), 64));
	
	ПараметрыВыгрузки.Вставить("ИмяФайла", ПараметрыВыгрузки.НомерСтрахователя
	+ "_" + ПараметрыВыгрузки.РасчПериод + "_" + ПараметрыВыгрузки.ОтчПериод + ".xml");
	
	// Используется для контроля заполнения значения.
	ПараметрыВыгрузки.Вставить("КодФонда", Лев(СокрЛП(Титульный.КодПодчиненности), 5)); 
	
	// Значения служебных реквизитов "Частичное финансирование из бюджета"
	// и "Установлена льгота 60% (п. 2 ст. 2 Федерального закона от 22.12.2005 № 179 ФЗ)"
	// (таблица 1).
	Льгота60Процентов = ?(ЗначениеЗаполнено(ДанныеОтчета.ПолеТабличногоДокументаТаблица1.П000010000002), 1, 0);
	ПараметрыВыгрузки.Вставить("Льгота60Процентов", Льгота60Процентов);
	ЧастичноеФинансированиеИзБюдж = ?(ЗначениеЗаполнено(ДанныеОтчета.ПолеТабличногоДокументаТаблица1.П000010000001), 1, 0);
	ПараметрыВыгрузки.Вставить("ЧастичноеФинансированиеИзБюдж", ЧастичноеФинансированиеИзБюдж);
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2")
		ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		ПараметрыВыгрузки.Вставить("БюджетнаяОрганизация", СокрЛП(Титульный.БюджетнаяОрганизация));
		
	КонецЕсли;
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		ПараметрыВыгрузки.Вставить("Адрес1", СокрЛП(Титульный.Адрес1));
		ПараметрыВыгрузки.Вставить("Адрес2", СокрЛП(Титульный.Адрес2));
		ПараметрыВыгрузки.Вставить("Адрес3", СокрЛП(Титульный.Адрес3));
		ПараметрыВыгрузки.Вставить("Адрес4", СокрЛП(Титульный.Адрес4));
		ПараметрыВыгрузки.Вставить("Адрес6", СокрЛП(Титульный.Адрес6));
		ПараметрыВыгрузки.Вставить("Адрес7", СокрЛП(Титульный.Адрес7));
		ПараметрыВыгрузки.Вставить("Адрес8", СокрЛП(Титульный.Адрес8));
		ПараметрыВыгрузки.Вставить("Адрес9", СокрЛП(Титульный.Адрес9));
		
		ПараметрыВыгрузки.Вставить("ЧислФизЛицВыпл", СтрокаВЧисло(ИмяФормы, Титульный.ЧислФизЛицВыпл));
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3")
		ИЛИ ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
		
		ПараметрыВыгрузки.Вставить("НомДопРасчета", СтрокаВЧисло(ИмяФормы, Титульный.НомДопРасчета));
		
		АдресРегистрации = СокрЛП(Титульный.Адрес1) + "," +
		                   СокрЛП(Титульный.Адрес2) + "," +
		                   СокрЛП(Титульный.Адрес3) + "," +
		                   СокрЛП(Титульный.Адрес4) + ?(СтрЧислоВхождений(Титульный.Адрес4, ",") > 0, ",", ",,") +
		                   СокрЛП(Титульный.Адрес6) + "," +
		                   СокрЛП(Титульный.Адрес7) + "," +
		                   СокрЛП(Титульный.Адрес8) + "," +
		                   СокрЛП(Титульный.Адрес9);
		
		ПараметрыВыгрузки.Вставить("АдресРегистрации", Лев(АдресРегистрации, 128));
		
		СведенияОбОрганизации = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
			СтруктураРеквизитовФормы.мСохраненныйДок.Организация, ТекущаяДатаСеанса(), "АдресЭлектроннойПочтыОрганизации");
		ПараметрыВыгрузки.Вставить("ЭлектроннаяПочта", Лев(СокрЛП(СведенияОбОрганизации.АдресЭлектроннойПочтыОрганизации), 50));
		
		// Подсчет итоговых сумм по месяцам в строке 16 таблицы 2.
		Табл2Стр16Месяц1 = СуммаПоказателейМСЧ(ИмяФормы, ДанныеОтчета.ПолеТабличногоДокументаТаблица2, "П000020016101");
		Табл2Стр16Месяц2 = СуммаПоказателейМСЧ(ИмяФормы, ДанныеОтчета.ПолеТабличногоДокументаТаблица2, "П000020016201");
		Табл2Стр16Месяц3 = СуммаПоказателейМСЧ(ИмяФормы, ДанныеОтчета.ПолеТабличногоДокументаТаблица2, "П000020016301");
		
		ПараметрыВыгрузки.Вставить("Табл2Стр16Месяц1", Табл2Стр16Месяц1);
		ПараметрыВыгрузки.Вставить("Табл2Стр16Месяц2", Табл2Стр16Месяц2);
		ПараметрыВыгрузки.Вставить("Табл2Стр16Месяц3", Табл2Стр16Месяц3);
		
	КонецЕсли;
	
	Возврат ПараметрыВыгрузки;
	
КонецФункции

Функция СуммаПоказателейМСЧ(ИмяФормы, ДанныеРаздела, ИмяПоказателя)
	
	Результат = 0;
	
	НомерСтроки = 1;
	ПолноеИмя = ИмяПоказателя + "_" + СтрокаЧГ0(ИмяФормы, НомерСтроки);
	
	Пока ДанныеРаздела.Свойство(ПолноеИмя) Цикл
		
		Результат = Результат + ДанныеРаздела[ПолноеИмя];
		
		НомерСтроки = НомерСтроки + 1;
		ПолноеИмя = ИмяПоказателя + "_" + СтрокаЧГ0(ИмяФормы, НомерСтроки);
		
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

Функция СтрокаЧГ0(ИмяФормы, ИсходноеЧисло) Экспорт
	
	Возврат Формат(ИсходноеЧисло, "ЧН=; ЧГ=");
	
КонецФункции

Функция СтрокаВЧисло(ИмяФормы, Знач Стр)
	
	Стр = СокрЛП(Стр);
	Возврат ?(ЗначениеЗаполнено(Стр) И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Стр, , Ложь), Число(Стр), 0);
	
КонецФункции

Функция ИзвлечьСтруктуруXML(ИмяФормы) Экспорт
	
	ДеревоСтруктуры = Новый ДеревоЗначений;
	ДеревоСтруктуры.Колонки.Добавить("Код");
	ДеревоСтруктуры.Колонки.Добавить("Тип");
	ДеревоСтруктуры.Колонки.Добавить("Формат");
	ДеревоСтруктуры.Колонки.Добавить("МинРазмерность");
	ДеревоСтруктуры.Колонки.Добавить("МаксРазмерность");
	ДеревоСтруктуры.Колонки.Добавить("Обязательность");
	ДеревоСтруктуры.Колонки.Добавить("Многостраничность");
	ДеревоСтруктуры.Колонки.Добавить("Многострочность");
	ДеревоСтруктуры.Колонки.Добавить("Раздел");
	ДеревоСтруктуры.Колонки.Добавить("Ключ");
	ДеревоСтруктуры.Колонки.Добавить("Условие");
	ДеревоСтруктуры.Колонки.Добавить("ЗначениеПоУмолчанию");
	ДеревоСтруктуры.Колонки.Добавить("Значение");
	ДеревоСтруктуры.Колонки.Добавить("Представление");
	ДеревоСтруктуры.Колонки.Добавить("Показатели");
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		Макет = ЭтотОбъект.ПолучитьМакет("СхемаВыгрузкиXML094");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
		
		Макет = ЭтотОбъект.ПолучитьМакет("СхемаВыгрузкиXML093_2017");
		
	ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
		
		Макет = ЭтотОбъект.ПолучитьМакет("СхемаВыгрузкиXML092_2017");
		
	КонецЕсли;
	
	ВысотаТаблицы = Макет.ВысотаТаблицы;
	
	УчтенныеГруппы = Новый Соответствие;
	
	Для НомерСтроки = 2 По ВысотаТаблицы Цикл
		НомСтр = ВысотаТаблицы - НомерСтроки + 2;
		Если Макет.Область(НомерСтроки, 0, НомерСтроки, 0).Видимость = Неопределено Тогда
			
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), НомерСтроки);
			Сообщение.Сообщить();
			
		КонецЕсли;
	КонецЦикла;
	
	Для Уровень = 0 По Макет.КоличествоУровнейГруппировокСтрок() - 1 Цикл
		Макет.ПоказатьУровеньГруппировокСтрок(Уровень);
		Для НомерСтроки = 2 По ВысотаТаблицы Цикл
			НомСтр = ВысотаТаблицы - НомерСтроки + 2;
			Если Макет.Область(НомСтр, 0, НомСтр, 0).Видимость И УчтенныеГруппы.Получить(НомСтр) = Неопределено Тогда
				
				РодительскийУзел = ДеревоСтруктуры;
				Если Уровень <> 0 Тогда
					Для Инд = 1 По НомСтр - 2 Цикл
						Узел = УчтенныеГруппы.Получить(НомСтр - Инд);
						Если Узел <> Неопределено Тогда
							РодительскийУзел = Узел;
							Прервать;
						КонецЕсли;
					КонецЦикла;
				КонецЕсли;
				
				НовСтр = РодительскийУзел.Строки.Вставить(0);
				НовСтр.Код = СокрЛП(Макет.Область(НомСтр, 1, НомСтр, 1).Текст);
				НовСтр.Раздел = СокрЛП(Макет.Область(НомСтр, 2, НомСтр, 2).Текст);
				НовСтр.Ключ = СокрЛП(Макет.Область(НомСтр, 3, НомСтр, 3).Текст);
				НовСтр.Тип = СокрЛП(Макет.Область(НомСтр, 4, НомСтр, 4).Текст);
				НовСтр.Формат = СокрЛП(Макет.Область(НомСтр, 5, НомСтр, 5).Текст);
				МинРазмерность = СокрЛП(Макет.Область(НомСтр, 6, НомСтр, 6).Текст);
				НовСтр.МинРазмерность = ?(ПустаяСтрока(МинРазмерность), ?(НовСтр.Формат = "N", 99999, 0), Число(МинРазмерность));
				МаксРазмерность = СокрЛП(Макет.Область(НомСтр, 7, НомСтр, 7).Текст);
				НовСтр.МаксРазмерность = ?(ПустаяСтрока(МаксРазмерность), 99999, Число(МаксРазмерность));
				НовСтр.Обязательность = СокрЛП(Макет.Область(НомСтр, 8, НомСтр, 8).Текст);
				НовСтр.Многостраничность = НЕ ПустаяСтрока(Макет.Область(НомСтр, 9, НомСтр, 9).Текст);
				НовСтр.Многострочность = НЕ ПустаяСтрока(Макет.Область(НомСтр, 10, НомСтр, 10).Текст);
				НовСтр.Условие = СокрЛП(Макет.Область(НомСтр, 11, НомСтр, 11).Текст);
				НовСтр.ЗначениеПоУмолчанию = СокрЛП(Макет.Область(НомСтр, 12, НомСтр, 12).Текст);
				НовСтр.Представление = СокрЛП(Макет.Область(НомСтр, 13, НомСтр, 13).Текст);
				
				УчтенныеГруппы.Вставить(НомСтр, НовСтр);
				
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	
	Возврат ДеревоСтруктуры;
	
КонецФункции

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

#Область ФормированиеПечатногоБланка

Функция ПечатныйБланк(ПараметрыПечати) Экспорт
	
	Перем СтруктураРеквизитовФормы;
	Перем ДанныеРазделов;
	Перем ВидПечати;
	Перем ДеревоВыбранныхСтраниц;
	
	ИмяФормы = ПараметрыПечати.ВыбраннаяФорма;
					
	ПечатныйБланкФормируетсяВФорматеPDF = Ложь;
	
	Если НЕ ПараметрыПечати.Свойство("СтруктураРеквизитовФормы", СтруктураРеквизитовФормы) Тогда
		СформироватьСтруктуруРеквизитовФормы(ИмяФормы, СтруктураРеквизитовФормы);
		ПараметрыПечати.Свойство("СохраненныйОтчет", СтруктураРеквизитовФормы.мСохраненныйДок);
	КонецЕсли;
	
	Если НЕ ПараметрыПечати.Свойство("ДеревоВыбранныхСтраниц", ДеревоВыбранныхСтраниц) Тогда
		ДеревоВыбранныхСтраниц = ПараметрыПечати.СохраненныйОтчет.ДеревоНастройкиСтраниц.Получить();
		ПечатныйБланкФормируетсяВФорматеPDF = Истина;
	КонецЕсли;
	
	Если НЕ ПараметрыПечати.Свойство("ВидПечати", ВидПечати) Тогда
		ВидПечати = "";
	КонецЕсли;
	
	Если НЕ ПараметрыПечати.Свойство("ДанныеРазделов", ДанныеРазделов) Тогда
		
		ПоказателиОтчета = ПараметрыПечати.СохраненныйОтчет.ДанныеОтчета.Получить().ПоказателиОтчета;
		
		ДанныеМногострочныхРазделов = ПараметрыПечати.СохраненныйОтчет.ДанныеОтчета.Получить().ДанныеМногострочныхРазделов;
		
		ДанныеРазделов = Новый Структура;
		ДанныеРазделов.Вставить("Титульный",  ПоказателиОтчета.ПолеТабличногоДокументаТитульный);
		ДанныеРазделов.Вставить("Таблица1",   ПоказателиОтчета.ПолеТабличногоДокументаТаблица1);
		ДанныеРазделов.Вставить("Таблица1_1", ПоказателиОтчета.ПолеТабличногоДокументаТаблица1_1);
		ДанныеРазделов.Вставить("Таблица2",   ПоказателиОтчета.ПолеТабличногоДокументаТаблица2);
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
			
			// Особая обработка: случай отчета, сохраненного без раздела "Платежи".
			Если ПоказателиОтчета.Свойство("ПолеТабличногоДокументаТаблица92") Тогда
				ДанныеРазделов.Вставить("Таблица92", ПоказателиОтчета.ПолеТабличногоДокументаТаблица92);
				ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы92,
					ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдГруппы92]);
			КонецЕсли;
			
			ДанныеРазделов.Вставить("Таблица3",   ПоказателиОтчета.ПолеТабличногоДокументаТаблица3);
			ДанныеРазделов.Вставить("Таблица4",   ПоказателиОтчета.ПолеТабличногоДокументаТаблица4);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы11,
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдГруппы11]);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы2, 
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдГруппы2]);
			
		Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
			
			ДанныеРазделов.Вставить("Таблица3_4", ПоказателиОтчета.ПолеТабличногоДокументаТаблица3_4);
			ДанныеРазделов.Вставить("Таблица5",	  ПоказателиОтчета.ПолеТабличногоДокументаТаблица5);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы1, 
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдГруппы1]);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1, 
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1]);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2, 
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2]);
			ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3, 
				ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3]);
			
			Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
				
				ДанныеРазделов.Вставить("Таблица91", ПоказателиОтчета.ПолеТабличногоДокументаТаблица91);
				ДанныеРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы91,
					ДанныеМногострочныхРазделов[СтруктураРеквизитовФормы.ИдГруппы91]);
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбщиеРеквизитыРазделов = ПолучитьОбщиеРеквизитыСТитульногоЛиста(ИмяФормы, ДанныеРазделов.Титульный);
	
	Для Каждого СтраницаОтчета Из ДеревоВыбранныхСтраниц.Строки Цикл
		
		Если СтраницаОтчета.ВыводНаПечать = 0 Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		// Особая обработка: случай отчета, сохраненного без раздела "Платежи".
		Если СтраницаОтчета.ИмяСтраницы = "Таблица92" И НЕ ДанныеРазделов.Свойство("Таблица92") Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		СтруктураПараметров = Новый Структура;
		СтруктураПараметров.Вставить("НаименованиеЛиста",  СтраницаОтчета.Представление);
		СтруктураПараметров.Вставить("ОриентацияЛиста",    СтраницаОтчета.ОриентацияСтраницы);
		СтруктураПараметров.Вставить("ИмяСтраницы",        СтраницаОтчета.ИмяСтраницы);
		Структурапараметров.Вставить("ИмяОбластиТаблПоля", СтраницаОтчета.ИмяОбластиТабличногоПоля);
		Структурапараметров.Вставить("ВидПечати",		   ВидПечати);
		
		ВывестиНаПечатьЛист(ИмяФормы,
							СтруктураПараметров,
							ОбщиеРеквизитыРазделов,
							СтруктураРеквизитовФормы,
							ДанныеРазделов);
		
	КонецЦикла;
	
	РегламентированнаяОтчетностьКлиентСервер.ПроставлениеНомеровЛистов(СтруктураРеквизитовФормы, ,
												СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
	
	Если НЕ ПечатныйБланкФормируетсяВФорматеPDF Тогда
		Возврат "";
	КонецЕсли;
	
	ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов;
	
	Для Каждого Лист Из СтруктураРеквизитовФормы.СписокПечатаемыхЛистов Цикл
		
		ПакетОтображаемыхДокументов.Состав.Добавить(Лист.Значение[0]);
		
	КонецЦикла;
		
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
	
	ПакетОтображаемыхДокументов.ЗаписатьФайлДляПечати(ИмяВременногоФайла);
	
	ФайлПечатногоБланка = Новый ДвоичныеДанные(ИмяВременногоФайла);
	
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ФайлПечатногоБланка, Новый УникальныйИдентификатор);
	
	УдалитьФайлы(ИмяВременногоФайла);
	
	ИмяФайлаПечатногоБланка = СтруктураРеквизитовФормы.НаименованиеОтчета
							+ НСтр("ru=' за '")
							+ ПредставлениеПериода(
								НачалоДня(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаНачала),
							 	КонецДня(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания),
							 	"ФП = Истина")
							+ " (" + СтруктураРеквизитовФормы.мСохраненныйДок.Организация + ").pdf";
	
	ПечатныйБланк = Новый Структура;
	ПечатныйБланк.Вставить("АдресПечатногоБланка", АдресВоВременномХранилище);
	ПечатныйБланк.Вставить("ИмяФайлаПечатногоБланка",
		ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаПечатногоБланка));
	
	Возврат ПечатныйБланк;
	
КонецФункции

Функция ПолучитьОбщиеРеквизитыСТитульногоЛиста(ИмяФормы, СтруктураДанныхТитульный)
	
	МассивОргФССКод        = Новый Массив(10);
	МассивКодПодчиненности = Новый Массив(5);
	МассивНомСтр           = Новый Массив(3);
	МассивДатаПодписи      = Новый Массив(8);
			
	ОргФССКод = "";
	
	Если СтруктураДанныхТитульный.Свойство("ОргФССКод", ОргФССКод) Тогда
						
		Для Ном = 1 По СтрДлина(ОргФССКод) Цикл
			
			МассивОргФССКод[Ном - 1] = Сред(ОргФССКод, Ном, 1);
			
		КонецЦикла;
		
	КонецЕсли;
			
	КодПодчиненности = "";
	
	Если СтруктураДанныхТитульный.Свойство("КодПодчиненности", КодПодчиненности) Тогда
						
		Для Ном = 1 По СтрДлина(КодПодчиненности) Цикл
			
			МассивКодПодчиненности[Ном - 1] = Сред(КодПодчиненности, Ном, 1);
			
		КонецЦикла;
		
	КонецЕсли;

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

Процедура ВывестиНаПечатьЛист(ИмяФормы,
							  СтруктураПараметров,
							  ОбщиеРеквизитыРазделов,
							  СтруктураРеквизитовФормы,
							  ДанныеРазделов)
	
	СоответствиеРазделовМакетам = Новый Соответствие;
	
	Префикс = "ПечатнаяФормаОтчета" + Прав(СокрЛП(ИмяФормы), 7) + "_";
	
	Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2022Кв2") Тогда
		
		СоответствиеРазделовМакетам.Вставить("Титульный",  Префикс + "Титульный");
		СоответствиеРазделовМакетам.Вставить("Таблица92",  Префикс + "Таблица92");
		СоответствиеРазделовМакетам.Вставить("Таблица1",   Префикс + "Таблица1");
		СоответствиеРазделовМакетам.Вставить("Таблица1_1", Префикс + "Таблица1_1");
		СоответствиеРазделовМакетам.Вставить("Таблица2",   Префикс + "Таблица2");
		СоответствиеРазделовМакетам.Вставить("Таблица3",   Префикс + "Таблица3");
		СоответствиеРазделовМакетам.Вставить("Таблица4",   Префикс + "Таблица4");
		
		ПечатнаяФормаРаздела = СоответствиеРазделовМакетам[СтруктураПараметров.ИмяСтраницы];
		
		МакетПечатнойФормы = ЭтотОбъект.ПолучитьМакет(ПечатнаяФормаРаздела);
		
		МакетПечатнойФормы.ПолеСверху = 5;
		МакетПечатнойФормы.ПолеСправа = 5;
		МакетПечатнойФормы.ПолеСнизу  = 5;
		МакетПечатнойФормы.ПолеСлева  = 5;
		
		Если СтруктураПараметров.ИмяСтраницы = "Таблица92" Тогда
			
			ИдГруппы = СтруктураРеквизитовФормы.ИдГруппы92;
			
			КолвоСтрокВТаблДок = ДанныеРазделов[ИдГруппы].Количество();
			
			ОбластьМнгЧасти              = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть");
			ВысотаОбластиМнгЧасти        = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть").ВысотаТаблицы;
			ИмяОбластиПоследнейДопСтроки
			= ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[0].Имя;
			Если ИмяОбластиПоследнейДопСтроки = "МногострочнаяЧасть" Тогда
				ИмяОбластиПоследнейДопСтроки
				= ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[1].Имя;
			КонецЕсли;
			
			КолвоСтрокВПечатнойФорме
			= Число(Сред(ИмяОбластиПоследнейДопСтроки, СтрНайти(ИмяОбластиПоследнейДопСтроки, "_") + 1));
			
			Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
				
				НомерВерхЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + "01_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Верх;
				НомерНижнЯчейкиОбласти = МакетПечатнойФормы.Область(
					ИдГруппы + Формат(ДанныеРазделов[ИдГруппы].Колонки.Количество(), "ЧЦ=2; ЧВН=")
					+ "_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Низ;
				
				ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
				
				КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
				
				Для Ном = 1 По КолвоДопСтрок Цикл
					
					МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
					
				КонецЦикла;
				
				Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
					НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
					НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
					Если НЕ НайденнаяОбласть = Неопределено Тогда 
						НайденнаяОбласть.Имя = Лев(НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1)
						+ "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
					КонецЕсли;
				КонецЦикла;
				
				Для Ном = 0 По КолвоДопСтрок - 1 Цикл
					
					Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
						НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
						НайденнаяОбласть = МакетПечатнойФормы.Область(
						НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
						Если НЕ НайденнаяОбласть = Неопределено Тогда 
							НайденнаяОбласть.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_"
							+ Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
						КонецЕсли;
					КонецЦикла;
					
				КонецЦикла;
				
			КонецЕсли;
			
		ИначеЕсли СтруктураПараметров.ИмяСтраницы = "Таблица1_1"
			ИЛИ СтруктураПараметров.ИмяСтраницы = "Таблица2" Тогда
			
			Если СтруктураПараметров.ИмяСтраницы = "Таблица1_1" Тогда
				ИдГруппы = СтруктураРеквизитовФормы.ИдГруппы11;
			ИначеЕсли СтруктураПараметров.ИмяСтраницы = "Таблица2" Тогда
				ИдГруппы = СтруктураРеквизитовФормы.ИдГруппы2;
			КонецЕсли;
			
			КолвоСтрокВТаблДок = ДанныеРазделов[ИдГруппы].Количество();
			
			ОбластьМнгЧасти = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть");
			ВысотаОбластиМнгЧасти = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть").ВысотаТаблицы;
			ИмяОбластиПоследнейДопСтроки
			= ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[0].Имя;
			КолвоСтрокВПечатнойФорме
			= Число(Сред(ИмяОбластиПоследнейДопСтроки, СтрНайти(ИмяОбластиПоследнейДопСтроки, "_") + 1));
			
			Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
				
				НомерВерхЯчейкиОбласти
				= МакетПечатнойФормы.Область(ИдГруппы + "01_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Верх;
				НомерНижнЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + Формат(
				ДанныеРазделов[ИдГруппы].Колонки.Количество(), "ЧЦ=2; ЧВН=") + "_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Низ;
				ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
				
				КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
				Для Ном = 1 По КолвоДопСтрок Цикл
					МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
				КонецЦикла;
				
				Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
					НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
					НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
					Если НЕ НайденнаяОбласть = Неопределено Тогда
						НайденнаяОбласть.Имя
						= Лев(НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1) + "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
					КонецЕсли;
				КонецЦикла;
				
				Для Ном = 0 По КолвоДопСтрок - 1 Цикл
					Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
						НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
						НайденнаяОбласть = МакетПечатнойФормы.Область(
						НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
						Если НЕ НайденнаяОбласть = Неопределено Тогда 
							НайденнаяОбласть.Имя
							= Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_" + Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
						КонецЕсли;
					КонецЦикла;
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе// "ФормаОтчета2017Кв3", "ФормаОтчета2017Кв1"
		
		СоответствиеРазделовМакетам.Вставить("Титульный",  Префикс + "Титульный");
		СоответствиеРазделовМакетам.Вставить("Таблица1",   Префикс + "Таблица1");
		СоответствиеРазделовМакетам.Вставить("Таблица1_1", Префикс + "Таблица1_1");
		СоответствиеРазделовМакетам.Вставить("Таблица2",   Префикс + "Таблица2");
		СоответствиеРазделовМакетам.Вставить("Таблица3_4", Префикс + "Таблица3_4");
		СоответствиеРазделовМакетам.Вставить("Таблица5",   Префикс + "Таблица5");
		
		Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
			
			СоответствиеРазделовМакетам.Вставить("Таблица91", Префикс + "Таблица91");
			
		КонецЕсли;
		
		ПечатнаяФормаРаздела = СоответствиеРазделовМакетам[СтруктураПараметров.ИмяСтраницы];
		
		МакетПечатнойФормы = ЭтотОбъект.ПолучитьМакет(ПечатнаяФормаРаздела);
		
		МакетПечатнойФормы.ПолеСверху = 5;
		МакетПечатнойФормы.ПолеСправа = 5;
		МакетПечатнойФормы.ПолеСнизу  = 5;
		МакетПечатнойФормы.ПолеСлева  = 5;
		
		Если СтруктураПараметров.ИмяСтраницы = "Таблица2" Тогда
			
			Для НомГруппы = 1 По 3 Цикл
				
				ИдГруппы = Лев(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1, 10) + НомГруппы;
				
				КолвоСтрокВТаблДок = ДанныеРазделов[ИдГруппы].Количество();
				
				КолвоСтрокВПечатнойФорме = 1;
				
				Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
					
					НомерВерхЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + "01_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Верх;
					НомерНижнЯчейкиОбласти = НомерВерхЯчейкиОбласти;
					
					ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
					
					КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
					
					Для Ном = 1 По КолвоДопСтрок Цикл
						
						МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
						
					КонецЦикла;
					
					Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
						НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
						Если СтрЧислоВхождений(Область.Имя, ИдГруппы) = 0 Тогда
							Продолжить;
						КонецЕсли;
						НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
						Если НЕ НайденнаяОбласть = Неопределено Тогда 
							НайденнаяОбласть.Имя = Лев(
							НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1) + "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
						КонецЕсли;
					КонецЦикла;
					
					Для Ном = 0 По КолвоДопСтрок - 1 Цикл
						
						Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
							НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
							НайденнаяОбласть = МакетПечатнойФормы.Область(
							НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
							Если НЕ НайденнаяОбласть = Неопределено Тогда 
								НайденнаяОбласть.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_"
								+ Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
							КонецЕсли;
						КонецЦикла;
						
					КонецЦикла;
					
					Если ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") Тогда
						ВерхСтроки5  = 24;
						ВерхСтроки16 = 22;
					ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв1") Тогда
						ВерхСтроки5  = 23;
						ВерхСтроки16 = 21;
					КонецЕсли;
					
					Если ИдГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1 Тогда
						
						ИмяПоследнейЯчейкиМСЧ = ИдГруппы + "01_" + СтрокаЧГ0(ИмяФормы, 
							ДанныеРазделов[ИдГруппы].Количество());
						ПоследняяЯчейкаМСЧ = МакетПечатнойФормы.Области[ИмяПоследнейЯчейкиМСЧ];
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки5, 2, ПоследняяЯчейкаМСЧ.Низ, 3);
						ОбъединяемаяОбласть.Объединить();
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки5, 4, ПоследняяЯчейкаМСЧ.Низ, 4);
						ОбъединяемаяОбласть.Объединить();
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки5, 5, ПоследняяЯчейкаМСЧ.Низ, 5);
						ОбъединяемаяОбласть.Объединить();
						ОбъединяемаяОбласть.Имя = "П000020005003";
						
					ИначеЕсли ИдГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2
						ИЛИ ИдГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3 Тогда
						
						ВерхСтроки6 = МакетПечатнойФормы.Области["П000020016204_1"].Верх;
						НизСтроки6  = МакетПечатнойФормы.Области["П000020017003"].Низ;
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки6, 2, НизСтроки6, 3);
						ОбъединяемаяОбласть.Объединить();
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки6, 4, НизСтроки6, 4);
						ОбъединяемаяОбласть.Объединить();
						
						ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки6, 5, НизСтроки6, 5);
						ОбъединяемаяОбласть.Объединить();
						ОбъединяемаяОбласть.Имя = "П000020006003";
						
					Иначе
						Возврат;
					КонецЕсли;
					
					НизСтроки16 = МакетПечатнойФормы.Области["П000020017003"].Низ - 1;
					
					ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки16, 10, НизСтроки16, 10);
					ОбъединяемаяОбласть.Объединить();
					
					ОбъединяемаяОбласть = МакетПечатнойФормы.Область(ВерхСтроки16, 11, НизСтроки16, 11);
					ОбъединяемаяОбласть.Объединить();
					ОбъединяемаяОбласть.Имя = "П000020016003";
					
					// Корректировка верхней линии строк многострочной части.
					Для НомерСтроки = 1 По ДанныеРазделов[ИдГруппы].Количество() Цикл
						
						ОбластьПоказателя = МакетПечатнойФормы.Области[ИдГруппы + "01_" + СтрокаЧГ0(ИмяФормы, НомерСтроки)];
						
						Если НомерСтроки = 1 Тогда
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
						Иначе
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
						КонецЕсли;
						
						ОбластьПоказателя = МакетПечатнойФормы.Области[ИдГруппы + "04_" + СтрокаЧГ0(ИмяФормы, НомерСтроки)];
						
						Если НомерСтроки = 1 Тогда
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
						Иначе
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
						КонецЕсли;
						
						ОбластьПоказателя = МакетПечатнойФормы.Области[ИдГруппы + "05_" + СтрокаЧГ0(ИмяФормы, НомерСтроки)];
						
						Если НомерСтроки = 1 Тогда
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
						Иначе
							ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
						КонецЕсли;
						
					КонецЦикла;
					
				КонецЕсли;
				
			КонецЦикла;
			
		ИначеЕсли СтруктураПараметров.ИмяСтраницы = "Таблица1_1" Тогда
			
			ИдГруппы = СтруктураРеквизитовФормы.ИдГруппы1;
			
			КолвоСтрокВТаблДок = ДанныеРазделов[ИдГруппы].Количество();
			
			ОбластьМнгЧасти              = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть");
			ВысотаОбластиМнгЧасти        = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть").ВысотаТаблицы;
			ИмяОбластиПоследнейДопСтроки = ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, ,
										   ВысотаОбластиМнгЧасти).Области[0].Имя;
			
			КолвоСтрокВПечатнойФорме = Число(Сред(ИмяОбластиПоследнейДопСтроки, СтрНайти(ИмяОбластиПоследнейДопСтроки,
									   "_") + 1));
			
			Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
				
				НомерВерхЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + "01_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Верх;
				НомерНижнЯчейкиОбласти = МакетПечатнойФормы.Область(
					ИдГруппы + Формат(ДанныеРазделов[ИдГруппы].Колонки.Количество(), "ЧЦ=2; ЧВН=")
					+ "_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Низ;
				
				ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
				
				КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
				
				Для Ном = 1 По КолвоДопСтрок Цикл
					
					МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
					
				КонецЦикла;
				
				Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
					НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
					НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
					Если НЕ НайденнаяОбласть = Неопределено Тогда 
						НайденнаяОбласть.Имя = Лев(НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1)
						+ "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
					КонецЕсли;
				КонецЦикла;
				
				Для Ном = 0 По КолвоДопСтрок - 1 Цикл
					
					Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
						НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
						НайденнаяОбласть = МакетПечатнойФормы.Область(
						НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
						Если НЕ НайденнаяОбласть = Неопределено Тогда 
							НайденнаяОбласть.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_"
							+ Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
						КонецЕсли;
					КонецЦикла;
					
				КонецЦикла;
				
			КонецЕсли;
			
		ИначеЕсли ВРег(СокрЛП(ИмяФормы)) = ВРег("ФормаОтчета2017Кв3") И СтруктураПараметров.ИмяСтраницы = "Таблица91" Тогда
			
			ИдГруппы = СтруктураРеквизитовФормы.ИдГруппы91;
			
			КолвоСтрокВТаблДок = ДанныеРазделов[ИдГруппы].Количество();
			
			ОбластьМнгЧасти              = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть");
			ВысотаОбластиМнгЧасти        = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть").ВысотаТаблицы;
			ИмяОбластиПоследнейДопСтроки
			= ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[0].Имя;
			Если ИмяОбластиПоследнейДопСтроки = "МногострочнаяЧасть" Тогда
				ИмяОбластиПоследнейДопСтроки
				= ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[1].Имя;
			КонецЕсли;
			
			КолвоСтрокВПечатнойФорме
			= Число(Сред(ИмяОбластиПоследнейДопСтроки, СтрНайти(ИмяОбластиПоследнейДопСтроки, "_") + 1));
			
			Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
				
				НомерВерхЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + "01_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Верх;
				НомерНижнЯчейкиОбласти = МакетПечатнойФормы.Область(
					ИдГруппы + Формат(ДанныеРазделов[ИдГруппы].Колонки.Количество(), "ЧЦ=2; ЧВН=")
					+ "_" + Формат(КолвоСтрокВПечатнойФорме, "ЧГ=")).Низ;
				
				ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
				
				КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
				
				Для Ном = 1 По КолвоДопСтрок Цикл
					
					МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
					
				КонецЦикла;
				
				Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
					НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
					НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
					Если НЕ НайденнаяОбласть = Неопределено Тогда 
						НайденнаяОбласть.Имя = Лев(НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1)
						+ "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
					КонецЕсли;
				КонецЦикла;
				
				Для Ном = 0 По КолвоДопСтрок - 1 Цикл
					
					Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(
						НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
						НайденнаяОбласть = МакетПечатнойФормы.Область(
						НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
						Если НЕ НайденнаяОбласть = Неопределено Тогда 
							НайденнаяОбласть.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_"
							+ Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
						КонецЕсли;
					КонецЦикла;
					
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	ЗаполнитьПечатнуюФорму(ИмяФормы,
						   СтруктураПараметров,
						   МакетПечатнойФормы,
						   ОбщиеРеквизитыРазделов,
						   ДанныеРазделов);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.Вывести(МакетПечатнойФормы);
	СтрПоля = "ПолеСверху, ПолеСправа, ПолеСнизу, ПолеСлева";
	ЗаполнитьЗначенияСвойств(ТабличныйДокумент, МакетПечатнойФормы, СтрПоля, "Макет");
			
	РегламентированнаяОтчетность.ВывестиНаПечатьЛистОбщая("",
														  СтруктураПараметров,
														  ТабличныйДокумент,
														  СтруктураРеквизитовФормы.мПечатныеФормы);
	
КонецПроцедуры

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

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

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

#КонецЕсли

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