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

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

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

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

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

	МассивБулево = Новый Массив;
	МассивБулево.Добавить(Тип("Булево"));
	СтруктураРеквизитовФормы.мОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
	
	СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));
	
	// ОПИСАНИЕ ПАРАМЕТРОВ МНОГОСТРОЧНЫХ ГРУПП
	// Идентификаторы многострочных групп
	СтруктураРеквизитовФормы.мИдГруппы1 = "П0003100010";
	                                      
	// количество строк многострочных разделов по "бумажной" форме отчета
	// (минимальное количество строк, которое должно присутствовать всегда)
	КолИсхСтрокИдГруппы1 = 1;
	КолКолонокИдГруппы1 = 8;
	
	СтруктураДанныхТитульный   = Новый Структура;
	СтруктураДанныхРаздел1_1   = Новый Структура;
	СтруктураДанныхРаздел1_2   = Новый Структура;
	СтруктураДанныхРаздел1_3   = Новый Структура;
	СтруктураДанныхРаздел1_4   = Новый Структура;
	СтруктураДанныхРаздел1_5   = Новый Структура;
 	СтруктураДанныхРаздел1_6   = Новый Структура;
 	СтруктураДанныхРаздел1_7   = Новый Структура;
 	СтруктураДанныхРаздел2_1   = Новый Структура;
 	СтруктураДанныхРаздел2_2   = Новый Структура;

	// структура многострочных разделов формы
	мСтруктураМногострочныхРазделов = Новый Структура;
	мСтруктураМногострочныхРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, СтруктураРеквизитовФормы.мИдГруппы1);
		
	// Структура содержит данные дополнительных страниц
	мСтруктураМногостраничныхРазделов = Новый Структура;
	
	// структура исходных строк (минимального кол-ва) многострочных разделов формы
	мСтруктураИсхКолвоСтрокРазделов = Новый Структура;
	мСтруктураИсхКолвоСтрокРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, КолИсхСтрокИдГруппы1);

	мСтруктураКолвоКолонокРазделов  = Новый Структура;
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, КолКолонокИдГруппы1);
	
	ЦветЗаполняетсяТолькоВручную        = Новый Цвет(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", ЦветЗаполняетсяАвтоматически);

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

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

КонецПроцедуры // ПриСозданииНаСервере()

&НаСервере
Процедура СформироватьСтруктуруРеквизитовФормы()
	
	СтруктураРеквизитовФормы = Новый Структура;
	СтруктураРеквизитовФормы.Вставить("ВыводитьСтраницуВТаблДокНаСервере");
	СтруктураРеквизитовФормы.Вставить("НаимТекущегоРаздела");
	СтруктураРеквизитовФормы.Вставить("Организация");
	СтруктураРеквизитовФормы.Вставить("ЕдиницаИзмерения");
	СтруктураРеквизитовФормы.Вставить("ТочностьЕдиницыИзмерения");
	СтруктураРеквизитовФормы.Вставить("мКодОрганаФСС");
	СтруктураРеквизитовФормы.Вставить("ВидДокумента");
	СтруктураРеквизитовФормы.Вставить("ВариантыФорматовВыгрузки");
	СтруктураРеквизитовФормы.Вставить("ФлажокОтклАвтоРасчет", Ложь);
	СтруктураРеквизитовФормы.Вставить("мСчетчикСтраниц");       // флажок на форме выбора страниц, если Истина, то пересчет автоматический убрать
	СтруктураРеквизитовФормы.Вставить("мАвтоВыборКодов");       // для флажка "отключить выбор значений из списка"
	СтруктураРеквизитовФормы.Вставить("мБезОткрытияФормы");
	СтруктураРеквизитовФормы.Вставить("мРежимПечати");
	СтруктураРеквизитовФормы.Вставить("мВариант");
	СтруктураРеквизитовФормы.Вставить("мКодОтчета");
	СтруктураРеквизитовФормы.Вставить("мВерсияФормы");
	СтруктураРеквизитовФормы.Вставить("мВПрограммеИзмененаОрганизация");
	СтруктураРеквизитовФормы.Вставить("мВыбраннаяФорма");
	СтруктураРеквизитовФормы.Вставить("мДатаНачалаПериодаОтчета");
	СтруктураРеквизитовФормы.Вставить("мДатаКонцаПериодаОтчета");
	СтруктураРеквизитовФормы.Вставить("мДелитель");
	СтруктураРеквизитовФормы.Вставить("мДокументВосстановлен");
	СтруктураРеквизитовФормы.Вставить("мЗаписываетсяНовыйДокумент");
	СтруктураРеквизитовФормы.Вставить("мЗаписьЗапрещена");
	СтруктураРеквизитовФормы.Вставить("мИдГруппы1");
	СтруктураРеквизитовФормы.Вставить("мИнтервалАвтосохранения");
	СтруктураРеквизитовФормы.Вставить("мОписаниеТиповБулево");
	СтруктураРеквизитовФормы.Вставить("мОписаниеТиповЧислоЕ");
	СтруктураРеквизитовФормы.Вставить("мПериодичность");
	СтруктураРеквизитовФормы.Вставить("мПечатныеФормы");
	СтруктураРеквизитовФормы.Вставить("мПолноеИмяФайлаВнешнейОбработки");
	СтруктураРеквизитовФормы.Вставить("мПоляПоискаПоказателяВТСП");
	СтруктураРеквизитовФормы.Вставить("мСкопированаФорма");
	СтруктураРеквизитовФормы.Вставить("мСоставПоказателей");
	СтруктураРеквизитовФормы.Вставить("мСохраненныйДок");
	СтруктураРеквизитовФормы.Вставить("мСтрокаФормата");
	СтруктураРеквизитовФормы.Вставить("мЧтоОчищать");
	СтруктураРеквизитовФормы.Вставить("НомерГода");
	СтруктураРеквизитовФормы.Вставить("ФлагСохранения");
	СтруктураРеквизитовФормы.Вставить("ЦветБелый");
	СтруктураРеквизитовФормы.Вставить("ЦветЖелтый");
	СтруктураРеквизитовФормы.Вставить("СписокПечатаемыхЛистов");
	СтруктураРеквизитовФормы.Вставить("ЕстьРеквизитДополнительныйКодФСС");
	СтруктураРеквизитовФормы.Вставить("ЕстьРеквизитКодПодчиненностиФСС");
	СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуЗаполнить", Ложь);
	СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуРасшифровать", Ложь);
	СтруктураРеквизитовФормы.Вставить("ТекущаяСтрокаРазделовОтчета");
	СтруктураРеквизитовФормы.Вставить("СформироватьФормуОтчетаАвтоматически");
	СтруктураРеквизитовФормы.Вставить("ОКВЭД",  "");
	СтруктураРеквизитовФормы.Вставить("ОКВЭД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
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007003", "П000020008003;П000020009003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007004", "П000020008004;П000020009004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007005", "П000020008005;П000020009005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020010005", "П000020010004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020012004", "П000020001004;П000020003004;П000020005004;П000020006004;П000020007004;П000020010004;П000020011004; П000020008004;П000020009004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020012005", "П000020001005;П000020003005;П000020007005;П000020010005;П000020011005; П000020008005;П000020009005;П000020010004");
	  // Раздел1_3
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004003", "П000030001003;П000030002003;П000030003003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004004", "П000030001004;П000030002004;П000030003004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004005", "П000030001005;П000030002005;П000030003005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004006", "П000030001006;П000030002006;П000030003006");
	  // Раздел1_4
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002005", "П000310001005");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002006", "П000310001006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002007", "П000310001007");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002008", "П000310001008");
	  // Раздел1_5
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000303", "П000040000103;П000040000203");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000304", "П000040000104;П000040000204");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000305", "П000040000105;П000040000205");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000306", "П000040000106;П000040000206");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000603", "П000040000403;П000040000503");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000604", "П000040000404;П000040000504");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000605", "П000040000405;П000040000505");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000606", "П000040000406;П000040000506");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000903", "П000040000703;П000040000803");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000904", "П000040000704;П000040000804");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000905", "П000040000705;П000040000805");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000906", "П000040000706;П000040000806");
	  // Раздел1_6
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000410004003", "П000410002003;П000410003003");
	  // Раздел1_7
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003007", "П000050004007;П000050005007");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003008", "П000050004008;П000050005008");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003010", "П000050004010;П000050005010");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003011", "П000050004011;П000050005011");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003016", "П000050004016;П000050005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003017", "П000050004017;П000050005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001003", "П000050001006;П000050001009;П000050001012;П000050001015;П000050001018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002003", "П000050002006;П000050002009;П000050002015;П000050002018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003003", "П000050003006;П000050003009;П000050003015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004003", "П000050004006;П000050004009;П000050004015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005003", "П000050005006;П000050005009;П000050005015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006003", "П000050006006;П000050006009;П000050006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001004", "П000050001007;П000050001010;П000050001013;П000050001016;П000050001019");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002004", "П000050002007;П000050002010;П000050002016;П000050002019");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003004", "П000050003007;П000050003010;П000050003016; П000050004007;П000050005007;"
																   +"П000050004010;П000050005010;П000050004016;П000050005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004004", "П000050004007;П000050004010;П000050004016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005004", "П000050005007;П000050005010;П000050005016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006004", "П000050006007;П000050006010;П000050006016");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001005", "П000050001008;П000050001011;П000050001014;П000050001017;П000050001020");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002005", "П000050002008;П000050002011;П000050002017;П000050002020");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003005", "П000050003008;П000050003011;П000050003017; П000050004008;П000050005008;"
																   +"П000050004011;П000050005011;П000050004017;П000050005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004005", "П000050004008;П000050004011;П000050004017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005005", "П000050005008;П000050005011;П000050005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006005", "П000050006008;П000050006011;П000050006017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007003", "П000050001003;П000050002003;П000050003003;П000050006003; П000050001006;"
																   +"П000050001009;П000050001012;П000050001015;П000050001018;П000050002006;"
																   +"П000050002009;П000050002015;П000050002018;П000050003006;П000050003009;"
																   +"П000050003015;П000050006006;П000050006009;П000050006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007005", "П000050001005;П000050002005;П000050003005;П000050006005; П000050001008;"
																   +"П000050001011;П000050001014;П000050001017;П000050001020;П000050002008;"
																   +"П000050002011;П000050002017;П000050002020;П000050003008;П000050003011;"
																   +"П000050003017;П000050006008;П000050006011;П000050006017; П000050004008;"
																   +"П000050005008;П000050004011;П000050005011;П000050004017;П000050005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007006", "П000050001006;П000050002006;П000050003006;П000050006006");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007008", "П000050001008;П000050002008;П000050003008;П000050006008; П000050004008;П000050005008");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007009", "П000050001009;П000050002009;П000050003009;П000050006009");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007011", "П000050001011;П000050002011;П000050003011;П000050006011; П000050004011;П000050005011");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007012", "П000050001012");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007014", "П000050001014");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007015", "П000050001015;П000050002015;П000050003015;П000050006015");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007017", "П000050001017;П000050002017;П000050003017;П000050006017; П000050004017;П000050005017");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007018", "П000050001018;П000050002018");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007020", "П000050001020;П000050002020");
	  // РАЗДЕЛ II
	  // Раздел2_1
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001203", "П000060001303;П000060001403;П000060001503");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001204", "П000060001304;П000060001404;П000060001504");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001205", "П000060001305;П000060001405;П000060001505");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001010", "П000060001006;П000060001007;П000060001009");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070002401", "П000070002101;П000070002201;П000070002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011401", "П000070011101;П000070011201;П000070011301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070012401", "П000070012101;П000070012201;П000070012301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070002003", "П000070002001;П000070002401; П000070002101;П000070002201;П000070002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011003", "П000070011001;П000070011401; П000070011101;П000070011201;П000070011301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070012003", "П000070012001;П000070012401; П000070012101;П000070012201;П000070012301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070008003", "П000070001003;П000070002003;П000070003003;П000070004003;П000070005003;П000070006003;"
																   +"П000070007003; П000070002001;П000070002401; П000070002101;П000070002201;П000070002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070014003", "П000070010003;П000070011003;П000070012003;П000070013003; П000070011001;П000070011401;"
																   +"П000070012001;П000070012401; П000070011101;П000070011201;П000070011301;П000070012101;П000070012201;П000070012301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070009003", "П000070014003;П000070008003; П000070010003;П000070011003;П000070012003;П000070013003;"
																   +"П000070001003;П000070002003;П000070003003;П000070004003;П000070005003;П000070006003;П000070007003; П000070011001;"
																   +"П000070011401;П000070012001;П000070012401;П000070002001;П000070002401; П000070011101;П000070011201;П000070011301;"
																   +"П000070012101;П000070012201;П000070012301;П000070002101;П000070002201;П000070002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070015003", "П000070008003;П000070014003; П000070001003;П000070002003;П000070003003;П000070004003;"
																   +"П000070005003;П000070006003;П000070007003;П000070010003;П000070011003;П000070012003;"
																   +"П000070013003; П000070002001;П000070002401;П000070011001;П000070011401;П000070012001;"
																   +"П000070012401; П000070002101;П000070002201;П000070002301;П000070011101;П000070011201;"
																   +"П000070011301;П000070012101;П000070012201;П000070012301");
	  // Раздел2_2
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080010004", "П000080001004;П000080004004;П000080007004;П000080009004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000090004003", "П000090001003;П000090003003");

КонецПроцедуры // ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета()

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

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

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

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

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

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

	СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
	СтрокаУровня1.ИмяСтраницы              = "Раздел2_2";
	СтрокаУровня1.Представление            = "Раздел II. Табл. 8, 9";
	СтрокаУровня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;
	НовСтр.Область = "МногострочнаяЧасть";
	НовСтр.ВысотаСтроки = 1;
	
	СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();

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

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

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

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

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

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

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

	Перем ИсходноеКоличествоСтрокГруппы;

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

	СтруктураРеквизитовФормы.мДокументВосстановлен = Ложь;

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

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

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

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

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

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

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

	КонецЕсли;

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

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

			Продолжить;

		КонецЕсли;

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

			Продолжить;

		КонецЕсли;

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

	КонецЦикла;
	
КонецПроцедуры

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

&НаСервере
Процедура НачальныеОперацииСМногострочнымиБлоками()
	
	Перем ИсходноеКоличествоСтрокГруппы;

	// создаем исходную структуру многострочных разделов
	Для Каждого ЭлементСтруктуры Из мСтруктураМногострочныхРазделов Цикл
		ИмяГруппы = ЭлементСтруктуры.Ключ;
		СтруктураГруппы = ЭтаФорма[ЭлементСтруктуры.Значение];
		
		мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);

		Для НСтр = 1 По ИсходноеКоличествоСтрокГруппы Цикл

			СтруктураГруппы.Добавить();
			
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры // НачальныеОперацииСМногострочнымиБлоками

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

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

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

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

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

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

	Форма.ТабличныйДокумент.Области.ДатаПодписи.Значение = Форма.ДатаПодписи;
		
КонецПроцедуры

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

		Форма.ТабличныйДокумент.Области.ПрПодп.Значение = "1";
		Форма.ТабличныйДокумент.Области.ОргПодписантФамилия.Значение = ФИОРук;
		ЗапретитьВводДокументаПредставителя(Форма);

		Возврат;

	КонецЕсли;

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

	ИННЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(ИННЮЛ,12,"0",0);
	КППЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(КППЮЛ,9,"-",1);
		
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ИНН.Значение)) Тогда
		Форма.ТабличныйДокумент.Области.ИНН.Значение = ИННЮЛ;
	КонецЕсли;
	
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.КПП.Значение)) Тогда
		Форма.ТабличныйДокумент.Области.КПП.Значение = КППЮЛ;
	КонецЕсли;
	
	ОГРН = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(СокрЛП(ОГРН),15,"0",0);

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

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

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

	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОКФС.Значение)) Тогда
		Форма.ТабличныйДокумент.Области.ОКФС.Значение = ОКФС;  
	КонецЕсли;
	
	Если Не ПБОЮЛ Тогда
		Адрес = АдрЮр;
	КонецЕсли;
	
	СтруктураАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Адрес);
	
	Если Не СтруктураАдреса = Неопределено Тогда
		Форма.ТабличныйДокумент.Области.Адрес1.Значение = СтруктураАдреса.Индекс;
		Форма.ТабличныйДокумент.Области.Адрес2.Значение = СтруктураАдреса.Регион;
		Форма.ТабличныйДокумент.Области.Адрес3.Значение = СтруктураАдреса.Район;
		Форма.ТабличныйДокумент.Области.Адрес4.Значение = СтруктураАдреса.Город;
		Форма.ТабличныйДокумент.Области.Адрес5.Значение = СтруктураАдреса.НаселенныйПункт;
		Форма.ТабличныйДокумент.Области.Адрес6.Значение = СтруктураАдреса.Улица;
		Форма.ТабличныйДокумент.Области.Адрес7.Значение = СтруктураАдреса.Дом;
		Форма.ТабличныйДокумент.Области.Адрес8.Значение = СтруктураАдреса.Корпус;
		Форма.ТабличныйДокумент.Области.Адрес9.Значение = СтруктураАдреса.Квартира;
	КонецЕсли;
	
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОргФССКод.Значение)) Тогда
		Форма.ТабличныйДокумент.Области.ОргФССКод.Значение = РегистрационныйНомерФСС;  
	КонецЕсли;
	
	Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.КодПодчиненности.Значение)) Тогда
		Форма.ТабличныйДокумент.Области.КодПодчиненности.Значение = КодПодчиненностиФСС;  
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

КонецФункции // СобратьДанныеТекущегоТаблПоляНаСервере()

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

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

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

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

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

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

	КонецЦикла;

	Возврат СтруктураДанныхПоля;
	
КонецФункции // СобратьДанныеТекущегоТаблПоля()

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

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

КонецПроцедуры // ОчиститьТабличноеПолеНаКлиенте()

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

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

КонецПроцедуры // ОчиститьТабличноеПолеНаСервере()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ВывестиРазделВТабличныйДокумент(Форма, ИмяГруппы, СтруктураГруппы)
	
	Перем ИсходноеКоличествоСтрокГруппы;

	// определим исходное колво строк многострочного раздела,
	// соответствующее бумажной форме отчета
	Форма.мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);

	// реальное кол-во строк (колво заполненных строк)
	ТекущееКоличествоСтрокГруппы = СтруктураГруппы.Количество();

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

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

		Форма[ТекТабличноеПолеИмя] = ТекТабличноеПоле;
		
	КонецЕсли;

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

КонецПроцедуры // ВывестиРазделВТабличныйДокумент()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// вствляем версию формы
	СписокСохранения.Вставить("ВерсияФормы", СтруктураРеквизитовФормы.мВерсияФормы);
	
	// вствляем флажок пересчета страниц
	СписокСохранения.Вставить("ФлПодсчетСтраниц", СтруктураРеквизитовФормы.мСчетчикСтраниц);

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

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

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

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

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

КонецФункции // Сохранить()

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

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

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

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

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

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

	// восстанавливаем флажок ПодсчетаСтраниц       
	СписокСохранения.Свойство("ФлПодсчетСтраниц", СтруктураРеквизитовФормы.мСчетчикСтраниц);

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

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

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

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

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

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

&НаСервере
Функция ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ИмяЛиста = Неопределено) Экспорт
	
	ИдГрупп = Новый Структура;
	ИдГрупп.Вставить("мИдГруппы1", СтруктураРеквизитовФормы.мИдГруппы1);
			
	Возврат ОпределитьИдМногострочногоРазделаПоАктивнойСтранице(ИмяЛиста, , ИдГрупп);
	
КонецФункции // ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере()

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

КонецФункции // ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаКлиенте()

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

	Если ИмяТекущейСтраницыПанели = "Раздел1_4" Тогда
		ИмяГруппы = ИдГрупп.мИдГруппы1;
	КонецЕсли;

	Возврат ИмяГруппы;

КонецФункции // ОпределитьИдМногострочногоРазделаПоАктивнойСтранице()

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

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

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

	Возврат ТекТабличноеПоле;
	
КонецФункции // ОпределитьТабличноеПолеПоИдМногострочногоРаздела()

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

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

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

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

	Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("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 Тогда
								ЭлементМассива.Удалить(СтрокиВЭлементеМассива[0]);
								ЕстьИзменения = Истина;
							КонецЕсли;
						КонецЕсли;
					КонецЦикла;
					
				КонецЦикла;
			КонецЕсли;
		КонецЕсли;

	КонецЦикла;

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

КонецФункции // ОбновитьВариантыЗаполнения()

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

	КонецЦикла;

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

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

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

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

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

			КонецЕсли;

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

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

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

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

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

						КонецЦикла;

					КонецЕсли;

				КонецЦикла; 

			КонецЕсли; 

		КонецЦикла;

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

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

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

			КонецЕсли;

		КонецЦикла;

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

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

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

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

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

	КонецЦикла; 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		КонецЦикла;

	КонецЕсли;

КонецПроцедуры // УстановитьЦветФонаЯчейки()

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

	ИмяГруппы = Лев(ИмяПоказателя, 11);

	СтруктураГруппы = Неопределено;

	Если НЕ Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы) Тогда
		Возврат 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" Тогда
		//Раздел1_2
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020007003.Значение = Форма.ТабличныйДокумент.Области.П000020008003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020009003.Значение;
		КонецЕсли;

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

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

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

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020012005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020012005.Значение = Форма.ТабличныйДокумент.Области.П000020001005.Значение
																   + Форма.ТабличныйДокумент.Области.П000020003005.Значение
																   + Форма.ТабличныйДокумент.Области.П000020007005.Значение
																   + Форма.ТабличныйДокумент.Области.П000020010005.Значение
																   + Форма.ТабличныйДокумент.Области.П000020011005.Значение;
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_3" Тогда
		//Раздел1_3
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000030004003.Значение = Форма.ТабличныйДокумент.Области.П000030001003.Значение
																   - Форма.ТабличныйДокумент.Области.П000030002003.Значение
																   - Форма.ТабличныйДокумент.Области.П000030003003.Значение;
		КонецЕсли;

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

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004006, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000030004006.Значение = Форма.ТабличныйДокумент.Области.П000030001006.Значение
																   - Форма.ТабличныйДокумент.Области.П000030002006.Значение
																   - Форма.ТабличныйДокумент.Области.П000030003006.Значение;
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) Тогда
			
			//перенос итоговых данных из таблицы 3.1 в таблицу 3
			Форма.ТабличныйДокумент.Области.П000030005003.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002005;
			Форма.ТабличныйДокумент.Области.П000030005004.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002006;
			Форма.ТабличныйДокумент.Области.П000030005005.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002007;
			Форма.ТабличныйДокумент.Области.П000030005006.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002008;
			
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_4" Тогда
		//Раздел1_4
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002005, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Колонка5 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Колонка5 = Колонка5 + Форма.ТабличныйДокумент.Области["П000310001005_" + Ном].Значение;
				
			КонецЦикла;
			
			Форма.ТабличныйДокумент.Области.П000310002005.Значение = Колонка5;
			//перенос итоговых данных из таблицы 3.1 в таблицу 3
			Форма.СтруктураДанныхРаздел1_3.П000030005003 = Колонка5;
			
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002006, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Колонка6 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Колонка6 = Колонка6 + Форма.ТабличныйДокумент.Области["П000310001006_" + Ном].Значение;
				
			КонецЦикла;
			
			Форма.ТабличныйДокумент.Области.П000310002006.Значение = Колонка6;
			//перенос итоговых данных из таблицы 3.1 в таблицу 3
			Форма.СтруктураДанныхРаздел1_3.П000030005004 = Колонка6;
			
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002007, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Колонка7 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Колонка7 = Колонка7 + Форма.ТабличныйДокумент.Области["П000310001007_" + Ном].Значение;
				
			КонецЦикла;
			
			Форма.ТабличныйДокумент.Области.П000310002007.Значение = Колонка7;
			//перенос итоговых данных из таблицы 3.1 в таблицу 3
			Форма.СтруктураДанныхРаздел1_3.П000030005005 = Колонка7;
			
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002008, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Колонка8 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Колонка8 = Колонка8 + Форма.ТабличныйДокумент.Области["П000310001008_" + Ном].Значение;
				
			КонецЦикла;
			
			Форма.ТабличныйДокумент.Области.П000310002008.Значение = Колонка8;
			//перенос итоговых данных из таблицы 3.1 в таблицу 3
			Форма.СтруктураДанныхРаздел1_3.П000030005006 = Колонка8;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_5" Тогда	
		//Раздел1_5
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000303, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000303.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000103.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000203.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000103.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000304, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000304.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000104.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000204.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000104.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000305, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000305.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000105.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000205.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000105.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000306, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000306.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000106.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000206.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000106.Значение) * 100, 0);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000603, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000603.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000403.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000503.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000403.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000604, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000604.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000404.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000504.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000404.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000605, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000605.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000405.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000505.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000405.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000606, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000606.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000406.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000506.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000406.Значение) * 100, 0);
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000903, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000903.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000703.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000803.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000703.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000904, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000904.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000704.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000804.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000704.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000905, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000905.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000705.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000805.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000705.Значение) * 100, 0);
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000906, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000906.Значение  = ? (Форма.ТабличныйДокумент.Области.П000040000706.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000040000806.Значение
																	   / Форма.ТабличныйДокумент.Области.П000040000706.Значение) * 100, 0);
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_6" Тогда
		//Раздел1_6
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000410004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000410004003.Значение  = ? (Форма.ТабличныйДокумент.Области.П000410002003.Значение <> 0,
																		(Форма.ТабличныйДокумент.Области.П000410003003.Значение
																	   / Форма.ТабличныйДокумент.Области.П000410002003.Значение) * 100, 0);
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_7" Тогда	
		//Раздел1_7
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003007, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003007.Значение = Форма.ТабличныйДокумент.Области.П000050004007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005007.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003008, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003008.Значение = Форма.ТабличныйДокумент.Области.П000050004008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005008.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003010, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003010.Значение = Форма.ТабличныйДокумент.Области.П000050004010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005010.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003011, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003011.Значение = Форма.ТабличныйДокумент.Области.П000050004011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005011.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003016, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003016.Значение = Форма.ТабличныйДокумент.Области.П000050004016.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005016.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003017, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003017.Значение = Форма.ТабличныйДокумент.Области.П000050004017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005017.Значение;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050001003.Значение = Форма.ТабличныйДокумент.Области.П000050001006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001012.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001015.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001018.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050002003.Значение = Форма.ТабличныйДокумент.Области.П000050002006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002015.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002018.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003003.Значение = Форма.ТабличныйДокумент.Области.П000050003006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003015.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050004003.Значение = Форма.ТабличныйДокумент.Области.П000050004006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004015.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050005003.Значение = Форма.ТабличныйДокумент.Области.П000050005006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005015.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050006003.Значение = Форма.ТабличныйДокумент.Области.П000050006006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006015.Значение;
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050001004.Значение = Форма.ТабличныйДокумент.Области.П000050001007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001013.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001016.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001019.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050002004.Значение = Форма.ТабличныйДокумент.Области.П000050002007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002016.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002019.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003004.Значение = Форма.ТабличныйДокумент.Области.П000050003007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003016.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050004004.Значение = Форма.ТабличныйДокумент.Области.П000050004007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004016.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050005004.Значение = Форма.ТабличныйДокумент.Области.П000050005007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005016.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050006004.Значение = Форма.ТабличныйДокумент.Области.П000050006007.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006010.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006016.Значение;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050001005.Значение = Форма.ТабличныйДокумент.Области.П000050001008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001014.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050001020.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050002005.Значение = Форма.ТабличныйДокумент.Области.П000050002008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002020.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003005.Значение = Форма.ТабличныйДокумент.Области.П000050003008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003017.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050004005.Значение = Форма.ТабличныйДокумент.Области.П000050004008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050004017.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050005005.Значение = Форма.ТабличныйДокумент.Области.П000050005008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050005017.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050006005.Значение = Форма.ТабличныйДокумент.Области.П000050006008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006017.Значение;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007003.Значение = Форма.ТабличныйДокумент.Области.П000050001003.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002003.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003003.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006003.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007005, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007005.Значение = Форма.ТабличныйДокумент.Области.П000050001005.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002005.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003005.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006005.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007006, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007006.Значение = Форма.ТабличныйДокумент.Области.П000050001006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003006.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006006.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007008, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007008.Значение = Форма.ТабличныйДокумент.Области.П000050001008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003008.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006008.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007009, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007009.Значение = Форма.ТабличныйДокумент.Области.П000050001009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003009.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006009.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007011, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007011.Значение = Форма.ТабличныйДокумент.Области.П000050001011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003011.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006011.Значение;
		КонецЕсли;

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007015, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007015.Значение = Форма.ТабличныйДокумент.Области.П000050001015.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002015.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003015.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006015.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007017, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007017.Значение = Форма.ТабличныйДокумент.Области.П000050001017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050003017.Значение
																   + Форма.ТабличныйДокумент.Области.П000050006017.Значение;
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007018, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007018.Значение = Форма.ТабличныйДокумент.Области.П000050001018.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002018.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007020, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000050007020.Значение = Форма.ТабличныйДокумент.Области.П000050001020.Значение
																   + Форма.ТабличныйДокумент.Области.П000050002020.Значение;
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_1" Тогда	
		//ТАБЛИЦА6
		//Раздел2_1
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001203, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000060001203.Значение = Форма.ТабличныйДокумент.Области.П000060001303.Значение
																   + Форма.ТабличныйДокумент.Области.П000060001403.Значение
																   + Форма.ТабличныйДокумент.Области.П000060001503.Значение;
		КонецЕсли;

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

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001010, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000060001010.Значение = Форма.ТабличныйДокумент.Области.П000060001006.Значение
															  * (1 - Форма.ТабличныйДокумент.Области.П000060001007.Значение / 100
																   + Форма.ТабличныйДокумент.Области.П000060001009.Значение / 100);
		КонецЕсли;
		//ТАБЛИЦА 7
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070002401, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000070002401.Значение = Форма.ТабличныйДокумент.Области.П000070002101.Значение
																   + Форма.ТабличныйДокумент.Области.П000070002201.Значение
																   + Форма.ТабличныйДокумент.Области.П000070002301.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011401, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000070011401.Значение = Форма.ТабличныйДокумент.Области.П000070011101.Значение
																   + Форма.ТабличныйДокумент.Области.П000070011201.Значение
																   + Форма.ТабличныйДокумент.Области.П000070011301.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070012401, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000070012401.Значение = Форма.ТабличныйДокумент.Области.П000070012101.Значение
																   + Форма.ТабличныйДокумент.Области.П000070012201.Значение
																   + Форма.ТабличныйДокумент.Области.П000070012301.Значение;
		КонецЕсли;

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

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

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

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070015003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000070015003.Значение = ?(Форма.ТабличныйДокумент.Области.П000070008003.Значение > Форма.ТабличныйДокумент.Области.П000070014003.Значение
																	 , Форма.ТабличныйДокумент.Области.П000070008003.Значение - Форма.ТабличныйДокумент.Области.П000070014003.Значение, 0);
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_2" Тогда	
		//Раздел2_2
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080010004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000080010004.Значение = Форма.ТабличныйДокумент.Области.П000080001004.Значение
																   + Форма.ТабличныйДокумент.Области.П000080004004.Значение
																   + Форма.ТабличныйДокумент.Области.П000080007004.Значение
																   + Форма.ТабличныйДокумент.Области.П000080009004.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000090004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000090004003.Значение = Форма.ТабличныйДокумент.Области.П000090001003.Значение
																   + Форма.ТабличныйДокумент.Области.П000090003003.Значение;
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "" Тогда
		
		// ОБЩИЙ РАСЧЕТ ПОКАЗАТЕЛЕЙ ВСЕХ РАЗДЕЛОВ ДЕКЛАРАЦИИ
		РасчетВСтруктуре(Форма, "Раздел1_1");
		РасчетВСтруктуре(Форма, "Раздел1_2");
		РасчетВСтруктуре(Форма, "Раздел1_4"); //данные из этого раздела переносятся в раздел 1.3
		РасчетВСтруктуре(Форма, "Раздел1_3");
		РасчетВСтруктуре(Форма, "Раздел1_5");
		РасчетВСтруктуре(Форма, "Раздел1_6");
		РасчетВСтруктуре(Форма, "Раздел1_7");
		РасчетВСтруктуре(Форма, "Раздел2_1");
		РасчетВСтруктуре(Форма, "Раздел2_2");
	
	КонецЕсли;

КонецПроцедуры // Расчет()

&НаКлиентеНаСервереБезКонтекста
Процедура РасчетВСтруктуре(Форма, ИмяТекущегоРаздела)
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
	
	Если ИмяТекущегоРаздела = "Раздел1_1" Тогда
		// РАЗДЕЛ 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;
		СтруктураДанныхРаздела.П000010003003 = СтруктураДанныхРаздела.П000010003101
											 + СтруктураДанныхРаздела.П000010003201;
		СтруктураДанныхРаздела.П000010005003 = СтруктураДанныхРаздела.П000010005101
											 + СтруктураДанныхРаздела.П000010005201;
		СтруктураДанныхРаздела.П000010006003 = СтруктураДанныхРаздела.П000010006101
											 + СтруктураДанныхРаздела.П000010006201;
		СтруктураДанныхРаздела.П000010015003 = СтруктураДанныхРаздела.П000010015101
											 + СтруктураДанныхРаздела.П000010015201;
		СтруктураДанныхРаздела.П000010016003 = СтруктураДанныхРаздела.П000010016101
											 + СтруктураДанныхРаздела.П000010016201;
		СтруктураДанныхРаздела.П000010008003 = СтруктураДанныхРаздела.П000010001003
											 + СтруктураДанныхРаздела.П000010002003
											 + СтруктураДанныхРаздела.П000010003003
											 + СтруктураДанныхРаздела.П000010004003
											 + СтруктураДанныхРаздела.П000010005003
											 + СтруктураДанныхРаздела.П000010006003
											 + СтруктураДанныхРаздела.П000010007003;
		СтруктураДанныхРаздела.П000010012003 = СтруктураДанныхРаздела.П000010013003
											 + СтруктураДанныхРаздела.П000010014003;
		СтруктураДанныхРаздела.П000010018003 = СтруктураДанныхРаздела.П000010012003
											 + СтруктураДанныхРаздела.П000010015003
											 + СтруктураДанныхРаздела.П000010016003
											 + СтруктураДанныхРаздела.П000010017003;
			
		Если СтруктураДанныхРаздела.П000010018003 > СтруктураДанныхРаздела.П000010008003 Тогда 
			ЗадолженностьЗаФондомВсего = СтруктураДанныхРаздела.П000010018003
									   - СтруктураДанныхРаздела.П000010008003;
			СтруктураДанныхРаздела.П000010019003 = 0;
		Иначе
			СтруктураДанныхРаздела.П000010019003 = СтруктураДанныхРаздела.П000010008003
												 - СтруктураДанныхРаздела.П000010018003;
			ЗадолженностьЗаФондомВсего = 0;
		КонецЕсли;
		
		СтруктураДанныхРаздела.П000010010003 = ЗадолженностьЗаФондомВсего
											 - СтруктураДанныхРаздела.П000010011003;
		СтруктураДанныхРаздела.П000010009003 = СтруктураДанныхРаздела.П000010010003
											 + СтруктураДанныхРаздела.П000010011003;
											
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
		
			Форма.ТабличныйДокумент.Области.П000010002201.Значение = СтруктураДанныхРаздела.П000010002201;
			Форма.ТабличныйДокумент.Области.П000010003201.Значение = СтруктураДанныхРаздела.П000010003201;
			Форма.ТабличныйДокумент.Области.П000010005201.Значение = СтруктураДанныхРаздела.П000010005201;
			Форма.ТабличныйДокумент.Области.П000010006201.Значение = СтруктураДанныхРаздела.П000010006201;
			Форма.ТабличныйДокумент.Области.П000010015201.Значение = СтруктураДанныхРаздела.П000010015201;
			Форма.ТабличныйДокумент.Области.П000010016201.Значение = СтруктураДанныхРаздела.П000010016201;
			Форма.ТабличныйДокумент.Области.П000010002003.Значение = СтруктураДанныхРаздела.П000010002003;
			Форма.ТабличныйДокумент.Области.П000010003003.Значение = СтруктураДанныхРаздела.П000010003003;
			Форма.ТабличныйДокумент.Области.П000010005003.Значение = СтруктураДанныхРаздела.П000010005003;
			Форма.ТабличныйДокумент.Области.П000010006003.Значение = СтруктураДанныхРаздела.П000010006003;
			Форма.ТабличныйДокумент.Области.П000010015003.Значение = СтруктураДанныхРаздела.П000010015003;
			Форма.ТабличныйДокумент.Области.П000010016003.Значение = СтруктураДанныхРаздела.П000010016003;
			Форма.ТабличныйДокумент.Области.П000010008003.Значение = СтруктураДанныхРаздела.П000010008003;
			Форма.ТабличныйДокумент.Области.П000010012003.Значение = СтруктураДанныхРаздела.П000010012003;
			Форма.ТабличныйДокумент.Области.П000010018003.Значение = СтруктураДанныхРаздела.П000010018003;
			Форма.ТабличныйДокумент.Области.П000010019003.Значение = СтруктураДанныхРаздела.П000010019003;
			Форма.ТабличныйДокумент.Области.П000010009003.Значение = СтруктураДанныхРаздела.П000010009003;
			Форма.ТабличныйДокумент.Области.П000010010003.Значение = СтруктураДанныхРаздела.П000010010003;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_2" Тогда
		//Раздел1_2
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		СтруктураДанныхРаздела.П000020007003 = СтруктураДанныхРаздела.П000020008003
											 + СтруктураДанныхРаздела.П000020009003;
		СтруктураДанныхРаздела.П000020007004 = СтруктураДанныхРаздела.П000020008004
											 + СтруктураДанныхРаздела.П000020009004;
		СтруктураДанныхРаздела.П000020007005 = СтруктураДанныхРаздела.П000020008005
											 + СтруктураДанныхРаздела.П000020009005;
		СтруктураДанныхРаздела.П000020010005 = СтруктураДанныхРаздела.П000020010004;
		СтруктураДанныхРаздела.П000020012004 = СтруктураДанныхРаздела.П000020001004
											 + СтруктураДанныхРаздела.П000020003004
											 + СтруктураДанныхРаздела.П000020005004
											 + СтруктураДанныхРаздела.П000020006004
											 + СтруктураДанныхРаздела.П000020007004
											 + СтруктураДанныхРаздела.П000020010004
											 + СтруктураДанныхРаздела.П000020011004;
		СтруктураДанныхРаздела.П000020012005 = СтруктураДанныхРаздела.П000020001005
											 + СтруктураДанныхРаздела.П000020003005
											 + СтруктураДанныхРаздела.П000020007005
											 + СтруктураДанныхРаздела.П000020010005
											 + СтруктураДанныхРаздела.П000020011005;
											
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000020007003.Значение = СтруктураДанныхРаздела.П000020007003;
			Форма.ТабличныйДокумент.Области.П000020007004.Значение = СтруктураДанныхРаздела.П000020007004;
			Форма.ТабличныйДокумент.Области.П000020007005.Значение = СтруктураДанныхРаздела.П000020007005;
			Форма.ТабличныйДокумент.Области.П000020010005.Значение = СтруктураДанныхРаздела.П000020010005;
			Форма.ТабличныйДокумент.Области.П000020012004.Значение = СтруктураДанныхРаздела.П000020012004;
			Форма.ТабличныйДокумент.Области.П000020012005.Значение = СтруктураДанныхРаздела.П000020012005;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_3" Тогда
		//Раздел1_3
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];

		СтруктураДанныхРаздела.П000030004003 = СтруктураДанныхРаздела.П000030001003
											 - СтруктураДанныхРаздела.П000030002003
											 - СтруктураДанныхРаздела.П000030003003;
		СтруктураДанныхРаздела.П000030004004 = СтруктураДанныхРаздела.П000030001004
											 - СтруктураДанныхРаздела.П000030002004
											 - СтруктураДанныхРаздела.П000030003004;
		СтруктураДанныхРаздела.П000030004005 = СтруктураДанныхРаздела.П000030001005
											 - СтруктураДанныхРаздела.П000030002005
											 - СтруктураДанныхРаздела.П000030003005;
		СтруктураДанныхРаздела.П000030004006 = СтруктураДанныхРаздела.П000030001006
											 - СтруктураДанныхРаздела.П000030002006
											 - СтруктураДанныхРаздела.П000030003006;
		
		//перенос итоговых данных из таблицы 3.1 в таблицу 3
		СтруктураДанныхРаздела.П000030005003 = Форма.СтруктураДанныхРаздел1_4.П000310002005;
		СтруктураДанныхРаздела.П000030005004 = Форма.СтруктураДанныхРаздел1_4.П000310002006;
		СтруктураДанныхРаздела.П000030005005 = Форма.СтруктураДанныхРаздел1_4.П000310002007;
		СтруктураДанныхРаздела.П000030005006 = Форма.СтруктураДанныхРаздел1_4.П000310002008;

		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000030004003.Значение = СтруктураДанныхРаздела.П000030004003;
			Форма.ТабличныйДокумент.Области.П000030004004.Значение = СтруктураДанныхРаздела.П000030004004;
			Форма.ТабличныйДокумент.Области.П000030004005.Значение = СтруктураДанныхРаздела.П000030004005;
			Форма.ТабличныйДокумент.Области.П000030004006.Значение = СтруктураДанныхРаздела.П000030004006;
			
			Форма.ТабличныйДокумент.Области.П000030005003.Значение = СтруктураДанныхРаздела.П000030005003;
			Форма.ТабличныйДокумент.Области.П000030005004.Значение = СтруктураДанныхРаздела.П000030005004;
			Форма.ТабличныйДокумент.Области.П000030005005.Значение = СтруктураДанныхРаздела.П000030005005;
			Форма.ТабличныйДокумент.Области.П000030005006.Значение = СтруктураДанныхРаздела.П000030005006;
			
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_4" Тогда
		
		//Раздел1_4
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		Колонка5 = 0;
		Колонка6 = 0;
		Колонка7 = 0;
		Колонка8 = 0;
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
						
			Колонка5 = Колонка5 + ТаблицаБлока[Ном-1]["П000310001005"];
			Колонка6 = Колонка6 + ТаблицаБлока[Ном-1]["П000310001006"];
			Колонка7 = Колонка7 + ТаблицаБлока[Ном-1]["П000310001007"];
			Колонка8 = Колонка8 + ТаблицаБлока[Ном-1]["П000310001008"];
			
		КонецЦикла;
		
		СтруктураДанныхРаздела.П000310002005 = Колонка5;
		//перенос итоговых данных из таблицы 3.1 в таблицу 3
		Форма.СтруктураДанныхРаздел1_3.П000030005003 = Колонка5;
		
		СтруктураДанныхРаздела.П000310002006 = Колонка6;
		//перенос итоговых данных из таблицы 3.1 в таблицу 3
		Форма.СтруктураДанныхРаздел1_3.П000030005004 = Колонка6;
		
		СтруктураДанныхРаздела.П000310002007 = Колонка7;
		//перенос итоговых данных из таблицы 3.1 в таблицу 3
		Форма.СтруктураДанныхРаздел1_3.П000030005005 = Колонка7;
		
		СтруктураДанныхРаздела.П000310002008 = Колонка8;
		//перенос итоговых данных из таблицы 3.1 в таблицу 3
		Форма.СтруктураДанныхРаздел1_3.П000030005006 = Колонка8;
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000310002005.Значение = Колонка5;
			Форма.ТабличныйДокумент.Области.П000310002006.Значение = Колонка6;
			Форма.ТабличныйДокумент.Области.П000310002007.Значение = Колонка7;
			Форма.ТабличныйДокумент.Области.П000310002008.Значение = Колонка8;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_5" Тогда	
		//Раздел1_5
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		СтруктураДанныхРаздела.П000040000303  = ? (СтруктураДанныхРаздела.П000040000103 <> 0,
												  (СтруктураДанныхРаздела.П000040000203
												 / СтруктураДанныхРаздела.П000040000103) * 100, 0);
		СтруктураДанныхРаздела.П000040000304  = ? (СтруктураДанныхРаздела.П000040000104 <> 0,
												  (СтруктураДанныхРаздела.П000040000204
												 / СтруктураДанныхРаздела.П000040000104) * 100, 0);
		СтруктураДанныхРаздела.П000040000305  = ? (СтруктураДанныхРаздела.П000040000105 <> 0,
												  (СтруктураДанныхРаздела.П000040000205
												 / СтруктураДанныхРаздела.П000040000105) * 100, 0);
		СтруктураДанныхРаздела.П000040000306  = ? (СтруктураДанныхРаздела.П000040000106 <> 0,
												  (СтруктураДанныхРаздела.П000040000206
												 / СтруктураДанныхРаздела.П000040000106) * 100, 0);
		СтруктураДанныхРаздела.П000040000603  = ? (СтруктураДанныхРаздела.П000040000403 <> 0,
												  (СтруктураДанныхРаздела.П000040000503
												 / СтруктураДанныхРаздела.П000040000403) * 100, 0);
		СтруктураДанныхРаздела.П000040000604  = ? (СтруктураДанныхРаздела.П000040000404 <> 0,
												  (СтруктураДанныхРаздела.П000040000504
												 / СтруктураДанныхРаздела.П000040000404) * 100, 0);
		СтруктураДанныхРаздела.П000040000605  = ? (СтруктураДанныхРаздела.П000040000405 <> 0,
												  (СтруктураДанныхРаздела.П000040000505
												 / СтруктураДанныхРаздела.П000040000405) * 100, 0);
		СтруктураДанныхРаздела.П000040000606  = ? (СтруктураДанныхРаздела.П000040000406 <> 0,
												  (СтруктураДанныхРаздела.П000040000506
												 / СтруктураДанныхРаздела.П000040000406) * 100, 0);
		СтруктураДанныхРаздела.П000040000903  = ? (СтруктураДанныхРаздела.П000040000703 <> 0,
												  (СтруктураДанныхРаздела.П000040000803
												 / СтруктураДанныхРаздела.П000040000703) * 100, 0);
		СтруктураДанныхРаздела.П000040000904  = ? (СтруктураДанныхРаздела.П000040000704 <> 0,
												  (СтруктураДанныхРаздела.П000040000804
												 / СтруктураДанныхРаздела.П000040000704) * 100, 0);
		СтруктураДанныхРаздела.П000040000905  = ? (СтруктураДанныхРаздела.П000040000705 <> 0,
												  (СтруктураДанныхРаздела.П000040000805
												 / СтруктураДанныхРаздела.П000040000705) * 100, 0);
		СтруктураДанныхРаздела.П000040000906  = ? (СтруктураДанныхРаздела.П000040000706 <> 0,
												  (СтруктураДанныхРаздела.П000040000806
												 / СтруктураДанныхРаздела.П000040000706) * 100, 0);
												
												
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000040000303.Значение  = СтруктураДанныхРаздела.П000040000303;
			Форма.ТабличныйДокумент.Области.П000040000304.Значение  = СтруктураДанныхРаздела.П000040000304;
			Форма.ТабличныйДокумент.Области.П000040000305.Значение  = СтруктураДанныхРаздела.П000040000305;
			Форма.ТабличныйДокумент.Области.П000040000306.Значение  = СтруктураДанныхРаздела.П000040000306;
			Форма.ТабличныйДокумент.Области.П000040000603.Значение  = СтруктураДанныхРаздела.П000040000603;
			Форма.ТабличныйДокумент.Области.П000040000604.Значение  = СтруктураДанныхРаздела.П000040000604;
			Форма.ТабличныйДокумент.Области.П000040000605.Значение  = СтруктураДанныхРаздела.П000040000605;
			Форма.ТабличныйДокумент.Области.П000040000606.Значение  = СтруктураДанныхРаздела.П000040000606;
			Форма.ТабличныйДокумент.Области.П000040000903.Значение  = СтруктураДанныхРаздела.П000040000903;
			Форма.ТабличныйДокумент.Области.П000040000904.Значение  = СтруктураДанныхРаздела.П000040000904;
			Форма.ТабличныйДокумент.Области.П000040000905.Значение  = СтруктураДанныхРаздела.П000040000905;
			Форма.ТабличныйДокумент.Области.П000040000906.Значение  = СтруктураДанныхРаздела.П000040000906;
			
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_6" Тогда
		//Раздел1_6
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		СтруктураДанныхРаздела.П000410004003  = ? (СтруктураДанныхРаздела.П000410002003 <> 0,
												  (СтруктураДанныхРаздела.П000410003003
												 / СтруктураДанныхРаздела.П000410002003) * 100, 0);
												
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000410004003.Значение  = СтруктураДанныхРаздела.П000410004003;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел1_7" Тогда	
		//Раздел1_7
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		СтруктураДанныхРаздела.П000050003007 = СтруктураДанныхРаздела.П000050004007
											 + СтруктураДанныхРаздела.П000050005007;
		СтруктураДанныхРаздела.П000050003008 = СтруктураДанныхРаздела.П000050004008
											 + СтруктураДанныхРаздела.П000050005008;
		СтруктураДанныхРаздела.П000050003010 = СтруктураДанныхРаздела.П000050004010
											 + СтруктураДанныхРаздела.П000050005010;
		СтруктураДанныхРаздела.П000050003011 = СтруктураДанныхРаздела.П000050004011
											 + СтруктураДанныхРаздела.П000050005011;
		СтруктураДанныхРаздела.П000050003016 = СтруктураДанныхРаздела.П000050004016
											 + СтруктураДанныхРаздела.П000050005016;
		СтруктураДанныхРаздела.П000050003017 = СтруктураДанныхРаздела.П000050004017
											 + СтруктураДанныхРаздела.П000050005017;
		СтруктураДанныхРаздела.П000050001003 = СтруктураДанныхРаздела.П000050001006
											 + СтруктураДанныхРаздела.П000050001009
											 + СтруктураДанныхРаздела.П000050001012
											 + СтруктураДанныхРаздела.П000050001015
											 + СтруктураДанныхРаздела.П000050001018;
		СтруктураДанныхРаздела.П000050002003 = СтруктураДанныхРаздела.П000050002006
											 + СтруктураДанныхРаздела.П000050002009
											 + СтруктураДанныхРаздела.П000050002015
											 + СтруктураДанныхРаздела.П000050002018;
		СтруктураДанныхРаздела.П000050003003 = СтруктураДанныхРаздела.П000050003006
											 + СтруктураДанныхРаздела.П000050003009
											 + СтруктураДанныхРаздела.П000050003015;
		СтруктураДанныхРаздела.П000050004003 = СтруктураДанныхРаздела.П000050004006
											 + СтруктураДанныхРаздела.П000050004009
											 + СтруктураДанныхРаздела.П000050004015;
		СтруктураДанныхРаздела.П000050005003 = СтруктураДанныхРаздела.П000050005006
											 + СтруктураДанныхРаздела.П000050005009
											 + СтруктураДанныхРаздела.П000050005015;
		СтруктураДанныхРаздела.П000050006003 = СтруктураДанныхРаздела.П000050006006
											 + СтруктураДанныхРаздела.П000050006009
											 + СтруктураДанныхРаздела.П000050006015;
		СтруктураДанныхРаздела.П000050001004 = СтруктураДанныхРаздела.П000050001007
											 + СтруктураДанныхРаздела.П000050001010
											 + СтруктураДанныхРаздела.П000050001013
											 + СтруктураДанныхРаздела.П000050001016
											 + СтруктураДанныхРаздела.П000050001019;
		СтруктураДанныхРаздела.П000050002004 = СтруктураДанныхРаздела.П000050002007
											 + СтруктураДанныхРаздела.П000050002010
											 + СтруктураДанныхРаздела.П000050002016
											 + СтруктураДанныхРаздела.П000050002019;
		СтруктураДанныхРаздела.П000050003004 = СтруктураДанныхРаздела.П000050003007
											 + СтруктураДанныхРаздела.П000050003010
											 + СтруктураДанныхРаздела.П000050003016;
		СтруктураДанныхРаздела.П000050004004 = СтруктураДанныхРаздела.П000050004007
											 + СтруктураДанныхРаздела.П000050004010
											 + СтруктураДанныхРаздела.П000050004016;
		СтруктураДанныхРаздела.П000050005004 = СтруктураДанныхРаздела.П000050005007
											 + СтруктураДанныхРаздела.П000050005010
											 + СтруктураДанныхРаздела.П000050005016;
		СтруктураДанныхРаздела.П000050006004 = СтруктураДанныхРаздела.П000050006007
											 + СтруктураДанныхРаздела.П000050006010
											 + СтруктураДанныхРаздела.П000050006016;
		СтруктураДанныхРаздела.П000050001005 = СтруктураДанныхРаздела.П000050001008
											 + СтруктураДанныхРаздела.П000050001011
											 + СтруктураДанныхРаздела.П000050001014
											 + СтруктураДанныхРаздела.П000050001017
											 + СтруктураДанныхРаздела.П000050001020;
		СтруктураДанныхРаздела.П000050002005 = СтруктураДанныхРаздела.П000050002008
											 + СтруктураДанныхРаздела.П000050002011
											 + СтруктураДанныхРаздела.П000050002017
											 + СтруктураДанныхРаздела.П000050002020;
		СтруктураДанныхРаздела.П000050003005 = СтруктураДанныхРаздела.П000050003008
											 + СтруктураДанныхРаздела.П000050003011
											 + СтруктураДанныхРаздела.П000050003017;
		СтруктураДанныхРаздела.П000050004005 = СтруктураДанныхРаздела.П000050004008
											 + СтруктураДанныхРаздела.П000050004011
											 + СтруктураДанныхРаздела.П000050004017;
		СтруктураДанныхРаздела.П000050005005 = СтруктураДанныхРаздела.П000050005008
											 + СтруктураДанныхРаздела.П000050005011
											 + СтруктураДанныхРаздела.П000050005017;
		СтруктураДанныхРаздела.П000050006005 = СтруктураДанныхРаздела.П000050006008
											 + СтруктураДанныхРаздела.П000050006011
											 + СтруктураДанныхРаздела.П000050006017;
		СтруктураДанныхРаздела.П000050007003 = СтруктураДанныхРаздела.П000050001003
											 + СтруктураДанныхРаздела.П000050002003
											 + СтруктураДанныхРаздела.П000050003003
											 + СтруктураДанныхРаздела.П000050006003;
		СтруктураДанныхРаздела.П000050007005 = СтруктураДанныхРаздела.П000050001005
											 + СтруктураДанныхРаздела.П000050002005
											 + СтруктураДанныхРаздела.П000050003005
											 + СтруктураДанныхРаздела.П000050006005;
		СтруктураДанныхРаздела.П000050007006 = СтруктураДанныхРаздела.П000050001006
											 + СтруктураДанныхРаздела.П000050002006
											 + СтруктураДанныхРаздела.П000050003006
											 + СтруктураДанныхРаздела.П000050006006;
		СтруктураДанныхРаздела.П000050007008 = СтруктураДанныхРаздела.П000050001008
											 + СтруктураДанныхРаздела.П000050002008
											 + СтруктураДанныхРаздела.П000050003008
											 + СтруктураДанныхРаздела.П000050006008;
		СтруктураДанныхРаздела.П000050007009 = СтруктураДанныхРаздела.П000050001009
											 + СтруктураДанныхРаздела.П000050002009
											 + СтруктураДанныхРаздела.П000050003009
											 + СтруктураДанныхРаздела.П000050006009;
		СтруктураДанныхРаздела.П000050007011 = СтруктураДанныхРаздела.П000050001011
											 + СтруктураДанныхРаздела.П000050002011
											 + СтруктураДанныхРаздела.П000050003011
											 + СтруктураДанныхРаздела.П000050006011;
		СтруктураДанныхРаздела.П000050007012 = СтруктураДанныхРаздела.П000050001012;
		СтруктураДанныхРаздела.П000050007014 = СтруктураДанныхРаздела.П000050001014;
		СтруктураДанныхРаздела.П000050007015 = СтруктураДанныхРаздела.П000050001015
											 + СтруктураДанныхРаздела.П000050002015
											 + СтруктураДанныхРаздела.П000050003015
											 + СтруктураДанныхРаздела.П000050006015;
		СтруктураДанныхРаздела.П000050007017 = СтруктураДанныхРаздела.П000050001017
											 + СтруктураДанныхРаздела.П000050002017
											 + СтруктураДанныхРаздела.П000050003017
											 + СтруктураДанныхРаздела.П000050006017;
		СтруктураДанныхРаздела.П000050007018 = СтруктураДанныхРаздела.П000050001018
											 + СтруктураДанныхРаздела.П000050002018;
		СтруктураДанныхРаздела.П000050007020 = СтруктураДанныхРаздела.П000050001020
											 + СтруктураДанныхРаздела.П000050002020;
											
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000050003007.Значение = СтруктураДанныхРаздела.П000050003007;
			Форма.ТабличныйДокумент.Области.П000050003008.Значение = СтруктураДанныхРаздела.П000050003008;
			Форма.ТабличныйДокумент.Области.П000050003010.Значение = СтруктураДанныхРаздела.П000050003010;
			Форма.ТабличныйДокумент.Области.П000050003011.Значение = СтруктураДанныхРаздела.П000050003011;
			Форма.ТабличныйДокумент.Области.П000050003016.Значение = СтруктураДанныхРаздела.П000050003016;
			Форма.ТабличныйДокумент.Области.П000050003017.Значение = СтруктураДанныхРаздела.П000050003017;
			Форма.ТабличныйДокумент.Области.П000050001003.Значение = СтруктураДанныхРаздела.П000050001003;
			Форма.ТабличныйДокумент.Области.П000050002003.Значение = СтруктураДанныхРаздела.П000050002003;
			Форма.ТабличныйДокумент.Области.П000050003003.Значение = СтруктураДанныхРаздела.П000050003003;
			Форма.ТабличныйДокумент.Области.П000050004003.Значение = СтруктураДанныхРаздела.П000050004003;
			Форма.ТабличныйДокумент.Области.П000050005003.Значение = СтруктураДанныхРаздела.П000050005003;
			Форма.ТабличныйДокумент.Области.П000050006003.Значение = СтруктураДанныхРаздела.П000050006003;
			Форма.ТабличныйДокумент.Области.П000050001004.Значение = СтруктураДанныхРаздела.П000050001004;
			Форма.ТабличныйДокумент.Области.П000050002004.Значение = СтруктураДанныхРаздела.П000050002004;
			Форма.ТабличныйДокумент.Области.П000050003004.Значение = СтруктураДанныхРаздела.П000050003004;
			Форма.ТабличныйДокумент.Области.П000050004004.Значение = СтруктураДанныхРаздела.П000050004004;
			Форма.ТабличныйДокумент.Области.П000050005004.Значение = СтруктураДанныхРаздела.П000050005004;
			Форма.ТабличныйДокумент.Области.П000050006004.Значение = СтруктураДанныхРаздела.П000050006004;
			Форма.ТабличныйДокумент.Области.П000050001005.Значение = СтруктураДанныхРаздела.П000050001005;
			Форма.ТабличныйДокумент.Области.П000050002005.Значение = СтруктураДанныхРаздела.П000050002005;
			Форма.ТабличныйДокумент.Области.П000050003005.Значение = СтруктураДанныхРаздела.П000050003005;
			Форма.ТабличныйДокумент.Области.П000050004005.Значение = СтруктураДанныхРаздела.П000050004005;
			Форма.ТабличныйДокумент.Области.П000050005005.Значение = СтруктураДанныхРаздела.П000050005005;
			Форма.ТабличныйДокумент.Области.П000050006005.Значение = СтруктураДанныхРаздела.П000050006005;
			Форма.ТабличныйДокумент.Области.П000050007003.Значение = СтруктураДанныхРаздела.П000050007003;
			Форма.ТабличныйДокумент.Области.П000050007005.Значение = СтруктураДанныхРаздела.П000050007005;
			Форма.ТабличныйДокумент.Области.П000050007006.Значение = СтруктураДанныхРаздела.П000050007006;
			Форма.ТабличныйДокумент.Области.П000050007008.Значение = СтруктураДанныхРаздела.П000050007008;
			Форма.ТабличныйДокумент.Области.П000050007009.Значение = СтруктураДанныхРаздела.П000050007009;
			Форма.ТабличныйДокумент.Области.П000050007011.Значение = СтруктураДанныхРаздела.П000050007011;
			Форма.ТабличныйДокумент.Области.П000050007012.Значение = СтруктураДанныхРаздела.П000050007012;
			Форма.ТабличныйДокумент.Области.П000050007014.Значение = СтруктураДанныхРаздела.П000050007014;
			Форма.ТабличныйДокумент.Области.П000050007015.Значение = СтруктураДанныхРаздела.П000050007015;
			Форма.ТабличныйДокумент.Области.П000050007017.Значение = СтруктураДанныхРаздела.П000050007017;
			Форма.ТабличныйДокумент.Области.П000050007018.Значение = СтруктураДанныхРаздела.П000050007018;
			Форма.ТабличныйДокумент.Области.П000050007020.Значение = СтруктураДанныхРаздела.П000050007020;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_1" Тогда	
		//Раздел2_1
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		//ТАБЛИЦА6
		СтруктураДанныхРаздела.П000060001203 = СтруктураДанныхРаздела.П000060001303
											 + СтруктураДанныхРаздела.П000060001403
											 + СтруктураДанныхРаздела.П000060001503;
		СтруктураДанныхРаздела.П000060001204 = СтруктураДанныхРаздела.П000060001304
											 + СтруктураДанныхРаздела.П000060001404
											 + СтруктураДанныхРаздела.П000060001504;
		СтруктураДанныхРаздела.П000060001205 = СтруктураДанныхРаздела.П000060001305
											 + СтруктураДанныхРаздела.П000060001405
											 + СтруктураДанныхРаздела.П000060001505;
		СтруктураДанныхРаздела.П000060001010 = СтруктураДанныхРаздела.П000060001006
										* (1 - СтруктураДанныхРаздела.П000060001007 / 100
											 + СтруктураДанныхРаздела.П000060001009 / 100);
		//ТАБЛИЦА 7
		СтруктураДанныхРаздела.П000070002401 = СтруктураДанныхРаздела.П000070002101
											 + СтруктураДанныхРаздела.П000070002201
											 + СтруктураДанныхРаздела.П000070002301;
		СтруктураДанныхРаздела.П000070011401 = СтруктураДанныхРаздела.П000070011101
											 + СтруктураДанныхРаздела.П000070011201
											 + СтруктураДанныхРаздела.П000070011301;
		СтруктураДанныхРаздела.П000070012401 = СтруктураДанныхРаздела.П000070012101
											 + СтруктураДанныхРаздела.П000070012201
											 + СтруктураДанныхРаздела.П000070012301;
		СтруктураДанныхРаздела.П000070002003 = СтруктураДанныхРаздела.П000070002001
											 + СтруктураДанныхРаздела.П000070002401;
		СтруктураДанныхРаздела.П000070011003 = СтруктураДанныхРаздела.П000070011001
											 + СтруктураДанныхРаздела.П000070011401;
		СтруктураДанныхРаздела.П000070012003 = СтруктураДанныхРаздела.П000070012001
											 + СтруктураДанныхРаздела.П000070012401;
		СтруктураДанныхРаздела.П000070008003 = СтруктураДанныхРаздела.П000070001003
											 + СтруктураДанныхРаздела.П000070002003
											 + СтруктураДанныхРаздела.П000070003003
											 + СтруктураДанныхРаздела.П000070004003
											 + СтруктураДанныхРаздела.П000070005003
											 + СтруктураДанныхРаздела.П000070006003
											 + СтруктураДанныхРаздела.П000070007003;
		СтруктураДанныхРаздела.П000070014003 = СтруктураДанныхРаздела.П000070010003
											 + СтруктураДанныхРаздела.П000070011003
											 + СтруктураДанныхРаздела.П000070012003
											 + СтруктураДанныхРаздела.П000070013003;
											 
		СтруктураДанныхРаздела.П000070009003 = ?(СтруктураДанныхРаздела.П000070014003 > СтруктураДанныхРаздела.П000070008003
											   , СтруктураДанныхРаздела.П000070014003 - СтруктураДанныхРаздела.П000070008003, 0);
		СтруктураДанныхРаздела.П000070015003 = ?(СтруктураДанныхРаздела.П000070008003 > СтруктураДанныхРаздела.П000070014003
											   , СтруктураДанныхРаздела.П000070008003 - СтруктураДанныхРаздела.П000070014003, 0);
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000060001203.Значение = СтруктураДанныхРаздела.П000060001203;
			Форма.ТабличныйДокумент.Области.П000060001204.Значение = СтруктураДанныхРаздела.П000060001204;
			Форма.ТабличныйДокумент.Области.П000060001205.Значение = СтруктураДанныхРаздела.П000060001205;
			Форма.ТабличныйДокумент.Области.П000060001010.Значение = СтруктураДанныхРаздела.П000060001010;
			Форма.ТабличныйДокумент.Области.П000070002401.Значение = СтруктураДанныхРаздела.П000070002401;
			Форма.ТабличныйДокумент.Области.П000070011401.Значение = СтруктураДанныхРаздела.П000070011401;
			Форма.ТабличныйДокумент.Области.П000070012401.Значение = СтруктураДанныхРаздела.П000070012401;
			Форма.ТабличныйДокумент.Области.П000070002003.Значение = СтруктураДанныхРаздела.П000070002003;
			Форма.ТабличныйДокумент.Области.П000070011003.Значение = СтруктураДанныхРаздела.П000070011003;
			Форма.ТабличныйДокумент.Области.П000070012003.Значение = СтруктураДанныхРаздела.П000070012003;
			Форма.ТабличныйДокумент.Области.П000070008003.Значение = СтруктураДанныхРаздела.П000070008003;
			Форма.ТабличныйДокумент.Области.П000070014003.Значение = СтруктураДанныхРаздела.П000070014003;
			Форма.ТабличныйДокумент.Области.П000070009003.Значение = СтруктураДанныхРаздела.П000070009003;
			Форма.ТабличныйДокумент.Области.П000070015003.Значение = СтруктураДанныхРаздела.П000070015003;
			
		КонецЕсли;

	ИначеЕсли ИмяТекущегоРаздела = "Раздел2_2" Тогда	
		//Раздел2_2
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		СтруктураДанныхРаздела.П000080010004 = СтруктураДанныхРаздела.П000080001004
											 + СтруктураДанныхРаздела.П000080004004
											 + СтруктураДанныхРаздела.П000080007004
											 + СтруктураДанныхРаздела.П000080009004;
		СтруктураДанныхРаздела.П000090004003 = СтруктураДанныхРаздела.П000090001003
											 + СтруктураДанныхРаздела.П000090003003;
											
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000080010004.Значение = СтруктураДанныхРаздела.П000080010004;
			Форма.ТабличныйДокумент.Области.П000090004003.Значение = СтруктураДанныхРаздела.П000090004003;
			
		КонецЕсли;
		
	КонецЕсли;

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

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

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

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

КонецПроцедуры // ДобавитьСтрокуНаКлиенте()

&НаКлиенте
Процедура УдалитьСтроку(Команда)
	
	ТекТабличноеПоле = ЭтаФорма["ТабличныйДокумент"];

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

	Если ИмяГруппы = Неопределено Тогда
		
		Сообщение = Новый СообщениеПользователю;

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ВставитьДополнительнуюСтроку(Форма, ТекущаяСтраница)
	Перем СтруктураГруппы;
	Перем МаксимальноеКоличествоСтрокГруппы;

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

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

	// определяем последнюю строку многострочной группы
	КолСтрок = СтруктураГруппы.Количество();
	КолСтрокСтр = Формат(КолСтрок, "ЧГ=0");
	КолСтрокСтр1 = Формат(КолСтрок + 1, "ЧГ=0");
	ИмяПервойЯчейкиПоследнейСтроки = ИмяГруппы + "01_" + КолСтрокСтр;

	// область первой ячейки последней строки многострочного раздела
	ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяПервойЯчейкиПоследнейСтроки];

	// номера строк исходной области
	НомерВерхЯчейкиОбласти = ОбластьЯчейки.Верх;
	НомерНижнЯчейкиОбласти = ОбластьЯчейки.Низ;
	СдвигСтрок = НомерНижнЯчейкиОбласти - НомерВерхЯчейкиОбласти + 1;

	// номера строк вставляемой области
	НомерВерхЯчейкиНовойОбласти = НомерВерхЯчейкиОбласти + СдвигСтрок;
	НомерНижнЯчейкиНовойОбласти = НомерНижнЯчейкиОбласти + СдвигСтрок;

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

	// Назначим текущей областью таблицы первую редактируемую ячейку добавленной строки.
	// Определяем текущую область таблицы
	ИмяТекущейОбласти = ИмяГруппы + "01_" + КолСтрокСтр1;

	Форма.Элементы[ТекТабличноеПолеИмя].ТекущаяОбласть = ТекТабличноеПоле.Области[ИмяТекущейОбласти];

	// установим фокус на поле табличн. документа
	Форма.ТекущийЭлемент = Форма.Элементы[ТекТабличноеПолеИмя];

	// добавляем в структуру многострочной группы новую строку
	СтруктураГруппы.Добавить();
	РегламентированнаяОтчетностьКлиентСервер.ОтрисоватьЗначкиУдаленияСтрок(Форма);
	Форма.Модифицированность = Истина;

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

&НаСервере
Процедура УдалитьДополнительнуюСтрокуНаСервере()
	
	УдалитьДополнительнуюСтроку(ЭтаФорма);
	
КонецПроцедуры // УдалитьДополнительнуюСтрокуНаСервере()

&НаКлиенте
Процедура УдалитьДополнительнуюСтрокуНаКлиенте()
	
	УдалитьДополнительнуюСтроку(ЭтаФорма);
	
КонецПроцедуры // УдалитьДополнительнуюСтрокуНаКлиенте()

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

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

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

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

	// исходное количество строк группы
	Форма.мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);

	ТекТабличноеПолеИмя = "ТабличныйДокумент";
	
	ТекТабличноеПоле = Форма[ТекТабличноеПолеИмя];
	
	Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы);
	
	СтруктураГруппы = Форма[СтруктураГруппы];

	// Выполним также проверку вхождения текущей (выделенной) ячейки в многострочный раздел
	ТекущаяОбласть = Форма.Элементы["ТабличныйДокумент"].ТекущаяОбласть;
	ИмяЯчейки = ТекущаяОбласть.Имя;

	// номер строки многострочного раздела определим
	// по имени выделенной ячейки
	НомУдаляемойСтроки = Число(Сред(ИмяЯчейки, СтрНайти(ИмяЯчейки, "_") + 1));
	НомерСтрокиТаблицы = НомУдаляемойСтроки - 1; // нумерация строк в таблице значений начинается с нуля

	Если СтруктураГруппы.Количество() > ИсходноеКоличествоСтрокГруппы Тогда
		// удаляется добавленная строка
		ИмяПервойЯчейкиУдаляемойСтроки = ИмяГруппы + "01_" + Формат(НомУдаляемойСтроки, "ЧГ=0");

		// область первой ячейки удаляемой строки многострочного раздела
		ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяПервойЯчейкиУдаляемойСтроки];

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

		Если ТекТабличноеПоле.Области.Найти(ИмяОбластиМнгЧ) <> Неопределено Тогда
			ОбластьВерх = ТекТабличноеПоле.Области[ИмяОбластиМнгЧ].Верх;
			ОбластьНиз = ТекТабличноеПоле.Области[ИмяОбластиМнгЧ].Низ;
		КонецЕсли;

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

		КолвоСдвигаемыхСтрок = СтруктураГруппы.Количество() - НомУдаляемойСтроки;

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

		// обновляем структуру многострочного раздела
		СтруктураГруппы.Удалить(НомерСтрокиТаблицы);

	Иначе
		// строка не удаляется в форме табличного документа,
		// а должна осуществляться сдвиг строк

		// обновляем структуру многострочного раздела
		// методом удаления выбранной строки и добавления пустой строки
		СтруктураГруппы.Удалить(НомерСтрокиТаблицы);

		ДобавляемаяСтрока = СтруктураГруппы.Добавить();

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

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

	// назначим текущей областью таблицы первую редактируемую ячейку
	// удаленной строки, если ее порядковый номер меньше кол-ва строк
	// многострочного раздела, или последней строки раздела в противном случае

	// определяем текущую область таблицы
	НомТекущейСтроки = Мин(НомУдаляемойСтроки, СтруктураГруппы.Количество());
	ИмяТекущейОбласти = ИмяГруппы + "01_" + Формат(НомТекущейСтроки, "ЧГ=0");

	Форма.Элементы[ТекТабличноеПолеИмя].ТекущаяОбласть = ТекТабличноеПоле.Области[ИмяТекущейОбласти];

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

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

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

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

&НаСервере
Процедура ОчиститьНаСервере() Экспорт
	
	СтруктураДанныхРаздел1_1.Очистить();
	СтруктураДанныхРаздел1_2.Очистить();
	СтруктураДанныхРаздел1_3.Очистить();
	СтруктураДанныхРаздел1_4.Очистить();
	СтруктураДанныхРаздел1_5.Очистить();
	СтруктураДанныхРаздел1_6.Очистить();
	СтруктураДанныхРаздел1_7.Очистить();
	СтруктураДанныхРаздел2_1.Очистить();
	СтруктураДанныхРаздел2_2.Очистить();
	
	Для Каждого мнгРаздел Из мСтруктураМногострочныхРазделов Цикл
		ЭтаФорма[мнгРаздел.Ключ].Очистить();
	КонецЦикла;
	
	НачальныеОперацииСМногострочнымиБлоками();
	
	ЗаполнитьПустыеСтруктурыДанных();

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

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

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

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

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

&НаСервере
Функция ВыводитьНаПечатьПоПисьмуОт_28_12_2011(ВыбраннаяСтраница)
	
	ПрименятьПоложенияПисьма = (КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) >= КонецГода('20111231'));
	
	Если ПрименятьПоложенияПисьма Тогда
		
		ИмяСтраницы = ВыбраннаяСтраница.ИмяСтраницы;
		
		Если ИмяСтраницы = "Раздел1_2" Тогда
			
			Возврат ЗаполненРаздел1Таблица2();
			
		ИначеЕсли ИмяСтраницы = "Раздел1_4" Тогда
			
			Возврат ЗаполненРаздел1Таблица3_1();
			
		ИначеЕсли ИмяСтраницы = "Раздел1_5" Тогда
			
			Возврат ЗаполненРаздел1Таблица4();
			
		ИначеЕсли ИмяСтраницы = "Раздел1_6" Тогда
			
			Возврат ЗаполненРаздел1Таблица4_1();
			
		ИначеЕсли ИмяСтраницы = "Раздел1_7" Тогда
			
			Возврат ЗаполненРаздел1Таблица5();
			
		ИначеЕсли ИмяСтраницы = "Раздел2_2" Тогда
			
			Возврат ЗаполненРаздел2Таблица8_9();
			
		Иначе
			
			Возврат ВыбраннаяСтраница.ВыводНаПечать;
			
		КонецЕсли;
		
	Иначе
		
		Возврат ВыбраннаяСтраница.ВыводНаПечать;
		
	КонецЕсли;
	
КонецФункции

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

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

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

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

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

&НаСервере
Функция ЗаполненРаздел2Таблица8_9()

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

&НаСервере
Функция ПоказательЗаполнен(ОбластьПоказателя)
	
	Если ОбластьПоказателя.СодержитЗначение Тогда
		ЗначениеОбласти = ОбластьПоказателя.Значение;
		ТипЗначенияОбласти = ТипЗнч(ЗначениеОбласти);
		Если ТипЗначенияОбласти = Тип("Число") Тогда
			Возврат (ЗначениеОбласти <> 0);
		ИначеЕсли ТипЗначенияОбласти = Тип("Строка") Тогда
			Возврат (НЕ ПустаяСтрока(ЗначениеОбласти));
		Иначе
			Возврат ЗначениеЗаполнено(ЗначениеОбласти);
		КонецЕсли;
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки)
	
	СтатусПроверки = Истина;
	
	// проверка показателей титульного листа
	Если ПустаяСтрока(ПараметрыВыгрузки.ИНН) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан ИНН организации!", "Титульный", "ИНН1");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.НомерСтрахователя) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан номер страхователя!", "Титульный", "ОргФССКод");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.КодФонда) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "На титульном листе не задано значение кода органа ФСС, в который представляется отчет!", "Титульный");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	Если НЕ ПустаяСтрока(СокрЛП(СтрЗаменить(ПараметрыВыгрузки.ОКВЭД, ".", ""))) И НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ПараметрыВыгрузки.ОКВЭД) Тогда
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Некорректное значение кода вида деятельности по ОКВЭД!", "Титульный", "ОКВЭД");
		СтатусПроверки = Ложь;
	КонецЕсли;
	
	ВозможныеЗначенияШифра1 = Новый Массив;
	ВозможныеЗначенияШифра1.Добавить("032");
	ВозможныеЗначенияШифра1.Добавить("041");
	ВозможныеЗначенияШифра1.Добавить("051");
	ВозможныеЗначенияШифра1.Добавить("061");
	ВозможныеЗначенияШифра1.Добавить("071");
	ВозможныеЗначенияШифра1.Добавить("081");
	ВозможныеЗначенияШифра1.Добавить("091");
	ВозможныеЗначенияШифра1.Добавить("101");
	ВозможныеЗначенияШифра1.Добавить("111");
	
	ВозможныеЗначенияШифра2 = Новый Массив;
	ВозможныеЗначенияШифра2.Добавить("00");
	ВозможныеЗначенияШифра2.Добавить("01");
	ВозможныеЗначенияШифра2.Добавить("02");
	ВозможныеЗначенияШифра2.Добавить("03");
	
	ВозможныеЗначенияШифра3 = Новый Массив;
	ВозможныеЗначенияШифра3.Добавить("00");
	ВозможныеЗначенияШифра3.Добавить("01");
	
	
	Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах1Часть) Тогда
		Если ВозможныеЗначенияШифра1.Найти(ПараметрыВыгрузки.ШифрСтрах1Часть) = Неопределено Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана первая часть шифра страхователя!", "Титульный", "ШифрСтрах1Часть");
			СтатусПроверки = Ложь;
		КонецЕсли;	
	Иначе
		РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано значение первой части шифра страхователя!", "Титульный", "ШифрСтрах1Часть");
		СтатусПроверки = Ложь;
	КонецЕсли;

	Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах2Часть) Тогда
		Если ВозможныеЗначенияШифра2.Найти(ПараметрыВыгрузки.ШифрСтрах2Часть) = Неопределено Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана вторая часть шифра страхователя!", "Титульный", "ШифрСтрах2Часть");
			СтатусПроверки = Ложь;
		КонецЕсли;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах3Часть) Тогда
		Если ВозможныеЗначенияШифра3.Найти(ПараметрыВыгрузки.ШифрСтрах3Часть) = Неопределено Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана третья часть шифра страхователя!", "Титульный", "ШифрСтрах3Часть");
			СтатусПроверки = Ложь;
		КонецЕсли;
	КонецЕсли;
	
	Если ПараметрыВыгрузки.НомерКорректировки <> 0 Тогда
		Если ПараметрыВыгрузки.НомДопРасчета <> 0 Тогда
			РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "При номере корректировке, отличном от 000 вторая часть кода ""Отчетный период"" должна быть равной 00!", "Титульный", "НомДопРасчета");
			СтатусПроверки = Ложь;
		КонецЕсли; 
	КонецЕсли;
	
	//таблица 3.1
	ДанныеРаздела1_4 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_4;
	НомСтроки = 1;
	
	ФИОСотрудника = Неопределено;
	ДатаВыдачи = Неопределено;
	ДатаОкончания = Неопределено;
	СуммаВсего = Неопределено;
	Сумма1Месяц = Неопределено;
	Сумма2Месяц = Неопределено;
	Сумма3Месяц = Неопределено;
	
	Пока ДанныеРаздела1_4.Свойство("П000310001002_" + Формат(НомСтроки, "ЧГ="), ФИОСотрудника) Цикл
		НомерСтроки = Формат(НомСтроки, "ЧГ=");
		
		СтрокаЗаполнена = Ложь;
		ДанныеРаздела1_4.Свойство("П000310001003_" + НомерСтроки, ДатаВыдачи);
		ДанныеРаздела1_4.Свойство("П000310001004_" + НомерСтроки, ДатаОкончания);
		ДанныеРаздела1_4.Свойство("П000310001005_" + НомерСтроки, СуммаВсего);
		ДанныеРаздела1_4.Свойство("П000310001006_" + НомерСтроки, Сумма1Месяц);
		ДанныеРаздела1_4.Свойство("П000310001007_" + НомерСтроки, Сумма2Месяц);
		ДанныеРаздела1_4.Свойство("П000310001008_" + НомерСтроки, Сумма3Месяц);
		
		
		Если ЗначениеЗаполнено(ФИОСотрудника) ИЛИ  ЗначениеЗаполнено(ДатаВыдачи) ИЛИ ЗначениеЗаполнено(ДатаОкончания) ИЛИ ЗначениеЗаполнено(СуммаВсего) 
		ИЛИ ЗначениеЗаполнено(Сумма1Месяц) ИЛИ ЗначениеЗаполнено(Сумма2Месяц) ИЛИ ЗначениеЗаполнено(Сумма3Месяц) Тогда
			СтрокаЗаполнена = Истина;
		КонецЕсли;
					
		Если СтрокаЗаполнена Тогда
			
			ФИО = РегламентированнаяОтчетность.РазложитьФИО(ФИОСотрудника);
			Если НЕ ЗначениеЗаполнено(ФИО.Фамилия) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, в строке " + НомерСтроки + " не указана фамилия сотрудника!", "Раздел1_4", "П000310001002_" + НомерСтроки);			
				СтатусПроверки = Ложь;
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(ФИО.Имя) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, в строке " + НомерСтроки + " не указано имя сотрудника!", "Раздел1_4", "П000310001002_" + НомерСтроки);			
				СтатусПроверки = Ложь;
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(ДатаВыдачи) Тогда
				РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, строке " + НомерСтроки + " не указана дата выдачи справки!", "Раздел1_4", "П000310001003_" + НомерСтроки);			
				СтатусПроверки = Ложь;
			КонецЕсли;
		КонецЕсли;
		НомСтроки = НомСтроки +1;
	КонецЦикла;
	
	Возврат СтатусПроверки;
	
КонецФункции // ПроверитьВозможностьВыгрузки()

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

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

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

&НаСервере
Функция СоздатьНовыйПотокXML() Экспорт
	
	ПотокXML = Новый ЗаписьXML();
	ПотокXML.УстановитьСтроку("windows-1251");
	ПотокXML.ЗаписатьОбъявлениеXML();
	ПотокXML.Отступ = Истина;
	
	ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.3""?>");
	
	Возврат Поток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;
	Раздел1_4 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_4;
	Раздел1_5 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_5;
	Раздел1_6 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_6;
	Раздел1_7 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_7;
	Раздел2_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_1;
	Раздел2_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_2;
	
	// выгружаем таблицы 1, 2, 3, 4, 4.1
	УзелF4INF1 = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INF1");
	ЗаполнитьДаннымиУзел(Раздел1_1, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_2, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_3, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_5, УзелF4INF1);
	ЗаполнитьДаннымиУзел(Раздел1_6, УзелF4INF1);
	
	// выгружаем многострочный блок 1_4 (таблица 3.1)
	УзелF4INVALШаблон = ПолучитьПодчиненныйЭлемент(УзелF4INF1, "F4INVAL");
	
	НомСтр = 1;
	Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(Раздел1_4, "П000310001001_" + Формат(НомСтр, "ЧГ=")) Цикл
		// если ФИО заполнено, то выгружаем строку
		Если ЗначениеЗаполнено(Раздел1_4["П000310001002_" + Формат(НомСтр, "ЧГ=")]) Тогда
			
			УзелF4INVAL = СкопироватьУзел(УзелF4INF1, УзелF4INVALШаблон);
			ВыгрузитьСтрокуМногострочнойЧасти(Раздел1_4, УзелF4INVAL, НомСтр);
			
			ФИО = РегламентированнаяОтчетность.РазложитьФИО(ВРЕГ(Раздел1_4["П000310001002_" + Формат(НомСтр, "ЧГ=")]));
			
			ЗадатьЗначениеЭлемента(УзелF4INVAL, "LNAME", ФИО.Фамилия);
			ЗадатьЗначениеЭлемента(УзелF4INVAL, "FNAME", ФИО.Имя);
			ЗадатьЗначениеЭлемента(УзелF4INVAL, "MNAME", ФИО.Отчество);
			
		КонецЕсли;
		НомСтр = НомСтр + 1;
	КонецЦикла;
	
	// выгружаем таблицы 5, 6, 7, 8, 9
	УзелF4INFO = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INFO");
	ЗаполнитьДаннымиУзел(Раздел1_7, УзелF4INFO);
	ЗаполнитьДаннымиУзел(Раздел2_1, УзелF4INFO);
	ЗаполнитьДаннымиУзел(Раздел2_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(Стр, Данные[Стр.Ключ + СуффиксТекущейСтроки]);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры // ВыгрузитьСтрокуМногострочнойЧасти()

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

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

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

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

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

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

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

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

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

&НаКлиенте
Функция ДобавитьРеквизит(Текст, ДобСтрока, Префикс)
     
	Если ЗначениеЗаполнено(ДобСтрока) Тогда
		Текст = Текст + Префикс + ДобСтрока;
	КонецЕсли;
	
	Возврат Текст;
     
КонецФункции // ДобавитьРеквизит()

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

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

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

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

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

	ИмяОбласти = Область.Имя;;
	
	ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
		
	Если ПозицияПодстроки > 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);
	Контейнер.Вставить("Раздел1_4_ДанныеДопСтрок", П0003100010);
	Контейнер.Вставить("Раздел1_5", СтруктураДанныхРаздел1_5);
	Контейнер.Вставить("Раздел1_6", СтруктураДанныхРаздел1_6);
	Контейнер.Вставить("Раздел1_7", СтруктураДанныхРаздел1_7);
	Контейнер.Вставить("Раздел2_1", СтруктураДанныхРаздел2_1);
	Контейнер.Вставить("Раздел2_2", СтруктураДанныхРаздел2_2);
		
	ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
	Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
	ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
	КонецЕсли;
	ЭтаФормаИмя = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
	РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ЭтаФормаИмя, ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ПараметрыОтчета, Контейнер);
	
	ЗаполнитьПустыеСтруктурыДанных();
	
	Если П0003100010.Количество() = 0 Тогда
		П0003100010.Добавить();
	КонецЕсли; 

	РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
		СтруктураДанныхРаздел1_4, П0003100010);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция РазделТекущейОбласти(Форма, ТекущаяОбласть, ДлИмениОбласти = 13) Экспорт

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

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

		Если СтруктураГруппы[0].Свойство(ИмяАктивногоРаздела) Тогда
			Возврат ИмяГруппы;
		КонецЕсли;
	КонецЦикла;

	Возврат Неопределено;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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