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

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

#Область ПеременныеКС

&НаКлиенте
Перем ОбработкаКС Экспорт;

&НаСервере
Перем СписокРасшифровкиПоказателей;

&НаСервере
Перем СписокРасшифровкиформулы;

&НаСервере
Перем ДанныеКС;

&НаСервере
Перем Документирование;

&НаСервере
Перем ТаблицаОписаний;

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета()
	
	СтруктураЗависимыхЯчеекДляАвторасчета = Новый Структура;
				
	// Таблица 1.
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000303", "П000010000103;П000010000203");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000304", "П000010000104;П000010000204");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000305", "П000010000105;П000010000205");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000306", "П000010000106;П000010000206");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000903", "П000010000503;П000010000603;П000010000703");
	
	// Таблица 1.1.
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000106", "П000110000108;П000110000110;П000110000112");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000107", "П000110000109;П000110000111;П000110000113");
	
	// Таблица 2.
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020002401", "П000020002101;П000020002201;П000020002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020015401", "П000020015101;П000020015201;П000020015301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020016401", "П000020016101;П000020016201;П000020016301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020002003", "П000020002001;П000020002401;П000020002101;П000020002201;П000020002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020012003", "П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020015003", "П000020015001;П000020015401;П000020015101;П000020015201;П000020015301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020016003", "П000020016001;П000020016401;П000020016101;П000020016201;П000020016301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020008003", "П000020001003;П000020001103;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020018003", "П000020012003;П000020014103;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020009003", "П000020018003;П000020008003;П000020001003;П000020001103;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П000020014103;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020010003", "П000020009003;П000020011003;П000020018003;П000020008003;П000020001003;П000020001103;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П000020014103;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020019003", "П000020008003;П000020018003;П000020001003;П000020001103;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П000020014103;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	
	// Таблицы 3, 4.
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030010004", "П000030001004;П000030004004;П000030007004;П000030009004");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040004003", "П000040001003;П000040003003");
	
	// СКЕ / ИФ.
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000910000107", "П000910000109;П000910000111;П000910000113");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000910000108", "П000910000110;П000910000112;П000910000114");
	
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьВариантыЗаполненияПоказателейТаблица1_1(Форма)
	
	ВариантыЗаполненияТаблица1_1 = Форма.ТаблицаВариантыЗаполненияТаблица1_1[0].ТаблицаВариантовЗаполнения;
	
	РегламентированнаяОтчетностьКлиентСервер.ИзменитьВариантыЗаполненияПоказателейТаблицы1_1Формы4ФСС(
																		ВариантыЗаполненияТаблица1_1,
																   		Форма.СтруктураРеквизитовФормы);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьВариантыЗаполненияПоказателейТаблица91(Форма)
	
	ВариантыЗаполненияТаблица91 = Форма.ТаблицаВариантыЗаполненияТаблица91[0].ТаблицаВариантовЗаполнения;
	
	РегламентированнаяОтчетностьКлиентСервер.ИзменитьВариантыЗаполненияПоказателейТаблицы91Формы4ФСС(
																		ВариантыЗаполненияТаблица91,
																   		Форма.СтруктураРеквизитовФормы);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВвестиПоказатели(РезультатВыбора, ДополнительныеПараметры) Экспорт
	
	Если РезультатВыбора = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Область = ДополнительныеПараметры.Область;
	
	Область.Значение = РезультатВыбора.Колонка1;
	
	РезультатВыбора.Колонка3 = ?(РезультатВыбора.Колонка3 = "", 0, Число(РезультатВыбора.Колонка3));
	РезультатВыбора.Колонка4 = ?(РезультатВыбора.Колонка4 = "", 0, Число(РезультатВыбора.Колонка4));
	
	Если СтрНачинаетсяС(Область.Имя, "П000110000104") Тогда
		
		Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000110000104", "П000110000114"));
		Если Обл <> Неопределено Тогда
			Обл.Значение = РезультатВыбора.Колонка4;
		КонецЕсли;
		
	ИначеЕсли СтрНачинаетсяС(Область.Имя, "П000910000102") Тогда
		
		Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000910000102", "П000910000103"));
		Если Обл <> Неопределено Тогда
			Обл.Значение = РезультатВыбора.Колонка3;
		КонецЕсли;
		
		Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000910000102", "П000910000104"));
		Если Обл <> Неопределено Тогда
			Обл.Значение = РезультатВыбора.Колонка4;
		КонецЕсли;
		
	КонецЕсли;
	
	Модифицированность = Истина;
	
	ВключитьПечатьЗаполненногоНеобязательногоРаздела(ЭтаФорма,
	Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ИсходноеКоличествоСтрокГруппы > ТекущееКоличествоСтрокГруппы Тогда
		Для Инд = 1 По (ИсходноеКоличествоСтрокГруппы - ТекущееКоличествоСтрокГруппы) Цикл
			СтруктураГруппы.Добавить();
		КонецЦикла;
	КонецЕсли;
	
	Если ТекущееКоличествоСтрокГруппы > ИсходноеКоличествоСтрокГруппы Тогда

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Если НЕ Автосохранение Тогда

			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = ПараметрыЗаписи.Ошибки[0];

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ОпределитьИдМногострочногоРазделаПоАктивнойСтранице(ИмяЛиста = Неопределено, ТекущаяСтраница = Неопределено, ИдГрупп, ТекущаяОбласть = Неопределено)
	Перем ИмяГруппы;
	
	Если ИмяЛиста = Неопределено Тогда
		ИмяТекущейСтраницыПанели = ТекущаяСтраница.Имя;
	Иначе
		ИмяТекущейСтраницыПанели = ИмяЛиста;
	КонецЕсли;
	
	Если ИмяТекущейСтраницыПанели = "Таблица2" Тогда
		Если ТекущаяОбласть = "П0000200161" Тогда
			ИмяГруппы = ИдГрупп.ИдМСЧ_Таблица2_1;
		ИначеЕсли ТекущаяОбласть = "П0000200162" Тогда
			ИмяГруппы = ИдГрупп.ИдМСЧ_Таблица2_2;	
		ИначеЕсли ТекущаяОбласть = "П0000200163" Тогда
			ИмяГруппы = ИдГрупп.ИдМСЧ_Таблица2_3;		
		Иначе	
			ИмяГруппы = ИдГрупп.ИдМСЧ_Таблица2_1;
		КонецЕсли;
	ИначеЕсли ИмяТекущейСтраницыПанели = "Таблица1_1" Тогда
		ИмяГруппы = ИдГрупп.ИдГруппы1;
	ИначеЕсли ИмяТекущейСтраницыПанели = "Таблица91" Тогда
		ИмяГруппы = ИдГрупп.ИдГруппы91;
	КонецЕсли;
	
	Возврат ИмяГруппы;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

	ОписаниеТиповСтрока15  = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(15));
	ОписаниеТиповСтрока100 = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100));
	ОписаниеТиповСтрока50  = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50));
	ОписаниеТиповЧисло1    = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1));
	ОписаниеТиповЧисло16_2 = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2));
	
	Для Инд = 0 По МакетСоставаПоказателей.Области.Количество() - 1 Цикл

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

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

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

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

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

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

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

		КонецЦикла;

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

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

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

				ЕстьИзменения = Истина;
			Иначе

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

	ЗначениеВДанныеФормы(ОбъектОтчета(ЭтаФорма.ИмяФормы).СтруктураСтраницОтчета(
		СтруктураРеквизитовФормы.мВыбраннаяФорма), ЭтаФорма["мДеревоСтраницОтчета"]);

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

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

	КонецЦикла;

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

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

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

	КонецЦикла;

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

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

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

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

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

			КонецЕсли;

			Если Строка.Строки.Количество() > 0 Тогда

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

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

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

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

						КонецЦикла;

					КонецЕсли;

				КонецЦикла; 

			КонецЕсли; 

		КонецЦикла;

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

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

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

			КонецЕсли;

		КонецЦикла;

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

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

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

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

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

	КонецЦикла; 

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

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

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

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

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

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

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

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

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

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

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

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

	Иначе

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

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

		КонецЦикла;

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура Расчет(Форма, ИмяТекущегоРаздела = "", ОбластьИмя = "")
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
	
	Если ИмяТекущегоРаздела = "Таблица1" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000303, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010000303.Значение = Форма.ТабличныйДокумент.Области.П000010000103.Значение
																   - Форма.ТабличныйДокумент.Области.П000010000203.Значение;
																   
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000304, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010000304.Значение = Форма.ТабличныйДокумент.Области.П000010000104.Значение
																   - Форма.ТабличныйДокумент.Области.П000010000204.Значение;
																   
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000305, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010000305.Значение = Форма.ТабличныйДокумент.Области.П000010000105.Значение
																   - Форма.ТабличныйДокумент.Области.П000010000205.Значение;
																   
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000306, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010000306.Значение = Форма.ТабличныйДокумент.Области.П000010000106.Значение
																   - Форма.ТабличныйДокумент.Области.П000010000206.Значение;
																   
		КонецЕсли;
															   
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000903, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000010000903.Значение = Форма.ТабличныйДокумент.Области.П000010000503.Значение
															  * (1 - Форма.ТабличныйДокумент.Области.П000010000603.Значение / 100
																   + Форма.ТабличныйДокумент.Области.П000010000703.Значение / 100);
																   
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица1_1" Тогда
		
		Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
			
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000110000106, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы1, ТаблицаБлока);
				
				ТаблицаБлока = Форма[ТаблицаБлока];
				
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					
					Форма.ТабличныйДокумент.Области["П000110000106_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000110000108_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000110_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000112_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000110000107, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы1, ТаблицаБлока);
				
				ТаблицаБлока = Форма[ТаблицаБлока];
				
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					
					Форма.ТабличныйДокумент.Области["П000110000107_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000110000109_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000111_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000113_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица2" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020002401, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020002401.Значение = Форма.ТабличныйДокумент.Области.П000020002101.Значение
																   + Форма.ТабличныйДокумент.Области.П000020002201.Значение
																   + Форма.ТабличныйДокумент.Области.П000020002301.Значение;
		КонецЕсли;
	
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020015401, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020015401.Значение = Форма.ТабличныйДокумент.Области.П000020015101.Значение
																   + Форма.ТабличныйДокумент.Области.П000020015201.Значение
																   + Форма.ТабличныйДокумент.Области.П000020015301.Значение;
		КонецЕсли;
	
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020016401, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			МСЧ1 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				МСЧ1 = МСЧ1 + Форма.ТабличныйДокумент.Области["П000020016101_" + Формат(Ном, "ЧГ=")].Значение;
				
			КонецЦикла;
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			МСЧ2 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				МСЧ2 = МСЧ2 + Форма.ТабличныйДокумент.Области["П000020016201_" + Формат(Ном, "ЧГ=")].Значение;
				
			КонецЦикла;
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3, ТаблицаБлока);
			
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			МСЧ3 = 0;
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				МСЧ3 = МСЧ3 + Форма.ТабличныйДокумент.Области["П000020016301_" + Формат(Ном, "ЧГ=")].Значение;
				
			КонецЦикла;
			
			Форма.ТабличныйДокумент.Области.П000020016401.Значение = МСЧ1 + МСЧ2 + МСЧ3;

			Форма.СтруктураДанныхТаблица2.П000020016401 = МСЧ1 + МСЧ2 + МСЧ3;
			
		КонецЕсли;

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020002003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020002003.Значение = Форма.ТабличныйДокумент.Области.П000020002001.Значение
																   + Форма.ТабличныйДокумент.Области.П000020002401.Значение;
		КонецЕсли;
															   
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020012003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020012003.Значение = Форма.ТабличныйДокумент.Области.П000020013003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020014003.Значение;
		КонецЕсли;													   
	
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020015003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020015003.Значение = Форма.ТабличныйДокумент.Области.П000020015001.Значение
																   + Форма.ТабличныйДокумент.Области.П000020015401.Значение;
		КонецЕсли;
	
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020016003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020016003.Значение = Форма.ТабличныйДокумент.Области.П000020016001.Значение
																   + Форма.ТабличныйДокумент.Области.П000020016401.Значение;
		КонецЕсли;

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

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

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

		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020019003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000020019003.Значение = ?(Форма.ТабличныйДокумент.Области.П000020008003.Значение > Форма.ТабличныйДокумент.Области.П000020018003.Значение,
																	   Форма.ТабличныйДокумент.Области.П000020008003.Значение - Форма.ТабличныйДокумент.Области.П000020018003.Значение, 0);
		КонецЕсли;
				
	ИначеЕсли ИмяТекущегоРаздела = "Таблица3_4" Тогда	
	
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030010004, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000030010004.Значение = Форма.ТабличныйДокумент.Области.П000030001004.Значение
																   + Форма.ТабличныйДокумент.Области.П000030004004.Значение
																   + Форма.ТабличныйДокумент.Области.П000030007004.Значение
																   + Форма.ТабличныйДокумент.Области.П000030009004.Значение;
		КонецЕсли;
															   
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040004003, ОбластьИмя) > 0 Тогда
			
			Форма.ТабличныйДокумент.Области.П000040004003.Значение = Форма.ТабличныйДокумент.Области.П000040001003.Значение
																   + Форма.ТабличныйДокумент.Области.П000040003003.Значение;
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица91" Тогда
		
		Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
			
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000910000107, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы91, ТаблицаБлока);
				
				ТаблицаБлока = Форма[ТаблицаБлока];
				
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					
					Форма.ТабличныйДокумент.Области["П000910000107_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000910000109_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000111_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000113_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000910000108, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы91, ТаблицаБлока);
				
				ТаблицаБлока = Форма[ТаблицаБлока];
				
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					
					Форма.ТабличныйДокумент.Области["П000910000108_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000910000110_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000112_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000114_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "" Тогда
		
		РасчетВСтруктуре(Форма, "Таблица1");
		РасчетВСтруктуре(Форма, "Таблица1_1");
		РасчетВСтруктуре(Форма, "Таблица2");
		РасчетВСтруктуре(Форма, "Таблица3_4");
		РасчетВСтруктуре(Форма, "Таблица91");
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура РасчетВСтруктуре(Форма, ИмяТекущегоРаздела)
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
		
	Если ИмяТекущегоРаздела = "Таблица1" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000010000303 = Форма.ТабличныйДокумент.Области.П000010000103.Значение
												 - Форма.ТабличныйДокумент.Области.П000010000203.Значение;
												 
			СтруктураДанныхРаздела.П000010000304 = Форма.ТабличныйДокумент.Области.П000010000104.Значение
												 - Форма.ТабличныйДокумент.Области.П000010000204.Значение;
												 
			СтруктураДанныхРаздела.П000010000305 = Форма.ТабличныйДокумент.Области.П000010000105.Значение
												 - Форма.ТабличныйДокумент.Области.П000010000205.Значение;
												 
			СтруктураДанныхРаздела.П000010000306 = Форма.ТабличныйДокумент.Области.П000010000106.Значение
												 - Форма.ТабличныйДокумент.Области.П000010000206.Значение;
												 
			СтруктураДанныхРаздела.П000010000903 = Форма.ТабличныйДокумент.Области.П000010000503.Значение
											* (1 - Форма.ТабличныйДокумент.Области.П000010000603.Значение / 100
												 + Форма.ТабличныйДокумент.Области.П000010000703.Значение / 100);
			
			Форма.ТабличныйДокумент.Области.П000010000303.Значение = СтруктураДанныхРаздела.П000010000303;
			Форма.ТабличныйДокумент.Области.П000010000304.Значение = СтруктураДанныхРаздела.П000010000304;
			Форма.ТабличныйДокумент.Области.П000010000305.Значение = СтруктураДанныхРаздела.П000010000305;
			Форма.ТабличныйДокумент.Области.П000010000306.Значение = СтруктураДанныхРаздела.П000010000306;
			Форма.ТабличныйДокумент.Области.П000010000903.Значение = СтруктураДанныхРаздела.П000010000903;
			
		Иначе
			
			СтруктураДанныхРаздела.П000010000303 = СтруктураДанныхРаздела.П000010000103
												 - СтруктураДанныхРаздела.П000010000203;
												 
			СтруктураДанныхРаздела.П000010000304 = СтруктураДанныхРаздела.П000010000104
												 - СтруктураДанныхРаздела.П000010000204;
												 
			СтруктураДанныхРаздела.П000010000305 = СтруктураДанныхРаздела.П000010000105
												 - СтруктураДанныхРаздела.П000010000205;
												 
			СтруктураДанныхРаздела.П000010000306 = СтруктураДанныхРаздела.П000010000106
												 - СтруктураДанныхРаздела.П000010000206;
												 
			СтруктураДанныхРаздела.П000010000903 = СтруктураДанныхРаздела.П000010000503
											* (1 - СтруктураДанныхРаздела.П000010000603 / 100
												 + СтруктураДанныхРаздела.П000010000703 / 100);
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица1_1" Тогда
		
		Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
			
			СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы1, ТаблицаБлока);
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Постфикс = Формат(Ном, "ЧГ=");
				
				Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
					
					Форма.ТабличныйДокумент.Области["П000110000106_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000110000108_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000110_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000112_" + Постфикс].Значение;
					
					Форма.ТабличныйДокумент.Области["П000110000107_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000110000109_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000111_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000110000113_" + Постфикс].Значение;
					
				Иначе
					
					СтрБлока = ТаблицаБлока[Ном - 1];
					
					СтрБлока["П000110000106"]
					= СтрБлока["П000110000108"] + СтрБлока["П000110000110"] + СтрБлока["П000110000112"];
					СтруктураДанныхРаздела["П000110000106_" + Постфикс] = СтрБлока["П000110000106"];
					
					СтрБлока["П000110000107"]
					= СтрБлока["П000110000109"] + СтрБлока["П000110000111"] + СтрБлока["П000110000113"];
					СтруктураДанныхРаздела["П000110000107_" + Постфикс] = СтрБлока["П000110000107"];
					
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица2" Тогда	
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000020002401 = Форма.ТабличныйДокумент.Области.П000020002101.Значение
												 + Форма.ТабличныйДокумент.Области.П000020002201.Значение
												 + Форма.ТабличныйДокумент.Области.П000020002301.Значение;
			СтруктураДанныхРаздела.П000020015401 = Форма.ТабличныйДокумент.Области.П000020015101.Значение
												 + Форма.ТабличныйДокумент.Области.П000020015201.Значение
												 + Форма.ТабличныйДокумент.Области.П000020015301.Значение;
			
			Форма.ТабличныйДокумент.Области.П000020002401.Значение = СтруктураДанныхРаздела.П000020002401;
			Форма.ТабличныйДокумент.Области.П000020015401.Значение = СтруктураДанныхРаздела.П000020015401;
			
		Иначе
			
			СтруктураДанныхРаздела.П000020002401 = СтруктураДанныхРаздела.П000020002101
												 + СтруктураДанныхРаздела.П000020002201
												 + СтруктураДанныхРаздела.П000020002301;
			СтруктураДанныхРаздела.П000020015401 = СтруктураДанныхРаздела.П000020015101
												 + СтруктураДанныхРаздела.П000020015201
												 + СтруктураДанныхРаздела.П000020015301;
			
		КонецЕсли;
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		МСЧ1 = 0;
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			
			Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
				
				МСЧ1 = МСЧ1 + Форма.ТабличныйДокумент.Области["П000020016101_" + Формат(Ном, "ЧГ=")].Значение;
				
			Иначе
				
				МСЧ1 = МСЧ1 + ТаблицаБлока[Ном-1]["П000020016101"];
				
			КонецЕсли;
			
		КонецЦикла;
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		МСЧ2 = 0;
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			
			Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
				
				МСЧ2 = МСЧ2 + Форма.ТабличныйДокумент.Области["П000020016201_" + Формат(Ном, "ЧГ=")].Значение;
				
			Иначе
				
				МСЧ2 = МСЧ2 + ТаблицаБлока[Ном-1]["П000020016201"];
				
			КонецЕсли;
			
		КонецЦикла;
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		МСЧ3 = 0;
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			
			Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
				
				МСЧ3 = МСЧ3 + Форма.ТабличныйДокумент.Области["П000020016301_" + Формат(Ном, "ЧГ=")].Значение;
				
			Иначе
				
				МСЧ3 = МСЧ3 + ТаблицаБлока[Ном-1]["П000020016301"];
				
			КонецЕсли;
			
		КонецЦикла;
		
		СтруктураДанныхРаздела.П000020016401 = МСЧ1 + МСЧ2 + МСЧ3;
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			Форма.ТабличныйДокумент.Области.П000020016401.Значение = МСЧ1 + МСЧ2 + МСЧ3;
			
		КонецЕсли;
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000020002003 = Форма.ТабличныйДокумент.Области.П000020002001.Значение
												 + Форма.ТабличныйДокумент.Области.П000020002401.Значение;
			Форма.ТабличныйДокумент.Области.П000020002003.Значение = СтруктураДанныхРаздела.П000020002003;
		
			СтруктураДанныхРаздела.П000020012003 = Форма.ТабличныйДокумент.Области.П000020013003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020014003.Значение;
			Форма.ТабличныйДокумент.Области.П000020012003.Значение = СтруктураДанныхРаздела.П000020012003;
			
			СтруктураДанныхРаздела.П000020015003 = Форма.ТабличныйДокумент.Области.П000020015001.Значение
												 + Форма.ТабличныйДокумент.Области.П000020015401.Значение;
			Форма.ТабличныйДокумент.Области.П000020015003.Значение = СтруктураДанныхРаздела.П000020015003;
			
			СтруктураДанныхРаздела.П000020016003 = Форма.ТабличныйДокумент.Области.П000020016001.Значение
												 + Форма.ТабличныйДокумент.Области.П000020016401.Значение;
			Форма.ТабличныйДокумент.Области.П000020016003.Значение = СтруктураДанныхРаздела.П000020016003;
			
			СтруктураДанныхРаздела.П000020008003 = Форма.ТабличныйДокумент.Области.П000020001003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020001103.Значение
												 + Форма.ТабличныйДокумент.Области.П000020002003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020003003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020004003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020005003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020006003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020007003.Значение;
			Форма.ТабличныйДокумент.Области.П000020008003.Значение = СтруктураДанныхРаздела.П000020008003;
			
			СтруктураДанныхРаздела.П000020018003 = Форма.ТабличныйДокумент.Области.П000020012003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020014103.Значение
												 + Форма.ТабличныйДокумент.Области.П000020015003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020016003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020017003.Значение;
			Форма.ТабличныйДокумент.Области.П000020018003.Значение = СтруктураДанныхРаздела.П000020018003;
			
			СтруктураДанныхРаздела.П000020009003 = ?(Форма.ТабличныйДокумент.Области.П000020018003.Значение
												   > Форма.ТабличныйДокумент.Области.П000020008003.Значение,
												     Форма.ТабличныйДокумент.Области.П000020018003.Значение
												   - Форма.ТабличныйДокумент.Области.П000020008003.Значение, 0);
			Форма.ТабличныйДокумент.Области.П000020009003.Значение = СтруктураДанныхРаздела.П000020009003;
			
			
			СтруктураДанныхРаздела.П000020010003 = Форма.ТабличныйДокумент.Области.П000020009003.Значение
												 - Форма.ТабличныйДокумент.Области.П000020011003.Значение;
			Форма.ТабличныйДокумент.Области.П000020010003.Значение = СтруктураДанныхРаздела.П000020010003;
			
			СтруктураДанныхРаздела.П000020019003 = ?(Форма.ТабличныйДокумент.Области.П000020008003.Значение
												   > Форма.ТабличныйДокумент.Области.П000020018003.Значение,
												     Форма.ТабличныйДокумент.Области.П000020008003.Значение
												   - Форма.ТабличныйДокумент.Области.П000020018003.Значение, 0);
			Форма.ТабличныйДокумент.Области.П000020019003.Значение = СтруктураДанныхРаздела.П000020019003;
			
		Иначе
			
			СтруктураДанныхРаздела.П000020002003 = СтруктураДанныхРаздела.П000020002001
												 + СтруктураДанныхРаздела.П000020002401;
			СтруктураДанныхРаздела.П000020012003 = СтруктураДанныхРаздела.П000020013003
												 + СтруктураДанныхРаздела.П000020014003;
			СтруктураДанныхРаздела.П000020015003 = СтруктураДанныхРаздела.П000020015001
												 + СтруктураДанныхРаздела.П000020015401;
			СтруктураДанныхРаздела.П000020016003 = СтруктураДанныхРаздела.П000020016001
												 + СтруктураДанныхРаздела.П000020016401;
			СтруктураДанныхРаздела.П000020008003 = СтруктураДанныхРаздела.П000020001003
												 + СтруктураДанныхРаздела.П000020001103
												 + СтруктураДанныхРаздела.П000020002003
												 + СтруктураДанныхРаздела.П000020003003
												 + СтруктураДанныхРаздела.П000020004003
												 + СтруктураДанныхРаздела.П000020005003
												 + СтруктураДанныхРаздела.П000020006003
												 + СтруктураДанныхРаздела.П000020007003;
			СтруктураДанныхРаздела.П000020018003 = СтруктураДанныхРаздела.П000020012003
												 + СтруктураДанныхРаздела.П000020014103
												 + СтруктураДанныхРаздела.П000020015003
												 + СтруктураДанныхРаздела.П000020016003
												 + СтруктураДанныхРаздела.П000020017003;
			
			СтруктураДанныхРаздела.П000020009003 = ?(СтруктураДанныхРаздела.П000020018003
												   > СтруктураДанныхРаздела.П000020008003,
												     СтруктураДанныхРаздела.П000020018003
												   - СтруктураДанныхРаздела.П000020008003, 0);
			
			СтруктураДанныхРаздела.П000020010003 = СтруктураДанныхРаздела.П000020009003
												 - СтруктураДанныхРаздела.П000020011003;
			
			СтруктураДанныхРаздела.П000020019003 = ?(СтруктураДанныхРаздела.П000020008003
												   > СтруктураДанныхРаздела.П000020018003,
												     СтруктураДанныхРаздела.П000020008003
												   - СтруктураДанныхРаздела.П000020018003, 0);
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица3_4" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000030010004 = Форма.ТабличныйДокумент.Области.П000030001004.Значение
												 + Форма.ТабличныйДокумент.Области.П000030004004.Значение
												 + Форма.ТабличныйДокумент.Области.П000030007004.Значение
												 + Форма.ТабличныйДокумент.Области.П000030009004.Значение;
			СтруктураДанныхРаздела.П000040004003 = Форма.ТабличныйДокумент.Области.П000040001003.Значение
												 + Форма.ТабличныйДокумент.Области.П000040003003.Значение;
			
			Форма.ТабличныйДокумент.Области.П000030010004.Значение = СтруктураДанныхРаздела.П000030010004;
			Форма.ТабличныйДокумент.Области.П000040004003.Значение = СтруктураДанныхРаздела.П000040004003;
			
		Иначе
			
			СтруктураДанныхРаздела.П000030010004 = СтруктураДанныхРаздела.П000030001004
												 + СтруктураДанныхРаздела.П000030004004
												 + СтруктураДанныхРаздела.П000030007004
												 + СтруктураДанныхРаздела.П000030009004;
			СтруктураДанныхРаздела.П000040004003 = СтруктураДанныхРаздела.П000040001003
												 + СтруктураДанныхРаздела.П000040003003;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица91" Тогда
		
		Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
			
			СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы91, ТаблицаБлока);
			ТаблицаБлока = Форма[ТаблицаБлока];
			
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				
				Постфикс = Формат(Ном, "ЧГ=");
				
				Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
					
					Форма.ТабличныйДокумент.Области["П000910000107_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000910000109_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000111_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000113_" + Постфикс].Значение;
					
					Форма.ТабличныйДокумент.Области["П000910000108_" + Постфикс].Значение
					= Форма.ТабличныйДокумент.Области["П000910000110_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000112_" + Постфикс].Значение
					+ Форма.ТабличныйДокумент.Области["П000910000114_" + Постфикс].Значение;
					
				Иначе
					
					СтрБлока = ТаблицаБлока[Ном - 1];
					
					СтрБлока["П000910000107"]
					= СтрБлока["П000910000109"] + СтрБлока["П000910000111"] + СтрБлока["П000910000113"];
					СтруктураДанныхРаздела["П000910000107_" + Постфикс] = СтрБлока["П000910000107"];
					
					СтрБлока["П000910000108"]
					= СтрБлока["П000910000110"] + СтрБлока["П000910000112"] + СтрБлока["П000910000114"];
					СтруктураДанныхРаздела["П000910000108_" + Постфикс] = СтрБлока["П000910000108"];
					
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура СкорректироватьМакетТаблица2(ИмяГруппы, СтруктураГруппыКоличество) Экспорт
	
	Если ИмяГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1 Тогда
		
		ИмяПоследнейЯчейкиМСЧ = ИмяГруппы + "01_" + СтрокаЧГ0(СтруктураГруппыКоличество);
		ПоследняяЯчейкаМСЧ = ТабличныйДокумент.Области[ИмяПоследнейЯчейкиМСЧ];
		
		ВерхСтроки5 = 19;
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки5, 2, ПоследняяЯчейкаМСЧ.Низ + 1, 3);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки5, 4, ПоследняяЯчейкаМСЧ.Низ + 1, 4);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки5, 5, ПоследняяЯчейкаМСЧ.Низ + 1, 5);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть.Имя = "П000020005003";
		
	ИначеЕсли ИмяГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2
		  ИЛИ ИмяГруппы = СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3 Тогда
		
		ВерхСтроки6 = ТабличныйДокумент.Области["П000020016204_1"].Верх;
		НизСтроки6  = ТабличныйДокумент.Области["П000020017003"].Низ;
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки6, 2, НизСтроки6, 3);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки6, 4, НизСтроки6, 4);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки6, 5, НизСтроки6, 5);
		ОбъединяемаяОбласть.Объединить();
		
		ОбъединяемаяОбласть.Имя = "П000020006003";
		
	Иначе
		
		Возврат;
		
	КонецЕсли;
	
	ВерхСтроки16 = 17;
	НизСтроки16  = ТабличныйДокумент.Области["П000020017003"].Низ - 1;
	
	ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки16, 14, НизСтроки16, 14);
	ОбъединяемаяОбласть.Объединить();
	
	ОбъединяемаяОбласть = ТабличныйДокумент.Область(ВерхСтроки16, 15, НизСтроки16, 15);
	ОбъединяемаяОбласть.Объединить();
	ОбъединяемаяОбласть.Имя = "П000020016003";
	
	// Корректировка верхней линии строк многострочной части.
	Для НомерСтроки = 1 По СтруктураГруппыКоличество Цикл
		
		ОбластьПоказателя = ТабличныйДокумент.Области["УдалитьСтроку" + ИмяГруппы + "01_" + СтрокаЧГ0(НомерСтроки)];
		
		Если НомерСтроки = 1 Тогда
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
		Иначе
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
		КонецЕсли;
		
		ОбластьПоказателя = ТабличныйДокумент.Области[ИмяГруппы + "01_" + СтрокаЧГ0(НомерСтроки)];
		
		Если НомерСтроки = 1 Тогда
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
		Иначе
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
		КонецЕсли;
		
		ОбластьПоказателя = ТабличныйДокумент.Области[ИмяГруппы + "04_" + СтрокаЧГ0(НомерСтроки)];
		
		Если НомерСтроки = 1 Тогда
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
		Иначе
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
		КонецЕсли;
		
		ОбластьПоказателя = ТабличныйДокумент.Области[ИмяГруппы + "05_" + СтрокаЧГ0(НомерСтроки)];
		
		Если НомерСтроки = 1 Тогда
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
		Иначе
			ОбластьПоказателя.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Функция СтрокаЧГ0(ИсходноеЧисло)
	
	Возврат ОбъектОтчета(ЭтаФорма.ИмяФормы).СтрокаЧГ0(СтруктураРеквизитовФормы.мВыбраннаяФорма, ИсходноеЧисло);
	
КонецФункции

&НаКлиенте
Процедура ДобавитьСтроку()
	
	ТекТабличноеПоле = ТабличныйДокумент;
	ТекущаяОбласть   = ЭтаФорма["ТабличныйДокумент"].ТекущаяОбласть;
	ТекРаздел = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
	
	Если ТекущаяОбласть.Имя = "ДобавитьСтроку" ИЛИ ТекущаяОбласть.Имя = "ДобавитьСтрокуЗначок" Тогда
		ИмяПараметраАктивнойОбласти = Лев(СтрЗаменить(ТекущаяОбласть.Имя, "ДобавитьСтроку", ""), 11);
	ИначеЕсли ТекущаяОбласть.Имя = "ДобавитьСтроку1м"
		  ИЛИ ТекущаяОбласть.Имя = "ДобавитьСтрокуЗначок1м"
		  ИЛИ (СтрНайти(ТекущаяОбласть.Имя, "П0000200161") > 0) Тогда
		Если ТекРаздел = "Таблица2" Тогда
			ИмяПараметраАктивнойОбласти = "П0000200161";
		КонецЕсли;
	ИначеЕсли ТекущаяОбласть.Имя = "ДобавитьСтроку2м"
		 ИЛИ ТекущаяОбласть.Имя = "ДобавитьСтрокуЗначок2м"
		 ИЛИ (СтрНайти(ТекущаяОбласть.Имя, "П0000200162") > 0) Тогда
		Если ТекРаздел = "Таблица2" Тогда
			ИмяПараметраАктивнойОбласти = "П0000200162";
		КонецЕсли;
	ИначеЕсли ТекущаяОбласть.Имя = "ДобавитьСтроку3м"
		 ИЛИ ТекущаяОбласть.Имя = "ДобавитьСтрокуЗначок3м"
		 ИЛИ (СтрНайти(ТекущаяОбласть.Имя, "П0000200163") > 0) Тогда
		Если ТекРаздел = "Таблица2" Тогда
			ИмяПараметраАктивнойОбласти = "П0000200163";
		КонецЕсли;
	КонецЕсли;
	
	ИмяГруппы = ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаКлиенте(
		Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим,
		ИмяПараметраАктивнойОбласти);
	
	Если ИмяГруппы = Неопределено Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НСтр("ru='Не выбран многострочный раздел, в который необходимо добавить строку.'");
		Сообщение.Сообщить();
		Возврат;
	КонецЕсли;
	
	ВставитьДополнительнуюСтроку(Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим, ИмяГруппы);
	
КонецПроцедуры

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

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

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

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

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

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

		СтруктураГруппы.Удалить(НомерСтрокиТаблицы);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Печать(ВидПечати, НеИзФормыОтчета = Ложь) Экспорт
	
	ТекстСообщения = "";
	
	Если Год(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) = 2021 Тогда
		
		ЗаполненаТабл2Стр15 = Ложь;
		
		ИменаПроверяемыхПоказателей = Новый Массив;
		ИменаПроверяемыхПоказателей.Добавить("П000020015001");
		ИменаПроверяемыхПоказателей.Добавить("П000020015401");
		ИменаПроверяемыхПоказателей.Добавить("П000020015101");
		ИменаПроверяемыхПоказателей.Добавить("П000020015201");
		ИменаПроверяемыхПоказателей.Добавить("П000020015301");
		ИменаПроверяемыхПоказателей.Добавить("П000020015003");
		
		Для каждого ИмяПоказателя Из ИменаПроверяемыхПоказателей Цикл
			
			Если СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Таблица2" Тогда
				Обл = ТабличныйДокумент.Области.Найти(ИмяПоказателя);
				Если Обл <> Неопределено И ЗначениеЗаполнено(Обл.Значение) Тогда
					ЗаполненаТабл2Стр15 = Истина;
					Прервать;
				КонецЕсли;
			Иначе
				ЗначениеПоказателя = Неопределено;
				Если СтруктураДанныхТаблица2.Свойство(ИмяПоказателя, ЗначениеПоказателя)
					И ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
					ЗаполненаТабл2Стр15 = Истина;
					Прервать;
				КонецЕсли;
			КонецЕсли;
			
		КонецЦикла;
		
		ЗаполненаТабл3 = Ложь;
		
		ИменаПроверяемыхПоказателей.Очистить();
		ИменаПроверяемыхПоказателей.Добавить("П000030001003");
		ИменаПроверяемыхПоказателей.Добавить("П000030001004");
		ИменаПроверяемыхПоказателей.Добавить("П000030002003");
		ИменаПроверяемыхПоказателей.Добавить("П000030002004");
		ИменаПроверяемыхПоказателей.Добавить("П000030003003");
		ИменаПроверяемыхПоказателей.Добавить("П000030003004");
		ИменаПроверяемыхПоказателей.Добавить("П000030004003");
		ИменаПроверяемыхПоказателей.Добавить("П000030004004");
		ИменаПроверяемыхПоказателей.Добавить("П000030005003");
		ИменаПроверяемыхПоказателей.Добавить("П000030005004");
		ИменаПроверяемыхПоказателей.Добавить("П000030006003");
		ИменаПроверяемыхПоказателей.Добавить("П000030006004");
		ИменаПроверяемыхПоказателей.Добавить("П000030007003");
		ИменаПроверяемыхПоказателей.Добавить("П000030007004");
		ИменаПроверяемыхПоказателей.Добавить("П000030008003");
		ИменаПроверяемыхПоказателей.Добавить("П000030008004");
		ИменаПроверяемыхПоказателей.Добавить("П000030009004");
		ИменаПроверяемыхПоказателей.Добавить("П000030010004");
		ИменаПроверяемыхПоказателей.Добавить("П000030011004");
		
		Для каждого ИмяПоказателя Из ИменаПроверяемыхПоказателей Цикл
			
			Если СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Таблица3_4" Тогда
				Обл = ТабличныйДокумент.Области.Найти(ИмяПоказателя);
				Если Обл <> Неопределено И ЗначениеЗаполнено(Обл.Значение) Тогда
					ЗаполненаТабл3 = Истина;
					Прервать;
				КонецЕсли;
			Иначе
				ЗначениеПоказателя = Неопределено;
				Если СтруктураДанныхТаблица3_4.Свойство(ИмяПоказателя, ЗначениеПоказателя)
					И ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
					ЗаполненаТабл3 = Истина;
					Прервать;
				КонецЕсли;
			КонецЕсли;
			
		КонецЦикла;
		
		Если ЗаполненаТабл2Стр15 И ЗаполненаТабл3 Тогда
			
			ТекстСообщения
			= "В 2021 году показатели строки 15 в таблице 2 не заполняются, таблица 3 не заполняется и не представляется "
			+ "(информация опубликована на сайте ФСС РФ: http://fss.ru/ru/news/567885/586264.shtml)";
			
		ИначеЕсли ЗаполненаТабл2Стр15 Тогда
			
			ТекстСообщения
			= "В 2021 году показатели строки 15 в таблице 2 не заполняются (информация опубликована на сайте ФСС РФ: "
			+ "http://fss.ru/ru/news/567885/586264.shtml)";
			
		ИначеЕсли ЗаполненаТабл3 Тогда
			
			ТекстСообщения
			= "В 2021 году таблица 3 не заполняется и не представляется (информация опубликована на сайте ФСС РФ: "
			+ "http://fss.ru/ru/news/567885/586264.shtml)";
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ТекстСообщения) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = СтрШаблон(НСтр("ru='%1. Вывод на печать прерван'"), ТекстСообщения);
		Сообщение.Сообщить();
		Возврат;
	КонецЕсли;
	
	Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru='%1. Формируется печатная форма...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Печать);
	
	Если СтруктураРеквизитовФормы.мПроверятьСоотношенияПриПечатиИВыгрузки = Истина Тогда
		РегламентированнаяОтчетностьКлиент.ПроверитьКонтрольныеСоотношения(ЭтаФорма, ОбработкаКС, Истина);
	КонецЕсли;
	
	Если НЕ ПечатьНаСервере(ВидПечати) Тогда
		Возврат;
	КонецЕсли;
	
	РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(
		ЭтаФорма, ВидПечати, , СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
	
	СтруктураРеквизитовФормы.мРежимПечати = Ложь;
	
КонецПроцедуры

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

	КопироватьДанныеФормы(мДеревоВыбранныхСтраниц, мДеревоСтраницОтчета);
	
	Возврат Истина;
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Функция ЗаполненаТаблица3_4(Форма)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция СформироватьСтруктуруПараметров()
	
	ОбъектОтчета = ОбъектОтчета(ЭтаФорма.ИмяФормы);
	
	Возврат ОбъектОтчета.СформироватьСтруктуруПараметров(СтруктураРеквизитовФормы.мВыбраннаяФорма,
														 мДанныеОтчета,
														 СтруктураРеквизитовФормы);
	
КонецФункции

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

&НаСервере
Функция ВыгрузкаВозможна(ПараметрыВыгрузки, ДеревоВыгрузки)
	
	ОбъектОтчета = ОбъектОтчета(ЭтаФорма.ИмяФормы);
	
	Возврат ОбъектОтчета.ВыгрузкаВозможна(СтруктураРеквизитовФормы.мВыбраннаяФорма,
										  мДанныеОтчета,
										  ПараметрыВыгрузки,
										  ДеревоВыгрузки,
										  ЭтаФорма,
										  СтруктураРеквизитовФормы);

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

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

&НаСервере
Функция ПроверитьДанные(Узел)
	
	ОбъектОтчета = ОбъектОтчета(ЭтаФорма.ИмяФормы);
	
	Возврат ОбъектОтчета.ПроверитьДанные(СтруктураРеквизитовФормы.мВыбраннаяФорма, Узел, Этаформа);
	
КонецФункции

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

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

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

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

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

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

#Область ЗагрузкаИзФайла

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

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

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

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

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

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

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

#Область СравнениеОтчетов

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТабличныйДокументПриИзмененииСодержимогоОбласти(Элемент, Область)
	
	// ПроцессыОбработкиДокументов
	//
	Если Элементы.ТабличныйДокумент.Защита Тогда
		
		Возврат;
		
	КонецЕсли;
	//
	// ПроцессыОбработкиДокументов
	
	Модифицированность = Истина;
	
	ИмяРаздела = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
	ИмяОбласти = Область.Имя;
	
	ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
	
	Если ПозицияПодстроки > 0 Тогда
		ИмяОбласти = Лев(ИмяОбласти, ПозицияПодстроки - 1);
	КонецЕсли;
	
	Если СтрНайти(ИмяОбласти, "НомДопРасчета") > 0 Тогда
		
		ЭтоОбластьПериода = (ИмяОбласти = "НомДопРасчета");
		
		Если ЭтоОбластьПериода Тогда
			
			КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
			
			Если КодПериода = "03" ИЛИ КодПериода = "06"  ИЛИ КодПериода = "09" ИЛИ КодПериода = "12" Тогда
				
				Если ПустаяСтрока(ТабличныйДокумент.Области.НомДопРасчета.Значение) Тогда
					
					ТабличныйДокумент.Области.Период.Значение = КодПериода;		
					
				Иначе
					
					ТабличныйДокумент.Области.Период.Значение = "";
					
					ТабличныйДокумент.Области.НомДопРасчета.Значение =
					 РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(СокрЛП(ТабличныйДокумент.Области.НомДопРасчета.Значение), 2, "0", 0);
	                										
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
			
	Если ИмяОбласти = "КодПодчиненности" Тогда
		Если СтрДлина(СокрЛП(Область.Значение)) <> 5 Тогда
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = НСтр("ru = 'Введенное значение кода подчиненности должно состоять из 5 символов.'");
			Сообщение.Сообщить();
			Область.Значение = "";
		КонецЕсли;
	КонецЕсли;
			
	Если ИмяОбласти = "НомерКорректировки" Тогда
		
		Если НЕ ЗначениеЗаполнено(Область.Значение) Тогда
			Область.Значение = "0";
		КонецЕсли;
		
		ОтобразитьНомерКорректировки(ЭтаФорма, Область.Значение);
		
		РегламентированнаяОтчетностьКлиентСервер.УстановитьЗначениеОКВЭД(ДатаПодписи,
																		 СтруктураРеквизитовФормы,
																		 ТабличныйДокумент.Области.ОКВЭД.Значение);
		
	ИначеЕсли ИмяОбласти = "ДатаПодписи" Тогда
		
		ДатаПодписи = ТабличныйДокумент.Области.ДатаПодписи.Значение;
		
		ДатаПодписиПриИзмененииНаСервере();
		
		Модифицированность = Истина;
		
	КонецЕсли;
	
	Если Год(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) = 2021 Тогда
		
		ИменаПроверяемыхПоказателей = Новый Массив;
		ИменаПроверяемыхПоказателей.Добавить("П000020015001");
		ИменаПроверяемыхПоказателей.Добавить("П000020015401");
		ИменаПроверяемыхПоказателей.Добавить("П000020015101");
		ИменаПроверяемыхПоказателей.Добавить("П000020015201");
		ИменаПроверяемыхПоказателей.Добавить("П000020015301");
		ИменаПроверяемыхПоказателей.Добавить("П000020015003");
		
		Если ИменаПроверяемыхПоказателей.Найти(ИмяОбласти) <> Неопределено И ЗначениеЗаполнено(Область.Значение) Тогда
			
			ТекстСообщения
			= "В 2021 году показатели строки 15 в таблице 2 не заполняются (информация опубликована на сайте ФСС РФ: "
			+ "http://fss.ru/ru/news/567885/586264.shtml)";
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтрШаблон(НСтр("ru = '%1. Значение очищено'"), ТекстСообщения);
			Сообщение.Сообщить();
			
			Область.Значение = 0;
			
		КонецЕсли;
		
		ИменаПроверяемыхПоказателей.Очистить();
		ИменаПроверяемыхПоказателей.Добавить("П000030001003");
		ИменаПроверяемыхПоказателей.Добавить("П000030001004");
		ИменаПроверяемыхПоказателей.Добавить("П000030002003");
		ИменаПроверяемыхПоказателей.Добавить("П000030002004");
		ИменаПроверяемыхПоказателей.Добавить("П000030003003");
		ИменаПроверяемыхПоказателей.Добавить("П000030003004");
		ИменаПроверяемыхПоказателей.Добавить("П000030004003");
		ИменаПроверяемыхПоказателей.Добавить("П000030004004");
		ИменаПроверяемыхПоказателей.Добавить("П000030005003");
		ИменаПроверяемыхПоказателей.Добавить("П000030005004");
		ИменаПроверяемыхПоказателей.Добавить("П000030006003");
		ИменаПроверяемыхПоказателей.Добавить("П000030006004");
		ИменаПроверяемыхПоказателей.Добавить("П000030007003");
		ИменаПроверяемыхПоказателей.Добавить("П000030007004");
		ИменаПроверяемыхПоказателей.Добавить("П000030008003");
		ИменаПроверяемыхПоказателей.Добавить("П000030008004");
		ИменаПроверяемыхПоказателей.Добавить("П000030009004");
		ИменаПроверяемыхПоказателей.Добавить("П000030010004");
		ИменаПроверяемыхПоказателей.Добавить("П000030011004");
		
		Если ИменаПроверяемыхПоказателей.Найти(ИмяОбласти) <> Неопределено И ЗначениеЗаполнено(Область.Значение) Тогда
			
			ТекстСообщения
			= "В 2021 году таблица 3 не заполняется и не представляется (информация опубликована на сайте ФСС РФ: "
			+ "http://fss.ru/ru/news/567885/586264.shtml)";
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтрШаблон(НСтр("ru = '%1. Значение очищено'"), ТекстСообщения);
			Сообщение.Сообщить();
			
			Область.Значение = 0;
			
		КонецЕсли;
		
	КонецЕсли;
	
	РасчетНаКлиенте(ИмяРаздела, ИмяОбласти);
	
	ВключитьПечатьЗаполненногоНеобязательногоРаздела(ЭтаФорма, ИмяРаздела);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЗаполнитьАвтоНаСервере()
	
	СохранитьДанныеРаздела(СтруктураРеквизитовФормы.НаимТекущегоРаздела, Ложь);
	
	ЗаполнитьПустыеСтруктурыДанных();
	
	ПараметрыОтчета = Новый Структура();
	ПараметрыОтчета.Вставить("Организация",             СтруктураРеквизитовФормы.Организация);
	ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
	ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета",  СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
	
	ПараметрыОтчета.Вставить("СообщенияПослеАвтозаполнения", СтруктураРеквизитовФормы.СообщенияПослеАвтозаполнения);
	
	Контейнер = Новый Структура();
	Контейнер.Вставить("Титульный", СтруктураДанныхТитульный);
	Контейнер.Вставить("Таблица1", СтруктураДанныхТаблица1);
	Контейнер.Вставить("Таблица1_1", СтруктураДанныхТаблица1_1);
	Контейнер.Вставить("Таблица1_1_ДанныеДопСтрок", П0001100001);
	Контейнер.Вставить("Таблица2", СтруктураДанныхТаблица2);
	Контейнер.Вставить("Таблица2_1_ДанныеДопСтрок", П0000200161);
	Контейнер.Вставить("Таблица2_2_ДанныеДопСтрок", П0000200162);
	Контейнер.Вставить("Таблица2_3_ДанныеДопСтрок", П0000200163);
	Контейнер.Вставить("Таблица3_4", СтруктураДанныхТаблица3_4);
	Контейнер.Вставить("Таблица5", СтруктураДанныхТаблица5);
	Контейнер.Вставить("Таблица91", СтруктураДанныхТаблица91);
	Контейнер.Вставить("Таблица91_ДанныеДопСтрок", П0009100001);
	
	ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
	Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
	ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
	КонецЕсли;
	ЭтаФормаИмя = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
	РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ЭтаФормаИмя, ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ПараметрыОтчета, Контейнер);
	
	ЗаполнитьПустыеСтруктурыДанных();
		
	Если П0001100001.Количество() = 0 Тогда
		П0001100001.Добавить();
	КонецЕсли;
	
	Если П0000200161.Количество() = 0 Тогда
		П0000200161.Добавить();
	КонецЕсли;
	
	Если П0000200162.Количество() = 0 Тогда
		П0000200162.Добавить();
	КонецЕсли;
	
	Если П0000200163.Количество() = 0 Тогда
		П0000200163.Добавить();
	КонецЕсли;
	
	ОбъектОтчета(ЭтаФорма.ИмяФормы).ЗаполнитьСтруктурыДанныхРазделовЗначениямиИзДопСтрок(
		СтруктураРеквизитовФормы.мВыбраннаяФорма, Контейнер);
	
	ВывестиМакетВТаблДокНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела, 1);
	
	РасчетНаСервере();
	
	Для Каждого Страница Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл
		ВключитьПечатьЗаполненногоНеобязательногоРаздела(ЭтаФорма, Страница.ИмяСтраницы);
	КонецЦикла;
	
	СтруктураРеквизитовФормы.Вставить("СообщенияПослеАвтозаполнения", ПараметрыОтчета.СообщенияПослеАвтозаполнения);
	
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Функция РазделЗаполнен(Форма, ИмяСтраницы)
	
	Если ИмяСтраницы = "Таблица1_1" Тогда
		
		Возврат ЗаполненаТаблица1_1(Форма);
		
	ИначеЕсли ИмяСтраницы = "Таблица3_4" Тогда
		
		Возврат ЗаполненаТаблица3_4(Форма);
		
	ИначеЕсли ИмяСтраницы = "Таблица91" Тогда
		
		Возврат ЗаполненаТаблица91(Форма);
		
	Иначе
		
		Возврат Истина;
		
	КонецЕсли;
	
КонецФункции

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

&НаСервере
Функция ПреобразованноеИмяПоказателя(ИсходноеИмя)
	
	СписокПреобразования = "П000020016101,П000020016104,П000020016105,
	                       |П000020016201,П000020016204,П000020016205,
	                       |П000020016301,П000020016304,П000020016305";
	Если СтрНайти(СписокПреобразования, ИсходноеИмя) <> 0 Тогда
		Результат = ИсходноеИмя + "_1";
	Иначе
		Результат = ИсходноеИмя;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область МеханизмПроверкиКонтрольныхСоотношений

#Область КС_Управление

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

&НаСервере
Функция ПроверитьКонтрольныеСоотношенияВОтчете() Экспорт
	
	Документирование = Ложь;
	
	СтруктураРеквизитовФормы.ТекстДляЗаголовочнойЧасти =
		РегламентированнаяОтчетностьКлиентСервер.ПредставлениеДокументаРеглОтч(СтруктураРеквизитовФормы.мСохраненныйДок);
	
	СтруктураРезультата = Новый Структура;
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", 0);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", 0);
	СтруктураРезультата.Вставить("СтруктураОшибок", Новый Структура);
	СтруктураРезультата.Вставить("ДопСведенияВОписаниеКС"		, Истина);
	
	СписокРасшифровкиПоказателей	= РегламентированнаяОтчетность.СоздатьСписокРасшифровкиПоказателей();
	СписокРасшифровкиформулы		= РегламентированнаяОтчетность.СоздатьСписокРасшифровкиформулы();
	СчетчикФормулДляРасшифровок		= 0;
	
	ДанныеКС = Новый Структура;
	СформироватьСтруктуруДанныхКС();
	СформироватьСлужебныеДанные();
	СформироватьДанныеПРП();
	
	// Проверки Титульного листа
	
	ПроверитьКС_1_01(СтруктураРезультата);
	ПроверитьКС_1_02(СтруктураРезультата);
	ПроверитьКС_1_03(СтруктураРезультата);
	ПроверитьКС_1_04(СтруктураРезультата);
	
	// Проверки Таблицы 1
	
	ПроверитьКС_2_01(СтруктураРезультата);
	ПроверитьКС_2_02(СтруктураРезультата);
	ПроверитьКС_2_03(СтруктураРезультата);
	ПроверитьКС_2_04а(СтруктураРезультата);
	ПроверитьКС_2_04б(СтруктураРезультата);
	ПроверитьКС_2_05(СтруктураРезультата);
	ПроверитьКС_2_06(СтруктураРезультата);
	ПроверитьКС_2_07(СтруктураРезультата);
	ПроверитьКС_2_08(СтруктураРезультата);
	ПроверитьКС_2_09(СтруктураРезультата);
	ПроверитьКС_2_10а(СтруктураРезультата);
	ПроверитьКС_2_10б(СтруктураРезультата);
	ПроверитьКС_2_11(СтруктураРезультата);
	ПроверитьКС_2_12(СтруктураРезультата);
	ПроверитьКС_2_13а(СтруктураРезультата);
	ПроверитьКС_2_13б(СтруктураРезультата);
	ПроверитьКС_2_14(СтруктураРезультата);
	ПроверитьКС_2_15(СтруктураРезультата);
	ПроверитьКС_2_16(СтруктураРезультата);
	ПроверитьКС_2_17(СтруктураРезультата);
	ПроверитьКС_2_18(СтруктураРезультата);
	ПроверитьКС_2_19а(СтруктураРезультата);
	ПроверитьКС_2_19б(СтруктураРезультата);
	ПроверитьКС_2_20(СтруктураРезультата);
	ПроверитьКС_2_21(СтруктураРезультата);
	ПроверитьКС_2_22(СтруктураРезультата);
	ПроверитьКС_2_23(СтруктураРезультата);
	ПроверитьКС_2_24(СтруктураРезультата);
	ПроверитьКС_2_25(СтруктураРезультата);
	
	// Проверки Раздела СКЕ
	
	ПроверитьКС_3_01а(СтруктураРезультата);
	ПроверитьКС_3_01б(СтруктураРезультата);
	ПроверитьКС_3_02а(СтруктураРезультата);
	ПроверитьКС_3_02б(СтруктураРезультата);
	ПроверитьКС_3_03а(СтруктураРезультата);
	ПроверитьКС_3_03б(СтруктураРезультата);
	
	// Проверки Таблицы 1.1
	
	ПроверитьКС_4_01(СтруктураРезультата);
	ПроверитьКС_4_02(СтруктураРезультата);
	ПроверитьКС_4_03(СтруктураРезультата);
	ПроверитьКС_4_04(СтруктураРезультата);
	ПроверитьКС_4_05(СтруктураРезультата);
	ПроверитьКС_4_06(СтруктураРезультата);
	
	// Проверки Таблицы 2
	
	ПроверитьКС_5_01а(СтруктураРезультата);
	ПроверитьКС_5_01б(СтруктураРезультата);
	ПроверитьКС_5_02а(СтруктураРезультата);
	ПроверитьКС_5_02б(СтруктураРезультата);
	ПроверитьКС_5_03(СтруктураРезультата);
	ПроверитьКС_5_04а_1(СтруктураРезультата);
	ПроверитьКС_5_04а_2(СтруктураРезультата);
	ПроверитьКС_5_04б_1(СтруктураРезультата);
	ПроверитьКС_5_04б_2(СтруктураРезультата);
	ПроверитьКС_5_04в_1(СтруктураРезультата);
	ПроверитьКС_5_04в_2(СтруктураРезультата);
	ПроверитьКС_5_04г_1(СтруктураРезультата);
	ПроверитьКС_5_04г_2(СтруктураРезультата);
	ПроверитьКС_5_04д_1(СтруктураРезультата);
	ПроверитьКС_5_04д_2(СтруктураРезультата);
	ПроверитьКС_5_05а(СтруктураРезультата);
	ПроверитьКС_5_05б(СтруктураРезультата);
	ПроверитьКС_5_05в(СтруктураРезультата);
	ПроверитьКС_5_05г(СтруктураРезультата);
	ПроверитьКС_5_05д(СтруктураРезультата);
	ПроверитьКС_5_06(СтруктураРезультата);
	ПроверитьКС_5_07а(СтруктураРезультата);
	ПроверитьКС_5_07б(СтруктураРезультата);
	ПроверитьКС_5_08(СтруктураРезультата);
	ПроверитьКС_5_09(СтруктураРезультата);
	ПроверитьКС_5_10(СтруктураРезультата);
	ПроверитьКС_5_11а(СтруктураРезультата);
	ПроверитьКС_5_11б(СтруктураРезультата);
	ПроверитьКС_5_12(СтруктураРезультата);
	ПроверитьКС_5_13а(СтруктураРезультата);
	ПроверитьКС_5_13б(СтруктураРезультата);
	ПроверитьКС_5_14а(СтруктураРезультата);
	ПроверитьКС_5_14б(СтруктураРезультата);
	ПроверитьКС_5_15а(СтруктураРезультата);
	ПроверитьКС_5_15б(СтруктураРезультата);
	ПроверитьКС_5_16(СтруктураРезультата);
	ПроверитьКС_5_17(СтруктураРезультата);
	ПроверитьКС_5_18а(СтруктураРезультата);
	ПроверитьКС_5_18б(СтруктураРезультата);
	ПроверитьКС_5_19(СтруктураРезультата);
	ПроверитьКС_5_20(СтруктураРезультата);
	ПроверитьКС_5_21а(СтруктураРезультата);
	ПроверитьКС_5_21б(СтруктураРезультата);
	ПроверитьКС_5_22(СтруктураРезультата);
	ПроверитьКС_5_23(СтруктураРезультата);
	
	// Проверки Таблицы 3
	
	ПроверитьКС_6_01(СтруктураРезультата);
	ПроверитьКС_6_02(СтруктураРезультата);
	ПроверитьКС_6_03(СтруктураРезультата);
	ПроверитьКС_6_04(СтруктураРезультата);
	ПроверитьКС_6_05(СтруктураРезультата);
	ПроверитьКС_6_06(СтруктураРезультата);
	ПроверитьКС_6_07(СтруктураРезультата);
	ПроверитьКС_6_08(СтруктураРезультата);
	
	// Проверки Таблицы 4
	
	ПроверитьКС_7_01(СтруктураРезультата);
	ПроверитьКС_7_02(СтруктураРезультата);
	ПроверитьКС_7_03(СтруктураРезультата);
	
	// Проверки Таблицы 5
	
	ПроверитьКС_8_01(СтруктураРезультата);
	ПроверитьКС_8_02(СтруктураРезультата);
	ПроверитьКС_8_03(СтруктураРезультата);
	ПроверитьКС_8_04(СтруктураРезультата);
	ПроверитьКС_8_05(СтруктураРезультата);
	
	Если СписокРасшифровкиформулы.Количество() = 0 Тогда
		Возврат СтруктураРезультата;
	КонецЕсли;
	
	ПоместитьВКэш(СписокРасшифровкиформулы , УникальныйИдентификатор, 
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресФормул);
	ПоместитьВКэш(СписокРасшифровкиПоказателей, УникальныйИдентификатор, 
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресПоказателей);
	
	СтруктураРезультата.Вставить("СписокРасшифровкиформулы" , 
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресФормул);
	СтруктураРезультата.Вставить("СписокРасшифровкиПоказателей" , 
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресПоказателей);
	
	Возврат СтруктураРезультата;
	
КонецФункции

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

#Область КС_Проверки

#Область КС_Проверки_ТитульногоЛиста

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р00С001"		, "ОКВЭД");
	ИменаПоказателей.Вставить("Р91Г002"		, "П000910000102_");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С001, ДанныеКС.Р00);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г002, ДанныеКС.Р91, Счетчик);
	КонецЦикла;
	
	ИндексВ_СКЕ = Показатели.Р91Г002.МассивСтрок.Найти(Показатели.Р00С001.Значение);
	ЗначениеВ_СКЕ = ?(ИндексВ_СКЕ = Неопределено, "<...>", Показатели.Р91Г002.МассивСтрок[ИндексВ_СКЕ]);
	Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И ИндексВ_СКЕ = Неопределено;
	Настройки.Расшифровка = СтрЗаменить(Настройки.ШаблонРасшифровки	, "%1", Показатели.Р00С001.ЗначениеСтр);
	Настройки.Расшифровка = СтрЗаменить(Настройки.Расшифровка		, "%2", ЗначениеСтр(ЗначениеВ_СКЕ));
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_1_02()

&НаСервере
Процедура ПроверитьКС_1_03(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='1.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Титульный лист'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Титульного листа (КС 1.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Численность работающих инвалидов на Титульном листе > 0, если гр.3 стр.4 Таблицы 1 > 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 > 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, НСтр("ru='Ошибочное значение численности работающих инвалидов'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р00С002"		, "ЧислИнвалидов");
	ИменаПоказателей.Вставить("Р01П034"		, "П000010000403");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С002, ДанныеКС.Р00);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П034, ДанныеКС.Р01);
	
	Настройки.ЭтоОшибка = Показатели.Р01П034.Значение > 0 И НЕ Показатели.Р00С002.Значение > 0;
	Настройки.Расшифровка = СтрЗаменить(Настройки.ШаблонРасшифровки	, "%1", Показатели.Р00С002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_1_04(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='1.4'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Титульный лист'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Титульного листа (КС 1.4)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Численность работников, занятых на вредных работах на Титульном листе > 0, если гр.7 '") +
		НСтр("ru='стр.2 Таблицы 5 > 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 > 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение численности работников, занятых на вредных работах'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р00С003"		, "ЧислВред");
	ИменаПоказателей.Вставить("Р05П027"		, "П000050000207");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С003, ДанныеКС.Р00);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р05П027, ДанныеКС.Р05);
	
	Настройки.ЭтоОшибка = Показатели.Р05П027.Значение > 0 И НЕ Показатели.Р00С003.Значение > 0;
	Настройки.Расшифровка = СтрЗаменить(Настройки.ШаблонРасшифровки	, "%1", Показатели.Р00С003.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_1

&НаСервере
Процедура ПроверитьКС_2_01(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Стр.9 Таблицы 1 = стр.5 Таблицы 1 х (1 - стр.6 Таблицы 1 / 100 + стр.7 Таблицы 1 / 100), '") +
		НСтр("ru='полученное значение округляется до двух десятичных знаков после запятой'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 х (1 - %3 / 100 + %4 / 100) Итог [%5]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение страхового тарифа с учетом скидки (надбавки)'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01С009"		, "П000010000903");
	ИменаПоказателей.Вставить("Р01С005"		, "П000010000503");
	ИменаПоказателей.Вставить("Р01С006"		, "П000010000603");
	ИменаПоказателей.Вставить("Р01С007"		, "П000010000703");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	Показатели.Р01С009.Округление = Истина;
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р01);
	
	РасчетнаяСумма = Окр(Показатели.Р01С005.Значение * 
		(1 - Показатели.Р01С006.Значение / 100 + Показатели.Р01С007.Значение / 100), 2);
	Настройки.ЭтоОшибка = НЕ Показатели.Р01С009.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01С009.Значение, 
		Показатели.Р01С005.Значение, Показатели.Р01С006.Значение, Показатели.Р01С007.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_02(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Стр.5 Таблицы 1 больше 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 > 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение страхового тарифа'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

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

&НаСервере
Процедура ПроверитьКС_2_03(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 1 больше или равна 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя", "103");
	
	ПроверитьКС_2_18_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_04а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.4а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.4а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 1 равна сумме гр.4, 5, 6, стр.1 Таблицы 1, если расчет '") +
		НСтр("ru='за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 Итог [%5]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "103");
	Настройки.Вставить("ПостфиксПоказателя2", "104");
	Настройки.Вставить("ПостфиксПоказателя3", "105");
	Настройки.Вставить("ПостфиксПоказателя4", "106");
	
	ПроверитьКС_2_19а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_04б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.4б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.4б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 1 равна сумме гр.4, 5, 6, стр.1 Таблицы 1 + гр.3 стр.1 Таблицы 1 за '") +
		НСтр("ru='предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 + %5 Итог [%6]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "103");
	Настройки.Вставить("ПостфиксПоказателя2", "104");
	Настройки.Вставить("ПостфиксПоказателя3", "105");
	Настройки.Вставить("ПостфиксПоказателя4", "106");
	
	ПроверитьКС_2_19б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_05(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.5'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.5)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 1 равна сумме стр.2, 3 по гр.3 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "103");
	Настройки.Вставить("ПостфиксПоказателя2", "203");
	Настройки.Вставить("ПостфиксПоказателя3", "303");
	
	ПроверитьКС_2_08_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_06(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.6'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.6)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.1 Таблицы 1 равна сумме стр.2, 3 по гр.4 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, за 1 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "104");
	Настройки.Вставить("ПостфиксПоказателя2", "204");
	Настройки.Вставить("ПостфиксПоказателя3", "304");
	
	ПроверитьКС_2_08_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_07(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.7'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.7)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.5 стр.1 Таблицы 1 равна сумме стр.2, 3 по гр.5 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, за 2 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "105");
	Настройки.Вставить("ПостфиксПоказателя2", "205");
	Настройки.Вставить("ПостфиксПоказателя3", "305");
	
	ПроверитьКС_2_08_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_08(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.8'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.8)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.6 стр.1 Таблицы 1 равна сумме стр.2, 3 по гр.6 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат, за 3 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "106");
	Настройки.Вставить("ПостфиксПоказателя2", "206");
	Настройки.Вставить("ПостфиксПоказателя3", "306");
	
	ПроверитьКС_2_08_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_08_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01П013"		, "П000010000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р01П023"		, "П000010000" + Настройки.ПостфиксПоказателя2);
	ИменаПоказателей.Вставить("Р01П033"		, "П000010000" + Настройки.ПостфиксПоказателя3);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р01);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р01П013.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р01П013.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01П013.Значение, 
		Показатели.Р01П023.Значение, Показатели.Р01П033.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_09(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.9'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.9)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.2 Таблицы 1 больше или равна 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм, не подлежащих налогообложению, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя", "203");
	
	ПроверитьКС_2_18_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_10а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.10а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.10а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.2 Таблицы 1 равна сумме гр.4, 5, 6, стр.2 Таблицы 1, если расчет '") +
		НСтр("ru='за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 Итог [%5]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм, не подлежащих налогообложению, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "203");
	Настройки.Вставить("ПостфиксПоказателя2", "204");
	Настройки.Вставить("ПостфиксПоказателя3", "205");
	Настройки.Вставить("ПостфиксПоказателя4", "206");
	
	ПроверитьКС_2_19а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_10б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.10б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.10б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.2 Таблицы 1 равна сумме гр.4, 5, 6, стр.2 Таблицы 1 + гр.3 стр.2 Таблицы 1 за '") +
		НСтр("ru='предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 + %5 Итог [%6]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм, не подлежащих налогообложению, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "203");
	Настройки.Вставить("ПостфиксПоказателя2", "204");
	Настройки.Вставить("ПостфиксПоказателя3", "205");
	Настройки.Вставить("ПостфиксПоказателя4", "206");
	
	ПроверитьКС_2_19б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000203");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000115_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_11()

&НаСервере
Процедура ПроверитьКС_2_12(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.12'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.12)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.3 Таблицы 1 больше или равна 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя", "303");
	
	ПроверитьКС_2_18_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_13а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.13а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.13а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.3 Таблицы 1 равна сумме гр.4, 5, 6, стр.3 Таблицы 1, если расчет '") +
		НСтр("ru='за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 Итог [%5]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "303");
	Настройки.Вставить("ПостфиксПоказателя2", "304");
	Настройки.Вставить("ПостфиксПоказателя3", "305");
	Настройки.Вставить("ПостфиксПоказателя4", "306");
	
	ПроверитьКС_2_19а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_13б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.13б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.13б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.3 Таблицы 1 равна сумме гр.4, 5, 6, стр.3 Таблицы 1 + гр.3 стр.3 Таблицы 1 за '") +
		НСтр("ru='предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 + %5 Итог [%6]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "303");
	Настройки.Вставить("ПостфиксПоказателя2", "304");
	Настройки.Вставить("ПостфиксПоказателя3", "305");
	Настройки.Вставить("ПостфиксПоказателя4", "306");
	
	ПроверитьКС_2_19б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_14(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.14'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.14)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.3 стр.3 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.7 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000303");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000107_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_14()

&НаСервере
Процедура ПроверитьКС_2_15(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.15'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.15)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.4 стр.3 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.9 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 1 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000304");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000109_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_15()

&НаСервере
Процедура ПроверитьКС_2_16(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.16'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.16)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.5 стр.3 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.11 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		,
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 2 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000305");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000111_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_16()

&НаСервере
Процедура ПроверитьКС_2_17(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.17'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.17)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.6 стр.3 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.13 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 3 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000306");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000113_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_17()

&НаСервере
Процедура ПроверитьКС_2_18(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.18'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.18)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 1 больше или равна 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат в пользу инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя", "403");
	
	ПроверитьКС_2_18_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_2_19а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.19а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.19а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 1 равна сумме гр.4, 5, 6, стр.4 Таблицы 1, если расчет '") +
		НСтр("ru='за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 Итог [%5]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат в пользу инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "403");
	Настройки.Вставить("ПостфиксПоказателя2", "404");
	Настройки.Вставить("ПостфиксПоказателя3", "405");
	Настройки.Вставить("ПостфиксПоказателя4", "406");
	
	ПроверитьКС_2_19а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_19а_код(Настройки)
	
	Перем Показатели;
	
	Если НЕ ДанныеКС.КвОтчета = 1 Тогда
		Возврат;
	КонецЕсли; 
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01П013"		, "П000010000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р01П014"		, "П000010000" + Настройки.ПостфиксПоказателя2);
	ИменаПоказателей.Вставить("Р01П015"		, "П000010000" + Настройки.ПостфиксПоказателя3);
	ИменаПоказателей.Вставить("Р01П016"		, "П000010000" + Настройки.ПостфиксПоказателя4);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р01);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р01П013.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р01П013.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01П013.Значение, 
		Показатели.Р01П014.Значение, Показатели.Р01П015.Значение, Показатели.Р01П016.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_19б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.19б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.19б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 1 равна сумме гр.4, 5, 6, стр.4 Таблицы 1 + гр.3 стр.4 Таблицы 1 за '") +
		НСтр("ru='предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 + %4 + %5 Итог [%6]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат в пользу инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "403");
	Настройки.Вставить("ПостфиксПоказателя2", "404");
	Настройки.Вставить("ПостфиксПоказателя3", "405");
	Настройки.Вставить("ПостфиксПоказателя4", "406");
	
	ПроверитьКС_2_19б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_19б_код(Настройки)
	
	Перем Показатели;
	
	Если НЕ ДанныеКС.КвОтчета > 1 ИЛИ ДанныеКС.ОтчетПРП = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01П013"		, "П000010000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р01П014"		, "П000010000" + Настройки.ПостфиксПоказателя2);
	ИменаПоказателей.Вставить("Р01П015"		, "П000010000" + Настройки.ПостфиксПоказателя3);
	ИменаПоказателей.Вставить("Р01П016"		, "П000010000" + Настройки.ПостфиксПоказателя4);
	ИменаПоказателей.Вставить("Р01П013О"	, "П000010000" + Настройки.ПостфиксПоказателя1);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П013	, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П014	, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П015	, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П016	, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П013О, ДанныеКС.П01);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р01П013.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р01П013.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01П013.Значение, 
		Показатели.Р01П014.Значение, Показатели.Р01П015.Значение, Показатели.Р01П016.Значение, 
		Показатели.Р01П013О.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_20(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.20'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.20)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 1 меньше или равна гр.3 стр.3 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат в пользу инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

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

&НаСервере
Процедура ПроверитьКС_2_21(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.21'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.21)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 1 равна 0, если численность работающих инвалидов на Титульном листе = 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение сумм выплат в пользу инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01П034"		, "П000010000403");
	ИменаПоказателей.Вставить("Р00С002"		, "ЧислИнвалидов");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П034, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С002, ДанныеКС.Р00);
	
	Настройки.ЭтоОшибка = Показатели.Р00С002.Значение = 0 И НЕ Показатели.Р01П034.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01П034.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_2_22(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.22'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.22)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.3 стр.4 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.8 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		,
		НСтр("ru='Ошибочное значение суммы выплат в пользу работающих инвалидов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000403");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000108_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_22()

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000404");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000110_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_23()

&НаСервере
Процедура ПроверитьКС_2_24(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.24'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.24)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.5 стр.4 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.12 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы выплат в пользу работающих инвалидов, за 2 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000405");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000112_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_24()

&НаСервере
Процедура ПроверитьКС_2_25(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='2.25'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1 (КС 2.25)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, значение гр.6 стр.4 Таблицы 1 = сумме значений '") +
		НСтр("ru='по гр.14 Раздела СКЕ'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы выплат в пользу работающих инвалидов, за 3 месяц отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1"		, "П000010000406");
	Настройки.Вставить("ИмяПоказателя2"		, "П000910000114_");
	
	ПроверитьКС_2_25_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_2_25()

&НаСервере
Процедура ПроверитьКС_2_25_код(Настройки)
	
	Перем Показатели;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р01П001"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р91Г001"		, Настройки.ИмяПоказателя2);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П001, ДанныеКС.Р01);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г001, ДанныеКС.Р91, Счетчик);
	КонецЦикла;
	
	Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И НЕ Показатели.Р01П001.Значение = Показатели.Р91Г001.Итог;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р01П001.Значение, Показатели.Р91Г001.Итог);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры // ПроверитьКС_2_11()

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

#Область КС_Проверки_Раздела_СКЕ

&НаСервере
Процедура ПроверитьКС_3_01а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.1а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.1а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ равен коду ОКВЭД на Титульном листе и признак '") +
		НСтр("ru='""Частичное финансирование из бюджета"" в Таблице 1 не установлен, значение страхового '") +	
		НСтр("ru='тарифа в гр.4 Раздела СКЕ равно стр.5 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение страхового тарифа'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("КС_1а", Истина);
	
	ПроверитьКС_3_01_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_01б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.1б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.1б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ равен коду ОКВЭД на Титульном листе и признак '") +
		НСтр("ru='""Частичное финансирование из бюджета"" в Таблице 1 установлен, значение страхового '") +	
		НСтр("ru='тарифа в гр.4 Раздела СКЕ равно стр.5 Таблицы 1 или 0,2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 или 0,2'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение страхового тарифа'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("КС_1а", Ложь);
	
	ПроверитьКС_3_01_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_01_код(Настройки)
	
	Перем Показатели;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р91Г002"		, "П000910000102_");
	ИменаПоказателей.Вставить("Р00С001"		, "ОКВЭД");
	ИменаПоказателей.Вставить("Р01С001"		, "П000010000001");
	ИменаПоказателей.Вставить("Р91Г004"		, "П000910000104_");
	ИменаПоказателей.Вставить("Р01С005"		, "П000010000503");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗаполнитьПоказатель(Показатели.Р01С001, ДанныеКС.Р01);
	ЗаполнитьПоказатель(Показатели.Р00С001, ДанныеКС.Р00);
	ЗаполнитьПоказатель(Показатели.Р01С005, ДанныеКС.Р01);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗарегистрироватьФормулу(Настройки);
		
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г002, ДанныеКС.Р91, Счетчик);
		РасшифроватьПоказатель(Показатели.Р00С001);	
		РасшифроватьПоказатель(Показатели.Р01С001);	
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г004, ДанныеКС.Р91, Счетчик);
		РасшифроватьПоказатель(Показатели.Р01С005);	
		
		Если Настройки.КС_1а Тогда
			Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И НЕ ДанныеКС.ЧастичноеФин И Показатели.Р91Г002.Значение 
				= Показатели.Р00С001.Значение И НЕ Показатели.Р91Г004.Значение = Показатели.Р01С005.Значение;
		Иначе
			Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И ДанныеКС.ЧастичноеФин И Показатели.Р91Г002.Значение 
				= Показатели.Р00С001.Значение И НЕ (Показатели.Р91Г004.Значение = Показатели.Р01С005.Значение 
				ИЛИ Показатели.Р91Г004.Значение = 0.2);
		КонецЕсли;
		
		Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р91Г004.Значение, 
			Показатели.Р01С005.Значение);
		ДополнитьСтруктуруОшибок(Настройки);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_02а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.2а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.2а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ равен коду ОКВЭД на Титульном листе, значение '") +
		НСтр("ru='скидки к страховому тарифу в гр.5 Раздела СКЕ равно стр.6 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение скидки к страховому тарифу'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000910000105_");
	Настройки.Вставить("ИмяПоказателя2", "П000010000603");
	
	ПроверитьКС_3_03а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_02б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.2б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.2б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ не равен коду ОКВЭД на Титульном листе, значение '") +
		НСтр("ru='скидки к страховому тарифу в гр.5 Раздела СКЕ равно 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение скидки к страховому тарифу'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000910000105_");
	
	ПроверитьКС_3_03б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_03а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.3а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.3а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ равен коду ОКВЭД на Титульном листе, значение '") +
		НСтр("ru='надбавки к страховому тарифу в гр.6 Раздела СКЕ равно стр.7 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение надбавки к страховому тарифу'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000910000106_");
	Настройки.Вставить("ИмяПоказателя2", "П000010000703");
	
	ПроверитьКС_3_03а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_03а_код(Настройки)
	
	Перем Показатели;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р91Г002"		, "П000910000102_");
	ИменаПоказателей.Вставить("Р00С001"		, "ОКВЭД");
	ИменаПоказателей.Вставить("Р91Г005"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р01С006"		, Настройки.ИмяПоказателя2);

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗаполнитьПоказатель(Показатели.Р00С001, ДанныеКС.Р00);
	ЗаполнитьПоказатель(Показатели.Р01С006, ДанныеКС.Р01);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗарегистрироватьФормулу(Настройки);
		
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г002, ДанныеКС.Р91, Счетчик);
		РасшифроватьПоказатель(Показатели.Р00С001);	
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г005, ДанныеКС.Р91, Счетчик);
		РасшифроватьПоказатель(Показатели.Р01С006);	
	
		Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И Показатели.Р91Г002.Значение = Показатели.Р00С001.Значение 
			И НЕ Показатели.Р91Г005.Значение = Показатели.Р01С006.Значение;
		Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р91Г005.Значение, 
			Показатели.Р01С006.Значение);
		ДополнитьСтруктуруОшибок(Настройки);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_03б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='3.3б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Раздел СКЕ'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Раздела СКЕ (КС 3.3б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если код ОКВЭД в гр.2 Раздела СКЕ не равен коду ОКВЭД на Титульном листе, значение '") +
		НСтр("ru='надбавки к страховому тарифу в гр.6 Раздела СКЕ равно 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение надбавки к страховому тарифу'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000910000106_");
	
	ПроверитьКС_3_03б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_3_03б_код(Настройки)
	
	Перем Показатели;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р91Г002"		, "П000910000102_");
	ИменаПоказателей.Вставить("Р00С001"		, "ОКВЭД");
	ИменаПоказателей.Вставить("Р91Г005"		, Настройки.ИмяПоказателя1);

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗаполнитьПоказатель(Показатели.Р00С001, ДанныеКС.Р00);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗарегистрироватьФормулу(Настройки);
		
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г002, ДанныеКС.Р91, Счетчик);
		РасшифроватьПоказатель(Показатели.Р00С001);	
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р91Г005, ДанныеКС.Р91, Счетчик);
	
		Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И НЕ Показатели.Р91Г002.Значение = Показатели.Р00С001.Значение 
			И НЕ Показатели.Р91Г005.Значение = 0;
		Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р91Г005.Значение);
		ДополнитьСтруктуруОшибок(Настройки);
	КонецЦикла;
	
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_11

&НаСервере
Процедура ПроверитьКС_4_01(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Сумма всех строк по гр.6 Таблицы 1.1 меньше или равна гр.3 стр.3 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "106_");
	Настройки.Вставить("ПостфиксПоказателя2", "303");
	
	ПроверитьКС_4_06_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_02(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.6 Таблицы 1.1 больше или равна гр.7 Таблицы 1.1 по каждой строке'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "106_");
	Настройки.Вставить("ПостфиксПоказателя2", "107_");
	
	ПроверитьКС_4_05_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_03(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.8 Таблицы 1.1 больше или равна гр.9 Таблицы 1.1 по каждой строке'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 1 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "108_");
	Настройки.Вставить("ПостфиксПоказателя2", "109_");
	
	ПроверитьКС_4_05_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_04(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.4'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.4)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.10 Таблицы 1.1 больше или равна гр.11 Таблицы 1.1 по каждой строке'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "110_");
	Настройки.Вставить("ПостфиксПоказателя2", "111_");
	
	ПроверитьКС_4_05_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_05(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.5'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.5)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.12 Таблицы 1.1 больше или равна гр.13 Таблицы 1.1 по каждой строке'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов, за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "112_");
	Настройки.Вставить("ПостфиксПоказателя2", "113_");
	
	ПроверитьКС_4_05_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_05_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р11Г006"		, "П000110000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р11Г007"		, "П000110000" + Настройки.ПостфиксПоказателя2);

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		ЗарегистрироватьФормулу(Настройки);
		ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р11, Счетчик);
	
		Настройки.ЭтоОшибка = НЕ Показатели.Р11Г006.Значение >= Показатели.Р11Г007.Значение;
		Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р11Г006.Значение, 
			Показатели.Р11Г007.Значение);
		ДополнитьСтруктуруОшибок(Настройки);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_06(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='4.6'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 1.1'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 1.1 (КС 4.6)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Сумма всех строк по гр.7 Таблицы 1.1 меньше или равна гр.3 стр.4 Таблицы 1'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение базы для начисления страховых взносов по инвалидам, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "107_");
	Настройки.Вставить("ПостфиксПоказателя2", "403");
	
	ПроверитьКС_4_06_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_06_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р11Г006"		, "П000110000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р01П033"		, "П000010000" + Настройки.ПостфиксПоказателя2);

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р11Г006, ДанныеКС.Р11, Счетчик);
	КонецЦикла;
	
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П033, ДанныеКС.Р01);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р11Г006.Итог <= Показатели.Р01П033.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р11Г006.Итог, Показатели.Р01П033.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_2

&НаСервере
Процедура ПроверитьКС_5_01а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.1а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал, расчет прп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.1а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 2 равна гр.3 стр.19 Таблицы 2 ""Задолженность за страхователем"" за '") +
		НСтр("ru='предыдущий расчетный период, если расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение задолженности за страхователем на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020001003");
	Настройки.Вставить("ИмяПоказателя2", "П000020019003");
	
	ПроверитьКС_5_14а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_01б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.1б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.1б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 2 равна гр.3 стр.1 Таблицы 2 ""Задолженность за страхователем"" за '") +
		НСтр("ru='предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение задолженности за страхователем на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020001003");
	Настройки.Вставить("ИмяПоказателя2", "П000020001003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_02а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.2а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.2а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.2 Таблицы 2 ""На начало отчетного периода"" равна 0, если '") +
		НСтр("ru='расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы начисленных страховых взносов на начало отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002001");
	
	ПроверитьКС_5_18а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_02б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.2б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.2б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.2 Таблицы 2 ""На начало отчетного периода"" равна гр.3 стр.2 Таблицы 2 '") +
		НСтр("ru='за предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы начисленных страховых взносов на начало отчетного периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002001");
	Настройки.Вставить("ИмяПоказателя2", "П000020002003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_03(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.2 Таблицы 2 равна гр.1 стр.2 Таблицы 2 ""На начало отчетного периода"" '") +
		НСтр("ru='+ сумма показателя ""За последние три месяца отчетного периода""'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002003");
	Настройки.Вставить("ИмяПоказателя2", "П000020002001");
	Настройки.Вставить("ИмяПоказателя3", "П000020002401");
	
	ПроверитьКС_5_19_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04а_1(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4а.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4а.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.1 стр.2 Таблицы 2 за 2 месяц равна (гр.5 стр. 3 Таблицы 1 - гр.5 стр. 4 '") +	
		НСтр("ru='Таблицы 1 + 0,6 х гр.5 стр.4 Таблицы 1) х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (%2 - %3 + 0,6 х %3) х %4 / 100 Итог [%5] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002201");
	Настройки.Вставить("ИмяПоказателя2", "П000010000305");
	Настройки.Вставить("ИмяПоказателя3", "П000010000405");
	
	ПроверитьКС_5_04а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04а_2(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4а.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4а.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.1 стр.2 Таблицы 2 за 3 месяц равна (гр.6 стр. 3 Таблицы 1 - гр.6 стр. 4 '") +	
		НСтр("ru='Таблицы 1 + 0,6 х гр.6 стр.4 Таблицы 1) х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (%2 - %3 + 0,6 х %3) х %4 / 100 Итог [%5] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002301");
	Настройки.Вставить("ИмяПоказателя2", "П000010000306");
	Настройки.Вставить("ИмяПоказателя3", "П000010000406");
	
	ПроверитьКС_5_04а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04а_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р02П022"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р01П033"		, Настройки.ИмяПоказателя2);
	ИменаПоказателей.Вставить("Р01П043"		, Настройки.ИмяПоказателя3);
	ИменаПоказателей.Вставить("Р01П093"		, "П000010000903");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П022, ДанныеКС.Р02);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П033, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П043, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П093, ДанныеКС.Р01);
	
	УсловиеВыполнено = НЕ ДанныеКС.СКЕ_Заполнен И НЕ ДанныеКС.Р11_Заполнен И НЕ ДанныеКС.Льгота60;
	РасчетнаяСумма = Окр((Показатели.Р01П033.Значение - Показатели.Р01П043.Значение + 0.6 * Показатели.Р01П043.Значение)
		* Показатели.Р01П093.Значение / 100, 2);
	Настройки.ЭтоОшибка = УсловиеВыполнено И 
		НЕ (Показатели.Р02П022.Значение <= РасчетнаяСумма + 1 И Показатели.Р02П022.Значение >= РасчетнаяСумма - 1);
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П022.Значение, 
		Показатели.Р01П033.Значение, Показатели.Р01П043.Значение, Показатели.Р01П093.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры // ПроверитьКС_5_04а_код()

&НаСервере
Процедура ПроверитьКС_5_04б_1(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4б.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4б.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.1 стр.2 Таблицы 2 за 2 месяц равна (0,6 х гр.5 стр. 3 Таблицы 1) '") +	
		НСтр("ru='х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (0,6 х %2) х %3 / 100 Итог [%4] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002201");
	Настройки.Вставить("ИмяПоказателя2", "П000010000305");
	
	ПроверитьКС_5_04б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04б_2(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4б.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4б.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.1 стр.2 Таблицы 2 за 3 месяц равна (0,6 х гр.6 стр. 3 Таблицы 1) '") +	
		НСтр("ru='х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (0,6 х %2) х %3 / 100 Итог [%4] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002301");
	Настройки.Вставить("ИмяПоказателя2", "П000010000306");
	
	ПроверитьКС_5_04б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04б_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р02П022"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р01П033"		, Настройки.ИмяПоказателя2);
	ИменаПоказателей.Вставить("Р01П093"		, "П000010000903");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П022, ДанныеКС.Р02);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П033, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П093, ДанныеКС.Р01);
	
	УсловиеВыполнено = НЕ ДанныеКС.СКЕ_Заполнен И НЕ ДанныеКС.Р11_Заполнен И ДанныеКС.Льгота60;
	РасчетнаяСумма = Окр((0.6 * Показатели.Р01П033.Значение) * Показатели.Р01П093.Значение / 100, 2);
	Настройки.ЭтоОшибка = УсловиеВыполнено И 
		НЕ (Показатели.Р02П022.Значение <= РасчетнаяСумма + 1 И Показатели.Р02П022.Значение >= РасчетнаяСумма - 1);
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П022.Значение, 
		Показатели.Р01П033.Значение, Показатели.Р01П093.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры // ПроверитьКС_5_04б_код()

&НаСервере
Процедура ПроверитьКС_5_04в_1(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4в.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4в.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, гр.1 стр.2 Таблицы 2 за 2 месяц равна сумме начислений по всем '") +
		НСтр("ru='СКЕ за 2 месяц ± 1 руб. Расчет начислений проводится в зависимости от установленного признака '") +	
		НСтр("ru='""Установлена льгота 60%"" в Таблице 1 аналогично КС 5.4а.1 или 5.4б.1. Для каждой СКЕ '") +	
		НСтр("ru='учитывается свой страховой тариф. Скидка или надбавка учитываются только для той СКЕ, чей '") +	
		НСтр("ru='код ОКВЭД в гр.2 Раздела СКЕ совпадает с кодом ОКВЭД на Титульном листе'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаНачислений", "11");
	Настройки.Вставить("ГрафаИнвалиды"	, "12");
	Настройки.Вставить("ГрафаПериод"	, "2201");
	
	ПроверитьКС_5_04в_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_5_4в_1()

&НаСервере
Процедура ПроверитьКС_5_04в_2(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4в.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4в.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, гр.1 стр.2 Таблицы 2 за 3 месяц равна сумме начислений по всем '") +
		НСтр("ru='СКЕ за 3 месяц ± 1 руб. Расчет начислений проводится в зависимости от установленного признака '") +	
		НСтр("ru='""Установлена льгота 60%"" в Таблице 1 аналогично КС 5.4а.2 или 5.4б.2. Для каждой СКЕ '") +	
		НСтр("ru='учитывается свой страховой тариф. Скидка или надбавка учитываются только для той СКЕ, чей '") +	
		НСтр("ru='код ОКВЭД в гр.2 Раздела СКЕ совпадает с кодом ОКВЭД на Титульном листе'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаНачислений", "13");
	Настройки.Вставить("ГрафаИнвалиды"	, "14");
	Настройки.Вставить("ГрафаПериод"	, "2301");
	
	ПроверитьКС_5_04в_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_5_4в_2()

&НаСервере
Процедура ПроверитьКС_5_04в_код(Настройки)
	
	Перем Показатели;
	
	Если ДанныеКС.СКЕ_Нет Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р91Г002"		, "П000910000102_");
	ИменаПоказателей.Вставить("Р00С001"		, "ОКВЭД");
	ИменаПоказателей.Вставить("Р01С002"		, "П000010000002");
	ИменаПоказателей.Вставить("Р02П022"		, "П00002000" + Настройки.ГрафаПериод);
	ИменаПоказателей.Вставить("Р91Г004"		, "П000910000104_");
	ИменаПоказателей.Вставить("Р91Г005"		, "П000910000105_");
	ИменаПоказателей.Вставить("Р91Г006"		, "П000910000106_");
	ИменаПоказателей.Вставить("Р91Г011"		, "П0009100001" + Настройки.ГрафаНачислений	+ "_");
	ИменаПоказателей.Вставить("Р91Г012"		, "П0009100001" + Настройки.ГрафаИнвалиды	+ "_");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	
	ЗарегистрироватьФормулу(Настройки);
	ВсегоНачислений = 0;
	Расшифровка1 = НСтр("ru='Расчет по СКЕ %1 (ОКВЭД %2): (%3 - %4 + 0,6 х %4) х %5 / 100'");
	Расшифровка2 = НСтр("ru='Расчет по СКЕ %1 (ОКВЭД %2): (0,6 х %3) х %4 / 100'");
	
	ЗаполнитьПоказатель(Показатели.Р00С001, ДанныеКС.Р00);
	ЗаполнитьПоказатель(Показатели.Р01С002, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П022, ДанныеКС.Р02);
	
	Для Счетчик = 1 По ДанныеКС.КолСтрок91 Цикл
		ЗаполнитьПоказатель(Показатели.Р91Г002, ДанныеКС.Р91, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р91Г004, ДанныеКС.Р91, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р91Г005, ДанныеКС.Р91, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р91Г006, ДанныеКС.Р91, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р91Г011, ДанныеКС.Р91, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р91Г012, ДанныеКС.Р91, Счетчик);
		
		УчитыватьСкидку = Показатели.Р00С001.Значение = Показатели.Р91Г002.Значение;
		Если УчитыватьСкидку Тогда
			Тариф = Показатели.Р91Г004.Значение * (1 - Показатели.Р91Г005.Значение / 100 + Показатели.Р91Г006.Значение / 100);
			Тариф = Окр(Тариф, 2);
		Иначе
			Тариф = Показатели.Р91Г004.Значение;
		КонецЕсли;
		
		Если ДанныеКС.Льгота60 Тогда
			СуммаНачисления = Окр(Показатели.Р91Г011.Значение * 0.6 * Тариф / 100, 2);
			РасшифровкаНачисления = СтрШаблон(Расшифровка2, Счетчик, Показатели.Р91Г002.Значение, Показатели.Р91Г011.Значение,
				Тариф);
		Иначе
			СуммаНачисления = Окр((Показатели.Р91Г011.Значение - Показатели.Р91Г012.Значение 
				+ 0.6 * Показатели.Р91Г012.Значение) * Тариф / 100, 2);
			РасшифровкаНачисления = СтрШаблон(Расшифровка1, Счетчик, Показатели.Р91Г002.Значение, Показатели.Р91Г011.Значение,
				Показатели.Р91Г012.Значение, Тариф);
		КонецЕсли;
		
		НоваяСтрока	= СписокРасшифровкиПоказателей.Добавить();
		НоваяСтрока.Номер					= СчетчикФормулДляРасшифровок;
		НоваяСтрока.ПредставлениеПоказателя = РасшифровкаНачисления;
		НоваяСтрока.СсылкаНаДокументРО		= Неопределено;
		НоваяСтрока.ЗначениеПоказателя		= СуммаНачисления;
		
		ВсегоНачислений = ВсегоНачислений + СуммаНачисления;
	КонецЦикла;
	
	Настройки.ЭтоОшибка = ДанныеКС.СКЕ_Заполнен И 
		НЕ (Показатели.Р02П022.Значение <= ВсегоНачислений + 1 И Показатели.Р02П022.Значение >= ВсегоНачислений - 1);
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П022.Значение, ВсегоНачислений);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры // ПроверитьКС_5_4в_код()

&НаСервере
Процедура ПроверитьКС_5_04г_1(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4г.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4г.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.1 стр.2 Таблицы 2 за 2 месяц равна ((гр.5 стр. 3 Таблицы 1 - гр.5 стр. 4 Таблицы 1 '") +	
		НСтр("ru='- сумма строк по графе 10 Таблицы 1.1  + сумма строк по графе 11 Таблицы 1.1 + 0,6 х (гр.5 стр. 4 '") +	
		НСтр("ru='Таблицы 1 - сумма строк по графе 11 Таблицы 1.1)) х стр. 9 Таблицы 1 / 100) + сумма начислений '") +	
		НСтр("ru='Таблицы 1 за соответствующий месяц (рассчитывается аналогично КС 5.4а.1) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, 
		НСтр("ru='%1 = ((%2 - %3 - %4 + %5 + 0,6 х (%3 - %5)) х %6 / 100) + %7 Итог [%8] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002201");
	Настройки.Вставить("ИмяПоказателя2", "П000010000305");
	Настройки.Вставить("ИмяПоказателя3", "П000010000405");
	Настройки.Вставить("ИмяПоказателя4", "П000110000110_");
	Настройки.Вставить("ИмяПоказателя5", "П000110000111_");
	
	ПроверитьКС_5_04г_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04г_2(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4г.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4г.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.1 стр.2 Таблицы 2 за 3 месяц равна ((гр.6 стр. 3 Таблицы 1 - гр.6 стр. 4 Таблицы 1 '") +	
		НСтр("ru='- сумма строк по графе 12 Таблицы 1.1  + сумма строк по графе 13 Таблицы 1.1 + 0,6 х (гр.6 стр. 4 '") +	
		НСтр("ru='Таблицы 1 - сумма строк по графе 13 Таблицы 1.1)) х стр. 9 Таблицы 1 / 100) + сумма начислений '") +	
		НСтр("ru='Таблицы 1 за соответствующий месяц (рассчитывается аналогично КС 5.4а.2) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, 
		НСтр("ru='%1 = ((%2 - %3 - %4 + %5 + 0,6 х (%3 - %5)) х %6 / 100) + %7 Итог [%8] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002301");
	Настройки.Вставить("ИмяПоказателя2", "П000010000306");
	Настройки.Вставить("ИмяПоказателя3", "П000010000406");
	Настройки.Вставить("ИмяПоказателя4", "П000110000112_");
	Настройки.Вставить("ИмяПоказателя5", "П000110000113_");
	
	ПроверитьКС_5_04г_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04г_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р02П022"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р01П033"		, Настройки.ИмяПоказателя2);
	ИменаПоказателей.Вставить("Р01П043"		, Настройки.ИмяПоказателя3);
	ИменаПоказателей.Вставить("Р11Г010"		, Настройки.ИмяПоказателя4);
	ИменаПоказателей.Вставить("Р11Г011"		, Настройки.ИмяПоказателя5);
	ИменаПоказателей.Вставить("Р11Г015"		, "П000110000115_");
	ИменаПоказателей.Вставить("Р01П093"		, "П000010000903");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ШаблонРасшифровки = НСтр("ru='Расчет начислений строке %1 Таблицы 1.1: (%2 - %3 + 0,6 х %3) х %4 / 100'");
	
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П022, ДанныеКС.Р02);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П033, ДанныеКС.Р01);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П043, ДанныеКС.Р01);
	
	СуммаБазы = 0;
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р11Г010, ДанныеКС.Р11, Счетчик);
		СуммаБазы = СуммаБазы + Показатели.Р11Г010.Значение;
	КонецЦикла;
	
	СуммаИнвалиды = 0;
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р11Г011, ДанныеКС.Р11, Счетчик);
		СуммаИнвалиды = СуммаИнвалиды + Показатели.Р11Г011.Значение;
	КонецЦикла;
	
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П093, ДанныеКС.Р01);
	
	ВсегоНачислений = 0;
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		
		ЗаполнитьПоказатель(Показатели.Р11Г010, ДанныеКС.Р11, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р11Г011, ДанныеКС.Р11, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р11Г015, ДанныеКС.Р11, Счетчик);
		
		СуммаНачисления = Окр((Показатели.Р11Г010.Значение - Показатели.Р11Г011.Значение 
			+ 0.6 * Показатели.Р11Г011.Значение) * Показатели.Р11Г015.Значение / 100, 2);
		ВсегоНачислений = ВсегоНачислений + СуммаНачисления;
		НоваяСтрока	= СписокРасшифровкиПоказателей.Добавить();
		НоваяСтрока.Номер= СчетчикФормулДляРасшифровок;
		НоваяСтрока.ПредставлениеПоказателя = СтрШаблон(ШаблонРасшифровки, Счетчик, Показатели.Р11Г010.Значение,
			Показатели.Р11Г011.Значение, Показатели.Р11Г015.Значение);
		НоваяСтрока.ЗначениеПоказателя = СуммаНачисления;
		НоваяСтрока.СсылкаНаДокументРО = Неопределено;
		
	КонецЦикла;
	
	УсловиеВыполнено = НЕ ДанныеКС.СКЕ_Заполнен И ДанныеКС.Р11_Заполнен И НЕ ДанныеКС.Льгота60;
	РасчетнаяСумма = Окр((Показатели.Р01П033.Значение - Показатели.Р01П043.Значение - СуммаБазы + СуммаИнвалиды 
		+ 0.6 * (Показатели.Р01П043.Значение - СуммаИнвалиды)) * Показатели.Р01П093.Значение / 100 + ВсегоНачислений, 2);
	Настройки.ЭтоОшибка = УсловиеВыполнено И 
		НЕ (Показатели.Р02П022.Значение <= РасчетнаяСумма + 1 И Показатели.Р02П022.Значение >= РасчетнаяСумма - 1);
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П022.Значение, 
		Показатели.Р01П033.Значение, Показатели.Р01П043.Значение, СуммаБазы, СуммаИнвалиды, Показатели.Р01П093.Значение, 
		ВсегоНачислений, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры // ПроверитьКС_5_04г_код()

&НаСервере
Процедура ПроверитьКС_5_04д_1(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4д.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4д.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.1 стр.2 Таблицы 2 за 2 месяц равна ((0,6 х (гр.5 стр. 3 Таблицы 1 - сумма строк по '") +	
		НСтр("ru='графе 10 Таблицы 1.1)) х стр. 9 Таблицы 1 / 100) + сумма начислений Таблицы 1 за соответствующий '") +	
		НСтр("ru='месяц (рассчитывается аналогично КС 5.4б.1) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = ((0,6 х (%2 - %3)) х %4 / 100) + %5 Итог [%6] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 2 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002201");
	Настройки.Вставить("ИмяПоказателя2", "П000010000305");
	Настройки.Вставить("ИмяПоказателя3", "П000110000110_");
	
	ПроверитьКС_5_04д_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04д_2(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.4д.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.4д.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.1 стр.2 Таблицы 2 за 3 месяц равна ((0,6 х (гр.6 стр. 3 Таблицы 1 - сумма строк по '") +	
		НСтр("ru='графе 12 Таблицы 1.1)) х стр. 9 Таблицы 1 / 100) + сумма начислений Таблицы 1 за соответствующий '") +	
		НСтр("ru='месяц (рассчитывается аналогично КС 5.4б.2) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = ((0,6 х (%2 - %3)) х %4 / 100) + %5 Итог [%6] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов за 3 месяц'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002301");
	Настройки.Вставить("ИмяПоказателя2", "П000010000306");
	Настройки.Вставить("ИмяПоказателя3", "П000110000112_");
	
	ПроверитьКС_5_04д_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_04д_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;	
	ИменаПоказателей.Вставить("Р02П022"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р01П033"		, Настройки.ИмяПоказателя2);
	ИменаПоказателей.Вставить("Р11Г010"		, Настройки.ИмяПоказателя3);
	ИменаПоказателей.Вставить("Р11Г015"		, "П000110000115_");
	ИменаПоказателей.Вставить("Р01П093"		, "П000010000903");

	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ШаблонРасшифровки = НСтр("ru='Расчет начислений строке %1 Таблицы 1.1: 0,6 х %2 х %3 / 100'");
	
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П022, ДанныеКС.Р02);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П033, ДанныеКС.Р01);
	
	СуммаБазы = 0;
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р11Г010, ДанныеКС.Р11, Счетчик);
		СуммаБазы = СуммаБазы + Показатели.Р11Г010.Значение;
	КонецЦикла;
	
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р01П093, ДанныеКС.Р01);
	
	ВсегоНачислений = 0;
	Для Счетчик = 1 По ДанныеКС.КолСтрок11 Цикл
		
		ЗаполнитьПоказатель(Показатели.Р11Г010, ДанныеКС.Р11, Счетчик);
		ЗаполнитьПоказатель(Показатели.Р11Г015, ДанныеКС.Р11, Счетчик);
		
		СуммаНачисления = Окр(0.6 * Показатели.Р11Г010.Значение * Показатели.Р11Г015.Значение / 100, 2);
		ВсегоНачислений = ВсегоНачислений + СуммаНачисления;
		НоваяСтрока	= СписокРасшифровкиПоказателей.Добавить();
		НоваяСтрока.Номер= СчетчикФормулДляРасшифровок;
		НоваяСтрока.ПредставлениеПоказателя = СтрШаблон(ШаблонРасшифровки, Счетчик, Показатели.Р11Г010.Значение,
			Показатели.Р11Г015.Значение);
		НоваяСтрока.ЗначениеПоказателя = СуммаНачисления;
		НоваяСтрока.СсылкаНаДокументРО = Неопределено;
		
	КонецЦикла;
	
	УсловиеВыполнено = НЕ ДанныеКС.СКЕ_Заполнен И ДанныеКС.Р11_Заполнен И ДанныеКС.Льгота60;
	РасчетнаяСумма = Окр(0.6 * (Показатели.Р01П033.Значение - СуммаБазы) * Показатели.Р01П093.Значение / 100 
		+ ВсегоНачислений, 2);
	Настройки.ЭтоОшибка = УсловиеВыполнено И 
		НЕ (Показатели.Р02П022.Значение <= РасчетнаяСумма + 1 И Показатели.Р02П022.Значение >= РасчетнаяСумма - 1);
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П022.Значение, 
		Показатели.Р01П033.Значение, СуммаБазы, Показатели.Р01П093.Значение, ВсегоНачислений, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
		
КонецПроцедуры // ПроверитьКС_5_04д_код()

&НаСервере
Процедура ПроверитьКС_5_05а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.5а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.5а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.3 стр.2 Таблицы 2 равна (гр.3 стр. 3 Таблицы 1 - гр.3 стр. 4 '") +	
		НСтр("ru='Таблицы 1 + 0,6 х гр.3 стр.4 Таблицы 1) х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (%2 - %3 + 0,6 х %3) х %4 / 100 Итог [%5] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002003");
	Настройки.Вставить("ИмяПоказателя2", "П000010000303");
	Настройки.Вставить("ИмяПоказателя3", "П000010000403");
	
	ПроверитьКС_5_04а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_05б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.5б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.5б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ и Таблица 1.1 отсутствуют и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.3 стр.2 Таблицы 2 равна (0,6 х гр.3 стр. 3 Таблицы 1) '") +	
		НСтр("ru='х стр.9 Таблицы 1 / 100 ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = (0,6 х %2) х %3 / 100 Итог [%4] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002003");
	Настройки.Вставить("ИмяПоказателя2", "П000010000303");
	
	ПроверитьКС_5_04б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_05в(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.5в'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.5в)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ присутствует, гр.3 стр.2 Таблицы 2 равна сумме начислений по всем СКЕ с '") +
		НСтр("ru='начала года ± 1 руб. Расчет начислений проводится в зависимости от установленного признака '") +	
		НСтр("ru='""Установлена льгота 60%"" в Таблице 1 аналогично КС 5.5а или 5.5б. Для каждой СКЕ '") +	
		НСтр("ru='учитывается свой страховой тариф. Скидка или надбавка учитываются только для той СКЕ, чей '") +	
		НСтр("ru='код ОКВЭД в гр.2 Раздела СКЕ совпадает с кодом ОКВЭД на Титульном листе'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаНачислений", "07");
	Настройки.Вставить("ГрафаИнвалиды"	, "08");
	Настройки.Вставить("ГрафаПериод"	, "2003");
	
	ПроверитьКС_5_04в_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры // ПроверитьКС_5_5в()

&НаСервере
Процедура ПроверитьКС_5_05г(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.5г'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.5г)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='не установлен, гр.3 стр.2 Таблицы 2 равна ((гр.3 стр. 3 Таблицы 1 - гр.3 стр. 4 Таблицы 1 - сумма '") +	
		НСтр("ru='строк по гр.6 Таблицы 1.1 + сумма строк по гр.7 Таблицы 1.1 + 0,6 х (гр.3 стр.4 Таблицы 1 - сумма '") +
		НСтр("ru='строк по гр.7 Таблицы 1.1)) х стр.9 Таблицы 1 / 100) + сумма начислений Таблицы 1.1 по всем '") +
		НСтр("ru='строкам (рассчитывается аналогично КС 5.5а) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, 
		НСтр("ru='%1 = ((%2 - %3 - %4 + %5 + 0,6 х (%3 - %5)) х %6 / 100) + %7 Итог [%8] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002003");
	Настройки.Вставить("ИмяПоказателя2", "П000010000303");
	Настройки.Вставить("ИмяПоказателя3", "П000010000403");
	Настройки.Вставить("ИмяПоказателя4", "П000110000106_");
	Настройки.Вставить("ИмяПоказателя5", "П000110000107_");
	
	ПроверитьКС_5_04г_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_05д(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.5д'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.5д)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Если Раздел СКЕ отсутствует, Таблица 1.1 заполнена и признак ""Установлена льгота 60%"" в Таблице 1 '") +
		НСтр("ru='установлен, гр.3 стр.2 Таблицы 2 равна (0,6 х (гр.3 стр.3 Таблицы 1 - сумма строк по гр.6 '") +	
		НСтр("ru='Таблицы 1.1)) х стр.9 Таблицы 1 / 100) + сумма начислений Таблицы 1.1 по всем строкам (рассчитывается '") +
		НСтр("ru='аналогично КС 5.5б) ± 1 руб'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = ((0,6 х (%2 - %3)) х %4 / 100) + %5 Итог [%6] ± 1 руб.'"));
	Заголовки.Вставить("ОписаниеОшибки"		
		, НСтр("ru='Ошибочное значение начисленных страховых взносов, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020002003");
	Настройки.Вставить("ИмяПоказателя2", "П000010000303");
	Настройки.Вставить("ИмяПоказателя3", "П000110000106_");
	
	ПроверитьКС_5_04д_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_06(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.6'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.6)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.8 Таблицы 2 равна сумме строк 1 - 7 по гр.3 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы взносов всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020008003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020001003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020001103");
	ИменаПоказателей.Вставить("Р02П004"		, "П000020002003");
	ИменаПоказателей.Вставить("Р02П005"		, "П000020003003");
	ИменаПоказателей.Вставить("Р02П006"		, "П000020004003");
	ИменаПоказателей.Вставить("Р02П007"		, "П000020005003");
	ИменаПоказателей.Вставить("Р02П008"		, "П000020006003");
	ИменаПоказателей.Вставить("Р02П009"		, "П000020007003");
	
	Настройки.Вставить("ИменаПоказателей", ИменаПоказателей);
	
	ПроверитьКС_5_20_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_07а(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.7а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.7а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.9 Таблицы 2 равна гр.3 стр.18 Таблицы 2 - гр.3 стр.8 Таблицы 2, если '") +
		НСтр("ru='гр.3 стр.18 Таблицы 2 > гр.3 стр.8 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020009003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020018003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020008003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	УсловиеВыполнено = Показатели.Р02П002.Значение > Показатели.Р02П003.Значение;
	РасчетнаяСумма = Показатели.Р02П002.Значение - Показатели.Р02П003.Значение;
	Настройки.ЭтоОшибка = УсловиеВыполнено И НЕ Показатели.Р02П001.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение, Макс(0, РасчетнаяСумма));
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_07б(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.7б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.7б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.9 Таблицы 2 равна 0, если гр.3 стр.18 Таблицы 2 <= гр.3 стр.8 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020009003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020018003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020008003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	УсловиеВыполнено = Показатели.Р02П002.Значение <= Показатели.Р02П003.Значение;
	Настройки.ЭтоОшибка = УсловиеВыполнено И НЕ Показатели.Р02П001.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_08(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.8'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.8)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.9 Таблицы 2 равна сумме строк 10, 11 по гр.3 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020009003");
	Настройки.Вставить("ИмяПоказателя2", "П000020010003");
	Настройки.Вставить("ИмяПоказателя3", "П000020011003");
	
	ПроверитьКС_5_19_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_09(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.9'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.9)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.10 Таблицы 2 равна 0, если строки 13, 14.1 и 15 по гр.3 Таблицы 2 равны 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020010003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020013003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020014103");
	ИменаПоказателей.Вставить("Р02П004"		, "П000020015003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р02П001.Значение;
	Настройки.ЭтоОшибка = РасчетнаяСумма = 0 И НЕ Показатели.Р02П001.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_10(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.10'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.10)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.11 Таблицы 2 равна 0, если строки 14 и 16 по гр.3 Таблицы 2 равны 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020011003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020014003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020016003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р02П001.Значение;
	Настройки.ЭтоОшибка = РасчетнаяСумма = 0 И НЕ Показатели.Р02П001.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_11а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.11а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал, расчет прп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.11а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.12 Таблицы 2 равна гр.3 стр.9 Таблицы 2 за предыдущий расчетный период, '") +
		НСтр("ru='если расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020012003");
	Настройки.Вставить("ИмяПоказателя2", "П000020009003");
	
	ПроверитьКС_5_14а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_11б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.11б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.11б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.12 Таблицы 2 равна гр.3 стр.12 Таблицы 2 за предыдущий отчетный период, '") +
		НСтр("ru='если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020012003");
	Настройки.Вставить("ИмяПоказателя2", "П000020012003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_12(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.12'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.12)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.12 Таблицы 2 равна сумме строк 13, 14 по гр.3 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020012003");
	Настройки.Вставить("ИмяПоказателя2", "П000020013003");
	Настройки.Вставить("ИмяПоказателя3", "П000020014003");
	
	ПроверитьКС_5_19_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_13а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.13а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал, расчет прп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.13а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.13 Таблицы 2 равна гр.3 стр.10 Таблицы 2 за предыдущий расчетный период, '") +
		НСтр("ru='если расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020013003");
	Настройки.Вставить("ИмяПоказателя2", "П000020010003");
	
	ПроверитьКС_5_14а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_13б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.13б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.13б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.13 Таблицы 2 равна гр.3 стр.13 Таблицы 2 за предыдущий отчетный период, '") +
		НСтр("ru='если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020013003");
	Настройки.Вставить("ИмяПоказателя2", "П000020013003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_14а(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.14а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал, расчет прп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.14а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.14 Таблицы 2 равна гр.3 стр.11 Таблицы 2 за предыдущий расчетный период, '") +
		НСтр("ru='если расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020014003");
	Настройки.Вставить("ИмяПоказателя2", "П000020011003");
	
	ПроверитьКС_5_14а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_5_14б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.14б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.14б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.14 Таблицы 2 равна гр.3 стр.14 Таблицы 2 за предыдущий отчетный период, '") +
		НСтр("ru='если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы задолженности территориального органа на начало периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020014003");
	Настройки.Вставить("ИмяПоказателя2", "П000020014003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_5_15а(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.15а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.15а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.15 Таблицы 2 ""На начало отчетного периода"" равна 0, если '") +
		НСтр("ru='расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов на социальное страхование'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020015001");
	
	ПроверитьКС_5_18а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_15б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.15б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.15б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.15 Таблицы 2 ""На начало отчетного периода"" равна гр.3 стр.15 Таблицы 2 '") +
		НСтр("ru='за предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов на социальное страхование'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020015001");
	Настройки.Вставить("ИмяПоказателя2", "П000020015003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_16(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.16'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.16)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.15 Таблицы 2 равна гр.1 стр.15 Таблицы 2 ""На начало отчетного периода"" '") +
		НСтр("ru='+ сумма показателя ""За последние три месяца отчетного периода""'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов на социальное страхование'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020015003");
	Настройки.Вставить("ИмяПоказателя2", "П000020015001");
	Настройки.Вставить("ИмяПоказателя3", "П000020015401");
	
	ПроверитьКС_5_19_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_17(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.17'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.17)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.15 Таблицы 2 равна гр.4 стр.10 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов на социальное страхование'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020015003");
	ИменаПоказателей.Вставить("Р03П002"		, "П000030010004");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02П001, ДанныеКС.Р02);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р03П002, ДанныеКС.Р34);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р02П001.Значение = Показатели.Р03П002.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение, 
		Показатели.Р03П002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_18а(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.18а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 1 квартал'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.18а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.16 Таблицы 2 ""На начало отчетного периода"" равна 0, если '") +
		НСтр("ru='расчет за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы уплаченных страховых взносов'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020016001");
	
	ПроверитьКС_5_18а_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_5_18б(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.18б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru='Расчет за 2, 3, 4 квартал, расчет поп найден'"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.18б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.1 стр.16 Таблицы 2 ""На начало отчетного периода"" равна гр.3 стр.16 Таблицы 2 '") +
		НСтр("ru='за предыдущий отчетный период, если расчет не за 1 квартал'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы уплаченных страховых взносов'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020016001");
	Настройки.Вставить("ИмяПоказателя2", "П000020016003");
	
	ПроверитьКС_5_14б_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_19(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.19'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.19)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.16 Таблицы 2 равна гр.1 стр.16 Таблицы 2 ""На начало отчетного периода"" '") +
		НСтр("ru='+ сумма показателя ""За последние три месяца отчетного периода""'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2 + %3 Итог [%4]'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы уплаченных страховых взносов'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ИмяПоказателя1", "П000020016003");
	Настройки.Вставить("ИмяПоказателя2", "П000020016001");
	Настройки.Вставить("ИмяПоказателя3", "П000020016401");
	
	ПроверитьКС_5_19_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_19_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, Настройки.ИмяПоказателя1);
	ИменаПоказателей.Вставить("Р02П002"		, Настройки.ИмяПоказателя2);
	ИменаПоказателей.Вставить("Р02П003"		, Настройки.ИмяПоказателя3);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	РасчетнаяСумма = Показатели.Р02П002.Значение + Показатели.Р02П003.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р02П001.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение, 
		Показатели.Р02П002.Значение, Показатели.Р02П003.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_20(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.20'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.20)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.18 Таблицы 2 равна сумме строк 12, 14.1, 15, 16, 17 по гр.3 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020018003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020012003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020014103");
	ИменаПоказателей.Вставить("Р02П004"		, "П000020015003");
	ИменаПоказателей.Вставить("Р02П005"		, "П000020016003");
	ИменаПоказателей.Вставить("Р02П006"		, "П000020017003");
	
	Настройки.Вставить("ИменаПоказателей", ИменаПоказателей);
	
	ПроверитьКС_5_20_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_5_21а(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.21а'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.21а)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.19 Таблицы 2 равна гр.3 стр.8 Таблицы 2 - гр.3 стр.18 Таблицы 2, если '") +
		НСтр("ru='гр.3 стр.8 Таблицы 2 > гр.3 стр.18 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение задолженности за страхователем на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020019003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020008003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020018003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	УсловиеВыполнено = Показатели.Р02П002.Значение > Показатели.Р02П003.Значение;
	РасчетнаяСумма = Показатели.Р02П002.Значение - Показатели.Р02П003.Значение;
	Настройки.ЭтоОшибка = УсловиеВыполнено И НЕ Показатели.Р02П001.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение, Макс(0, РасчетнаяСумма));
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_21б(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.21б'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.21б)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.19 Таблицы 2 равна 0, если гр.3 стр.8 Таблицы 2 <= гр.3 стр.18 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение задолженности за страхователем на конец периода'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020019003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020008003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020018003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	УсловиеВыполнено = Показатели.Р02П002.Значение <= Показатели.Р02П003.Значение;
	Настройки.ЭтоОшибка = УсловиеВыполнено И НЕ Показатели.Р02П001.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02П001.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_5_22(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.22'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.22)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.20 Таблицы 2 меньше или равна гр.3 стр.19 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение недоимки'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

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

&НаСервере
Процедура ПроверитьКС_5_23(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='5.23'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 2'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 2 (КС 5.23)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Сумма строк 8 и 9 по гр.3 Таблицы 2 равна сумме строк 18 и 19 по гр.3 Таблицы 2'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение недоимки'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02П001"		, "П000020008003");
	ИменаПоказателей.Вставить("Р02П002"		, "П000020009003");
	ИменаПоказателей.Вставить("Р02П003"		, "П000020018003");
	ИменаПоказателей.Вставить("Р02П004"		, "П000020019003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02);
	
	РасчетнаяСумма1 = Показатели.Р02П001.Значение + Показатели.Р02П002.Значение;
	РасчетнаяСумма2 = Показатели.Р02П003.Значение + Показатели.Р02П004.Значение;
	Настройки.ЭтоОшибка = НЕ РасчетнаяСумма1 = РасчетнаяСумма2;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, РасчетнаяСумма1, РасчетнаяСумма2);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_3

&НаСервере
Процедура ПроверитьКС_6_01(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 3 больше или равна сумме строк 2 и 3 по гр.3 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение количества дней пособий в связи с несчастными случаями'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "03");
	ПроверитьКС_6_02_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_02(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.1 Таблицы 3 больше или равна сумме строк 2 и 3 по гр.4 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы пособий в связи с несчастными случаями'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "04");
	ПроверитьКС_6_02_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_02_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р03П013"		, "П0000300010" + Настройки.Графа);
	ИменаПоказателей.Вставить("Р03П023"		, "П0000300020" + Настройки.Графа);
	ИменаПоказателей.Вставить("Р03П033"		, "П0000300030" + Настройки.Графа);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	РасчетнаяСумма = (Показатели.Р03П023.Значение + Показатели.Р03П033.Значение);
	Настройки.ЭтоОшибка = НЕ Показатели.Р03П013.Значение >= РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р03П013.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_03(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 3 больше или равна сумме строк 5 и 6 по гр.3 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение количества дней пособий в связи с профзаболеваниями'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "03");
	ПроверитьКС_6_04_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_04(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.4'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.4)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.4 Таблицы 3 больше или равна сумме строк 5 и 6 по гр.4 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы пособий в связи с профзаболеваниями'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "04");
	ПроверитьКС_6_04_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_04_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р03П043"		, "П0000300040" + Настройки.Графа);
	ИменаПоказателей.Вставить("Р03П053"		, "П0000300050" + Настройки.Графа);
	ИменаПоказателей.Вставить("Р03П063"		, "П0000300060" + Настройки.Графа);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	РасчетнаяСумма = (Показатели.Р03П053.Значение + Показатели.Р03П063.Значение);
	Настройки.ЭтоОшибка = НЕ Показатели.Р03П043.Значение >= РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р03П043.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_05(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.5'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.5)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.7 Таблицы 3 больше или равна гр.3 стр.8 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение количества дней отпуска санаторно-курортного лечения'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "03");
	ПроверитьКС_6_06_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_06(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.6'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.6)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.7 Таблицы 3 больше или равна гр.4 стр.8 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы оплаты отпуска санаторно-курортного лечения'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("Графа", "04");
	ПроверитьКС_6_06_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_06_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р03П073"		, "П0000300070" + Настройки.Графа);
	ИменаПоказателей.Вставить("Р03П083"		, "П0000300080" + Настройки.Графа);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р03П073.Значение >= Показатели.Р03П083.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р03П073.Значение, 
		Показатели.Р03П083.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_07(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.7'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.7)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.10 Таблицы 3 равна сумме строк 1, 4, 7, 9 по гр.4 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы расходов на социальное страхование, всего'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р03П104"		, "П000030010004");
	ИменаПоказателей.Вставить("Р03П014"		, "П000030001004");
	ИменаПоказателей.Вставить("Р03П044"		, "П000030004004");
	ИменаПоказателей.Вставить("Р03П074"		, "П000030007004");
	ИменаПоказателей.Вставить("Р03П093"		, "П000030009004");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р03П104.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р03П104.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р03П104.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_6_08(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='6.8'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 3'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 3 (КС 6.8)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.11 Таблицы 3 меньше или равна гр.4 стр.10 Таблицы 3'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное значение суммы невыплаченных пособий'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р03П114"		, "П000030011004");
	ИменаПоказателей.Вставить("Р03П104"		, "П000030010004");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р03П114.Значение <= Показатели.Р03П104.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р03П114.Значение, 
		Показатели.Р03П104.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_4

&НаСервере
Процедура ПроверитьКС_7_01(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='7.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 4'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 4 (КС 7.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.2 Таблицы 4 меньше или равна гр.3 стр.1 Таблицы 4'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество пострадавших'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "2003");
	Настройки.Вставить("ПостфиксПоказателя2", "1003");
	
	ПроверитьКС_7_03_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_7_02(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='7.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 4'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 4 (КС 7.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.4 Таблицы 4 равна сумме строк 1 и 3 по гр.3 Таблицы 4'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество пострадавших'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р04П043"		, "П000040004003");
	ИменаПоказателей.Вставить("Р04П013"		, "П000040001003");
	ИменаПоказателей.Вставить("Р04П033"		, "П000040003003");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р04П043.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р04П043.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р04П043.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_7_03(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='7.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 4'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 4 (КС 7.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.5 Таблицы 4 меньше или равна гр.3 стр.4 Таблицы 4'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 <= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество пострадавших'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "5003");
	Настройки.Вставить("ПостфиксПоказателя2", "4003");
	
	ПроверитьКС_7_03_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_7_03_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р04П023"		, "П00004000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р04П013"		, "П00004000" + Настройки.ПостфиксПоказателя2);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р34);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р04П023.Значение <= Показатели.Р04П013.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р04П023.Значение, 
		Показатели.Р04П013.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

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

#Область КС_Проверки_Таблицы_5

&НаСервере
Процедура ПроверитьКС_8_01(СтруктураРезультата)
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='8.1'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 5'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 5 (КС 8.1)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.3 стр.1 Таблицы 5 больше или равна гр.4 стр.1 Таблицы 5'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество рабочих мест'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "103");
	Настройки.Вставить("ПостфиксПоказателя2", "104");
	
	ПроверитьКС_8_03_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_8_02(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='8.2'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 5'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 5 (КС 8.2)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.4 стр.1 Таблицы 5 больше или равна суммы граф 5 и 6 стр.1 Таблицы 5'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество рабочих мест'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р05П014"		, "П000050000104");
	ИменаПоказателей.Вставить("Р05П015"		, "П000050000105");
	ИменаПоказателей.Вставить("Р05П016"		, "П000050000106");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р05);
	
	РасчетнаяСумма = СуммаПоказателей(Показатели) - Показатели.Р05П014.Значение;
	Настройки.ЭтоОшибка = НЕ Показатели.Р05П014.Значение >= РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р05П014.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_8_03(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='8.3'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 5'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 5 (КС 8.3)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.7 стр.2 Таблицы 5 больше или равна гр.8 стр.2 Таблицы 5'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 >= %2'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество работников'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ПостфиксПоказателя1", "207");
	Настройки.Вставить("ПостфиксПоказателя2", "208");
	
	ПроверитьКС_8_03_код(Настройки);
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_8_03_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р05П013"		, "П000050000" + Настройки.ПостфиксПоказателя1);
	ИменаПоказателей.Вставить("Р05П014"		, "П000050000" + Настройки.ПостфиксПоказателя2);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р05);
	
	Настройки.ЭтоОшибка = НЕ Показатели.Р05П013.Значение >= Показатели.Р05П014.Значение;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р05П013.Значение, 
		Показатели.Р05П014.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_8_04(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='8.4'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 5'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 5 (КС 8.4)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.7 стр.2 Таблицы 5 равна 0, если Численность работников, занятых на вредных работах на '") +
		НСтр("ru='Титульном листе равна 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 = 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество работников'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р05П027"		, "П000050000207");
	ИменаПоказателей.Вставить("Р00С003"		, "ЧислВред");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р05П027, ДанныеКС.Р05);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С003, ДанныеКС.Р00);
	
	Настройки.ЭтоОшибка = Показатели.Р00С003.Значение = 0 И НЕ Показатели.Р05П027.Значение = 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р05П027.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_8_05(СтруктураРезультата)
	
	Перем Показатели;
	
	Заголовки = Новый Структура;
	Заголовки.Вставить("НомерКС"			, НСтр("ru='8.5'"));
	Заголовки.Вставить("Раздел"				, НСтр("ru='Таблица 5'"));
	Заголовки.Вставить("Условие"			, НСтр("ru=''"));
	Заголовки.Вставить("Комментарий"		, НСтр("ru=''"));
	Заголовки.Вставить("ТекстФормулы"		, НСтр("ru='Проверка Таблицы 5 (КС 8.5)'"));
	Заголовки.Вставить("Нарушение"			, НСтр("ru='Ошибка ввода'"));
	Заголовки.Вставить("ОписаниеКС"			, 
		НСтр("ru='Гр.7 стр.2 Таблицы 5 больше 0, если Численность работников, занятых на вредных работах на '") +
		НСтр("ru='Титульном листе больше 0'"));
	Заголовки.Вставить("ШаблонРасшифровки"	, НСтр("ru='%1 > 0'"));
	Заголовки.Вставить("ОписаниеОшибки"		, 
		НСтр("ru='Ошибочное количество работников'"));
	Настройки = ОбработатьНастройки(		, Заголовки, СтруктураРезультата);

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р05П027"		, "П000050000207");
	ИменаПоказателей.Вставить("Р00С003"		, "ЧислВред");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р05П027, ДанныеКС.Р05);
	ЗаполнитьИРасшифроватьПоказатель(Показатели.Р00С003, ДанныеКС.Р00);
	
	Настройки.ЭтоОшибка = Показатели.Р00С003.Значение > 0 И НЕ Показатели.Р05П027.Значение > 0;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р05П027.Значение);
	ДополнитьСтруктуруОшибок(Настройки);
	
	СтруктураРезультата = ОбработатьРезультат(Настройки, СтруктураРезультата);
	
КонецПроцедуры

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

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

#Область КС_ФормированиеКонтекста

&НаСервере
Процедура СформироватьСтруктуруДанныхКС()
	
	СформироватьСтруктуруПоказателей();
	
	СтруктураРазделов = Новый Структура;
	СтруктураРазделов.Вставить("Р00", "ПолеТабличногоДокументаТитульный");
	СтруктураРазделов.Вставить("Р01", "ПолеТабличногоДокументаТаблица1");
	СтруктураРазделов.Вставить("Р11", "ПолеТабличногоДокументаТаблица1_1");
	СтруктураРазделов.Вставить("Р02", "ПолеТабличногоДокументаТаблица2");
	СтруктураРазделов.Вставить("Р34", "ПолеТабличногоДокументаТаблица3_4");
	СтруктураРазделов.Вставить("Р05", "ПолеТабличногоДокументаТаблица5");
	СтруктураРазделов.Вставить("Р91", "ПолеТабличногоДокументаТаблица91");
	
	Для каждого Раздел Из СтруктураРазделов Цикл
		Если мДанныеОтчета.Свойство(Раздел.Значение) Тогда
			ДанныеКС.Вставить(Раздел.Ключ, ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(мДанныеОтчета[Раздел.Значение]));
		Иначе
			ДанныеКС.Вставить(Раздел.Ключ, Новый Структура);
		КонецЕсли;
	КонецЦикла;
	
	ДанныеКС.Р00.Вставить("ЧислИнвалидов"	, СтроковыеФункцииКлиентСервер.СтрокаВЧисло(ДанныеКС.Р00.ЧислИнвалидов));
	ДанныеКС.Р00.Вставить("ЧислВред"		, СтроковыеФункцииКлиентСервер.СтрокаВЧисло(ДанныеКС.Р00.ЧислВред));
	
КонецПроцедуры

&НаСервере
Процедура СформироватьСлужебныеДанные()
	
	ПредставлениеРазделов = Новый Структура();
	
	ПредставлениеРазделов.Вставить("Р00", "Титульного листа");
	ПредставлениеРазделов.Вставить("Р01", "Таблицы 1");
	ПредставлениеРазделов.Вставить("Р11", "Таблицы 1.1");
	ПредставлениеРазделов.Вставить("Р02", "Таблицы 2");
	ПредставлениеРазделов.Вставить("Р03", "Таблицы 3");
	ПредставлениеРазделов.Вставить("Р04", "Таблицы 4");
	ПредставлениеРазделов.Вставить("Р05", "Таблицы 5");
	ПредставлениеРазделов.Вставить("Р91", "Раздела СКЕ");
	
	ДанныеКС.Вставить("ПредставлениеРазделов", ПредставлениеРазделов);
	
	РазделыПоказателей = Новый Структура();
	
	РазделыПоказателей.Вставить("Р00", "Титульный");
	РазделыПоказателей.Вставить("Р01", "Таблица1");
	РазделыПоказателей.Вставить("Р11", "Таблица1_1");
	РазделыПоказателей.Вставить("Р02", "Таблица2");
	РазделыПоказателей.Вставить("Р03", "Таблица3_4");
	РазделыПоказателей.Вставить("Р04", "Таблица3_4");
	РазделыПоказателей.Вставить("Р05", "Таблица5");
	РазделыПоказателей.Вставить("Р91", "Таблица91");
	
	ДанныеКС.Вставить("РазделыПоказателей", РазделыПоказателей);
	
	ПоляИсключений = Новый Соответствие;
	ПоляИсключений.Вставить("ОКВЭД"			, "Код ОКВЭД");
	ПоляИсключений.Вставить("ЧислИнвалидов"	, "Число работающих инвалидов");
	ПоляИсключений.Вставить("ЧислВред"		, "Число занятых на вредных работах");
	ПоляИсключений.Вставить("П000010000001"	, "Признак ""Частичное финансирование из бюджета""");
	ПоляИсключений.Вставить("П000020001103"	, "Графа 3 Строка 1.1");
	ПоляИсключений.Вставить("П000020014103"	, "Графа 3 Строка 14.1");
	ПоляИсключений.Вставить("П000020002201"	, "Графа 1 Строка 2 ""2 месяц""");
	ПоляИсключений.Вставить("П000020002301"	, "Графа 1 Строка 2 ""3 месяц""");
	
	ДанныеКС.Вставить("ПоляИсключений", ПоляИсключений);
	
	МногостраничныеРазделы = Новый Массив;
	ДанныеКС.Вставить("МногостраничныеРазделы", МногостраничныеРазделы);
	
	ДанныеКС.Вставить("ГодОтчета"	, Год(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета));
	ДанныеКС.Вставить("МесОтчета"	, Месяц(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета));
	ДанныеКС.Вставить("КвОтчета"	, ?(ДанныеКС.МесОтчета % 3 = 0, ДанныеКС.МесОтчета / 3, 0));
	ДанныеКС.Вставить("Льгота60"	, ЗначениеЗаполнено(ДанныеКС.Р01.П000010000002));
	ДанныеКС.Вставить("ЧастичноеФин", ЗначениеЗаполнено(ДанныеКС.Р01.П000010000001));
	ДанныеКС.Вставить("Р11_Заполнен", ТаблицаЗаполнена(ДанныеКС.Р11));
	ДанныеКС.Вставить("СКЕ_Заполнен", ТаблицаЗаполнена(ДанныеКС.Р91));
	ДанныеКС.Вставить("СКЕ_Нет"		, ДанныеКС.Р91.Количество() = 0);
	ДанныеКС.Вставить("КолСтрок11"	, КоличествоСтрок(ДанныеКС.Р11, "П000110000101_"));
	ДанныеКС.Вставить("КолСтрок91"	, КоличествоСтрок(ДанныеКС.Р91, "П000910000101_"));
	
КонецПроцедуры

&НаСервере
Процедура СформироватьДанныеПРП()
	
	ДанныеКС.Вставить("П01");
	ДанныеКС.Вставить("П02");
	ДанныеКС.Вставить("ОтчетПРП");
	
	Если ДанныеКС.КвОтчета = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если ДанныеКС.КвОтчета = 1 Тогда
		ГодОтчета = ДанныеКС.ГодОтчета - 1;
		МесОтчета = 12;
	Иначе
		ГодОтчета = ДанныеКС.ГодОтчета;
		МесОтчета = ДанныеКС.МесОтчета - 3;
	КонецЕсли; 
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Организация"	, СтруктураРеквизитовФормы.Организация);
	Запрос.УстановитьПараметр("ГодОтчета"	, ГодОтчета);
	Запрос.УстановитьПараметр("МесяцОтчета"	, МесОтчета);
	Запрос.УстановитьПараметр("КПП"			, ДанныеКС.Р00.КПП);
	Запрос.Текст = 
	
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДокументРО.Вид КАК Вид,
	|	ДокументРО.Ссылка КАК Ссылка,
	|	ДокументРО.КПП КАК КПП,
	|	ДокументРО.КПП = &КПП КАК Приоритет
	|ИЗ
	|	Документ.РегламентированныйОтчет КАК ДокументРО
	|ГДЕ
	|	ДокументРО.ИсточникОтчета = ""РегламентированныйОтчет4ФСС""
	|	И ДокументРО.Организация = &Организация
	|	И ГОД(ДокументРО.ДатаОкончания) = &ГодОтчета
	|	И ГОД(ДокументРО.ДатаОкончания) >= 2017
	|	И ВЫРАЗИТЬ(ДокументРО.ВыбраннаяФорма КАК Строка (99)) = ""ФормаОтчета2017Кв3""
	|	И МЕСЯЦ(ДокументРО.ДатаОкончания) = &МесяцОтчета
	|	И НЕ ДокументРО.ПометкаУдаления
	|
	|УПОРЯДОЧИТЬ ПО
	|	Приоритет УБЫВ,
	|	Вид УБЫВ";
	
	Результат			= Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	Если Выборка.Следующий() Тогда
		ДанныеКС.Вставить("ОтчетПРП", Выборка.Ссылка);
		ПоказателиОтчета = Выборка.Ссылка.ДанныеОтчета.Получить().ПоказателиОтчета;
		
		СтруктураРазделов = Новый Структура;
		СтруктураРазделов.Вставить("П01", "ПолеТабличногоДокументаТаблица1");
		СтруктураРазделов.Вставить("П02", "ПолеТабличногоДокументаТаблица2");
		
		Для Каждого Раздел Из СтруктураРазделов Цикл
			ДанныеКС.Вставить(Раздел.Ключ, 
				ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ПоказателиОтчета[Раздел.Значение]));
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

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

#Область КС_Сервис2019

&НаСервере
Процедура СформироватьПоказатели(Показатели, ИменаПоказателей)
	
	Показатели = ?(Показатели = Неопределено, Новый Структура, Показатели);
	
	Для каждого Элемент Из ИменаПоказателей Цикл
		Показатели.Вставить(Элемент.Ключ, Новый Структура());
		
		МассивПредставления		= Новый Массив;
		ПодстрокаРаздела		= "";
		ПодстрокаСтраницы		= "";
		
		ИндексРаздела			= Сред(Элемент.Ключ, 1, 3);
		ИндексДополнения		= Сред(Элемент.Ключ, 4, 1);
		ПодстрокаДополнения		= Сред(Элемент.Ключ, 8, 1);
		ПодстрокаСтроки			= УдалитьЛидНули(Сред(Элемент.Значение, ?(ИндексРаздела = "Р01" 
			ИЛИ ИндексРаздела = "Р05", 10, 9), 2));
		ПодстрокаГрафы			= УдалитьЛидНули(Сред(Элемент.Значение, 12,2));
		
		ДанныеКС.ПредставлениеРазделов.Свойство(ИндексРаздела	, ПодстрокаРаздела);
		ДанныеКС.РазделыПоказателей.Свойство(ИндексРаздела		, ПодстрокаСтраницы);
		
		ПолеИсключения = ДанныеКС.ПоляИсключений.Получить(Элемент.Значение);
		Если НЕ ПолеИсключения = Неопределено Тогда
			МассивПредставления.Добавить(ПолеИсключения);
		Иначе
			Если ИндексДополнения = "С" Тогда
				МассивПредставления.Добавить("Строка " + ПодстрокаСтроки);
			ИначеЕсли ИндексДополнения = "Г" Тогда
				МассивПредставления.Добавить("Графа " + ПодстрокаГрафы);
			Иначе
				МассивПредставления.Добавить("Графа " + ПодстрокаГрафы);
				МассивПредставления.Добавить("Строка " + ПодстрокаСтроки);
			КонецЕсли;
		КонецЕсли;
		МассивПредставления.Добавить(ПодстрокаРаздела);
		Если ПодстрокаДополнения = "О" Тогда
			МассивПредставления.Добавить("предыдущего отчетного периода");
		ИначеЕсли ПодстрокаДополнения = "Р" Тогда
			МассивПредставления.Добавить("предыдущего расчетного периода");
		КонецЕсли;
		
		Представление			= СтрСоединить(МассивПредставления, " ");
		Многострочный			= СтрДлина(Элемент.Значение) = 14;
		Многостраничный			= НЕ ДанныеКС.МногостраничныеРазделы.Найти(ИндексРаздела) = Неопределено;
		Округление				= Ложь;
		
		// постоянные данные
		Показатели[Элемент.Ключ].Вставить("Раздел"			, ИндексРаздела);
		Показатели[Элемент.Ключ].Вставить("ИмяПоказателя"	, Элемент.Значение);
		Показатели[Элемент.Ключ].Вставить("Представление"	, Представление);
		Показатели[Элемент.Ключ].Вставить("ИмяСтраницы"		, ПодстрокаСтраницы);
		
		// переменные данные
		Показатели[Элемент.Ключ].Вставить("Отчет"			, 
			?(ЗначениеЗаполнено(ПодстрокаДополнения), ДанныеКС.ОтчетПРП, Неопределено));
		Показатели[Элемент.Ключ].Вставить("Страница"		, "");
		Показатели[Элемент.Ключ].Вставить("Значение");
		Показатели[Элемент.Ключ].Вставить("ЗначениеСтр"		, "");
		Показатели[Элемент.Ключ].Вставить("Итог"			, 0);
		Показатели[Элемент.Ключ].Вставить("МассивСтрок"		, Новый Массив);
		
		// сервисные данные
		Показатели[Элемент.Ключ].Вставить("Многостраничный"	, Многостраничный);
		Показатели[Элемент.Ключ].Вставить("Многострочный"	, Многострочный);
		Показатели[Элемент.Ключ].Вставить("Округление"		, Округление);
		Показатели[Элемент.Ключ].Вставить("Синоним"			, Элемент.Ключ);
		Показатели[Элемент.Ключ].Вставить("Дополнение"		, "");
		Показатели[Элемент.Ключ].Вставить("Расшифровывать"	, Истина);
	КонецЦикла;
	
КонецПроцедуры

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

&НаСервере
Процедура ЗаполнитьПоказатель(Показатель, Источник, НомерСтроки = Неопределено)
	
	Перем ЗначениеВИсточнике;
	
	Если ЗначениеЗаполнено(НомерСтроки) И Сред(Показатель.ИмяПоказателя, 14, 1) = "_" Тогда
		Показатель.ИмяПоказателя = Лев(Показатель.ИмяПоказателя, 14) + XMLСтрока(НомерСтроки);
	КонецЕсли;
	
	Если Источник.Свойство(Показатель.ИмяПоказателя, ЗначениеВИсточнике) Тогда
		Показатель.Страница = ?(Источник.Свойство("Страница"), Источник.Страница, 1);
		
		Если ТипЗнч(ЗначениеВИсточнике) = Тип("Число") И Показатель.Округление Тогда
			Показатель.Значение =Окр(ЗначениеВИсточнике, 2);
			Показатель.Итог = Показатель.Итог + Показатель.Значение;
		ИначеЕсли ТипЗнч(ЗначениеВИсточнике) = Тип("Число") Тогда
			Показатель.Значение = ЗначениеВИсточнике;
			Показатель.Итог = Показатель.Итог + ЗначениеВИсточнике;
		ИначеЕсли ТипЗнч(ЗначениеВИсточнике) = Тип("Строка") Тогда
			Показатель.Значение = СокрЛП(ЗначениеВИсточнике);
			Показатель.ЗначениеСтр = ?(ЗначениеЗаполнено(ЗначениеВИсточнике), Показатель.Значение, "(...)");
			Показатель.МассивСтрок.Добавить(Показатель.Значение);
		ИначеЕсли ТипЗнч(ЗначениеВИсточнике) = Тип("Дата") Тогда
			Показатель.Значение = ЗначениеВИсточнике;
			Показатель.ЗначениеСтр = Формат(ЗначениеВИсточнике, "ДФ=dd.MM.yy; ДП=(...)");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаСервере
Процедура ЗарегистрироватьФормулу(Знач Настройки);

	СчетчикФормулДляРасшифровок				= СчетчикФормулДляРасшифровок + 1;
	НовСтр									= СписокРасшифровкиФормулы.Добавить();
	НовСтр.ТекстовоеПредставлениеФормулы	= Настройки.ОписаниеКС;
	НовСтр.Номер							= СчетчикФормулДляРасшифровок;
	
КонецПроцедуры

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

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

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

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

&НаСервере
Функция КоличествоСтрок(Источник, ИмяПоказателя)
	
	Количество = 0;
	ИмяПоказателя = Лев(ИмяПоказателя, 14);
	
	Пока Источник.Свойство(ИмяПоказателя + XMLСтрока(Количество + 1)) Цикл
		Количество = Количество + 1;
	КонецЦикла;
	
	Возврат Количество;
	
КонецФункции

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

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

&НаСервере
Функция УдалитьЛидНули(Знач ВхСтрока)
	
	Если НЕ ТипЗнч(ВхСтрока) = Тип("Строка") Тогда
		Возврат ВхСтрока;
	КонецЕсли;
	
	Пока Истина Цикл
		Если СтрНачинаетсяС(ВхСтрока, "0") И СтрДлина(ВхСтрока) > 1 Тогда
			ВхСтрока = Сред(ВхСтрока, 2);
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Возврат ВхСтрока;
	
КонецФункции

&НаСервере
Функция ТаблицаЗаполнена(Таблица)
	
	Для каждого Элемент Из Таблица Цикл
		Если ЗначениеЗаполнено(Элемент.Значение) Тогда
			Возврат Истина;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Ложь;
	
КонецФункции

&НаСервере
Процедура ПоместитьВКэш(ПомещаемыеДанные, ИдентификаторСеанса, АдресДанных) Экспорт
	
	Если ЗначениеЗаполнено(АдресДанных) Тогда
		УдалитьИзВременногоХранилища(АдресДанных);
	КонецЕсли;
	
	АдресДанных = ПоместитьВоВременноеХранилище(ПомещаемыеДанные, ИдентификаторСеанса);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбновитьИнформационнуюПанельБРО()
	
	ПараметрыОтображения = ЭлектронныйДокументооборотСФСС.ПараметрыИнформационнойПанелиБРО();
	ПараметрыОтображения.Организация = СтруктураРеквизитовФормы.Организация;
	ПараметрыОтображения.Группа = Элементы.ИнформационнаяПанельБРО;
	ПараметрыОтображения.Форма = ЭтотОбъект;
	ЭлектронныйДокументооборотСФСС.ОбновитьИнформационнуюПанельБРО(ПараметрыОтображения);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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