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

файл
&НаСервере
Перем мОбъектОтчета;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

	СтруктураРеквизитовФормы.мЧтоОчищать  			   = "Расчетную ведомость";
	СтруктураРеквизитовФормы.мСоставПоказателей 	   = "СоставПоказателей2010Кв4";
	СтруктураРеквизитовФормы.мПоляПоискаПоказателяВТСП = "КодПоказателяПоСоставу, КодПоказателяПоФорме";
	
	СоответствиеЕдиницыИзмеренияДелителю = Новый Структура;
	СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1", 1);
	СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000", 1000);
	СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000000", 1000000);

	МассивБулево = Новый Массив;
	МассивБулево.Добавить(Тип("Булево"));
	СтруктураРеквизитовФормы.мОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
	
	СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));
		                        
	СтруктураДанныхТитульный   = Новый Структура;
	СтруктураДанныхРаздел1_1   = Новый Структура;
	СтруктураДанныхРаздел1_2   = Новый Структура;
	СтруктураДанныхРаздел1_3   = Новый Структура;
	СтруктураДанныхРаздел1_4   = Новый Структура;
 	СтруктураДанныхРаздел2_4   = Новый Структура;
 	СтруктураДанныхРаздел3_1   = Новый Структура;
 	СтруктураДанныхРаздел3_2   = Новый Структура;
		
	ИнициализацияМногостраничныхРазделов();
	
	// Структура содержит данные дополнительных страниц
	мСтруктураМногостраничныхРазделов = Новый Структура;
	мСтруктураМногостраничныхРазделов.Вставить("Раздел2_1", "ТаблицаСтраницыРаздел21");
	мСтруктураМногостраничныхРазделов.Вставить("Раздел2_2", "ТаблицаСтраницыРаздел22");
		
	ЦветЗаполняетсяТолькоВручную        = Новый Цвет(255, 255, 225);
	ЦветЗаполняетсяАвтоКорректир        = Новый Цвет(255, 240, 200);
	ЦветЗаполняетсяАвтоБезКорректир     = Новый Цвет(230, 240, 220);
	ЦветЗаполняетсяАвтоАрифметика       = Новый Цвет(192, 220, 192);     // ЗЕЛЕНЫЙ
	ЦветЗаполняетсяОднозначноВручную    = Новый Цвет(255, 255, 192);     // ЖЕЛТЫЙ
	ЦветЗаполняетсяАвтоматически        = Новый Цвет(255, 255, 255);     // Белый, Ввод запрещен
	СтруктураРеквизитовФормы.ЦветБелый  = Новый Цвет(255, 255, 255);
	СтруктураРеквизитовФормы.ЦветЖелтый = Новый Цвет(255, 255, 192);
	
	// структура цветов раскраски автозаполняемых ячеек
	мСтруктураЦветовРаскраски = Новый Структура;
	мСтруктураЦветовРаскраски.Вставить("_1", ЦветЗаполняетсяТолькоВручную);
	мСтруктураЦветовРаскраски.Вставить("_2", ЦветЗаполняетсяАвтоКорректир);
	мСтруктураЦветовРаскраски.Вставить("_3", ЦветЗаполняетсяАвтоБезКорректир);
	мСтруктураЦветовРаскраски.Вставить("_4", ЦветЗаполняетсяАвтоАрифметика);
	мСтруктураЦветовРаскраски.Вставить("_0", ЦветЗаполняетсяОднозначноВручную);
	мСтруктураЦветовРаскраски.Вставить("_5", ЦветЗаполняетсяАвтоматически);

	мСтруктураВариантыЗаполнения       = Новый Структура;
	мСтруктураВариантыЗаполненияЭталон = Новый Структура;
		
	// Версия формы
	СтруктураРеквизитовФормы.мВерсияФормы = "25/01/2011";
	
	// Код отчета условный
	СтруктураРеквизитовФормы.мКодОтчета = "1159999";
	
	СтруктураРеквизитовФормы.ВариантыФорматовВыгрузки = Новый СписокЗначений;
	СтруктураРеквизитовФормы.ВариантыФорматовВыгрузки.Добавить(СтруктураРеквизитовФормы.мСоставПоказателей, "Формат 0.1", Истина);
	
	СтруктураРеквизитовФормы.мПечатныеФормы = Новый СписокЗначений;
	
	СтруктураРеквизитовФормы.ЕстьРеквизитДополнительныйКодФСС = Метаданные.Справочники.Организации.Реквизиты.Найти("ДополнительныйКодФСС") <> Неопределено;
	СтруктураРеквизитовФормы.ЕстьРеквизитКодПодчиненностиФСС  = Метаданные.Справочники.Организации.Реквизиты.Найти("КодПодчиненностиФСС") <> Неопределено;
	
	ИмяРаздела = "Титульный";
	
	ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
	ИмяМакета = Сред(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, "ФормаОтчета")) + "_" + ИмяРаздела;
	Попытка
		
		ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФормаИмя).ПолучитьМакет(ИмяМакета));
		
		Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
			
			МодульРегламентированнаяОтчетностьИнтерфейс85 = ОбщегоНазначения.ОбщийМодуль("РегламентированнаяОтчетностьИнтерфейс85");
			МодульРегламентированнаяОтчетностьИнтерфейс85.УстановитьТипОтображенияРедактируемойЯчейкиТабличногоДокумента(ТабличныйДокумент);
			
		КонецЕсли;
		
	Исключение
	КонецПопытки;
	
	СтруктураРеквизитовФормы.НаимТекущегоРаздела      = ИмяРаздела;

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

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

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

&НаСервере
Процедура ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета()
	
	СтруктураЗависимыхЯчеекДляАвторасчета = Новый Структура;
	  // РАЗДЕЛ I
	  // Раздел1_1
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010002201", "П000010002301;П000010002401;П000010002501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010003201", "П000010003301;П000010003401;П000010003501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010005201", "П000010005301;П000010005401;П000010005501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010006201", "П000010006301;П000010006401;П000010006501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010015201", "П000010015301;П000010015401;П000010015501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010016201", "П000010016301;П000010016401;П000010016501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010002003", "П000010002101;П000010002201; П000010002301;П000010002401;П000010002501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010003003", "П000010003101;П000010003201; П000010003301;П000010003401;П000010003501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010005003", "П000010005101;П000010005201; П000010005301;П000010005401;П000010005501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010006003", "П000010006101;П000010006201; П000010006301;П000010006401;П000010006501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010015003", "П000010015101;П000010015201; П000010015301;П000010015401;П000010015501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010016003", "П000010016101;П000010016201; П000010016301;П000010016401;П000010016501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010008003", "П000010001003;П000010002003;П000010003003;П000010004003;П000010005003;"
																   +"П000010006003;П000010007003; П000010002101;П000010002201;П000010003101;"
																   +"П000010003201;П000010005101;П000010005201;П000010006101;П000010006201; "
																   +"П000010002301;П000010002401;П000010002501;П000010003301;П000010003401;"
																   +"П000010003501;П000010005301;П000010005401;П000010005501;П000010006301;"
																   +"П000010006401;П000010006501");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010012003", "П000010013003;П000010014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010018003", "П000010012003;П000010015003;П000010016003;П000010017003; П000010013003;"
																   +"П000010014003;П000010015101;П000010015201;П000010016101;П000010016201; "
																   +"П000010015301;П000010015401;П000010015501;П000010016301;П000010016401;"
																   +"П000010016501");
																   
	  // Раздел1_2
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020008003", "П000020009003;П000020010003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020011003", "П000020012003;П000020013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007001", "П000020008001;П000020011001");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007003", "П000020009003;П000020010003;П000020012003;П000020013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020016003", "П000020001003;П000020003003;П000020005003;П000020006003;П000020014003;П000020015003;П000020009003;П000020010003;П000020012003;П000020013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020008004", "П000020009004;П000020010004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020011004", "П000020012004;П000020013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007004", "П000020009004;П000020010004;П000020012004;П000020013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020016004", "П000020001004;П000020003004;П000020005004;П000020006004;П000020014004;П000020015004;П000020009004;П000020010004;П000020012004;П000020013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020008005", "П000020009005;П000020010005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020011005", "П000020012005;П000020013005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007005", "П000020009005;П000020010005;П000020012005;П000020013005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020014005", "П000020014004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020016005", "П000020001005;П000020003005;П000020015005;П000020009005;П000020010005;П000020012005;П000020013005;П000020014004");
	
	  // Раздел1_3
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030002003", "П000030003003;П000030004003;П000030005003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030002004", "П000030003004;П000030004004;П000030005004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030002005", "П000030003005;П000030004005;П000030005005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030002006", "П000030003006;П000030004006;П000030005006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030001007", "П000030001003;П000030001004;П000030001005;П000030001006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030002007", "П000030003003;П000030004003;П000030005003;П000030003004;П000030004004;П000030005004;П000030003005;П000030004005;П000030005005;П000030003006;П000030004006;П000030005006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030003007", "П000030003003;П000030003004;П000030003005;П000030003006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004007", "П000030004003;П000030004004;П000030004005;П000030004006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030005007", "П000030005003;П000030005004;П000030005005;П000030005006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040003003", "П000040001003;П000040002003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040003004", "П000040001004;П000040002004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040006003", "П000040001003;П000040002003;П000040004003;П000040005003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040006004", "П000040001004;П000040002004;П000040004004;П000040005004");
	
	  // Раздел1_4
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000410004003", "П000410002003;П000410003003");	
	
	  // РАЗДЕЛ II
	  // Раздел2_1
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060005003", "П000060003003;П000060004003");
	
	  // Раздел2_2
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070008003", "П000070009003;П000070010003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011003", "П000070012003;П000070013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070007001", "П000070008001;П000070011001");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070007003", "П000070009003;П000070010003;П000070012003;П000070013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070016003", "П000070001003;П000070003003;П000070005003;П000070006003;П000070014003;П000070015003;П000070009003;П000070010003;П000070012003;П000070013003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070008004", "П000070009004;П000070010004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011004", "П000070012004;П000070013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070007004", "П000070009004;П000070010004;П000070012004;П000070013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070016004", "П000070001004;П000070003004;П000070005004;П000070006004;П000070014004;П000070015004;П000070009004;П000070010004;П000070012004;П000070013004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070008005", "П000070009005;П000070010005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011005", "П000070012005;П000070013005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070007005", "П000070009005;П000070010005;П000070012005;П000070013005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070014005", "П000070014004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070016005", "П000070001005;П000070003005;П000070015005;П000070009005;П000070010005;П000070012005;П000070013005;П000070014004");
	
	  // Раздел2_4
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003007", "П000080004007;П000080005007");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003008", "П000080004008;П000080005008");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003010", "П000080004010;П000080005010");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003011", "П000080004011;П000080005011");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003016", "П000080004016;П000080005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003017", "П000080004017;П000080005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080001003", "П000080001006;П000080001009;П000080001012;П000080001015;П000080001018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080002003", "П000080002006;П000080002009;П000080002015;П000080002018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003003", "П000080003006;П000080003009;П000080003015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080004003", "П000080004006;П000080004009;П000080004015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080005003", "П000080005006;П000080005009;П000080005015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080006003", "П000080006006;П000080006009;П000080006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080001004", "П000080001007;П000080001010;П000080001013;П000080001016;П000080001019");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080002004", "П000080002007;П000080002010;П000080002016;П000080002019");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003004", "П000080003007;П000080003010;П000080003016; П000080004007;П000080005007;"
																   +"П000080004010;П000080005010;П000080004016;П000080005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080004004", "П000080004007;П000080004010;П000080004016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080005004", "П000080005007;П000080005010;П000080005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080006004", "П000080006007;П000080006010;П000080006016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080001005", "П000080001008;П000080001011;П000080001014;П000080001017;П000080001020");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080002005", "П000080002008;П000080002011;П000080002017;П000080002020");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080003005", "П000080003008;П000080003011;П000080003017; П000080004008;П000080005008;"
																   +"П000080004011;П000080005011;П000080004017;П000080005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080004005", "П000080004008;П000080004011;П000080004017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080005005", "П000080005008;П000080005011;П000080005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080006005", "П000080006008;П000080006011;П000080006017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007003", "П000080001003;П000080002003;П000080003003;П000080006003; П000080001006;"
																   +"П000080001009;П000080001012;П000080001015;П000080001018;П000080002006;"
																   +"П000080002009;П000080002015;П000080002018;П000080003006;П000080003009;"
																   +"П000080003015;П000080006006;П000080006009;П000080006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007005", "П000080001005;П000080002005;П000080003005;П000080006005; П000080001008;"
																   +"П000080001011;П000080001014;П000080001017;П000080001020;П000080002008;"
																   +"П000080002011;П000080002017;П000080002020;П000080003008;П000080003011;"
																   +"П000080003017;П000080006008;П000080006011;П000080006017; П000080004008;"
																   +"П000080005008;П000080004011;П000080005011;П000080004017;П000080005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007006", "П000080001006;П000080002006;П000080003006;П000080006006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007008", "П000080001008;П000080002008;П000080003008;П000080006008; П000080004008;П000080005008");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007009", "П000080001009;П000080002009;П000080003009;П000080006009");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007011", "П000080001011;П000080002011;П000080003011;П000080006011; П000080004011;П000080005011");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007012", "П000080001012");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007014", "П000080001014");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007015", "П000080001015;П000080002015;П000080003015;П000080006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007017", "П000080001017;П000080002017;П000080003017;П000080006017; П000080004017;П000080005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007018", "П000080001018;П000080002018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080007020", "П000080001020;П000080002020");
	
	  // РАЗДЕЛ III
	  // Раздел3_1
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000090001011", "П000090001007;П000090001008;П000090001010");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100002003", "П000100002001;П000100002101;П000100002201;П000100002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100010003", "П000100010001;П000100010101;П000100010201;П000100010301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100011003", "П000100011001;П000100011101;П000100011201;П000100011301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100007003", "П000100001003;П000100003003;П000100004003;П000100005003;П000100006003;П000100002001;П000100002101;П000100002201;П000100002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100013003", "П000100009003;П000100012003;П000100010001;П000100010101;П000100010201;П000100010301;П000100011001;П000100011101;П000100011201;П000100011301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100008003", "П000100001003;П000100003003;П000100004003;П000100005003;П000100006003;П000100002001;П000100002101;П000100002201;П000100002301;"
																   + "П000100009003;П000100012003;П000100010001;П000100010101;П000100010201;П000100010301;П000100011001;П000100011101;П000100011201;П000100011301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000100014003", "П000100001003;П000100003003;П000100004003;П000100005003;П000100006003;П000100002001;П000100002101;П000100002201;П000100002301;"
																   + "П000100009003;П000100012003;П000100010001;П000100010101;П000100010201;П000100010301;П000100011001;П000100011101;П000100011201;П000100011301");
	
	  // Раздел3_2
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110010004", "П000110001004;П000110004004;П000110007004;П000110009004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000120003003", "П000120001003;П000120002003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000120006003", "П000120001003;П000120002003;П000120004003;П000120005003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000120003004", "П000120001004;П000120002004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000120006004", "П000120001004;П000120002004;П000120004004;П000120005004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000130004003", "П000130001003;П000130003003");
	
КонецПроцедуры

&НаСервере
Процедура ИнициализацияМногостраничныхРазделов()
	
	СтрПерваяСтраница = ЭтаФорма.ТаблицаСтраницыРаздел21.Добавить();
	СтрПерваяСтраница.Представление               = "Новая страница";
	СтрПерваяСтраница.АктивнаяСтраница            = Истина;
	СтрПерваяСтраница.АвтоматическоеПредставление = Истина;
	
	СтрПерваяСтраница = ЭтаФорма.ТаблицаСтраницыРаздел22.Добавить();
	СтрПерваяСтраница.Представление               = "Новая страница";
	СтрПерваяСтраница.АктивнаяСтраница            = Истина;
	СтрПерваяСтраница.АвтоматическоеПредставление = Истина;
	
КонецПроцедуры

&НаСервере
Процедура Инициализация(БезОткрытияФормы = Ложь) Экспорт
	
	СтруктураРеквизитовФормы.мБезОткрытияФормы = БезОткрытияФормы;
	
	ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета();

	// выполняем начальные настройки
	ЗаполнитьНачальныеНастройки();
	
	ФормироватьСтруктуруСвойствСтраниц();
	
	СформироватьДеревоРазделовОтчетаНаСервере();
	
	ЗаполнитьПустыеСтруктурыДанных();

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

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

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

			Если КодПоказателя = "===" Тогда         // признак конечной строки
				Прервать;
			КонецЕсли;

			Если Лев(КодПоказателя, 2) = "//" Тогда  // пропускаем комментарии
				Продолжить;
			КонецЕсли;

			// код показателя по форме отчете (имя ячейки в полях табличного документа формы)
			КодПоказателяПоФорме = СокрЛП(МакетСоставаПоказателей.Область(Ном, 2).Текст);
			// признак многострочности определяется по третьей колонке макета
			ПризнМногострочность = СокрЛП(МакетСоставаПоказателей.Область(Ном, 3).Текст);
			// по четвертой колонке определяется тип данных реквизита
			ТипДанныхРеквизита   = СокрЛП(МакетСоставаПоказателей.Область(Ном, 4).Текст);
			// по колонке 5 определяется исходное количество строк многострочного раздела
			стрКолСтрокИсходный  = СокрЛП(МакетСоставаПоказателей.Область(Ном, 5).Текст);
			// вариант заполнения ячейки определяется по колонке 6 макета
			стрВариантЗаполнения = РегламентированнаяОтчетность.ПолучитьВариантЗаполненияПоказателяРегОтчета(МакетСоставаПоказателей, Ном);
			// код показателя из структуры, берется из колонки 9
			КодПоказателяПоСтруктуре = СокрЛП(МакетСоставаПоказателей.Область(Ном, 9).Текст);

			чКолСтрокИсходный    = ? (ПустаяСтрока(стрКолСтрокИсходный),  0, Число(стрКолСтрокИсходный));
			чВариантЗаполнения   = ? (ПустаяСтрока(стрВариантЗаполнения), 0, Число(стрВариантЗаполнения));

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

			Если чВариантЗаполнения <> 0 Тогда
				// Если в колонке 6 задан вариант заполнения показателя, 
				// то его значение может определяться по данным ИБ.
				// Дополняем таблицу значений вариантов заполнения
				НоваяСтрока = ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы][0].ТаблицаВариантовЗаполнения.Добавить();
				НоваяСтрока.КодПоказателя      = ? (Не ПустаяСтрока(КодПоказателяПоФорме), КодПоказателяПоФорме, КодПоказателя);
				НоваяСтрока.ВариантЗаполнения  = чВариантЗаполнения;
			КонецЕсли;

		КонецЦикла;

		Если ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы][0].ТаблицаВариантовЗаполнения.Количество() > 0 Тогда	
			// имеются автоматически заполняемые ячейки
            
			// Создаем структуру, содержащей варианты заполнения показателей отчета.
			//
			// В качестве ключа используется имя страницы основной панели формы, содержащей
			//   табличный документ с автоматически заполняемыми показателями.
			// В качестве значения принимаем Массив из таблицы значений - вариантов заполнения
			//   показателей по каждой странице многостраничного раздела.
			//
			мСтруктураВариантыЗаполнения.Вставить(ИмяСтраницы, ИмяСтраницы);
			мСтруктураВариантыЗаполненияЭталон.Вставить(ИмяСтраницы, ИмяСтраницы);
						
		Конецесли;

	КонецЦикла;

	ФормироватьСтруктуруСтраницОтчета();
	
КонецПроцедуры // ЗаполнитьНачальныеНастройки()

&НаСервере
Процедура ФормироватьСтруктуруСтраницОтчета() Экспорт

	// Дерево содержит коллекцию страниц отчета.
	// В колонках дерева хранятся следующие данные:
	//    - представление листа;
	//    - имя страницы основной панели формы, содержащей выводимый на печать лист;
	//    - имя поля табличного документа;
	//    - имя области ячеек табличного документа (используется в случае вывода
	//      на печать отдельных страниц титульного листа);
	//    - ориентация страницы при печати;
	//    - число, метка вывода страницы на печать;
	//    - число, метка показа страницы на основной панели формы;
	//    - число, метка выгрузки данных страницы в ИФНС.
	//

	мДеревоСтраницОтчета.ПолучитьЭлементы().Очистить();

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Титульный";
	СтрокаУровня1.Представление            = "Титульный лист";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел1_1";
	СтрокаУровня1.Представление            = "Раздел I (таблица 1)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел1_2";
	СтрокаУровня1.Представление            = "Раздел I (таблица 2)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;
	
	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел1_3";
	СтрокаУровня1.Представление            = "Раздел I (таблицы 3, 4)";
	СтрокаУровня1.ОриентацияСтраницы       = "Ландшафт";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел1_4";
	СтрокаУровня1.Представление            = "Раздел I (таблица 4.1)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;
	
	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел2_1";
	СтрокаУровня1.Представление            = "Раздел II (таблицы 5, 6)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел2_2";
	СтрокаУровня1.Представление            = "Раздел II (таблица 7)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел2_4";
	СтрокаУровня1.Представление            = "Раздел II (таблица 8)";
	СтрокаУровня1.ОриентацияСтраницы       = "Ландшафт";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел3_1";
	СтрокаУровня1.Представление            = "Раздел III (таблицы 9, 10)";
	СтрокаУровня1.ОриентацияСтраницы       = "Портрет";
	СтрокаУровня1.ВыводНаПечать            = 1;
	СтрокаУровня1.ПоказатьСтраницу         = 1;
	
	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел3_2";
	СтрокаУровня1.Представление            = "Раздел III (таблицы 11, 12, 13)";
	СтрокаУровня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_2";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	                           	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел1_3";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел1_4";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел2_1";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Истина;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел2_2";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Истина;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел2_4";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;

	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел3_1";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

	СтрокаУровня1.ИмяСтраницы                          = "Раздел3_2";
	СтрокаУровня1.СохранятьМногострКакТЗ               = Неопределено;
	СтрокаУровня1.МногостраничностьВРазделе            = Ложь;
	СтрокаУровня1.ОчищатьРаздел                        = Истина;
	СтрокаУровня1.ИмяПредставления                     = "";
	СтрокаУровня1.ПредставлениеДанных                  = Ложь;
	СтрокаУровня1.РазделОбязателенДляВыгрузки          = Неопределено;
	СтрокаУровня1.РазделЯвляетсяАвтозаполняемым        = Истина;
	
КонецПроцедуры

&НаСервере
Процедура СформироватьДеревоРазделовОтчетаНаСервере() Экспорт
	
	СформироватьДеревоРазделовОтчета(ЭтаФорма);
			
КонецПроцедуры

&НаКлиенте
Процедура СформироватьДеревоРазделовОтчетаНаКлиенте() Экспорт
	
	СформироватьДеревоРазделовОтчета(ЭтаФорма);
			
КонецПроцедуры

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

&НаСервере
Процедура НачальнаяПодготовкаФормы()

	Если СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически Тогда
		СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
	Иначе
		СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
	КонецЕсли;

	СтруктураРеквизитовФормы.мДокументВосстановлен = Ложь;
	
	СтруктураРеквизитовФормы.мАвтоВыборКодов = Ложь;
	
	СтруктураРеквизитовФормы.ФлагСохранения = Ложь;
	
	СтруктураРеквизитовФормы.мРежимПечати = Ложь;
	
	СтруктураРеквизитовФормы.ВидДокумента = 0;
	
	НомерКорректировки = 1;

	Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
				
		Если СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено Тогда
			// документ скопирован
			ВосстановитьСохраненныеДанные();
		Иначе
			
			// Это новый документ.
			// Установим реквизиты формы по умолчанию
			СтруктураРеквизитовФормы.ЕдиницаИзмерения         = Перечисления.ПорядкиОкругленияОтчетности.Окр1;
			СтруктураРеквизитовФормы.мДелитель                = 1;
			СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения = 2;

			КопироватьДанныеФормы(мДеревоСтраницОтчета, мДеревоВыбранныхСтраниц);
			
		КонецЕсли;
		
		Модифицированность = Истина;

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

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

	// В случае, если по F9 поменяли организацию при копировании, тогда в переменную
	// СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация будет записано значение Истина;
	Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено
	 Или СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация
	 ИЛИ СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически Тогда

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

	КонецЕсли;

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

		// Пропустим титульный лист, т.к. они не входят в систему автозаполнения
		Если (НазваниеСтраницы = "Титульный") Тогда

			Продолжить;

		КонецЕсли;

		// Если док-т восстановлен и многостраничный, то пропустим установку цветности, т.к. при восстановлении многостраничного раздела
		// цветность проставляется, чтобы дважды не выполнялся код, поставим ограничение
		Если (СтруктураРеквизитовФормы.мДокументВосстановлен) И (МногостраничностьВРазделе) Тогда

			Продолжить;

		КонецЕсли;

		УстановитьЦветФонаЯчейкиНаСервере(,, НазваниеСтраницы);

	КонецЦикла;
	
	НомерКорректировки = НомерКорректировки * СтруктураРеквизитовФормы.ВидДокумента;
	ТабличныйДокумент.Области.НомерКорректировки.Значение = НомерКорректировки;

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

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

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

	СтруктураДанныхРаздел1_1.Название1МесяцаКварталаВСтроке5 = Название1МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название2МесяцаКварталаВСтроке5 = Название2МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название3МесяцаКварталаВСтроке5 = Название3МесяцаКвартала;
	
	СтруктураДанныхРаздел1_1.Название1МесяцаКварталаВСтроке6 = Название1МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название2МесяцаКварталаВСтроке6 = Название2МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название3МесяцаКварталаВСтроке6 = Название3МесяцаКвартала;
	
	СтруктураДанныхРаздел1_1.Название1МесяцаКварталаВСтроке15 = Название1МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название2МесяцаКварталаВСтроке15 = Название2МесяцаКвартала;
	СтруктураДанныхРаздел1_1.Название3МесяцаКварталаВСтроке15 = Название3МесяцаКвартала;

	СтруктураДанныхРаздел3_1.Название1МесяцаКварталаВСтроке2 = Название1МесяцаКвартала;
	СтруктураДанныхРаздел3_1.Название2МесяцаКварталаВСтроке2 = Название2МесяцаКвартала;
	СтруктураДанныхРаздел3_1.Название3МесяцаКварталаВСтроке2 = Название3МесяцаКвартала;

	СтруктураДанныхРаздел3_1.Название1МесяцаКварталаВСтроке10 = Название1МесяцаКвартала;
	СтруктураДанныхРаздел3_1.Название2МесяцаКварталаВСтроке10 = Название2МесяцаКвартала;
	СтруктураДанныхРаздел3_1.Название3МесяцаКварталаВСтроке10 = Название3МесяцаКвартала;

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

&НаСервере
Процедура ЗаполнитьДатуВЯчейкахНаСервере() Экспорт
    	
	ЗаполнитьДатуВЯчейках(ЭтаФорма);
		
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДатуВЯчейкахНаКлиенте() Экспорт
    	
	ЗаполнитьДатуВЯчейках(ЭтаФорма);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьДатуВЯчейках(Форма)

	Форма.СтруктураДанныхРаздел3_2.ДатаОтчета = Форма.ДатаПодписи;
		
КонецПроцедуры

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

&НаСервереБезКонтекста
Процедура ЗаполнитьСведенияОбОрганизации(Форма, ВПрограммеИзмененаДатаПодписи = Ложь, СменилсяПризнакПодписанта = Ложь)

	Если (Форма.СтруктураРеквизитовФормы.Организация  = Неопределено) Или (Форма.СтруктураРеквизитовФормы.Организация = РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа("СправочникСсылка.Организации")) Тогда
		Возврат
	КонецЕсли;

	ПБОЮЛ = НЕ РегламентированнаяОтчетностьВызовСервера.ЭтоЮридическоеЛицо(Форма.СтруктураРеквизитовФормы.Организация);

	// Составляем список данных, необходимых для вывода в декларацию
	Сведения = Новый СписокЗначений;

	Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
		Сведения.Добавить("", "ИННЮЛ"); // ИНН
		Сведения.Добавить("", "КППЮЛ"); // КПП
		Сведения.Добавить("", "НаимЮЛПол"); // Полное наименование 
		Сведения.Добавить("", "ОГРН"); 
		Сведения.Добавить("", "ОКАТО");
		Сведения.Добавить("", "ОКПО");
		Сведения.Добавить("", "ОКОПФ");
		Сведения.Добавить("", "ОКФС");
		Сведения.Добавить("", "РегистрационныйНомерФСС");
		Сведения.Добавить("", "КодПодчиненностиФСС");
	КонецЕсли;

	Сведения.Добавить("", "ФИОРук"); // ФИО руководителя
	Сведения.Добавить("", "ФИОБух"); // ФИО бухгалтера
	Сведения.Добавить("", "ФИО");    // ФИО предпринимателя
	Сведения.Добавить("", "ФИОИсп"); // ФИО исполнителя
	Сведения.Добавить("", "ТелИсп");
	Сведения.Добавить("", "ТелОрганизации");

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

	Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
		// Инициализируем переменные
		ИННЮЛ = ""; // ИНН
		КППЮЛ = ""; // КПП
		НаимЮЛПол = ""; // Полное наименование 
		ОГРН = "";
		ОКАТО = "";
		ОКПО = "";
		ОКОПФ = "";
		ОКФС = "";
		РегистрационныйНомерФСС = "";
		КодПодчиненностиФСС = "";
		
	КонецЕсли;

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

	ОргСведения.Свойство("ФИОРук", ФИОРук);
	ОргСведения.Свойство("ФИОБух", ФИОБух);
	ОргСведения.Свойство("ФИО", ФИО);
	ОргСведения.Свойство("ФИОИсп", ФИОИсп);
	ОргСведения.Свойство("ТелИсп", ТелИсп);
	ОргСведения.Свойство("ТелОрганизации", ТелОрганизации);
	
	Если ПБОЮЛ Тогда
		НаимЮлПол = ФИО;
		ФИОРук = "";
		ФИОБух = "";
		ФИОИсп = "";
		ТелИсп = "";
	КонецЕсли;

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

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

		ФИОИсп = ?(ПустаяСтрока(ФИОИсп), ФИОБух, ФИОИсп);
		ТелИсп = ?(ПустаяСтрока(ТелИсп), ТелОрганизации, ТелИсп);
		ФИОИсп = ФИОИсп + ?(НЕ ПустаяСтрока(ФИОИсп), ?(НЕ ПустаяСтрока(ТелИсп), " " + ТелИсп, ""), "");
		Форма.СтруктураДанныхРаздел3_2.Вставить("ОргИсполнитель", ФИОИсп);

		Возврат;

	КонецЕсли;

	// Производим операции связанные с текущей формой отчетности

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

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

	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ИНН.Значение) Тогда
		Форма.ТабличныйДокумент.Области.ИНН.Значение = ИННЮЛ;
	КонецЕсли;
	
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.КПП.Значение) Тогда
		Форма.ТабличныйДокумент.Области.КПП.Значение = КППЮЛ;
	КонецЕсли;
	
	// Работаем с ОГРН
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОргКодОГРН.Значение) Тогда
		Форма.ТабличныйДокумент.Области.ОргКодОГРН.Значение = СокрЛП(ОГРН);
	КонецЕсли;
	
	// Работаем с ФИО Бухгалтера
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.СтруктураДанныхРаздел3_2.ОргБухгалтер)) Тогда
		Форма.СтруктураДанныхРаздел3_2.ОргБухгалтер = ФИОБух;
	КонецЕсли;

	// Работаем с ФИО руководителя организации
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.СтруктураДанныхРаздел3_2.ОргДиректор)) Тогда
		Форма.СтруктураДанныхРаздел3_2.ОргДиректор = ФИОРук;
	КонецЕсли;

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьРазмерСтраховогоТарифа(Форма)

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

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

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

&НаСервере
Процедура СохранитьДанныеРаздела(НаимРаздела, ОчищатьРазделЕслиЕстьМногострочность, ИзменятьАктивнуюСтраницу = Истина)
	
	// Многостраничные разделы.
	//
	Если НаимРаздела = "Раздел2_1"
	 ИЛИ НаимРаздела = "Раздел2_2" Тогда
	     			
		СтруктураДанных = Новый Структура;
		
		Для Каждого Область Из ТабличныйДокумент.Области Цикл
			
			Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник И Область.СодержитЗначение Тогда
				СтруктураДанных.Вставить(Область.Имя, Область.Значение);
			КонецЕсли;
			
		КонецЦикла;
		
		Если НаимРаздела = "Раздел2_1" Тогда
			
			НаимТаблицыСтраницы = "ТаблицаСтраницыРаздел21";
			
		ИначеЕсли НаимРаздела = "Раздел2_2" Тогда
			
			НаимТаблицыСтраницы = "ТаблицаСтраницыРаздел22";
								
		КонецЕсли;
		
		АктивнаяСтраница = ЭтаФорма[НаимТаблицыСтраницы].НайтиСтроки(Новый Структура("АктивнаяСтраница", Истина));
		
		Если АктивнаяСтраница.Количество() > 0 Тогда
			
			АктивнаяСтраница = АктивнаяСтраница[0];
			
			АктивнаяСтраница.Данные.Очистить();
			АктивнаяСтраница.Данные.Добавить(СтруктураДанных);
			
			АктивнаяСтраница.АктивнаяСтраница = НЕ ИзменятьАктивнуюСтраницу;
			
		КонецЕсли;
		         					
	// Обычные разделы.
	//
	Иначе
				
		ЭтаФорма["СтруктураДанных" + НаимРаздела] = СобратьДанныеТекущегоТаблПоля(ЭтаФорма, "ТабличныйДокумент");
		
	КонецЕсли;	
	
КонецПроцедуры

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

&НаСервере
Функция СобратьДанныеТекущегоТаблПоляНаСервере(ИмяТабличногоПоля) Экспорт
	
	Возврат СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);

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

&НаКлиенте
Функция СобратьДанныеТекущегоТаблПоляНаКлиенте(ИмяТабличногоПоля) Экспорт
	
	Возврат СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция СобратьДанныеТекущегоТаблПоля(Форма, ИмяТабличногоПоля) Экспорт

	СтруктураДанныхПоля = Новый Структура;
	
	Для Инд = 0 По Форма[ИмяТабличногоПоля].Области.Количество() - 1 Цикл
		ТекущаяОбласть = Форма[ИмяТабличногоПоля].Области[Инд];

		Если Не ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
			Продолжить;
		КонецЕсли;

		Если ТекущаяОбласть.СодержитЗначение <> Истина Тогда
			Продолжить;
		КонецЕсли;

		ИмяПоказателя      = ТекущаяОбласть.Имя;
		ЗначениеПоказателя = ТекущаяОбласть.Значение;
		СтруктураДанныхПоля.Вставить(ИмяПоказателя, ЗначениеПоказателя);

	КонецЦикла;

	Возврат СтруктураДанныхПоля;
	
КонецФункции

&НаКлиенте
Процедура ОчиститьТабличноеПолеНаКлиенте(ВыбТабличноеПолеИмя) Экспорт

	ОчиститьТабличноеПоле(ЭтаФорма, ВыбТабличноеПолеИмя);

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

&НаСервере
Процедура ОчиститьТабличноеПолеНаСервере(ВыбТабличноеПолеИмя) Экспорт

	ОчиститьТабличноеПоле(ЭтаФорма, ВыбТабличноеПолеИмя);

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьТабличноеПоле(Форма, ВыбТабличноеПолеИмя)

	РегламентированнаяОтчетностьКлиентСервер.ОчиститьТабличноеПоле(Форма, ВыбТабличноеПолеИмя);
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПодписиПриИзмененииНаКлиенте()
		
	// Проставим Новые ИНН и ФИО на титульный лист
	ЗаполнитьСведенияОбОрганизацииНаСервере(Истина);

	// Переменная изменяется, для простановки дат на всех листах многостраничных разделов
	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;

	// Заполним дату на листах
	ЗаполнитьДатуВЯчейкахНаКлиенте();

	// Переменна изменяется, для простановки дат на всех листах многостраничных разделов
	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
	
КонецПроцедуры

&НаСервере
Процедура ДатаПодписиПриИзмененииНаСервере()
	
	// Проставим Новые ИНН и ФИО на титульный лист
	ЗаполнитьСведенияОбОрганизацииНаСервере(Истина);

	// Переменная изменяется, для простановки дат на всех листах многостраничных разделов
	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;

	// Заполним дату на листах
	ЗаполнитьДатуВЯчейкахНаСервере();

	// Переменна изменяется, для простановки дат на всех листах многостраничных разделов
	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура Обновить(Команда)

	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
	
	ЗаполнитьСведенияОбОрганизацииНаСервере();
		    	
	СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
	Модифицированность = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура РазделыОтчетаПриАктивизацииСтроки(Элемент)
	
	Если Элемент.ТекущиеДанные = Неопределено
	 ИЛИ Элемент.ТекущаяСтрока = СтруктураРеквизитовФормы.ТекущаяСтрокаРазделовОтчета Тогда
		Возврат;
	КонецЕсли;
	
	СтруктураРеквизитовФормы.ТекущаяСтрокаРазделовОтчета = Элемент.ТекущаяСтрока;
	Элементы.ОчиститьТекущуюСтраницу.Доступность = Истина;
	
	Если СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере Тогда
		
		Если Элемент.ТекущиеДанные.РазделМногостраничный Тогда
			
			Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = ?(Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = Неопределено
															        ИЛИ Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = 0, 1, Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета);
			
		КонецЕсли;
				
		ВывестиМакетСтраницыВТабличныйДокументНаСервере(Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим, Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета);
		
	Иначе
		
		СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Истина;
		
	КонецЕсли;
	
	КМенюРО = Элементы.РазделыОтчета.КонтекстноеМеню;
	Если Элемент.ТекущиеДанные.РазделМногостраничный Тогда
		Элемент.Развернуть(Элемент.ТекущаяСтрока);
		КМенюРО.Видимость = Истина;
		Если Элемент.ТекущиеДанные.ПолучитьРодителя() = Неопределено Тогда
			Элементы.ОчиститьТекущуюСтраницу.Доступность = Ложь;
		КонецЕсли;
		
		Если Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим = "Раздел2_2" Тогда
			КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюДобавитьСтраницу.Видимость = Ложь;
			КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюУдалитьСтраницу.Видимость = Ложь;
		Иначе
			Если НЕ Элемент.ТекущиеДанные.ПолучитьРодителя() = Неопределено
			   И Элемент.ТекущиеДанные.ПолучитьРодителя().ПолучитьЭлементы().Количество() > 1 Тогда
				КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюДобавитьСтраницу.Видимость = Истина;
				КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюУдалитьСтраницу.Видимость  = Истина;
			Иначе
				КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюДобавитьСтраницу.Видимость = Истина;
				КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюУдалитьСтраницу.Видимость  = Ложь;
			КонецЕсли;
		КонецЕсли;
	Иначе
		КМенюРО.Видимость = Ложь;
		КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюДобавитьСтраницу.Видимость = Ложь;
		КМенюРО.ПодчиненныеЭлементы.РазделыОтчетаКонтекстноеМенюУдалитьСтраницу.Видимость = Ложь;
	КонецЕсли;
		
	Если Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим = "Титульный" Тогда
		Элементы.Обновить.Доступность                  = Истина;
	Иначе
		Элементы.Обновить.Доступность                  = Ложь;
	КонецЕсли;
	
	РегламентированнаяОтчетностьКлиент.СпрятатьСсылкуУдалитьСтраницу(ЭтаФорма);
	
	Элементы.ТабличныйДокумент.ТекущаяОбласть = ТабличныйДокумент.Область(1, 1);
	
КонецПроцедуры 

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

&НаСервере
Процедура ВывестиМакетВТаблДокНаСервере(ИмяТекРаздела, НомерСтраницыРазделаОтчета)
	
	ТабличныйДокумент.Очистить();
	ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(Сред(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, "ФормаОтчета")) + "_" + ИмяТекРаздела));
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
		
		МодульРегламентированнаяОтчетностьИнтерфейс85 = ОбщегоНазначения.ОбщийМодуль("РегламентированнаяОтчетностьИнтерфейс85");
		МодульРегламентированнаяОтчетностьИнтерфейс85.УстановитьТипОтображенияРедактируемойЯчейкиТабличногоДокумента(ТабличныйДокумент);
		
	КонецЕсли;
	
	// Многостраничные разделы.
	//
	Если ИмяТекРаздела = "Раздел2_1"
	 ИЛИ ИмяТекРаздела = "Раздел2_2" Тогда
	 
	  	Если ИмяТекРаздела = "Раздел2_1" Тогда
	    	НаимТаблицыСтраницы = "ТаблицаСтраницыРаздел21";
	    ИначеЕсли ИмяТекРаздела = "Раздел2_2" Тогда
	    	НаимТаблицыСтраницы = "ТаблицаСтраницыРаздел22";
	    КонецЕсли;
	    
	    СтруктураДанных = Новый Структура;
	    
	    СписокДанных = ЭтаФорма[НаимТаблицыСтраницы][НомерСтраницыРазделаОтчета - 1].Данные;
	    
	    ЭтаФорма[НаимТаблицыСтраницы][НомерСтраницыРазделаОтчета - 1].АктивнаяСтраница = Истина;
	    
	    Если СписокДанных.Количество() > 0 Тогда
	    	СтруктураДанных = СписокДанных[0].Значение;
	    КонецЕсли;
	     	 
		Для Каждого ЭлСтруктуры Из СтруктураДанных Цикл
			Обл = ТабличныйДокумент.Области.Найти(ЭлСтруктуры.Ключ);
			Если Обл <> Неопределено И Обл.СодержитЗначение Тогда 
				Обл.Значение = ЭлСтруктуры.Значение;
			КонецЕсли;
		КонецЦикла;
		
		Если ИмяТекРаздела = "Раздел2_1" Тогда 
			Если ЭтаФорма[НаимТаблицыСтраницы].Количество() = 1 Тогда 
				Обл = ТабличныйДокумент.Области["УдалитьСтраницуЗначок"];
				Обл.Гиперссылка = Ложь;
				Обл.Текст = "";
				Обл = ТабличныйДокумент.Области["УдалитьСтраницу"];
				Обл.Гиперссылка = Ложь;
				Обл.Текст = "";
			Иначе
				Обл = ТабличныйДокумент.Области["УдалитьСтраницуЗначок"];
				Обл.Гиперссылка = Истина;
				Обл.Текст = "х";
				Обл = ТабличныйДокумент.Области["УдалитьСтраницу"];
				Обл.Гиперссылка = Истина;
				Обл.Текст = "Удалить страницу";
			КонецЕсли;
		КонецЕсли;
		
	// Обычные разделы.
	//	
	Иначе
		
		Для Каждого ЭлСтруктуры Из ЭтаФорма["СтруктураДанных" + ИмяТекРаздела] Цикл
			Обл = ТабличныйДокумент.Области.Найти(ЭлСтруктуры.Ключ);
			Если Обл <> Неопределено И Обл.СодержитЗначение Тогда 
				Обл.Значение = ЭлСтруктуры.Значение;
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;	
	
	Если ИмяТекРаздела = "Раздел3_2" Тогда
		ТабличныйДокумент.Области.ДатаОтчета.Значение = ДатаПодписи;
	Иначе
		УстановитьФорматВыводаВПоляхВводаНаСервере(ИмяТекРаздела);
		УстановитьЦветФонаЯчейкиНаСервере(,, ИмяТекРаздела);
	КонецЕсли;
	
КонецПроцедуры 

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

&НаКлиенте
Процедура СохранитьОтчет(Команда)
	
	Если Элементы.РазделыОтчета.ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СохранитьНаКлиенте();
	
КонецПроцедуры

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

&НаКлиенте
Процедура СохранитьНаКлиентеСВопросом(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПодобныйОтчетСуществует)
	
	Если ПодобныйОтчетСуществует Тогда
		
		Кнопки = Новый СписокЗначений;
		Кнопки.Добавить(КодВозвратаДиалога.Да, "Сохранить");
		Кнопки.Добавить(КодВозвратаДиалога.Нет, "Отмена");
		
		ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Отчет с видом %1 уже существует.
			|Сохранить отчет с таким же видом?'"), ?(Вариант = 0, """Первичный""", """Корректирующий/" + Вариант + """"));
		ДополнительныеПараметры = Новый Структура("Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки", Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
		ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСохранитьОтчетСТакимЖеВидомЗавершение", ЭтотОбъект, ДополнительныеПараметры);
		ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , Кнопки.Получить(1).Значение);
		
	Иначе
		
		СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВопросСохранитьОтчетСТакимЖеВидомЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Автосохранение = ДополнительныеПараметры.Автосохранение;
	Вариант = ДополнительныеПараметры.Вариант;
	ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
	ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = ДополнительныеПараметры.ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки;
	
	Ответ = РезультатВопроса;
	Если Ответ = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;
	
	СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
	
КонецПроцедуры

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

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

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

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

	КонецЕсли;
	
	Если ПодобныйОтчетСуществует
	 ИЛИ ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки Тогда
	 
	 	Возврат Ложь;
		
 	КонецЕсли;
		
	Возврат Сохранить(Автосохранение, , Вариант, , НаимТекРаздела);
		
КонецФункции 

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

	СтруктураРеквизитовФормы.мВариант = Вариант;

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

	// вствляем флажок ручной ввод ВРЕМЕННАЯ ОТМЕНА
	СписокСохранения.Вставить("АвторасчетОтключен", СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет);

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

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

			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), РегламентированнаяОтчетностьКлиентСервер.СформироватьТекстСообщения(ОписаниеОшибки()));

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

    КонецЕсли;
	
	Если ДанныеДляРазблокирования <> Неопределено Тогда
		РазблокироватьДанныеДляРедактирования(ДанныеДляРазблокирования.Ключ, ДанныеДляРазблокирования.ИдФормы);
	КонецЕсли;
	
	Возврат Истина;

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

&НаСервере
Процедура ВосстановитьСохраненныеДанные()
	Перем ДанныеМногострочныхРазделов;
	Перем ДанныеМногостраничныхРазделов;
	Перем ДанныеВариановАвтоЗаполнения;
	Перем ПоказателиОтчета;
	Перем ВерсияФормы;
	Перем АвторасчетОтключен;
	Перем ТаблицаМногостраничногоДокумента;

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

	ДатаПодписи                    					  = СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи;
	СтруктураРеквизитовФормы.ЕдиницаИзмерения         = СтруктураРеквизитовФормы.мСохраненныйДок.ЕдиницаИзмерения;
	СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения = СтруктураРеквизитовФормы.мСохраненныйДок.ТочностьЕдиницыИзмерения;
	Комментарий                    					  = СтруктураРеквизитовФормы.мСохраненныйДок.Комментарий;

	// восстанавливаем сохраненные данные отчета
	СписокСохранения = СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета.Получить();

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

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

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

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

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

	СтруктураРеквизитовФормы.мДокументВосстановлен = Истина;
	
КонецПроцедуры

&НаСервере
Процедура ВосстановитьСведенияОбОрганизацииИзТитульногоЛистаСтарогоОбразца(ПоказателиОтчета)
	
	ПоказателиТаблПоле = ПоказателиОтчета["ПолеТабличногоДокументаТитульный"];
	
	Для Каждого Показатель Из ПоказателиТаблПоле Цикл
		
		ИмяПоказателя = Показатель.Ключ;
		
		Если ИмяПоказателя = "ОргФССКод_1" Тогда
			СтруктураДанныхТитульный.Вставить("ОргФССКод");
			Для Ном = 1 По 10 Цикл
				СтруктураДанныхТитульный.ОргФССКод = СокрЛП(СтруктураДанныхТитульный.ОргФССКод) + ПоказателиТаблПоле["ОргФССКод_" + Ном];
				СтруктураДанныхТитульный.Удалить("ОргФССКод_" + Ном);
			КонецЦикла;
		ИначеЕсли ИмяПоказателя = "ДополнительныйКод_1" Тогда
			СтруктураДанныхТитульный.Вставить("ДополнительныйКод");
			Для Ном = 1 По 10 Цикл
				СтруктураДанныхТитульный.ДополнительныйКод = СокрЛП(СтруктураДанныхТитульный.ДополнительныйКод) + ПоказателиТаблПоле["ДополнительныйКод_" + Ном];
				СтруктураДанныхТитульный.Удалить("ДополнительныйКод_" + Ном);
			КонецЦикла;
		ИначеЕсли ИмяПоказателя = "КодПодчиненности_1" Тогда
			СтруктураДанныхТитульный.Вставить("КодПодчиненности");
			Для Ном = 1 По 5 Цикл
				СтруктураДанныхТитульный.КодПодчиненности = СокрЛП(СтруктураДанныхТитульный.КодПодчиненности) + ПоказателиТаблПоле["КодПодчиненности_" + Ном];
				СтруктураДанныхТитульный.Удалить("КодПодчиненности_" + Ном);
			КонецЦикла;
		ИначеЕсли ИмяПоказателя = "ИНН_1" Тогда
			СтруктураДанныхТитульный.Вставить("ИНН");
			Для Ном = 1 По 12 Цикл
				СтруктураДанныхТитульный.ИНН = СокрЛП(СтруктураДанныхТитульный.ИНН) + ПоказателиТаблПоле["ИНН_" + Ном];
				СтруктураДанныхТитульный.Удалить("ИНН_" + Ном);
			КонецЦикла;
			Если Лев(СтруктураДанныхТитульный.ИНН, 2) = "00" Тогда
				СтруктураДанныхТитульный.ИНН = Сред(СтруктураДанныхТитульный.ИНН, 3);
			КонецЕсли;
		ИначеЕсли ИмяПоказателя = "КПП_1" Тогда
			СтруктураДанныхТитульный.Вставить("КПП");
			Для Ном = 1 По 9 Цикл
				СтруктураДанныхТитульный.КПП = СокрЛП(СтруктураДанныхТитульный.КПП) + ПоказателиТаблПоле["КПП_" + Ном];
				СтруктураДанныхТитульный.Удалить("КПП_" + Ном);
			КонецЦикла;
		ИначеЕсли ИмяПоказателя = "ОргКодОГРН_1" Тогда
			СтруктураДанныхТитульный.Вставить("ОргКодОГРН");
			Для Ном = 1 По 15 Цикл
				СтруктураДанныхТитульный.ОргКодОГРН = СокрЛП(СтруктураДанныхТитульный.ОргКодОГРН) + ПоказателиТаблПоле["ОргКодОГРН_" + Ном];
				СтруктураДанныхТитульный.Удалить("ОргКодОГРН_" + Ном);
			КонецЦикла;		
		ИначеЕсли ИмяПоказателя = "РасчПериод_1" Тогда
			СтруктураДанныхТитульный.Вставить("РасчПериод");
			Для Ном = 1 По 4 Цикл
				СтруктураДанныхТитульный.РасчПериод = СокрЛП(СтруктураДанныхТитульный.РасчПериод) + ПоказателиТаблПоле["РасчПериод_" + Ном];
				СтруктураДанныхТитульный.Удалить("РасчПериод_" + Ном);
			КонецЦикла;
		КонецЕсли;
		
	КонецЦикла;
	
	ЗаполнитьДатуВЯчейкахНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ВосстановитьШифрРаздела1ИзЛистаСтарогоОбразца(ПоказателиОтчета)
	
	ПоказателиТаблПоле = ПоказателиОтчета["ПолеТабличногоДокументаРаздел1_1"];
	
	Для Каждого Показатель Из ПоказателиТаблПоле Цикл
		
		ИмяПоказателя = Показатель.Ключ;
		
		Если ИмяПоказателя = "ШифрРаздел1_1" Тогда
			СтруктураДанныхРаздел1_1.Вставить("ШифрРаздел1");
			Для Ном = 1 По 3 Цикл
				СтруктураДанныхРаздел1_1.ШифрРаздел1 = СокрЛП(СтруктураДанныхРаздел1_1.ШифрРаздел1) + ПоказателиТаблПоле["ШифрРаздел1_" + Ном];
				СтруктураДанныхРаздел1_1.Удалить("ШифрРаздел1_" + Ном);
			КонецЦикла;
		КонецЕсли;
		
	КонецЦикла;

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

&НаСервере
Процедура ВосстановитьШифрРаздела2ИзЛистаСтарогоОбразца(ПоказателиОтчета)
	
	Для Каждого ЭлементТабл Из ЭтаФорма[мСтруктураМногостраничныхРазделов.Раздел2_1] Цикл
		
		ЭлементТабл.АктивнаяСтраница = Ложь;
		
		ПоказателиТаблПоле = ЭлементТабл.Данные[0].Значение;
		
		СтруктураДанныхРаздел2_1 = ЭлементТабл.Данные[0].Значение;

		Для Каждого Показатель Из ПоказателиТаблПоле Цикл
		
			ИмяПоказателя = Показатель.Ключ;
			
			Если ИмяПоказателя = "ШифрРаздел2_1" Тогда
				СтруктураДанныхРаздел2_1.Вставить("ШифрРаздел2");
				Для Ном = 1 По 3 Цикл
					СтруктураДанныхРаздел2_1.ШифрРаздел2 = СокрЛП(СтруктураДанныхРаздел2_1.ШифрРаздел2) + ПоказателиТаблПоле["ШифрРаздел2_" + Ном];
					СтруктураДанныхРаздел2_1.Удалить("ШифрРаздел2_" + Ном);
				КонецЦикла;
			КонецЕсли;
		
		КонецЦикла;
		
	КонецЦикла;

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

&НаСервере
Процедура ОбновитьПользовательскиеНастройки()
	
	Сообщение = Новый СообщениеПользователю;

	Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Изменилась версия формы отчета.%1Выполняется обновление пользовательских настроек.'"), Символы.ПС);

	Сообщение.Сообщить();

	// Обновляем варианты заполнения показателей отчета
	ЕстьИзмененияВариантыЗаполнения = ОбновитьВариантыЗаполнения();
	
	// Обновляем настройки страниц отчета (содержание отчета)
	ЕстьИзмененияНастройкаСтраниц = ОбновитьНастройкиСтраниц();

	Если ЕстьИзмененияВариантыЗаполнения ИЛИ ЕстьИзмененияНастройкаСтраниц Тогда
		// Если были изменения в пользовательских настройках,
		// то устанавливаем флаг модифицированности формы.
		Модифицированность = Истина;

		Сообщение = Новый СообщениеПользователю;

		Сообщение.Текст = НСтр("ru='Обновление пользовательских настроек успешно завершено!'");

		Сообщение.Сообщить();

	Иначе
		
		Сообщение = Новый СообщениеПользователю;

		Сообщение.Текст = НСтр("ru='Изменения в структуре пользовательских настроек не обнаружены!'");

		Сообщение.Сообщить();

	КонецЕсли;

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

&НаСервере
Функция ОбновитьВариантыЗаполнения()
	Перем МассивВариантовЗаполненияСтраниц;

	ЕстьИзменения = Ложь;

	// Подлежат обновлению следующие структуры:
	// 1.Пользовательские настройки вариантов заполнения таблиц

	// Сначала создадим эталонные модели вариантов автозаполнения таблиц.
	// Их определяем по макету СоставПоказателей
	МакетСоставаПоказателей = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(СтруктураРеквизитовФормы.мСоставПоказателей);

	ОписаниеТиповСтрока15   = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(15));

	ОписаниеТиповСтрока100  = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100));
	
	ОписаниеТиповСтрока50   = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50));

	ОписаниеТиповЧисло1     = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1));

	ОписаниеТиповЧисло15    = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));

	ЕстьИзменения = Ложь;

	Для Инд = 0 По МакетСоставаПоказателей.Области.Количество() - 1 Цикл
		// организован цикл по именованным областям макета,
		// содержащим состав показателей и варианты автозаполнения
		// таблиц на каждой странице основной панели формы.

		ТекОбласть  = МакетСоставаПоказателей.Области[Инд];
		ИмяСтраницы = ТекОбласть.Имя;

		// Таблица значений содержит информацию о вариантах заполнения показателя отчета.
		// В колонках таблицы значений отображается следующая информация:
		//   - имя ячейки (код показателя);
		//   - вариант заполнения ячейки;
		//   - вычисленное по данным ИБ значение ячейки;
		//   - величина автокорректировки значения ячейки;
		//   - примечание к ячейке.
		//
		ТаблицаВариантыЗаполнения = Новый ТаблицаЗначений;
		ТаблицаВариантыЗаполнения.Колонки.Добавить( "КодПоказателя",     ОписаниеТиповСтрока15  );
		ТаблицаВариантыЗаполнения.Колонки.Добавить( "ВариантЗаполнения", ОписаниеТиповЧисло1    );
		ТаблицаВариантыЗаполнения.Колонки.Добавить( "ЗначениеАвто",      ОписаниеТиповЧисло15   );
		ТаблицаВариантыЗаполнения.Колонки.Добавить( "Дельта",            ОписаниеТиповЧисло15   );
		ТаблицаВариантыЗаполнения.Колонки.Добавить( "Комментарий",       ОписаниеТиповСтрока100 );
        ТаблицаВариантыЗаполнения.Колонки.Добавить( "КодПоказателяПоСтруктуре",       ОписаниеТиповСтрока50 ); 
		
		Для Ном = ТекОбласть.Верх По ТекОбласть.Низ Цикл
			// перебираем строки макета

			// Код показателя (по составу показателей) определяется по первой колонке макета
			КодПоказателя = СокрП(МакетСоставаПоказателей.Область(Ном, 1).Текст);
			ИмяПоказателя = КодПоказателя;

			Если КодПоказателя = "===" Тогда         // признак конечной строки
				Прервать;
			КонецЕсли;

			Если Лев(КодПоказателя, 2) = "//" Тогда  // пропускаем комментарии
				Продолжить;
			КонецЕсли;

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

			чВариантЗаполнения   = ? (ПустаяСтрока(стрВариантЗаполнения), 0, Число(стрВариантЗаполнения));
			Если чВариантЗаполнения <> 0 Тогда
				// Если в колонке 6 задан варианет заполнения показателя, 
				// то его значение может определяться по данным ИБ.
				// Дополняем таблицу значений вариантов заполнения
				НоваяСтрока = ТаблицаВариантыЗаполнения.Добавить();
				НоваяСтрока.КодПоказателя      = ? (Не ПустаяСтрока(КодПоказателяПоФорме), КодПоказателяПоФорме, КодПоказателя);
				НоваяСтрока.ВариантЗаполнения  = чВариантЗаполнения;
			КонецЕсли;

		КонецЦикла;

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

				// сохраняем варианты заполнения таблиц на данной странице
				мСтруктураВариантыЗаполнения.Вставить(ИмяСтраницы, ИмяСтраницы);

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

				ЕстьИзменения = Истина;
			Иначе
				// Рассмотрим вариант, когда и в предыдущей, и в текущей версии формы было предусмотрено
				// автозаполнение текущей страницы. В этом случае обновляем таблицу значений, содержащей
				// пользовательские настройки вариантов автозаполнения текущей страницы.

				Для каждого ЭлементМассива Из МассивВариантовЗаполненияСтраниц Цикл
					
					ЭлементМассива = ЭлементМассива.ТаблицаВариантовЗаполнения;
					
					Для каждого СтрокаТаблицы Из ТаблицаВариантыЗаполнения Цикл
						КодПоказателя     = СтрокаТаблицы.КодПоказателя;
						ВариантЗаполнения = СтрокаТаблицы.ВариантЗаполнения;

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

							ЕстьИзменения = Истина;
						КонецЕсли;
					КонецЦикла;

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

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

	КонецЦикла;

	Возврат ЕстьИзменения;

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

&НаСервере
Функция ОбновитьНастройкиСтраниц()

	ЕстьИзменения = Ложь;

	// формируем дерево значений - пользовательских настройки страниц отчета
	мПользовательскиеНастройкиСтраниц = РеквизитФормыВЗначение("мДеревоСтраницОтчета").Скопировать();

	// формируем дерево значений - настройки страниц отчета обновленной формы
	ФормироватьСтруктуруСтраницОтчета();

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

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

			ЕстьИзменения = Истина;
		КонецЕсли;

	КонецЦикла;

	// Выполняем обратную задачу:
	// удаляем отсутствующие колонки
	Для каждого ТекКолонка Из мПользовательскиеНастройкиСтраниц.Колонки Цикл

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

			ЕстьИзменения = Истина;
		КонецЕсли;

	КонецЦикла;

	// Обновляем строки дерева значений - пользовательских настроек:
	//
	// добавляем новые строки и удаляем лишние:
	Если мДеревоСтраницОтчета.ПолучитьЭлементы().Количество() <> мПользовательскиеНастройкиСтраниц.Строки.Количество() Тогда

		КолвоКолонок     = РеквизитФормыВЗначение("мДеревоСтраницОтчета").Колонки.Количество();

		// добавляем новые строки
		Для каждого Строка Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл

			Если мПользовательскиеНастройкиСтраниц.Найти(Строка.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда

				НоваяСтрока = мПользовательскиеНастройкиСтраниц.Строки.Добавить();
				Для НомКолонки = 0 По (КолвоКолонок - 1) Цикл
				
					НоваяСтрока[НомКолонки] = Строка[НомКолонки];
				
				КонецЦикла;

			КонецЕсли;

			// обновляем строки второго уровня
			Если Строка.Строки.Количество() > 0 Тогда

				Для каждого Строка2 Из Строка.Строки Цикл

					Если мПользовательскиеНастройкиСтраниц.Найти(Строка2.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда

						НоваяСтрока2 = НоваяСтрока.Строки.Добавить();
						Для НомКолонки = 0 По (КолвоКолонок - 1) Цикл

							НоваяСтрока2[НомКолонки] = Строка2[НомКолонки];

						КонецЦикла;

					КонецЕсли;

				КонецЦикла; 

			КонецЕсли; 

		КонецЦикла;

		// удаляем лишние строки
		Для каждого Строка Из мПользовательскиеНастройкиСтраниц Цикл

			Если РеквизитФормыВЗначение("мДеревоСтраницОтчета").Найти(Строка.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда

				мПользовательскиеНастройкиСтраниц.Строки.Удалить(мПользовательскиеНастройкиСтраниц.Строки.Индекс(Строка));

			КонецЕсли;

		КонецЦикла;

		ЕстьИзменения = Истина;
	КонецЕсли;

	Для каждого ТекСтрока Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл

		НомСтр = мДеревоСтраницОтчета.ПолучитьЭлементы().Индекс(ТекСтрока);

		// обновляем представление
		Если ТекСтрока.Представление <> мПользовательскиеНастройкиСтраниц.Строки[НомСтр].Представление Тогда
			мПользовательскиеНастройкиСтраниц.Строки[НомСтр].Представление = ТекСтрока.Представление;
			ЕстьИзменения = Истина;
		КонецЕсли;

		// обновляем имя поля табличного документа
		Если ТекСтрока.ИмяПоляТабличногоДокум <> мПользовательскиеНастройкиСтраниц.Строки[НомСтр].ИмяПоляТабличногоДокум Тогда
			мПользовательскиеНастройкиСтраниц.Строки[НомСтр].ИмяПоляТабличногоДокум = ТекСтрока.ИмяПоляТабличногоДокум;
			ЕстьИзменения = Истина;
		КонецЕсли;

	КонецЦикла; 

	ЗначениеВРеквизитФормы(мПользовательскиеНастройкиСтраниц.Скопировать(), "мДеревоСтраницОтчета");

	Возврат ЕстьИзменения;

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

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

&НаКлиенте
Процедура УстановитьЦветФонаЯчейкиНаКлиенте(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "") Экспорт
	
	УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьЦветФонаЯчейкиНаСервере(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "") Экспорт
	
	УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЦветФонаЯчейки(Форма, ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "")
	
	Перем ЦветФона;
	Перем Комментарий;

	// Не нужно разукрашивать табличные поля, если открывается без открытия формы (например печать или просмотр)
	Если Форма.СтруктураРеквизитовФормы.мБезОткрытияФормы Или Форма.СтруктураРеквизитовФормы.мРежимПечати Тогда
		Возврат;
	КонецЕсли;
    	
	Если Не ИмяЯчейки = Неопределено Тогда
		// устанавливаем цвет фона конкретной ячейки
		#Если НаКлиенте Тогда
			ИмяСтраницыПанели = РегламентированнаяОтчетностьКлиент.ОпределитьСтраницуПанелиПоКодуПоказателяНаКлиенте(Форма, ИмяЯчейки);
		#Иначе
			ИмяСтраницыПанели = РегламентированнаяОтчетностьВызовСервера.ОпределитьСтраницуПанелиПоКодуПоказателяНаСервере(Форма, ИмяЯчейки);
		#КонецЕсли
		
		Если ИмяСтраницыПанели = Неопределено Тогда
			Возврат;
		КонецЕсли;

		ИмяПоляТаблДокумента = "ТабличныйДокумент";

		Ключ = "_" + ВариантЗаполнения;
		Форма.мСтруктураЦветовРаскраски.Свойство(Ключ, ЦветФона);

		Если ВариантЗаполнения = 4 Тогда
			Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Истина;
		Иначе
			Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Ложь;
		КонецЕсли;

		// установим цвет ячейки
		Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].ЦветФона = ЦветФона;

	Иначе
		// устанавливаем цвет фона всех автозаполняемых ячеек активной страницы

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

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

		КонецЦикла;

	КонецЕсли;

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

&НаКлиентеНаСервереБезКонтекста
Функция ПоказательВходитВМногострочнуюЧасть(Форма, ИмяПоказателя)
	
	Возврат 0;

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

&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьТаблицуВариантовЗаполнения(Форма, ИмяСтраницыПанели, ПолучитьЭталонную = Ложь)

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

&НаКлиенте
Процедура РасчетНаКлиенте(ИмяТекущегоРаздела = "", ОбластьИмя = "") Экспорт

	Расчет(ЭтаФорма, ИмяТекущегоРаздела, ОбластьИмя);

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

&НаСервере
Процедура РасчетНаСервере(ИмяТекущегоРаздела = "", ОбластьИмя = "") Экспорт

	Расчет(ЭтаФорма, ИмяТекущегоРаздела, ОбластьИмя);

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

&НаКлиентеНаСервереБезКонтекста
Процедура Расчет(Форма, ИмяТекущегоРаздела = "", ОбластьИмя = "")
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
	
	Если ИмяТекущегоРаздела = "Раздел1_1" Тогда		
		
		// РАЗДЕЛ I
		// Раздел1_1
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010002201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010002201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010002301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010002401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010002501.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010003201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010003201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010003301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010003401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010003501.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010005201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010005201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010005301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010005401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010005501.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010006201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010006201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010006301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010006401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010006501.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010015201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010015201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010015301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010015401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010015501.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010016201, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010016201.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010016301.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010016401.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010016501.Значение);
		КонецЕсли;
		//
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010002003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010002003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010002101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010002201.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010003003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010003003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010003101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010003201.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010005003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010005003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010005101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010005201.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010006003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010006003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010006101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010006201.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010015003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010015003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010015101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010015201.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010016003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010016003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010016101.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010016201.Значение;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010008003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010008003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010001003.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010002003.Значение
																   + Форма.ТабличныйДокумент.Области.П000010003003.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010004003.Значение)
																   + Форма.ТабличныйДокумент.Области.П000010005003.Значение
																   + Форма.ТабличныйДокумент.Области.П000010006003.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010007003.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010012003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010012003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010013003.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010014003.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010018003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010018003.Значение = Форма.ТабличныйДокумент.Области.П000010012003.Значение
																   + Форма.ТабличныйДокумент.Области.П000010015003.Значение
																   + Форма.ТабличныйДокумент.Области.П000010016003.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010017003.Значение);
		КонецЕсли;
		//
		Если Форма.ТабличныйДокумент.Области.П000010018003.Значение > Форма.ТабличныйДокумент.Области.П000010008003.Значение Тогда 
			ЗадолженностьЗаФондомВсего = Форма.ТабличныйДокумент.Области.П000010018003.Значение
									   - Форма.ТабличныйДокумент.Области.П000010008003.Значение;
			Форма.ТабличныйДокумент.Области.П000010019003.Значение = 0;
		Иначе
			Форма.ТабличныйДокумент.Области.П000010019003.Значение = Форма.ТабличныйДокумент.Области.П000010008003.Значение
																   - Форма.ТабличныйДокумент.Области.П000010018003.Значение;
			ЗадолженностьЗаФондомВсего = 0;
		КонецЕсли;
		
		Форма.ТабличныйДокумент.Области.П000010010003.Значение = ЗадолженностьЗаФондомВсего
															   - РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010011003.Значение);
		Форма.ТабличныйДокумент.Области.П000010009003.Значение = Форма.ТабличныйДокумент.Области.П000010010003.Значение
															   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000010011003.Значение);

	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_2" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020008003, ОбластьИмя) > 0 Тогда
			
			П000020009003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020009003.Значение);
			П000020010003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020010003.Значение);
			
			П000020008003 = П000020009003 + П000020010003;
			Форма.ТабличныйДокумент.Области.П000020008003.Значение = П000020008003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020011003, ОбластьИмя) > 0 Тогда
			
			П000020012003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020012003.Значение);
			П000020013003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020013003.Значение);
		
			П000020011003 = П000020012003 + П000020013003;
			Форма.ТабличныйДокумент.Области.П000020011003.Значение = П000020011003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007001, ОбластьИмя) > 0 Тогда
			
			П000020008001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020008001.Значение);
			П000020011001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020011001.Значение);
			
			П000020007001 = П000020008001 + П000020011001;
			Форма.ТабличныйДокумент.Области.П000020007001.Значение = П000020007001;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007003, ОбластьИмя) > 0 Тогда

			П000020008003 = Форма.ТабличныйДокумент.Области.П000020008003.Значение;
			П000020011003 = Форма.ТабличныйДокумент.Области.П000020011003.Значение;
			
			П000020007003 = П000020008003 + П000020011003;
			Форма.ТабличныйДокумент.Области.П000020007003.Значение = П000020007003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020016003, ОбластьИмя) > 0 Тогда
			
			П000020001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020001003.Значение);
			П000020003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020003003.Значение);
			П000020005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020005003.Значение);
			П000020006003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020006003.Значение);
			П000020007003 = Форма.ТабличныйДокумент.Области.П000020007003.Значение;
			П000020014003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020014003.Значение);
			П000020015003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020015003.Значение);
			
			П000020016003 = П000020001003 + П000020003003 + П000020005003
						  + П000020006003 + П000020007003 + П000020014003
						  + П000020015003;
					  
			Форма.ТабличныйДокумент.Области.П000020016003.Значение = П000020016003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020008004, ОбластьИмя) > 0 Тогда
			
			П000020009004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020009004.Значение);
			П000020010004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020010004.Значение);
			
			П000020008004 = П000020009004 + П000020010004;
			Форма.ТабличныйДокумент.Области.П000020008004.Значение = П000020008004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020011004, ОбластьИмя) > 0 Тогда
			
			П000020012004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020012004.Значение);
			П000020013004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020013004.Значение);
		
			П000020011004 = П000020012004 + П000020013004;
			Форма.ТабличныйДокумент.Области.П000020011004.Значение = П000020011004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007004, ОбластьИмя) > 0 Тогда
		
			П000020008004 = Форма.ТабличныйДокумент.Области.П000020008004.Значение;
			П000020011004 = Форма.ТабличныйДокумент.Области.П000020011004.Значение;
			
			П000020007004 = П000020008004 + П000020011004;
			Форма.ТабличныйДокумент.Области.П000020007004.Значение = П000020007004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020016004, ОбластьИмя) > 0 Тогда
			
			П000020001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020001004.Значение);
			П000020003004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020003004.Значение);
			П000020005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020005004.Значение);
			П000020006004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020006004.Значение);
			П000020007004 = Форма.ТабличныйДокумент.Области.П000020007004.Значение;
			П000020014004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020014004.Значение);
			П000020015004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020015004.Значение);

			П000020016004 = П000020001004 + П000020003004 + П000020005004
						  + П000020006004 + П000020007004 + П000020014004
						  + П000020015004;
						  
			Форма.ТабличныйДокумент.Области.П000020016004.Значение = П000020016004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020008005, ОбластьИмя) > 0 Тогда
			
			П000020009005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020009005.Значение);
			П000020010005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020010005.Значение);
			
			П000020008005 = П000020009005 + П000020010005;
			Форма.ТабличныйДокумент.Области.П000020008005.Значение = П000020008005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020011005, ОбластьИмя) > 0 Тогда
		
			П000020012005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020012005.Значение);
			П000020013005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020013005.Значение);
			
			П000020011005 = П000020012005 + П000020013005;
			Форма.ТабличныйДокумент.Области.П000020011005.Значение = П000020011005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007005, ОбластьИмя) > 0 Тогда
			
			П000020008005 = Форма.ТабличныйДокумент.Области.П000020008005.Значение;
			П000020011005 = Форма.ТабличныйДокумент.Области.П000020011005.Значение;
			
			П000020007005 = П000020008005 + П000020011005;
			Форма.ТабличныйДокумент.Области.П000020007005.Значение = П000020007005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020014005, ОбластьИмя) > 0 Тогда
			
			П000020014004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020014004.Значение);
			
			П000020014005 = П000020014004;
			Форма.ТабличныйДокумент.Области.П000020014005.Значение = П000020014005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020016005, ОбластьИмя) > 0 Тогда
			
			П000020001005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020001005.Значение);
			П000020003005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020003005.Значение);
			П000020015005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000020015005.Значение);
			П000020007005 = Форма.ТабличныйДокумент.Области.П000020007005.Значение;
			П000020014005 = Форма.ТабличныйДокумент.Области.П000020014005.Значение;
		
			П000020016005 = П000020001005 + П000020003005 
						  + П000020007005 + П000020014005
						  + П000020015005;
			Форма.ТабличныйДокумент.Области.П000020016005.Значение = П000020016005;
			
		КонецЕсли;
		
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_3" Тогда		
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030002003, ОбластьИмя) > 0 Тогда
			
			П000030003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003003.Значение);
			П000030004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004003.Значение);
			П000030005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005003.Значение);
			
			П000030002003 = П000030003003 + П000030004003 + П000030005003;
			Форма.ТабличныйДокумент.Области.П000030002003.Значение = П000030002003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030002004, ОбластьИмя) > 0 Тогда
			
			П000030003004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003004.Значение);
			П000030004004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004004.Значение);
			П000030005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005004.Значение);
			
			П000030002004 = П000030003004 + П000030004004 + П000030005004;
			Форма.ТабличныйДокумент.Области.П000030002004.Значение = П000030002004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030002005, ОбластьИмя) > 0 Тогда
			
			П000030003005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003005.Значение);
			П000030004005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004005.Значение);
			П000030005005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005005.Значение);
			
			П000030002005 = П000030003005 + П000030004005 + П000030005005;
			Форма.ТабличныйДокумент.Области.П000030002005.Значение = П000030002005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030002006, ОбластьИмя) > 0 Тогда
			
			П000030003006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003006.Значение);
			П000030004006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004006.Значение);
			П000030005006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005006.Значение);
			
			П000030002006 = П000030003006 + П000030004006 + П000030005006;
			Форма.ТабличныйДокумент.Области.П000030002006.Значение = П000030002006;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030001007, ОбластьИмя) > 0 Тогда
		
			П000030001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030001003.Значение);
			П000030001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030001004.Значение);
			П000030001005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030001005.Значение);
			П000030001006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030001006.Значение);
		
			П000030001007 = П000030001003 - П000030001004 - П000030001005 - П000030001006;
			Форма.ТабличныйДокумент.Области.П000030001007.Значение = П000030001007;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030002007, ОбластьИмя) > 0 Тогда
		
			П000030002003 = Форма.ТабличныйДокумент.Области.П000030002003.Значение;
			П000030002004 = Форма.ТабличныйДокумент.Области.П000030002004.Значение;
			П000030002005 = Форма.ТабличныйДокумент.Области.П000030002005.Значение;
			П000030002006 = Форма.ТабличныйДокумент.Области.П000030002006.Значение;
		
			П000030002007 = П000030002003 - П000030002004 - П000030002005 - П000030002006;
			Форма.ТабличныйДокумент.Области.П000030002007.Значение = П000030002007;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030003007, ОбластьИмя) > 0 Тогда
		
			П000030003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003003.Значение);
			П000030003004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003004.Значение);
			П000030003005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003005.Значение);
			П000030003006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030003006.Значение);
		
			П000030003007 = П000030003003 - П000030003004 - П000030003005 - П000030003006;
			Форма.ТабличныйДокумент.Области.П000030003007.Значение = П000030003007;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004007, ОбластьИмя) > 0 Тогда
		
			П000030004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004003.Значение);
			П000030004004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004004.Значение);
			П000030004005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004005.Значение);
			П000030004006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030004006.Значение);
		
			П000030004007 = П000030004003 - П000030004004 - П000030004005 - П000030004006;
			Форма.ТабличныйДокумент.Области.П000030004007.Значение = П000030004007;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030005007, ОбластьИмя) > 0 Тогда
		
			П000030005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005003.Значение);
			П000030005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005004.Значение);
			П000030005005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005005.Значение);
			П000030005006 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000030005006.Значение);
		
			П000030005007 = П000030005003 - П000030005004 - П000030005005 - П000030005006;
			Форма.ТабличныйДокумент.Области.П000030005007.Значение = П000030005007;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040003003, ОбластьИмя) > 0 Тогда
			
			П000040001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040001003.Значение);
			П000040002003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040002003.Значение);
			
			П000040003003 = П000040001003 + П000040002003;
			Форма.ТабличныйДокумент.Области.П000040003003.Значение = П000040003003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040003004, ОбластьИмя) > 0 Тогда
			
			П000040001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040001004.Значение);
			П000040002004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040002004.Значение);
			
			П000040003004 = П000040001004 + П000040002004;
			Форма.ТабличныйДокумент.Области.П000040003004.Значение = П000040003004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040006003, ОбластьИмя) > 0 Тогда
		
			П000040003003 = Форма.ТабличныйДокумент.Области.П000040003003.Значение;
			П000040004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040004003.Значение);
			П000040005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040005003.Значение);
		
			П000040006003 = П000040003003 - П000040004003 + П000040005003;
			Форма.ТабличныйДокумент.Области.П000040006003.Значение = П000040006003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040006004, ОбластьИмя) > 0 Тогда
		
			П000040003004 = Форма.ТабличныйДокумент.Области.П000040003004.Значение;
			П000040004004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040004004.Значение);
			П000040005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000040005004.Значение);
		
			П000040006004 = П000040003004 - П000040004004 + П000040005004;
			Форма.ТабличныйДокумент.Области.П000040006004.Значение = П000040006004;
		
		КонецЕсли;
		
				
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_4" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000410004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000410004003.Значение  = ? (РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000410002003.Значение) <> 0,
																		(РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000410003003.Значение)
																	   / РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000410002003.Значение)) * 100, 0);
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_1" Тогда
		
		// РАЗДЕЛ II
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060005003, ОбластьИмя) > 0 Тогда
			
			П000060003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000060003003.Значение);
			П000060004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000060004003.Значение);
			
			П000060005003 = П000060003003 + П000060004003;
			Форма.ТабличныйДокумент.Области.П000060005003.Значение = П000060005003;
			
		КонецЕсли;
		
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_2" Тогда		
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070008003, ОбластьИмя) > 0 Тогда
			
			П000070009003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070009003.Значение);
			П000070010003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070010003.Значение);
			
			П000070008003 = П000070009003 + П000070010003;
			Форма.ТабличныйДокумент.Области.П000070008003.Значение = П000070008003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011003, ОбластьИмя) > 0 Тогда
			
			П000070012003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070012003.Значение);
			П000070013003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070013003.Значение);
		
			П000070011003 = П000070012003 + П000070013003;
			Форма.ТабличныйДокумент.Области.П000070011003.Значение = П000070011003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070007001, ОбластьИмя) > 0 Тогда
			
			П000070008001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070008001.Значение);
			П000070011001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070011001.Значение);
			
			П000070007001 = П000070008001 + П000070011001;
			Форма.ТабличныйДокумент.Области.П000070007001.Значение = П000070007001;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070007003, ОбластьИмя) > 0 Тогда

			П000070008003 = Форма.ТабличныйДокумент.Области.П000070008003.Значение;
			П000070011003 = Форма.ТабличныйДокумент.Области.П000070011003.Значение;
			
			П000070007003 = П000070008003 + П000070011003;
			Форма.ТабличныйДокумент.Области.П000070007003.Значение = П000070007003;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070016003, ОбластьИмя) > 0 Тогда
			
			П000070001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070001003.Значение);
			П000070003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070003003.Значение);
			П000070005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070005003.Значение);
			П000070006003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070006003.Значение);
			П000070007003 = Форма.ТабличныйДокумент.Области.П000070007003.Значение;
			П000070014003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070014003.Значение);
			П000070015003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070015003.Значение);
			
			П000070016003 = П000070001003 + П000070003003 + П000070005003
						  + П000070006003 + П000070007003 + П000070014003
						  + П000070015003;
					  
			Форма.ТабличныйДокумент.Области.П000070016003.Значение = П000070016003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070008004, ОбластьИмя) > 0 Тогда
			
			П000070009004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070009004.Значение);
			П000070010004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070010004.Значение);
			
			П000070008004 = П000070009004 + П000070010004;
			Форма.ТабличныйДокумент.Области.П000070008004.Значение = П000070008004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011004, ОбластьИмя) > 0 Тогда
			
			П000070012004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070012004.Значение);
			П000070013004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070013004.Значение);
		
			П000070011004 = П000070012004 + П000070013004;
			Форма.ТабличныйДокумент.Области.П000070011004.Значение = П000070011004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070007004, ОбластьИмя) > 0 Тогда
		
			П000070008004 = Форма.ТабличныйДокумент.Области.П000070008004.Значение;
			П000070011004 = Форма.ТабличныйДокумент.Области.П000070011004.Значение;
			
			П000070007004 = П000070008004 + П000070011004;
			Форма.ТабличныйДокумент.Области.П000070007004.Значение = П000070007004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070016004, ОбластьИмя) > 0 Тогда
			
			П000070001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070001004.Значение);
			П000070003004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070003004.Значение);
			П000070005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070005004.Значение);
			П000070006004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070006004.Значение);
			П000070007004 = Форма.ТабличныйДокумент.Области.П000070007004.Значение;
			П000070014004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070014004.Значение);
			П000070015004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070015004.Значение);

			П000070016004 = П000070001004 + П000070003004 + П000070005004
						  + П000070006004 + П000070007004 + П000070014004
						  + П000070015004;
						  
			Форма.ТабличныйДокумент.Области.П000070016004.Значение = П000070016004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070008005, ОбластьИмя) > 0 Тогда
			
			П000070009005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070009005.Значение);
			П000070010005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070010005.Значение);
			
			П000070008005 = П000070009005 + П000070010005;
			Форма.ТабличныйДокумент.Области.П000070008005.Значение = П000070008005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011005, ОбластьИмя) > 0 Тогда
		
			П000070012005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070012005.Значение);
			П000070013005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070013005.Значение);
			
			П000070011005 = П000070012005 + П000070013005;
			Форма.ТабличныйДокумент.Области.П000070011005.Значение = П000070011005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070007005, ОбластьИмя) > 0 Тогда
			
			П000070008005 = Форма.ТабличныйДокумент.Области.П000070008005.Значение;
			П000070011005 = Форма.ТабличныйДокумент.Области.П000070011005.Значение;
			
			П000070007005 = П000070008005 + П000070011005;
			Форма.ТабличныйДокумент.Области.П000070007005.Значение = П000070007005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070014005, ОбластьИмя) > 0 Тогда
			
			П000070014004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070014004.Значение);
			
			П000070014005 = П000070014004;
			Форма.ТабличныйДокумент.Области.П000070014005.Значение = П000070014005;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070016005, ОбластьИмя) > 0 Тогда
			
			П000070001005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070001005.Значение);
			П000070003005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070003005.Значение);
			П000070015005 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000070015005.Значение);
			П000070007005 = Форма.ТабличныйДокумент.Области.П000070007005.Значение;
			П000070014005 = Форма.ТабличныйДокумент.Области.П000070014005.Значение;
		
			П000070016005 = П000070001005 + П000070003005 
						  + П000070007005 + П000070014005
						  + П000070015005;
			Форма.ТабличныйДокумент.Области.П000070016005.Значение = П000070016005;
			
		КонецЕсли;
		
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_4" Тогда
				
		//Раздел2_4
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003007, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003007.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005007.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003008, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003008.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005008.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003010, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003010.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005010.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003011, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003011.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005011.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003016, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003016.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004016.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005016.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003017, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003017.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004017.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005017.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080001003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080001003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001012.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001015.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001018.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080002003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080002003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002015.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002018.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003015.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080004003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004015.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080005003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080005003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005015.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080006003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080006003.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006015.Значение);
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080001004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080001004.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001013.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001016.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001019.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080002004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080002004.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002016.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002019.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003004.Значение = Форма.ТабличныйДокумент.Области.П000080003007.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003010.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003016.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080004004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080004004.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004016.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080005004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080005004.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005016.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080006004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080006004.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006007.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006010.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006016.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080001005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080001005.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001014.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001017.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001020.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080002005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080002005.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002017.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002020.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080003005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080003005.Значение = Форма.ТабличныйДокумент.Области.П000080003008.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003011.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003017.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080004005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080004005.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080004017.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080005005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080005005.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080005017.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080006005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080006005.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006017.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007003.Значение = Форма.ТабличныйДокумент.Области.П000080001003.Значение
																   + Форма.ТабличныйДокумент.Области.П000080002003.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003003.Значение
																   + Форма.ТабличныйДокумент.Области.П000080006003.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007005.Значение = Форма.ТабличныйДокумент.Области.П000080001005.Значение
																   + Форма.ТабличныйДокумент.Области.П000080002005.Значение
																   + Форма.ТабличныйДокумент.Области.П000080003005.Значение
																   + Форма.ТабличныйДокумент.Области.П000080006005.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007006, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007006.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003006.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006006.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007008, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007008.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001008.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002008.Значение)
																   + Форма.ТабличныйДокумент.Области.П000080003008.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006008.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007009, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007009.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003009.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006009.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007011, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007011.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001011.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002011.Значение)
																   + Форма.ТабличныйДокумент.Области.П000080003011.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006011.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007012, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007012.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001012.Значение);
			
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007014, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007014.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001014.Значение);
			
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007015, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007015.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001015.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002015.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080003015.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006015.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007017, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007017.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001017.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002017.Значение)
																   + Форма.ТабличныйДокумент.Области.П000080003017.Значение
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080006017.Значение);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007018, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007018.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001018.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002018.Значение);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080007020, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080007020.Значение = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080001020.Значение)
																   + РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000080002020.Значение);
		КонецЕсли;

		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел3_1" Тогда
		
		// РАЗДЕЛ III
		
		//ТАБЛИЦА 6
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000090001011, ОбластьИмя) > 0 Тогда
			
			П000090001007 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000090001007.Значение);
			П000090001008 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000090001008.Значение);
			П000090001010 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000090001010.Значение);
			
			П000090001011 = П000090001007 * (1 - П000090001008 / 100 + П000090001010 / 100);
			Форма.ТабличныйДокумент.Области.П000090001011.Значение = П000090001011;
			
		КонецЕсли;

		//ТАБЛИЦА 7
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100002003, ОбластьИмя) > 0 Тогда
			
			П000100002001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100002001.Значение);
			П000100002101 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100002101.Значение);
			П000100002201 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100002201.Значение);
			П000100002301 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100002301.Значение);
			
			П000100002003 = П000100002001 + П000100002101 + П000100002201 + П000100002301;
			Форма.ТабличныйДокумент.Области.П000100002003.Значение = П000100002003;

		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100010003, ОбластьИмя) > 0 Тогда
			
			П000100010001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100010001.Значение);
			П000100010101 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100010101.Значение);
			П000100010201 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100010201.Значение);
			П000100010301 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100010301.Значение);
			
			П000100010003 = П000100010001 + П000100010101 + П000100010201 + П000100010301;
			Форма.ТабличныйДокумент.Области.П000100010003.Значение = П000100010003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100011003, ОбластьИмя) > 0 Тогда
			
			П000100011001 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100011001.Значение);
			П000100011101 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100011101.Значение);
			П000100011201 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100011201.Значение);
			П000100011301 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100011301.Значение);

			П000100011003 = П000100011001 + П000100011101 + П000100011201 + П000100011301;
			Форма.ТабличныйДокумент.Области.П000100011003.Значение = П000100011003;

		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100007003, ОбластьИмя) > 0 Тогда

			П000100001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100001003.Значение);
			П000100002003 = Форма.ТабличныйДокумент.Области.П000100002003.Значение;
			П000100003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100003003.Значение);
			П000100004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100004003.Значение);
			П000100005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100005003.Значение);
			П000100006003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100006003.Значение);
			
			П000100007003 = П000100001003 + П000100002003 + П000100003003
						  + П000100004003 + П000100005003 + П000100006003;
			Форма.ТабличныйДокумент.Области.П000100007003.Значение = П000100007003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100013003, ОбластьИмя) > 0 Тогда
			
			П000100009003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100009003.Значение);
			П000100012003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000100012003.Значение);
			П000100010003 = Форма.ТабличныйДокумент.Области.П000100010003.Значение;
			П000100011003 = Форма.ТабличныйДокумент.Области.П000100011003.Значение;
			
			П000100013003 = П000100009003 + П000100010003 + П000100011003 + П000100012003;
			Форма.ТабличныйДокумент.Области.П000100013003.Значение = П000100013003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100008003, ОбластьИмя) > 0 Тогда
			
			П000100013003 = Форма.ТабличныйДокумент.Области.П000100013003.Значение;
            П000100007003 = Форма.ТабличныйДокумент.Области.П000100007003.Значение;

			П000100008003 = ?(П000100013003 > П000100007003, П000100013003 - П000100007003, 0);
			Форма.ТабличныйДокумент.Области.П000100008003.Значение = П000100008003;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000100014003, ОбластьИмя) > 0 Тогда
			
			П000100013003 = Форма.ТабличныйДокумент.Области.П000100013003.Значение;
            П000100007003 = Форма.ТабличныйДокумент.Области.П000100007003.Значение;
			
			П000100014003 = ?(П000100007003 > П000100013003, П000100007003 - П000100013003, 0);
			Форма.ТабличныйДокумент.Области.П000100014003.Значение = П000100014003;
			
		КонецЕсли;
		
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел3_2" Тогда
				
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000110010004, ОбластьИмя) > 0 Тогда
			
			П000110001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000110001004.Значение);
			П000110004004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000110004004.Значение);
			П000110007004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000110007004.Значение);
			П000110009004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000110009004.Значение);
			
			П000110010004 = П000110001004 + П000110004004 + П000110007004 + П000110009004;
			Форма.ТабличныйДокумент.Области.П000110010004.Значение = П000110010004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000120003003, ОбластьИмя) > 0 Тогда

			П000120001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120001003.Значение);
			П000120002003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120002003.Значение);
			
			П000120003003 = П000120001003 + П000120002003;
			Форма.ТабличныйДокумент.Области.П000120003003.Значение = П000120003003;

		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000120006003, ОбластьИмя) > 0 Тогда
			
			П000120003003 = Форма.ТабличныйДокумент.Области.П000120003003.Значение;
			П000120004003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120004003.Значение);
			П000120005003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120005003.Значение);
			
			П000120006003 = П000120003003 - П000120004003 + П000120005003;
			Форма.ТабличныйДокумент.Области.П000120006003.Значение = П000120006003;

		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000120003004, ОбластьИмя) > 0 Тогда
			
			П000120001004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120001004.Значение);
			П000120002004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120002004.Значение);
			
			П000120003004 = П000120001004 + П000120002004;
			Форма.ТабличныйДокумент.Области.П000120003004.Значение = П000120003004;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000120006004, ОбластьИмя) > 0 Тогда
			
			П000120003004 = Форма.ТабличныйДокумент.Области.П000120003004.Значение;
			П000120004004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120004004.Значение);
			П000120005004 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000120005004.Значение);
			
			П000120006004 = П000120003004 - П000120004004 + П000120005004;
			Форма.ТабличныйДокумент.Области.П000120006004.Значение = П000120006004;
		
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000130004003, ОбластьИмя) > 0 Тогда
			
			П000130001003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000130001003.Значение);
			П000130003003 = РегламентированнаяОтчетностьКлиентСервер.ОкруглитьЧислоПоФормату(Форма, Форма.ТабличныйДокумент.Области.П000130003003.Значение);

			П000130004003 = П000130001003 + П000130003003;
			Форма.ТабличныйДокумент.Области.П000130004003.Значение = П000130004003;
			
		КонецЕсли;

	КонецЕсли;

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

&НаКлиенте
Процедура ДобавитьСтраницу(Команда)
		
	ВставитьДополнительнуюСтраницуНаСервере(Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
	Обл = ТабличныйДокумент.Области["УдалитьСтраницуЗначок"];
	Обл.Гиперссылка = Истина;
	Обл.Текст = "х";
	Обл = ТабличныйДокумент.Области["УдалитьСтраницу"];
	Обл.Гиперссылка = Истина;
	Обл.Текст = "Удалить страницу";
		
КонецПроцедуры

&НаСервере
Процедура ВставитьДополнительнуюСтраницуНаСервере(ИмяТекущейСтраницыПанели = Неопределено )
	
	ИзменитьТаблицуПараметровАвтозаполнения(1, ИмяТекущейСтраницыПанели);

	РегламентированнаяОтчетность.ВставитьДополнительнуюСтраницуНаСервере(ЭтаФорма, ИмяТекущейСтраницыПанели);
	РегламентированнаяОтчетность.ПослеВставкиДополнительнойСтраницыНаСервере(ЭтаФорма, ИмяТекущейСтраницыПанели);
	
	СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Ложь;
	
	ИзменитьТаблицуПараметровАвтозаполнения(1, "Раздел2_2");

	ВставитьДополнительнуюСтраницуРаздела2_2();
	
КонецПроцедуры

&НаСервере
Процедура ВставитьДополнительнуюСтраницуРаздела2_2()
	
    //Вставляем связанную страницу раздела 2.2
	
	Перем ТаблицаСтраницРаздела;
	Перем СтруктураДанныхДопСтрокРаздела;
   	
	Если Не мСтруктураМногостраничныхРазделов.Свойство("Раздел2_2", ТаблицаСтраницРаздела) Тогда
		Возврат;
	Иначе
		МаксКолвоЭкз=РегламентированнаяОтчетностьКлиентСервер.ПолучитьСвойствоРаздела(ЭтаФорма, "Раздел2_2", "МаксКолвоЭкз", 0);
		Если МаксКолвоЭкз<>0 И ЭтаФорма[мСтруктураМногостраничныхРазделов["Раздел2_2"]].Количество() >= МаксКолвоЭкз Тогда
			
			ЗаголовокСтраницы = "Раздел2_2";
			
			Сообщение = Новый СообщениеПользователю;
			
			Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='В разделе ""%1"" максимальное количество экземпляров страниц равно %2.'"), ЗаголовокСтраницы, МаксКолвоЭкз);
			
			Сообщение.Сообщить();
                
			Возврат;
			
		КонецЕсли;
	КонецЕсли;
		
	ТаблицаСтраницРаздела = ЭтаФорма[ТаблицаСтраницРаздела];
	
	// Добавляем новую страницу
	СтрНоваяСтраница = ТаблицаСтраницРаздела.Добавить();
	СтрНоваяСтраница.Данные.Добавить(Новый Структура);
	Для Каждого ЭлементСтруктуры Из ТаблицаСтраницРаздела[0].Данные[0].Значение Цикл;
		СтрНоваяСтраница.Данные[0].Значение.Вставить(ЭлементСтруктуры.Ключ, 0);
	КонецЦикла;
	СтрНоваяСтраница.Данные[0].Пометка = Ложь;
	
	// Присваиваем представление по умолчанию
	СтрНоваяСтраница.АвтоматическоеПредставление = Истина;
	
	// Ставим признак активной страницы
	СтрНоваяСтраница.АктивнаяСтраница   = Ложь;
			
	Модифицированность = Истина;
	
	ДеревоРазделовОтчета = РазделыОтчета.ПолучитьЭлементы();
	НомерДобавляемойСтраницы = ДеревоРазделовОтчета[6].ПолучитьЭлементы().Количество() + 1;

	ДобавляемаяСтраница = ДеревоРазделовОтчета[6].ПолучитьЭлементы().Добавить();
	ДобавляемаяСтраница.КолонкаРазделыОтчета              = "Стр. " + НомерДобавляемойСтраницы;
	ДобавляемаяСтраница.КолонкаРазделыОтчетаСокрНаим      = "Раздел2_2";
	ДобавляемаяСтраница.КолонкаНомерСтраницыРазделаОтчета = НомерДобавляемойСтраницы;
	ДобавляемаяСтраница.ИндексКартинки                    = 1;
	ДобавляемаяСтраница.РазделМногостраничный             = Истина;
	ДобавляемаяСтраница.РазделМногострочный               = Ложь;
	
	НомерСтраницы = 0;
	Для Каждого СтрокаТаблицы Из ТаблицаСтраницРаздела Цикл

		НомерСтраницы = НомерСтраницы + 1;
		СтрокаТаблицы.Представление = "Лист N " + Строка(НомерСтраницы);
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьСтраницу(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьСтраницуЗавершение", ЭтотОбъект);
	ПоказатьВопрос(ОписаниеОповещения , НСтр("ru='Удалить текущую страницу?'"), РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да);
	
КонецПроцедуры

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

&НаСервере
Процедура УдалитьДополнительнуюСтраницуНаСервере(ИмяТекущейСтраницыПанели = Неопределено, НомерУдаляемойСтраницы)
	
	УдалитьДополнительнуюСтраницу(ЭтаФорма, ИмяТекущейСтраницыПанели, НомерУдаляемойСтраницы);
			
	СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Ложь;
		
КонецПроцедуры

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

	ТаблицаСтраницРаздела = Форма[ТаблицаСтраницРаздела];
	
	// Если одна страница в разделе, то ее удалять нельзя
	Если ТаблицаСтраницРаздела.Количество() = 1 Тогда
		Возврат;
	КонецЕсли;

	ИмяТекТабличногоПоля     = "ТабличныйДокумент";
	ТекТабличноеПоле         = Форма[ИмяТекТабличногоПоля];

	СтрТаблицаСтраницы = ТаблицаСтраницРаздела.НайтиСтроки(Новый Структура("АктивнаяСтраница", Истина));

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

		Если КолвоДопСтраниц > 0 Тогда
			СтрТаблицаСтраницыЗамена = ТаблицаСтраницРаздела[Мин(ИндексТекСтрока, КолвоДопСтраниц - 1)];

			// Для страниц многостраничного раздела, содержащих многострочную часть,
			// восстанавливаем структуру дополнительных строк.
			//
			// Предварительно проверим, содержит ли страница многострочные части

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

			Если КолвоМногострочныхБлоков > 0 Тогда
				
				ДанныеДопСтрокРаздела = СтрТаблицаСтраницыЗамена.ДанныеДопСтрок;
				
				Если (ТипЗнч(ДанныеДопСтрокРаздела) = Тип("СписокЗначений"))
					И (ДанныеДопСтрокРаздела.Количество() > 0)
					И (ДанныеДопСтрокРаздела[0].Представление = "ДанныеФормыКоллекцияТаблицаДопСтрокРаздела") Тогда
					
					ДанныеДопСтрокРаздела = ДанныеДопСтрокРаздела[0].Значение;
					
				Иначе
					
					ДанныеДопСтрокРаздела = Неопределено;
					
				КонецЕсли;
				
			Иначе
				ДанныеДопСтрокРаздела = Неопределено;
			КонецЕсли;

			Если ДанныеДопСтрокРаздела <> Неопределено Тогда

				Если (КолвоМногострочныхБлоков > 0) И (НЕ СохранятьМногострКакТЗ) Тогда

					Для Каждого ГруппаСтрок Из ДанныеДопСтрокРаздела Цикл
						ИмяГруппыДопСтрок = ГруппаСтрок.Ключ;
						ДанныеГруппыСтрок = ГруппаСтрок.Значение;
						
						ПромТаблицаГруппыСтрок = Форма["Хранилище" + ИмяГруппыДопСтрок].Добавить().Таблица;
						
						КопироватьДанныеФормы(ДанныеГруппыСтрок, ПромТаблицаГруппыСтрок);

						// Заменяем таблицу значений с данными текущей страницы.
						КопироватьДанныеФормы(ПромТаблицаГруппыСтрок, Форма[ИмяГруппыДопСтрок]);
						
						// Выводим в табличный документ строки многострочной группы
						Форма.ВывестиРазделВТабличныйДокументНаСервере(ИмяГруппыДопСтрок, ПромТаблицаГруппыСтрок);
						
					КонецЦикла;

				ИначеЕсли (КолвоМногострочныхБлоков > 0) И (СохранятьМногострКакТЗ) Тогда

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

				КонецЕсли;
				
			КонецЕсли;

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

			Для Каждого Элемент Из СтруктураДанныхСтраницыЗамена Цикл
				ИмяПоказателя      = Элемент.Ключ;
				ЗначениеПоказателя = Элемент.Значение;

				Попытка
					ТекТабличноеПоле.Области[ИмяПоказателя].Значение = ЗначениеПоказателя;
				Исключение
				КонецПопытки;

			КонецЦикла;
			
			СтрТаблицаСтраницыЗамена.АктивнаяСтраница = Истина;
			
		КонецЕсли;
        				
		Форма.РасчетНаСервере(ИмяТекущейСтраницыПанели);
		
		Форма.Модифицированность = Истина;

	КонецЕсли;
	
	
	//Удаляем сцепленную страницу раздела 2.2
	Если Не Форма.мСтруктураМногостраничныхРазделов.Свойство("Раздел2_2", ТаблицаСтраницРаздела) Тогда
		Возврат;
	КонецЕсли;

	ТаблицаСтраницРаздела = Форма[ТаблицаСтраницРаздела];
	
	// Если одна страница в разделе, то ее удалять нельзя
	Если ТаблицаСтраницРаздела.Количество() = 1 Тогда
		Возврат;
	КонецЕсли;
	
	УдаляемаяСтраница = ТаблицаСтраницРаздела[НомерУдаляемойСтраницы - 1];

	ТаблицаСтраницРаздела.Удалить(УдаляемаяСтраница);
	
	НомерСтраницы = 0;
	Для Каждого СтрокаТаблицы Из ТаблицаСтраницРаздела Цикл

		НомерСтраницы = НомерСтраницы + 1;
		СтрокаТаблицы.Представление = "Лист N " + Строка(НомерСтраницы);
		
	КонецЦикла;
   	
КонецПроцедуры

&НаСервере
Процедура ИзменитьТаблицуПараметровАвтозаполнения(Парам, Лист = Неопределено)
	
	Перем МассивВариантовЗаполненияСтраниц;
	Перем ТаблицаВариантыЗаполнения;
	Перем ТаблицаСтраницРаздела;
	
	ИмяТекущейСтраницыПанели = Лист;

	Если Не мСтруктураВариантыЗаполнения.Свойство(ИмяТекущейСтраницыПанели, МассивВариантовЗаполненияСтраниц) Тогда
		Возврат;
	КонецЕсли;
	
	МассивВариантовЗаполненияСтраниц = ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяТекущейСтраницыПанели];

	НомерТекущейСтраницы = 1;
    
	Если мСтруктураМногостраничныхРазделов.Свойство(ИмяТекущейСтраницыПанели, ТаблицаСтраницРаздела) Тогда
		
		ТаблицаСтраницРаздела = ЭтаФорма[ТаблицаСтраницРаздела];
		
		// Раздел является многостраничным, определим активную страницу раздела:
		СтрТаблицаСтраницы = ТаблицаСтраницРаздела.НайтиСтроки(Новый Структура("АктивнаяСтраница", Истина));
		Если СтрТаблицаСтраницы.Количество() > 0 Тогда
			НомерТекущейСтраницы = ТаблицаСтраницРаздела.Индекс(СтрТаблицаСтраницы[0]) + 1;
		КонецЕсли;
	КонецЕсли;

	Если Парам = 1 Тогда // создаем таблицу параметров автозаполнения ячеек добавленного листа

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

		Если НоваяТаблицаВариантыЗаполнения <> Неопределено Тогда
															
			ТаблВариантов = МассивВариантовЗаполненияСтраниц.Добавить();	
			
			Если ТипЗнч(НоваяТаблицаВариантыЗаполнения) = Тип("ДанныеФормыКоллекция") Тогда
				КопироватьДанныеФормы(НоваяТаблицаВариантыЗаполнения, ТаблВариантов.ТаблицаВариантовЗаполнения);
			Иначе
				ЗначениеВДанныеФормы(НоваяТаблицаВариантыЗаполнения, ТаблВариантов.ТаблицаВариантовЗаполнения);
			КонецЕсли;

		КонецЕсли;

	Иначе // Парам = -1. Удаляем таблицу параметров автозаполнения ячеек удаленного листа

		Если МассивВариантовЗаполненияСтраниц.Количество() > 1 Тогда 
			МассивВариантовЗаполненияСтраниц.Удалить(НомерТекущейСтраницы - 1);
		КонецЕсли;

	КонецЕсли;
                      		
КонецПроцедуры

&НаКлиенте
Процедура Очистить(ВыполняемоеОповещение = Неопределено) Экспорт

	РегламентированнаяОтчетностьКлиент.Очистить(ЭтаФорма, ВыполняемоеОповещение);
		
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьОтчет(Команда)
	
	РегламентированнаяОтчетностьКлиент.МеханизмыОчисткиРегламентированныхОтчетов(ЭтаФорма, "ОчиститьВесьОтчет");
	
КонецПроцедуры

&НаСервере
Процедура ОчиститьНаСервере() Экспорт
	
	ОргИсполнитель = СтруктураДанныхРаздел3_2.ОргИсполнитель;
	СтруктураДанныхРаздел1_1.Очистить();
	СтруктураДанныхРаздел1_2.Очистить();
	СтруктураДанныхРаздел1_3.Очистить();
	СтруктураДанныхРаздел1_4.Очистить();
	СтруктураДанныхРаздел2_4.Очистить();
	СтруктураДанныхРаздел3_1.Очистить();
	СтруктураДанныхРаздел3_2.Очистить();
	ТаблицаСтраницыРаздел21.Очистить();
	ТаблицаСтраницыРаздел22.Очистить();

	ИнициализацияМногостраничныхРазделов();
		
	ЗаполнитьПустыеСтруктурыДанных();

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

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

&НаКлиенте
Процедура ОчиститьТекущуюСтраницуЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Раздел3_2" Тогда
		ДатаПодписи = Неопределено;
		ТабличныйДокумент.Области.ДатаОтчета.Значение = ДатаПодписи;
	ИначеЕсли СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Титульный" Тогда
		НомерКорректировки = 0;
		СтруктураРеквизитовФормы.ВидДокумента = 0;
		ТабличныйДокумент.Области.НомерКорректировки.Значение = НомерКорректировки;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

			РегламентированнаяОтчетностьКлиентСервер.ОчиститьПоказателиОтчетаЗаполняемыеИзИБ(ЭтаФорма, ИмяСтраницы);

			УдалятьсяВсеДопЭкземпляры = Истина;
			
		Иначе

			ОчиститьТабличноеПолеНаКлиенте(ИмяСтраницы);

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

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

&НаСервере
Процедура УстановитьФорматВыводаВПоляхВводаНаСервере(НаимРаздела)
	
	УстановитьФорматВыводаВПоляхВвода(ЭтаФорма, НаимРаздела);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьФорматВыводаВПоляхВвода(Форма, НаимРаздела) Экспорт
	Перем СтруктураГруппы;
    	
	Если Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1 Тогда
		Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 0";
	ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000 Тогда
		Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 3";
	ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000000 Тогда
		Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 6";
	КонецЕсли;

	ИмяПоляТаблДокументаСтароеЗначение = "";
	Для Каждого СтрПоказатели Из Форма.мТаблицаСоставПоказателей Цикл

		ИмяПоляТаблДокумента		= СокрП(СтрПоказатели.ИмяПоляТаблДокумента);
		КодПоказателя				= СокрП(СтрПоказатели.КодПоказателяПоСоставу);
		ПризнМногострочность		= СокрП(СтрПоказатели.ПризнМногострочности);
		КодПоказателяПоСтруктуре	= СокрП(СтрПоказатели.КодПоказателяПоСтруктуре);
		КодПоказателяПоФорме		= СокрП(СтрПоказатели.КодПоказателяПоФорме);
		ТипДанныхПоказателя			= СокрП(СтрПоказатели.ТипДанныхПоказателя);
		ИмяПоказателя				= ?(ПустаяСтрока(СтрПоказатели.КодПоказателяПоФорме), КодПоказателя, КодПоказателяПоФорме);

		Если НаимРаздела <> ИмяПоляТаблДокумента Тогда
			Продолжить;
		КонецЕсли;
		
		Если ПустаяСтрока(КодПоказателя) ИЛИ КодПоказателя = "===" ИЛИ КодПоказателя = "###" ИЛИ Лев(КодПоказателя, 2) = "//" Тогда
			Продолжить;
		КонецЕсли;

		Если ТипДанныхПоказателя = "Е" И ПустаяСтрока(КодПоказателяПоСтруктуре) Тогда
			ТекТабличноеПоле = Форма["ТабличныйДокумент"];
			Если ПризнМногострочность <> "/" Тогда
				ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя];
				ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
				ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
				Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
					ЧислоЕЗнак = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность,ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
				КонецЕсли;
				ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
				ФорматируемаяОбласть.Формат = Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
			Иначе
				// определяем кол-во строк многострочного раздела и применяем процедуру форматирования к данной графе по всем строкам
				НСтр = 1;
				Пока ТекТабличноеПоле.Области.Найти(ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")) <> Неопределено Цикл
					ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")];
					ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
					ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
					Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
						ЧислоЕЗнак = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность,ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
					КонецЕсли;
					ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
					ФорматируемаяОбласть.Формат = Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
					НСтр = НСтр + 1;
				КонецЦикла;
			КонецЕсли;
		КонецЕсли;
		
		ИмяПоляТаблДокументаСтароеЗначение = ИмяПоляТаблДокумента;
	КонецЦикла;

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

&НаКлиенте
Процедура ОткрытьФормуНастроек(Команда)
	
	ОткрытьФормуВыбораСтраниц("ВыбратьДляНастройки");
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПослеСменыЕдИзмеренияИТочности()
	
	УстановитьФорматВыводаВПоляхВводаНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела);

	РасчетНаКлиенте(СтруктураРеквизитовФормы.НаимТекущегоРаздела);
	
	Модифицированность = Истина;

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

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

&НаКлиенте
Процедура АктивизироватьЯчейку(Ячейка) Экспорт
	
	РегламентированнаяОтчетностьКлиент.АктивизироватьЯчейку(ЭтаФорма, Ячейка);
		
КонецПроцедуры

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

&НаКлиенте
Процедура ПоказатьБланкЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;

	Команда = ДополнительныеПараметры.Команда;
		
	Печать(Команда.Имя);
	
КонецПроцедуры

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

&НаСервере
Функция ПечатьНаСервере(ВидПечати)
		
	Если НЕ РегламентированнаяОтчетность.ПринтерДоступен() Тогда
		
		Сообщение = Новый СообщениеПользователю;

		Сообщение.Текст = НСтр("ru='Перед формированием печатных форм необходимо определить в системе принтер и задать его в качестве используемого по умолчанию!'");

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

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

&НаСервере
Процедура ВывестиНаПечатьЛист(Парам1, ОбщиеРеквизитыРазделов, СтрПоля = Неопределено)
	
	СоответствиеРазделовМакетам = Новый Соответствие;
	
	СоответствиеРазделовМакетам.Вставить("Титульный",    "ПечатнаяФормаОтчета2010Кв4_Титульный");
	СоответствиеРазделовМакетам.Вставить("Раздел1_1",    "ПечатнаяФормаОтчета2010Кв4_Раздел1_1");
	СоответствиеРазделовМакетам.Вставить("Раздел1_2",    "ПечатнаяФормаОтчета2010Кв4_Раздел1_2");
	СоответствиеРазделовМакетам.Вставить("Раздел1_3",    "ПечатнаяФормаОтчета2010Кв4_Раздел1_3");
	СоответствиеРазделовМакетам.Вставить("Раздел1_4",    "ПечатнаяФормаОтчета2010Кв4_Раздел1_4");
	СоответствиеРазделовМакетам.Вставить("Раздел2_1",    "ПечатнаяФормаОтчета2010Кв4_Раздел2_1");
	СоответствиеРазделовМакетам.Вставить("Раздел2_2",    "ПечатнаяФормаОтчета2010Кв4_Раздел2_2");
	СоответствиеРазделовМакетам.Вставить("Раздел2_4",    "ПечатнаяФормаОтчета2010Кв4_Раздел2_4");
	СоответствиеРазделовМакетам.Вставить("Раздел3_1",    "ПечатнаяФормаОтчета2010Кв4_Раздел3_1");
	СоответствиеРазделовМакетам.Вставить("Раздел3_2",    "ПечатнаяФормаОтчета2010Кв4_Раздел3_2");
	
	ПечатнаяФормаРаздела = СоответствиеРазделовМакетам[Парам1.ИмяСтраницы];
		
	МакетПечатнойФормы = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(ПечатнаяФормаРаздела);
	МакетПечатнойФормы.ПолеСверху = 5;
	МакетПечатнойФормы.ПолеСправа = 5;
	МакетПечатнойФормы.ПолеСнизу = 5;
	МакетПечатнойФормы.ПолеСлева = 5;
		
	ЗаполнитьПечатнуюФорму(Парам1, МакетПечатнойФормы, ОбщиеРеквизитыРазделов);
		
	ТабличныйДокумент.Очистить();
	ТабличныйДокумент.Вывести(МакетПечатнойФормы);
	ЗаполнитьЗначенияСвойств(ТабличныйДокумент, МакетПечатнойФормы, СтрПоля, "Макет");
		
	РегламентированнаяОтчетность.ВывестиНаПечатьЛистОбщая(ЭтаФорма.Заголовок, Парам1, ТабличныйДокумент, СтруктураРеквизитовФормы.мПечатныеФормы);
		
КонецПроцедуры

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

&НаСервере
Процедура ВывестиНаПечатьДополнительныеСтраницы(СтруктураПараметровСтраницы, ОбщиеРеквизитыРазделов, СтрокаУровня1)
	Перем ИмяСтраницы; // имя страницы основной панели формы;
	Перем ТаблицаСтраницРаздела;
	
	СтруктураПараметровСтраницы.Свойство("ИмяСтраницыПанели", ИмяСтраницы);

	Если Не мСтруктураМногостраничныхРазделов.Свойство(ИмяСтраницы, ТаблицаСтраницРаздела) Тогда
		Возврат;
	КонецЕсли;
	
	ТаблицаСтраницРаздела = ЭтаФорма[ТаблицаСтраницРаздела];

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Заголовок = ЗаголовокРегламентированногоОтчета(СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета, СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
	
	ОргСтр = " (" + СтруктураРеквизитовФормы.Организация + ")";
	Если СтрНайти(Заголовок, ОргСтр) = 0 Тогда
		Заголовок = Заголовок + ОргСтр;
	КонецЕсли;
	
	Заголовок = Заголовок + ?(СтрНайти(ЭтаФорма.ИмяФормы, "Внешний") > 0, " - внешний отчет", "");
	
	ПодключитьОбработчикОжидания("ВыполнитьПроверкуПередОткрытием", 0.1, Истина);
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
		
		Если РазделыОтчета.ПолучитьЭлементы().Количество() > 0 Тогда
			
			Элементы.РазделыОтчета.ТекущаяСтрока = РазделыОтчета.ПолучитьЭлементы()[0].ПолучитьИдентификатор();
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПриОткрытииЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Модифицированность = Ложь;
		Закрыть();
		Возврат;
	КонецЕсли;

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	РегламентированнаяОтчетностьКлиент.ПередЗакрытиемРегламентированногоОтчета(ЭтаФорма, Отказ, СтандартнаяОбработка, ЗавершениеРаботы, ТекстПредупреждения);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗавершениеРаботы Тогда
				
		Возврат;
		
	КонецЕсли;
	
	ПриЗакрытииНаСервере();
		
КонецПроцедуры

&НаСервере
Процедура ПриЗакрытииНаСервере()
			
	РегламентированнаяОтчетность.ПриЗакрытииРегламентированногоОтчета(ЭтаФорма);

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

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

&НаКлиенте
Процедура Выгрузить(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьЗавершение", ЭтотОбъект);

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

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

&НаКлиенте
Процедура ЗагрузитьИзФайлаОтчет() Экспорт
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаОтчетЗавершение", ЭтотОбъект);
	
	Если Модифицированность Тогда
		СохранитьНаКлиенте(,ОписаниеОповещения);
	Иначе
		ВыполнитьОбработкуОповещения(ОписаниеОповещения);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ВыгрузитьЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ВыгрузитьОтчет();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьОтчет() Экспорт
		
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьОтчетЗавершение", ЭтотОбъект);
	
	Если Модифицированность Тогда
		СохранитьНаКлиенте(,ОписаниеОповещения);
	Иначе
		ВыполнитьОбработкуОповещения(ОписаниеОповещения);
	КонецЕсли;
	
КонецПроцедуры

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

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

			Сообщение.Текст = НСтр("ru='Перед выгрузкой необходимо установить единицу измерения ""в рублях"".'");

			Сообщение.Сообщить();
			
			Возврат Ложь;
			
		КонецЕсли;
		Если СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения <> 2 Тогда
			
			Сообщение = Новый СообщениеПользователю;

			Сообщение.Текст = НСтр("ru='Перед выгрузкой необходимо установить точность ""2"".'");

			Сообщение.Сообщить();
			
			Возврат Ложь;
			
		КонецЕсли;
	КонецЕсли;
	
	Если НЕ УниверсальнаяВыгрузкаНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции

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

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

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

	Для Каждого Раздел Из мСтруктураМногостраничныхРазделов Цикл
		Для Каждого Страница Из ЭтаФорма[Раздел.Значение] Цикл
			Страница.АктивнаяСтраница = Ложь;
		КонецЦикла;
	КонецЦикла;

	ТекущийРаздел = Неопределено;
	Если мСтруктураМногостраничныхРазделов.Свойство(СтруктураРеквизитовФормы.НаимТекущегоРаздела, ТекущийРаздел) Тогда
		Если ИндексАктивнойСтраницы <> Неопределено Тогда
			ЭтаФорма[ТекущийРаздел][ИндексАктивнойСтраницы].АктивнаяСтраница = Истина;
		КонецЕсли;
	КонецЕсли;

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

	мДанныеОтчета.ПолеТабличногоДокументаТитульный.Вставить("КодОрганаФСС", КодОрганаФСС);

	// восстанавливаем  документ, подтверждающий полномочия представителя;
	СохрСтруктура.Свойство("ДокументУпПред", мСтруктураДокУпПред);
	
КонецФункции

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

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

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

&НаСервере
Функция ИзвлечьСтруктуруXML()
	
	ДеревоСтруктуры = Новый ДеревоЗначений;
	ДеревоСтруктуры.Колонки.Добавить("Код");
	ДеревоСтруктуры.Колонки.Добавить("Тип");
	ДеревоСтруктуры.Колонки.Добавить("Формат");
	ДеревоСтруктуры.Колонки.Добавить("МинРазмерность");
	ДеревоСтруктуры.Колонки.Добавить("МаксРазмерность");
	ДеревоСтруктуры.Колонки.Добавить("Обязательность");
	ДеревоСтруктуры.Колонки.Добавить("Многостраничность");
	ДеревоСтруктуры.Колонки.Добавить("Многострочность");
	ДеревоСтруктуры.Колонки.Добавить("Раздел");
	ДеревоСтруктуры.Колонки.Добавить("Ключ");
	ДеревоСтруктуры.Колонки.Добавить("Условие");
	ДеревоСтруктуры.Колонки.Добавить("ЗначениеПоУмолчанию");
	ДеревоСтруктуры.Колонки.Добавить("Значение");
	ДеревоСтруктуры.Колонки.Добавить("Представление");
	ДеревоСтруктуры.Колонки.Добавить("Показатели");
	
	Макет = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("СхемаВыгрузкиXML");
	ВысотаТаблицы = Макет.ВысотаТаблицы;
	
	УчтенныеГруппы = Новый Соответствие;
	
	Для НомерСтроки = 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).Текст);
				
				УчтенныеГруппы.Вставить(НомСтр, НовСтр);
				
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	
	Возврат ДеревоСтруктуры;
	
КонецФункции

&НаСервере
Функция ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки)
	
	СтатусПроверки = Истина;
	
	ВозможныеЗначенияШифраВРазделе1 = Новый Массив;
	ВозможныеЗначенияШифраВРазделе1.Добавить("041");
	ВозможныеЗначенияШифраВРазделе1.Добавить("051");
	ВозможныеЗначенияШифраВРазделе1.Добавить("061");
	ВозможныеЗначенияШифраВРазделе1.Добавить("071");
	
	ВозможныеЗначенияШифраВРазделе2 = Новый Массив;
	ВозможныеЗначенияШифраВРазделе2.Добавить("011");
	ВозможныеЗначенияШифраВРазделе2.Добавить("021");
	ВозможныеЗначенияШифраВРазделе2.Добавить("032");
	
	Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
	
	Раздел1_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_1;
	Раздел1_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_2;
	Раздел1_3 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_3;
	
	Раздел2_1 = мДанныеОтчета.Раздел2_1;
	Раздел2_2 = мДанныеОтчета.Раздел2_2;
	
	ДанныеРаздела1 = Новый Массив;
	ДанныеРаздела1.Добавить(Раздел1_1);
	ДанныеРаздела1.Добавить(Раздел1_2);
	ДанныеРаздела1.Добавить(Раздел1_3);
	
	Если Число(ПараметрыВыгрузки.ОтчПериод) % 3 <> 0 Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "К сожалению, форматом не предусмотрена возможность выгрузки отчетов с признаком отчетного периода ""1""!", "Титульный", "ОтчПериод");
		Возврат Ложь;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.НомерСтрахователя) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан номер страхователя!", "Титульный", "ОргФССКод");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.ОргНазв) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано полное наименование организации (обособленного подразделения) или Ф.И.О. индивидуального предпринимателя!", "Титульный", "ОргНазв");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.КодФонда) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "На титульном листе не задано значение кода органа ФСС, в который представляется отчет!", "Титульный");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	// проверяем шифр в разделе 1
	Раздел1Заполнен = Истина;
	ШифрРаздел1 = СокрЛП(Раздел1_1.ШифрРаздел1);
	Если ЗначениеЗаполнено(ШифрРаздел1) И ВозможныеЗначенияШифраВРазделе1.Найти(ШифрРаздел1) = Неопределено Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задан шифр в разделе 1!", "Раздел1_1", "ШифрРаздел1");
		СтатусПроверки = Ложь;
	Иначе
		Раздел1Заполнен = НЕ ДанныеУзлаНеЗаполнены(ДеревоВыгрузки, "F4INF1", ДанныеРаздела1);
		Если Раздел1Заполнен И НЕ ЗначениеЗаполнено(ШифрРаздел1) Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано значение шифра в разделе 1!", "Раздел1_1", "ШифрРаздел1");
			СтатусПроверки = Ложь;
		КонецЕсли;
	КонецЕсли;
	
	// проверяем шифры в разделе 2
	Раздел2Заполнен = Ложь;
	ЗначенияШифра = Новый Массив;
	Для Каждого СтрРаздел2_1 Из Раздел2_1 Цикл
		
		ИндексСтраницы = Раздел2_1.Индекс(СтрРаздел2_1);
		НомерСтраницы = ИндексСтраницы + 1;
		
		ДанныеРаздел2_1 = СтрРаздел2_1.Данные[0].Значение;
		ДанныеРаздел2_2 = Раздел2_2[ИндексСтраницы].Данные[0].Значение;
		ШифрРаздел2 = СокрЛП(ДанныеРаздел2_1.ШифрРаздел2);
		
		ДанныеРаздела2 = Новый Массив;
		ДанныеРаздела2.Добавить(ДанныеРаздел2_1);
		ДанныеРаздела2.Добавить(ДанныеРаздел2_2);
		
		Если ЗначениеЗаполнено(ШифрРаздел2) И ВозможныеЗначенияШифраВРазделе2.Найти(ШифрРаздел2) = Неопределено Тогда
			Раздел2Заполнен = Истина;
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задан шифр на странице " + НомерСтраницы + " раздела 2!", "Раздел2_1", "ШифрРаздел2", НомерСтраницы);
			СтатусПроверки = Ложь;
		Иначе
			ЭкземплярРаздела2Заполнен = НЕ ДанныеУзлаНеЗаполнены(ДеревоВыгрузки, "F4INF2", ДанныеРаздела2);
			Если ЭкземплярРаздела2Заполнен Тогда
				Раздел2Заполнен = Истина;
			КонецЕсли;
			Если ЭкземплярРаздела2Заполнен И НЕ ЗначениеЗаполнено(ШифрРаздел2) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано значение шифра на странице " + НомерСтраницы + " раздела 2!", "Раздел2_1", "ШифрРаздел2", НомерСтраницы);
				СтатусПроверки = Ложь;
			КонецЕсли;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ШифрРаздел2) Тогда
			
			ИндексСтраницыСТемЖеШифром = ЗначенияШифра.Найти(ШифрРаздел2);
			Если ИндексСтраницыСТемЖеШифром <> Неопределено Тогда 
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Значение шифра на странице " + НомерСтраницы + " раздела 2 совпадает со значением на странице " + (ИндексСтраницыСТемЖеШифром + 1) + "!", "Раздел2_1", "ШифрРаздел2", НомерСтраницы);
				СтатусПроверки = Ложь;
			КонецЕсли;
			
			ЗначенияШифра.Добавить(ШифрРаздел2);
			
		КонецЕсли;
		
	КонецЦикла;
	
	Если НЕ Раздел1Заполнен И НЕ Раздел2Заполнен Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Должен быть заполнен хотя бы один из следующих разделов: Раздел I (табл. 1), Раздел I (табл. 2), Раздел I (табл. 3, 4), Раздел II (табл. 5, 6) или Раздел II (табл. 7)!", "Раздел1_1", "ШифрРаздел1_1");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Возврат СтатусПроверки;
	
КонецФункции 

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

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

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

&НаСервере
Функция СоздатьНовыйПотокXML() Экспорт
	
	ПотокXML = Новый ЗаписьXML();
	ПотокXML.УстановитьСтроку("windows-1251");
	ПотокXML.ЗаписатьОбъявлениеXML();
	ПотокXML.Отступ = Истина;
	
	ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.1""?>");
	
	Возврат ПотокXML;
	
КонецФункции

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

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

&НаСервере
Процедура ЗаполнитьСодержательнуюЧасть(ПараметрыВыгрузки, УзелРодитель)
	
	// выгружаем титульный лист
	УзелTITLE = ПолучитьПодчиненныйЭлемент(УзелРодитель, "TITLE");
	ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, УзелTITLE);
	
	Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
	Раздел1_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_1;
	Раздел1_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_2;
	Раздел1_3 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_3;
	Раздел2_1 = мДанныеОтчета.Раздел2_1;
	Раздел2_2 = мДанныеОтчета.Раздел2_2;
	Раздел2_4 = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_4;
	Раздел3_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел3_1;
	Раздел3_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел3_2;
	
	// выгружаем раздел 1
	УзелF4INF1 = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INF1");
	ЗаполнитьДаннымиУзел(Раздел1_1, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_2, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_3, УзелF4INF1);
	
	// выгружаем раздел 2 (кроме табл. 8)
	УзелF4INF2Шаблон = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INF2");
	Для Каждого СтрРаздел2_1 Из Раздел2_1 Цикл
		
		УзелУзелF4INF2 = СкопироватьУзел(УзелF4INF2Шаблон.Родитель, УзелF4INF2Шаблон);
		ЗаполнитьДаннымиУзел(СтрРаздел2_1.Данные[0].Значение, УзелУзелF4INF2);
		
		СтрРаздел2_2 = ?(Раздел2_2.Количество() >= Раздел2_1.Индекс(СтрРаздел2_1) + 1, Раздел2_2[Раздел2_1.Индекс(СтрРаздел2_1)], Неопределено);
		Если СтрРаздел2_2 <> Неопределено Тогда
			ЗаполнитьДаннымиУзел(СтрРаздел2_2.Данные[0].Значение, УзелУзелF4INF2);
		КонецЕсли;
		
	КонецЦикла;
	
	// выгружаем разделы 2 (табл. 8) и 3
	УзелF4INFO = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INFO");
	ЗаполнитьДаннымиУзел(Раздел2_4, УзелF4INFO);
	ЗаполнитьДаннымиУзел(Раздел3_1, УзелF4INFO);
	ЗаполнитьДаннымиУзел(Раздел3_2, УзелF4INFO);
	
КонецПроцедуры 

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПроверитьВыгрузку(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершение", ЭтотОбъект);

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

&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершение(Отказ, ДополнительныеПараметры) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ПроверитьВыгрузкуОтчета();
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыгрузкуОтчета()
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуОтчетаЗавершение", ЭтотОбъект);
	Если Модифицированность Тогда
		СохранитьНаКлиенте(,ОписаниеОповещения);
	Иначе
		ВыполнитьОбработкуОповещения(ОписаниеОповещения);
	КонецЕсли;
	
КонецПроцедуры

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

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

	ОбластьИмя = Область.Имя;
	
	Если СтрНайти(ОбластьИмя, "ШифрРаздел1") > 0 Тогда
		
		Шифры.Очистить();

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "";
		НовСтр.Название = "Пустое значение";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "041";
		НовСтр.Название = "Плательщики страховых взносов, указанные в п. 1 ч.2 ст. 57 Федерального закона от 24.07.2009 № 212-ФЗ";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "051";
		НовСтр.Название = "Плательщики страховых взносов, указанные в п. 2 ч.2 ст. 57 Федерального закона от 24.07.2009 № 212-ФЗ (за исключением организаций и индивидуальных предпринимателей, применяющих упрощенную систему налогообложения, уплачивающих единый налог на вмененный доход для отдельных видов деятельности, плательщиков страховых взносов, производящих выплаты и иные вознаграждения физическим лицам, являющимся инвалидами I, II, III группы";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "061";
		НовСтр.Название = "Плательщики страховых взносов, производящие выплаты и иные вознаграждения физическим лицам, являющимся инвалидами I, II, III группы";
						  
		НовСтр = Шифры.Добавить();
		НовСтр.Код = "071";
		НовСтр.Название = "Остальные плательщики страховых взносов";
		
		НовСтр = Шифры.Добавить();
		НовСтр.Код = "091";
		НовСтр.Название = "Плательщики страховых взносов, указанные в пункте 4 части 2 статьи 57 Федерального закона от 24 июля 2009 г. N 212-ФЗ";

		Шифр = Область.Значение;
		ВвестиПоказатель(Элемент, Область, "ШифрРаздел1", Ложь, "Выбор шифра", Шифры, СтандартнаяОбработка);

	ИначеЕсли СтрНайти(ОбластьИмя, "ШифрРаздел2") > 0 Тогда

		Шифры.Очистить();
		
		НовСтр = Шифры.Добавить();
		НовСтр.Код = "";
		НовСтр.Название = "Пустое значение";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "011";
		НовСтр.Название = "Единый налог, взимаемый в связи с применением упрощенной системы налогообложения";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "021";
		НовСтр.Название = "Единый налог на вмененный доход для отдельных видов деятельности";

		НовСтр = Шифры.Добавить();
		НовСтр.Код = "032";
		НовСтр.Название = "Единый сельскохозяйственный налог";
		
		Шифр = Область.Значение;
		ВвестиПоказатель(Элемент, Область, "ШифрРаздел2", Ложь, "Выбор шифра", Шифры, СтандартнаяОбработка);

	КонецЕсли;

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

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

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

&НаКлиенте
Процедура ТабличныйДокументПриИзмененииСодержимогоОбласти(Элемент, Область)
	
	// ПроцессыОбработкиДокументов
	//
	Если Элементы.ТабличныйДокумент.Защита Тогда
		
		Возврат;
		
	КонецЕсли;
	//
	// ПроцессыОбработкиДокументов
	
	Модифицированность = Истина;

	ИмяРаздела = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;

	ИмяОбласти = Область.Имя;;
	
	ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
		
	Если ПозицияПодстроки > 0 Тогда
		ИмяОбласти = Лев(ИмяОбласти, ПозицияПодстроки - 1);
	КонецЕсли;
	
	Если СтрНайти(ИмяОбласти, "НомДопРасчета") > 0 Тогда
		
		ЭтоОбластьПериода = (ИмяОбласти = "НомДопРасчета");
		ЗаполнениеПериодаОтчетаПоПриказу1385н = (КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) >= КонецГода('20111231'));
		
		Если ЭтоОбластьПериода И ЗаполнениеПериодаОтчетаПоПриказу1385н Тогда
			КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
			Если КодПериода = "03" ИЛИ КодПериода = "06"  ИЛИ КодПериода = "09" ИЛИ КодПериода = "12" Тогда
				Если ПустаяСтрока(ТабличныйДокумент.Области.НомДопРасчета.Значение) Тогда
					ТабличныйДокумент.Области.Период.Значение = КодПериода;		
				Иначе
					ТабличныйДокумент.Области.Период.Значение = "";
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	Если ИмяОбласти = "НомерКорректировки" Тогда
		НомерКорректировки = Область.Значение;
		СтруктураРеквизитовФормы.ВидДокумента = ?(НомерКорректировки = 0, 0, 1);
		РегламентированнаяОтчетностьКлиентСервер.УстановитьЗначениеОКВЭД(ДатаПодписи,
																		 СтруктураРеквизитовФормы,
																		 ТабличныйДокумент.Области.ОргКодОКВЭД.Значение);
		Модифицированность = Истина;
	ИначеЕсли ИмяОбласти = "ДатаОтчета" Тогда
		ДатаПодписи = ТабличныйДокумент.Области.ДатаОтчета.Значение;
		#Если ВебКлиент Тогда
			ДатаПодписиПриИзмененииНаСервере();
		#Иначе
			ДатаПодписиПриИзмененииНаКлиенте();
		#КонецЕсли
		Модифицированность = Истина;
	КонецЕсли;
	
	РасчетНаКлиенте(ИмяРаздела, ИмяОбласти);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЗаполнитьАвтоНаСервере()
	
	СохранитьДанныеРаздела(СтруктураРеквизитовФормы.НаимТекущегоРаздела, Ложь);
	
	ЗаполнитьПустыеСтруктурыДанных();	
	
	ПараметрыОтчета = Новый Структура();
	ПараметрыОтчета.Вставить("Организация", 		 	СтруктураРеквизитовФормы.Организация);
	ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
	ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета",  СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
	
	Контейнер = Новый Структура();
	Контейнер.Вставить("Титульный", СтруктураДанныхТитульный);
	Контейнер.Вставить("Раздел1_1", СтруктураДанныхРаздел1_1);
	Контейнер.Вставить("Раздел1_2", СтруктураДанныхРаздел1_2);
	Контейнер.Вставить("Раздел1_3", СтруктураДанныхРаздел1_3);
	Контейнер.Вставить("Раздел1_4", СтруктураДанныхРаздел1_4);
	Контейнер.Вставить("Раздел2_1", ТаблицаСтраницыРаздел21);
	Контейнер.Вставить("Раздел2_2", ТаблицаСтраницыРаздел22);
	Контейнер.Вставить("Раздел2_4", СтруктураДанныхРаздел2_4);
	Контейнер.Вставить("Раздел3_1", СтруктураДанныхРаздел3_1);
	Контейнер.Вставить("Раздел3_2", СтруктураДанныхРаздел3_2);
		
	ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
	Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
	ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
	КонецЕсли;
	ЭтаФормаИмя = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
	РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ЭтаФормаИмя, ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ПараметрыОтчета, Контейнер);
	
	ВывестиМакетВТаблДокНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела, 1);
	
	Модифицированность = Истина;
				
КонецПроцедуры

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

////////////////////////////////////////////////////////////////////////////////
// ОТПРАВКА ОТЧЕТА В ФСС

&НаКлиенте
Процедура ПроверитьВИнтернете(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВИнтернетеЗавершение", ЭтотОбъект);

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

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

//
////////////////////////////////////////////////////////////////////////////////

#Область ПанельОтправкиВКонтролирующиеОрганы

&НаКлиенте
Процедура ОбновитьОтправку(Команда)
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОбновитьОтправкуИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаПротоколНажатие(Элемент)
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьПротоколИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьНеотправленноеИзвещение(Команда)
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтправитьНеотправленноеИзвещениеИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры

&НаКлиенте
Процедура ЭтапыОтправкиНажатие(Элемент)
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьСостояниеОтправкиИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры

&НаКлиенте
Процедура КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьКритическиеОшибкиИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОтправитьВКонтролирующийОрган(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой", ЭтотОбъект);
	Отказ = Ложь;
	ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередОтправкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Форма", ЭтаФорма);
	Оповещение = Новый ОписаниеОповещения("ПослеСохраненияФормыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
	СохранитьНаКлиенте(, Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ПослеСохраненияФормыЗавершение(Результат, ДополнительныеПараметры) Экспорт
	ДополнительныеПараметры.Форма.Закрыть();
КонецПроцедуры

&НаСервере
Процедура РазрешитьРедактированиеРеквизитовОбъекта() Экспорт
	
	РегламентированнаяОтчетность.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	РегламентированнаяОтчетностьКлиент.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОткрытьПрисоединенныеФайлы(Команда)
	
	РегламентированнаяОтчетностьКлиент.СохранитьОтчетИОткрытьФормуПрисоединенныеФайлы(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура КомментарийПриИзменении(Элемент)
	
	Модифицированность = Истина;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ИмяОтчета(ЭтаФормаИмя)
	Форма_Имя = СтрЗаменить(ЭтаФормаИмя, "Внешний", "");
	Возврат Сред(Лев(Форма_Имя, СтрНайти(Форма_Имя, ".Форма.") - 1), 7);
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ИмяФормыОтчета(ЭтаФормаИмя)
	Возврат Сред(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") + 7);
КонецФункции

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

#Область ОбработчикиСобытийПроцессыОбработкиДокументов

&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
	
	ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
		
	ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
	
КонецПроцедуры

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

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

#Область ПроцессыОбработкиДокументов

&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
	
	РегламентированнаяОтчетностьКлиент.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	РегламентированнаяОтчетностьКлиент.КомментарийСледующемуНачалоВыбора(
		ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	Если РегламентированнаяОтчетностьКлиент.ЭтоСобытиеЗавершениеОтправки(ИмяСобытия) Тогда
		ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();	
	КонецЕсли;

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

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

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

#Область ПроцессыОбработкиДокументов

&НаКлиенте
Процедура Записать(ПараметрыЗаписи) Экспорт
	
	СохранитьНаКлиенте();
	
КонецПроцедуры

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

&НаСервере
Процедура УправлениеДоступностьюРеквизитов(БлокируемыеЭлементы, ТолькоПросмотр) Экспорт
	
	РегламентированнаяОтчетность.УправлениеДоступностьюРеквизитов(ЭтотОбъект, БлокируемыеЭлементы, ТолькоПросмотр);
	
КонецПроцедуры

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

&НаСервере
Процедура ИнициализироватьВыводСтатусовИВажныхСообщений_85()

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

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

&НаСервере
Процедура ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере() Экспорт

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

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

&НаКлиенте
Процедура Подключаемый_ДетальноеОписаниеСтатусаПослеВыбора(Результат, ДополнительныеПараметры) Экспорт

	Если Результат = Неопределено Тогда
		Возврат;	
	КонецЕсли;
	
	Если Результат = "ОбновитьОтправку" Тогда
		
		ОбновитьОтправку(Неопределено);
		
	ИначеЕсли Результат = "ГиперссылкаПротокол" Тогда 	
		
		ГиперссылкаПротоколНажатие(Неопределено);
		
	ИначеЕсли Результат = "ЭтапыОтправки" Тогда 	
		
		ЭтапыОтправкиНажатие(Неопределено);
		
	КонецЕсли;

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

&НаКлиенте
Процедура Подключаемый_ВывестиСтатусыИВыжныеСообщенияНаФорму() Экспорт

	ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();

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

&НаКлиенте
Процедура Подключаемый_ОбработкаНажатияКнопкиВВажномСообщении(Команда)

	Если Команда.Имя = "ОтправитьНеотправленноеИзвещение" Тогда
		ОтправитьНеотправленноеИзвещение(Неопределено);
	КонецЕсли;

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

&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиВВажномСообщении(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	Если НРег(НавигационнаяСсылкаФорматированнойСтроки) = "критическиеошибки" Тогда
		КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
			
	КонецЕсли;

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

&НаКлиенте
Процедура Подключаемый_ОбработкаЗакрытияВажногоСообщения(Команда)

	МодульКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер");
	МодульКлиентСервер.ЗакрытьВажноеСообщение(ЭтотОбъект, Команда.Имя);

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

&НаКлиенте
Процедура Подключаемый_ОбработатьДействиеИнформационногоСообщения(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)

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

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

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

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