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

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

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

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

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

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

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

	МассивБулево = Новый Массив;
	МассивБулево.Добавить(Тип("Булево"));
	СтруктураРеквизитовФормы.мОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
	
	СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));
	
	КолИсхСтрокИдГруппы1        = 1;
	КолИсхСтрокИдМСЧ_Таблица2_1 = 1;
	КолИсхСтрокИдМСЧ_Таблица2_2 = 1;
	КолИсхСтрокИдМСЧ_Таблица2_3 = 1;
	
	КолКолонокИдГруппы1        = 15;
	КолКолонокИдМСЧ_Таблица2_1 = 5;
	КолКолонокИдМСЧ_Таблица2_2 = 5;
	КолКолонокИдМСЧ_Таблица2_3 = 5;
	
	СтруктураДанныхТитульный  = Новый Структура;
	СтруктураДанныхТаблица1   = Новый Структура;
	СтруктураДанныхТаблица1_1 = Новый Структура;
	СтруктураДанныхТаблица2   = Новый Структура;
	СтруктураДанныхТаблица3_4 = Новый Структура;
	СтруктураДанныхТаблица5   = Новый Структура;

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

	мСтруктураКолвоКолонокРазделов  = Новый Структура;
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы1,        КолКолонокИдГруппы1);
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_1, КолКолонокИдМСЧ_Таблица2_1);
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_2, КолКолонокИдМСЧ_Таблица2_2);
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдМСЧ_Таблица2_3, КолКолонокИдМСЧ_Таблица2_3);
	
	ЦветЗаполняетсяТолькоВручную        = Новый Цвет(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;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020018003", "П000020012003;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020009003", "П000020018003;П000020008003;П000020001003;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П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;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П000020015003;П000020016003;П000020017003;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020015001;П000020015401;П000020015101;П000020015201;П000020015301;П000020016001;П000020016401;П000020016101;П000020016201;П000020016301;П000020013003;П000020014003");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020019003", "П000020008003;П000020018003;П000020001003;П000020002003;П000020003003;П000020004003;П000020005003;П000020006003;П000020007003;П000020002001;П000020002401;П000020002101;П000020002201;П000020002301;П000020012003;П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");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

		ТаблицаВариантыЗаполнения = Новый ТаблицаЗначений;
		ТаблицаВариантыЗаполнения.Колонки.Добавить("КодПоказателя",     ОписаниеТиповСтрока15);
		ТаблицаВариантыЗаполнения.Колонки.Добавить("ВариантЗаполнения", ОписаниеТиповЧисло1);
		ТаблицаВариантыЗаполнения.Колонки.Добавить("ЗначениеАвто",      ОписаниеТиповЧисло15);
		ТаблицаВариантыЗаполнения.Колонки.Добавить("Дельта",            ОписаниеТиповЧисло15);
		ТаблицаВариантыЗаполнения.Колонки.Добавить("Комментарий",       ОписаниеТиповСтрока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.Значение
																   + Форма.ТабличныйДокумент.Области.П000020002003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020003003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020004003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020005003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020006003.Значение
																   + Форма.ТабличныйДокумент.Области.П000020007003.Значение;
		КонецЕсли;

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

	ИначеЕсли ИмяТекущегоРаздела = "" Тогда
				
		РасчетВСтруктуре(Форма, "Таблица1");
		РасчетВСтруктуре(Форма, "Таблица1_1");
		РасчетВСтруктуре(Форма, "Таблица2");
		РасчетВСтруктуре(Форма, "Таблица3_4");
	
	КонецЕсли;

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

&НаКлиентеНаСервереБезКонтекста
Процедура РасчетВСтруктуре(Форма, ИмяТекущегоРаздела)
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
		
	Если ИмяТекущегоРаздела = "Таблица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.Значение
												 + Форма.ТабличныйДокумент.Области.П000020002003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020003003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020004003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020005003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020006003.Значение
												 + Форма.ТабличныйДокумент.Области.П000020007003.Значение;
			Форма.ТабличныйДокумент.Области.П000020008003.Значение = СтруктураДанныхРаздела.П000020008003;
			
			СтруктураДанныхРаздела.П000020018003 = Форма.ТабличныйДокумент.Области.П000020012003.Значение
												 + Форма.ТабличныйДокумент.Области.П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
												 + СтруктураДанныхРаздела.П000020002003
												 + СтруктураДанныхРаздела.П000020003003
												 + СтруктураДанныхРаздела.П000020004003
												 + СтруктураДанныхРаздела.П000020005003
												 + СтруктураДанныхРаздела.П000020006003
												 + СтруктураДанныхРаздела.П000020007003;
			СтруктураДанныхРаздела.П000020018003 = СтруктураДанныхРаздела.П000020012003
												 + СтруктураДанныхРаздела.П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;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТабличныйДокументПриИзмененииСодержимогоОбласти(Элемент, Область)
	
	// ПроцессыОбработкиДокументов
	//
	Если Элементы.ТабличныйДокумент.Защита Тогда
		
		Возврат;
		
	КонецЕсли;
	//
	// ПроцессыОбработкиДокументов
	
	Модифицированность = Истина;
	
	ИмяРаздела = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
	ИмяОбласти = Область.Имя;
	
	ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
	
	Если ПозицияПодстроки > 0 Тогда
		ИмяОбласти = Лев(ИмяОбласти, ПозицияПодстроки - 1);
	КонецЕсли;
	
	Если СтрНайти(ИмяОбласти, "НомДопРасчета") > 0 Тогда
		
		ЭтоОбластьПериода = (ИмяОбласти = "НомДопРасчета");
		
		Если ЭтоОбластьПериода Тогда
			
			КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
			
			Если КодПериода = "03" ИЛИ КодПериода = "06"  ИЛИ КодПериода = "09" ИЛИ КодПериода = "12" Тогда
				
				Если ПустаяСтрока(ТабличныйДокумент.Области.НомДопРасчета.Значение) Тогда
					
					ТабличныйДокумент.Области.Период.Значение = КодПериода;		
					
				Иначе
					
					ТабличныйДокумент.Области.Период.Значение = "";
					
					ТабличныйДокумент.Области.НомДопРасчета.Значение =
					 РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(СокрЛП(ТабличныйДокумент.Области.НомДопРасчета.Значение), 2, "0", 0);
	                										
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
			
	Если ИмяОбласти = "КодПодчиненности" Тогда
		Если СтрДлина(СокрЛП(Область.Значение)) <> 5 Тогда
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = НСтр("ru = 'Введенное значение кода подчиненности должно состоять из 5 символов.'");
			Сообщение.Сообщить();
			Область.Значение = "";
		КонецЕсли;
	КонецЕсли;
			
	Если ИмяОбласти = "НомерКорректировки" Тогда
		
		Если НЕ ЗначениеЗаполнено(Область.Значение) Тогда
			Область.Значение = "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);
	
	ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
	Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
	ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
		ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
	КонецЕсли;
	ЭтаФормаИмя = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
	РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ЭтаФормаИмя, ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ПараметрыОтчета, Контейнер);
	
	ЗаполнитьПустыеСтруктурыДанных();
		
	Если П0001100001.Количество() = 0 Тогда
		П0001100001.Добавить();
	КонецЕсли;
	
	Если П0000200161.Количество() = 0 Тогда
		П0000200161.Добавить();
	КонецЕсли;
	
	Если П0000200162.Количество() = 0 Тогда
		П0000200162.Добавить();
	КонецЕсли;
	
	Если П0000200163.Количество() = 0 Тогда
		П0000200163.Добавить();
	КонецЕсли;
			
	ОбъектОтчета(ЭтаФорма.ИмяФормы).ЗаполнитьСтруктурыДанныхРазделовЗначениямиИзДопСтрок(
		СтруктураРеквизитовФормы.мВыбраннаяФорма, Контейнер);
	
	ВывестиМакетВТаблДокНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела, 1);
	
	РасчетНаСервере();
	
	Для Каждого Страница Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл
		ВключитьПечатьЗаполненногоНеобязательногоРаздела(ЭтаФорма, Страница.ИмяСтраницы);
	КонецЦикла;
	
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область МеханизмПроверкиКонтрольныхСоотношений
///////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МЕХАНИЗМА ПРОВЕРКИ КОНТРОЛЬНЫХ СООТНОШЕНИЙ

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

&НаСервере
Функция ПроверитьКонтрольныеСоотношенияВОтчете() Экспорт
	
	СформироватьСтруктуруПоказателей();
	
	СтруктураРеквизитовФормы.ТекстДляЗаголовочнойЧасти =
		РегламентированнаяОтчетностьКлиентСервер.ПредставлениеДокументаРеглОтч(СтруктураРеквизитовФормы.мСохраненныйДок);
	
	СтруктураРезультата = Новый Структура;
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", 0);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", 0);
	СтруктураРезультата.Вставить("СтруктураОшибок", Новый Структура);
	
	Если СписокРасшифровкиПоказателей = Неопределено Тогда
		СписокРасшифровкиПоказателей = РегламентированнаяОтчетность.СоздатьСписокРасшифровкиПоказателей();
		
	Иначе
		СписокРасшифровкиПоказателей.Очистить();
		
	КонецЕсли;
	
	Если СписокРасшифровкиформулы = Неопределено Тогда
		СписокРасшифровкиформулы = РегламентированнаяОтчетность.СоздатьСписокРасшифровкиформулы();
		
	Иначе
		СписокРасшифровкиформулы.Очистить();
		
	КонецЕсли;
	
	СчетчикФормулДляРасшифровок = 0;
	
	ПроверитьКС_Тит_ЧислИнвалидов(СтруктураРезультата);
	ПроверитьКС_Тит_ЧислВред(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст9(СтруктураРезультата);
	ПроверитьКС_Т1_Ст5(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст1Гр03_3(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст1Гр03_4а(СтруктураРезультата);
	ПроверитьКС_Т1_Ст1Гр03_4б(СтруктураРезультата);

	ПроверитьКС_Т1_Ст1Гр03_5(СтруктураРезультата);
	ПроверитьКС_Т1_Ст1Гр04(СтруктураРезультата);
	ПроверитьКС_Т1_Ст1Гр05(СтруктураРезультата);
	ПроверитьКС_Т1_Ст1Гр06(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст2Гр03_9(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст2Гр03_10а(СтруктураРезультата);
	ПроверитьКС_Т1_Ст2Гр03_10б(СтруктураРезультата);

	ПроверитьКС_Т1_Ст3Гр03_12(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст3Гр03_13а(СтруктураРезультата);
	ПроверитьКС_Т1_Ст3Гр03_13б(СтруктураРезультата);

	ПроверитьКС_Т1_Ст4Гр03_18(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст4Гр03_19а(СтруктураРезультата);
	ПроверитьКС_Т1_Ст4Гр03_19б(СтруктураРезультата);
	
	ПроверитьКС_Т1_Ст4Гр03_20(СтруктураРезультата);
	ПроверитьКС_Т1_Ст4Гр03_21(СтруктураРезультата);
	
	ПроверитьКС_Т11_Гр06_1(СтруктураРезультата);
	ПроверитьКС_Т11_Гр06_2(СтруктураРезультата);
	ПроверитьКС_Т11_Гр08(СтруктураРезультата);
	ПроверитьКС_Т11_Гр10(СтруктураРезультата);
	ПроверитьКС_Т11_Гр12(СтруктураРезультата);
	ПроверитьКС_Т11_Гр07(СтруктураРезультата);

	ПроверитьКС_Т2_Ст10Гр03_1а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст10Гр03_1б(СтруктураРезультата);

	ПроверитьКС_Т2_Ст20Гр01_2а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_2б(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст20Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст20Гр01_4а_2м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4а_3м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4б_2м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4б_3м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4г_2м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4г_3м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4д_2м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр01_4д_3м(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр03_5а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр03_5б(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр03_5г(СтруктураРезультата);
	ПроверитьКС_Т2_Ст20Гр03_5д(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст80Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст90Гр03_7а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст90Гр03_7б(СтруктураРезультата);
	ПроверитьКС_Т2_Ст90Гр03_8(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст100Гр03(СтруктураРезультата);
	ПроверитьКС_Т2_Ст110Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст120Гр03_11а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст120Гр03_11б(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст120Гр03_12(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст130Гр03_13а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст130Гр03_13б(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст140Гр03_14а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст140Гр03_14б(СтруктураРезультата);

	ПроверитьКС_Т2_Ст150Гр01_15а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст150Гр01_15б(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст150Гр03_16(СтруктураРезультата);
	ПроверитьКС_Т2_Ст150Гр3_17(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст160Гр01_18а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст160Гр01_18б(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст160Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т2_Ст180Гр03(СтруктураРезультата);
	ПроверитьКС_Т2_Ст19Гр3_21а(СтруктураРезультата);
	ПроверитьКС_Т2_Ст19Гр3_21б(СтруктураРезультата);
	ПроверитьКС_Т2_Ст200Гр03(СтруктураРезультата);
	ПроверитьКС_Т2_Ст8_9Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т3_Ст1Гр03(СтруктураРезультата);
	ПроверитьКС_Т3_Ст1Гр04(СтруктураРезультата);
	ПроверитьКС_Т3_Ст4Гр03(СтруктураРезультата);
	ПроверитьКС_Т3_Ст4Гр04(СтруктураРезультата);
	ПроверитьКС_Т3_Ст7Гр03(СтруктураРезультата);
	ПроверитьКС_Т3_Ст7Гр04(СтруктураРезультата);
	ПроверитьКС_Т3_Ст10Гр04(СтруктураРезультата);
	ПроверитьКС_Т3_Ст11Гр04(СтруктураРезультата);
	
	ПроверитьКС_Т4_Ст2Гр03(СтруктураРезультата);
	ПроверитьКС_Т4_Ст4Гр03(СтруктураРезультата);
	ПроверитьКС_Т4_Ст5Гр03(СтруктураРезультата);
	
	ПроверитьКС_Т5_Ст1Гр03(СтруктураРезультата);
	ПроверитьКС_Т5_Ст1Гр04(СтруктураРезультата);
	ПроверитьКС_Т5_Ст2Гр07_3(СтруктураРезультата);
	ПроверитьКС_Т5_Ст2Гр07_4(СтруктураРезультата);
	ПроверитьКС_Т5_Ст2Гр07_5(СтруктураРезультата);
	
	Если СписокРасшифровкиПоказателей.Количество() > 0 Тогда 
		СтруктураРезультата.Вставить("СписокРасшифровкиПоказателей", 
			ПоместитьВоВременноеХранилище(СписокРасшифровкиПоказателей, Новый УникальныйИдентификатор));
			
	КонецЕсли;
	
	Если СписокРасшифровкиформулы.Количество() > 0 Тогда
		АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(СписокРасшифровкиформулы, Новый УникальныйИдентификатор);
		СтруктураРезультата.Вставить("СписокРасшифровкиформулы", АдресВоВременномХранилище);
		
	КонецЕсли;
	
	Возврат СтруктураРезультата;
	
КонецФункции

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

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

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

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

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

&НаСервере
Процедура ПроверитьКС_Т1_Ст1Гр03_4а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;

	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 4а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 1 графы 3 равно сумме значений строки 1 по графам 4, 5, 6, если расчет за 1-й квартал'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст1Гр03 = ПоказательПоСтроке("Т1_Ст1Гр03");
	Т1_Ст1Гр04 = ПоказательПоСтроке("Т1_Ст1Гр04");
	Т1_Ст1Гр05 = ПоказательПоСтроке("Т1_Ст1Гр05");
	Т1_Ст1Гр06 = ПоказательПоСтроке("Т1_Ст1Гр06");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст1Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст1Гр04);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст1Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст1Гр06);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст1Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст1Гр04, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст1Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст1Гр06, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст1Гр03.Значение, Т1_Ст1Гр04.Значение + Т1_Ст1Гр05.Значение + Т1_Ст1Гр06.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст1Гр04.ЗначениеСтр + " + " + Т1_Ст1Гр05.ЗначениеСтр + " + "
		+ Т1_Ст1Гр06.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
		
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
		ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст1Гр03_4б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 4б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 1 графы 3 равно сумме значений строки 1 по графам 4, 5, 6 + Таблица 1 строка 1 графа 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица1ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица1;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

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

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

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

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

&НаСервере
Процедура ПроверитьКС_Т1_Ст2Гр03_9(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 9)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 больше или равно 0'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст2Гр03 = ПоказательПоСтроке("Т1_Ст2Гр03");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст2Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст2Гр03, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст2Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст2Гр03_10а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 10а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно сумме значений строки 2 по графам 4, 5, 6, если расчет за 1-й квартал'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст2Гр03 = ПоказательПоСтроке("Т1_Ст2Гр03");
	Т1_Ст2Гр04 = ПоказательПоСтроке("Т1_Ст2Гр04");
	Т1_Ст2Гр05 = ПоказательПоСтроке("Т1_Ст2Гр05");
	Т1_Ст2Гр06 = ПоказательПоСтроке("Т1_Ст2Гр06");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст2Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст2Гр04);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст2Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст2Гр06);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст2Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст2Гр04, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст2Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст2Гр06, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст2Гр03.Значение, Т1_Ст2Гр04.Значение + Т1_Ст2Гр05.Значение + Т1_Ст2Гр06.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст2Гр04.ЗначениеСтр + " + " + Т1_Ст2Гр05.ЗначениеСтр + " + "
		+ Т1_Ст2Гр06.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
		ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст2Гр03_10б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 10б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно сумме значений строки 1 по графам 4, 5, 6 + Таблица 1 строка 2 графа 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица1ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица1;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

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

&НаСервере
Процедура ПроверитьКС_Т1_Ст3Гр03_13а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 13а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно сумме значений строки 3 по графам 4, 5, 6, если расчет за 1-й квартал'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Т1_Ст3Гр04 = ПоказательПоСтроке("Т1_Ст3Гр04");
	Т1_Ст3Гр05 = ПоказательПоСтроке("Т1_Ст3Гр05");
	Т1_Ст3Гр06 = ПоказательПоСтроке("Т1_Ст3Гр06");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр04);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр06);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр04, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр06, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст3Гр03.Значение, Т1_Ст3Гр04.Значение + Т1_Ст3Гр05.Значение + Т1_Ст3Гр06.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст3Гр04.ЗначениеСтр + " + " + Т1_Ст3Гр05.ЗначениеСтр + " + "
		+ Т1_Ст3Гр06.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
		ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст3Гр03_13б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 13б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 3 графы 3 равно сумме значений строки 3 по графам 4, 5, 6 + Таблица 1 строка 3 графа 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица1ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица1;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т1_Ст4Гр03_18(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 12)'");
	ОписаниеКС      = НСтр("ru='Значение строки 4 графы 3 больше или равно 0'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст4Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст4Гр03_19а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 19а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 4 графы 3 равно сумме значений строки 4 по графам 4, 5, 6, если расчет за 1-й квартал'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Т1_Ст4Гр04 = ПоказательПоСтроке("Т1_Ст4Гр04");
	Т1_Ст4Гр05 = ПоказательПоСтроке("Т1_Ст4Гр05");
	Т1_Ст4Гр06 = ПоказательПоСтроке("Т1_Ст4Гр06");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр04);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр06);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр04, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр06, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст4Гр03.Значение, Т1_Ст4Гр04.Значение + Т1_Ст4Гр05.Значение + Т1_Ст4Гр06.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст4Гр04.ЗначениеСтр + " + " + Т1_Ст4Гр05.ЗначениеСтр + " + "
		+ Т1_Ст4Гр06.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
		ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т1_Ст4Гр03_19б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 19б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 4 графы 3 равно сумме значений строки 4 по графам 4, 5, 6 + Таблица 1 строка 4 графа 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица1ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица1;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т1_Ст4Гр03_20(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1 (КС 20)'");
	ОписаниеКС      = НСтр("ru='Значение строки 4 графы 3 меньше или равно значения строки 3 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	
	КС = ПоказателиКС(Т1_Ст4Гр03.Значение, Т1_Ст3Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " <= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть <= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
		ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

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

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

&НаСервере
Процедура ПроверитьКС_Т11_Гр06_2(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1.1 (КС 2)'");
	ОписаниеКС      = НСтр("ru='В строке %1 значение графы 6 по каждой строке больше или равно графы 7'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т11_Гр06 = ПоказательПоСтроке("Т11_Гр06");
	Т11_Гр07 = ПоказательПоСтроке("Т11_Гр07");
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		
		СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
		ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд));
		
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр06, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр07, Инд);
		
		ВнестиПоказательВРасшифровку(Т11_Гр06, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр07, "Таблица1_1");
		
		КС = ПоказателиКС(Т11_Гр06.Значение, Т11_Гр07.Значение);
		Расшифровка = Т11_Гр06.ЗначениеСтр + " >= " + Т11_Гр07.ЗначениеСтр;
		
		Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
			ЭтоОшибка = Ложь;
			ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
		Иначе
			ЭтоОшибка = Истина;
			ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
			
		КонецЕсли;
	
		ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд),
			ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
			
		СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
		СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
		СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
		
	КонецЦикла;
		
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т11_Гр08(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1.1 (КС 3)'");
	ОписаниеКС      = НСтр("ru='В строке %1 значение графы 8 по каждой строке больше или равно графы 9'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т11_Гр08 = ПоказательПоСтроке("Т11_Гр08");
	Т11_Гр09 = ПоказательПоСтроке("Т11_Гр09");
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		
		СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
		ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд));
		
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр08, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр09, Инд);
		
		ВнестиПоказательВРасшифровку(Т11_Гр08, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр09, "Таблица1_1");
		
		КС = ПоказателиКС(Т11_Гр08.Значение, Т11_Гр09.Значение);
		Расшифровка = Т11_Гр08.ЗначениеСтр + " >= " + Т11_Гр09.ЗначениеСтр;
		
		Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
			ЭтоОшибка = Ложь;
			ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
		Иначе
			ЭтоОшибка = Истина;
			ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
			
		КонецЕсли;
	
		ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд),
			ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
			
		СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
		СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
		СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
		
	КонецЦикла;
		
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_Т11_Гр12(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1.1 (КС 5)'");
	ОписаниеКС      = НСтр("ru='В строке %1 значение графы 12 по каждой строке больше или равно графы 13'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т11_Гр12 = ПоказательПоСтроке("Т11_Гр12");
	Т11_Гр13 = ПоказательПоСтроке("Т11_Гр13");
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		
		СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
		ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд));
		
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр12, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр13, Инд);
		
		ВнестиПоказательВРасшифровку(Т11_Гр12, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр13, "Таблица1_1");
		
		КС = ПоказателиКС(Т11_Гр12.Значение, Т11_Гр13.Значение);
		Расшифровка = Т11_Гр12.ЗначениеСтр + " >= " + Т11_Гр13.ЗначениеСтр;
		
		Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
			ЭтоОшибка = Ложь;
			ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
		Иначе
			ЭтоОшибка = Истина;
			ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
			
		КонецЕсли;
	
		ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, Инд),
			ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
			
		СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
		СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
		СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
		
	КонецЦикла;
		
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т11_Гр07(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 1.1 (КС 6)'");
	ОписаниеКС      = НСтр("ru='Сумма всех строк по графе 7 меньше или равно Таблица 1 строка 4 графа 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т11_Гр07 = ПоказательПоСтроке("Т11_Гр07");
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр07 = 0;
	СуммаГр07Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр07, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр07, "Таблица1_1");
		СуммаГр07 = СуммаГр07 + Т11_Гр07.Значение;
		СуммаГр07Стр = СуммаГр07Стр + Т11_Гр07.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	
	КС = ПоказателиКС(СуммаГр07, Т1_Ст4Гр03.Значение);
	Расшифровка = РасшифровкаВСтр(СуммаГр07Стр) + " Итог [" + КС.ЛеваяЧастьСтр + "] <= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть <= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст10Гр03_1а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 1а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 1 графы 3 равно значению строки 19 ""Задолженность за страхователем"" графы 3 за предыдущий расчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	ТекущийГод = Год(ОкончаниеПериодаОтчета);
	
	Если ТекущийГод > 2017 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
			Ст190Гр03ПНП = ПоказательПоСтроке("Т2_Ст190Гр03");
			ТаблицаПНПСтр = "Таблица2";
		Иначе
			Возврат;
		КонецЕсли;
	ИначеЕсли ТекущийГод = 2017 Тогда //Если 1 квартал 2017 года
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, -112, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаРаздел2_7;
			Ст190Гр03ПНП = ПоказательПоСтроке("Т7_Ст190Гр03ПНП");
			ТаблицаПНПСтр = "Раздел2_7";
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

	Т2_Ст10Гр03 = ПоказательПоСтроке("Т2_Ст10Гр03");

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст10Гр03_1б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 1б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 1 графы 3 равно значению строки 1 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_2б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 2б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1, показатель ""на начало отчетного периода"" равно значению строки 2 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4а_2м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""2 месяц"" равно (Таблица 1 строка 3 графа 5 – Таблица 1 строка 4 графа 5 + 0,6 * Таблица 1 строка 4 графа 5) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст22Гр01 = ПоказательПоСтроке("Т2_Ст22Гр01");
	Т1_Ст3Гр05 = ПоказательПоСтроке("Т1_Ст3Гр05");
	Т1_Ст4Гр05 = ПоказательПоСтроке("Т1_Ст4Гр05");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст22Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр05);                                          	
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст22Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст22Гр01.Значение, (Т1_Ст3Гр05.Значение - Т1_Ст4Гр05.Значение + 0.6 * Т1_Ст4Гр05.Значение) * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = (" + Т1_Ст3Гр05.ЗначениеСтр + " - " + Т1_Ст4Гр05.ЗначениеСтр + " + 0,6 * " + Т1_Ст4Гр05.ЗначениеСтр + ") * "
			+ Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
			
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4а_3м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""3 месяц"" равно (Таблица 1 строка 3 графа 6 – Таблица 1 строка 4 графа 6 + 0,6 * Таблица 1 строка 4 графа 6) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст23Гр01 = ПоказательПоСтроке("Т2_Ст23Гр01");
	Т1_Ст3Гр06 = ПоказательПоСтроке("Т1_Ст3Гр06");
	Т1_Ст4Гр06 = ПоказательПоСтроке("Т1_Ст4Гр06");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст23Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр06);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр06);                                          	
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст23Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст23Гр01.Значение, (Т1_Ст3Гр06.Значение - Т1_Ст4Гр06.Значение + 0.6 * Т1_Ст4Гр06.Значение) * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = (" + Т1_Ст3Гр06.ЗначениеСтр + " - " + Т1_Ст4Гр06.ЗначениеСтр + " + 0,6 * " + Т1_Ст4Гр06.ЗначениеСтр + ") * "
			+ Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
		
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4б_2м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""2 месяц"" равно (Таблица 1 строка 3 графа 5 * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст22Гр01 = ПоказательПоСтроке("Т2_Ст22Гр01");
	Т1_Ст3Гр05 = ПоказательПоСтроке("Т1_Ст3Гр05");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст22Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст22Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст22Гр01.Значение, Т1_Ст3Гр05.Значение * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст3Гр05.ЗначениеСтр + " * " + Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		Кс = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4б_3м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""3 месяц"" равно (Таблица 1 строка 3 графа 6 * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст23Гр01 = ПоказательПоСтроке("Т2_Ст23Гр01");
	Т1_Ст3Гр06 = ПоказательПоСтроке("Т1_Ст3Гр06");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст23Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр06);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст23Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст23Гр01.Значение, Т1_Ст3Гр06.Значение * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т1_Ст3Гр06.ЗначениеСтр + " * " + Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4г_2м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4г)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""2 месяц"" равно (Таблица 1 строка 3 графа 5 – Таблица 1 строка 4 графа 5 - Таблица 1.1 сумма строк по графе 10 + "
		+ "Таблица 1.1 сумма строк по графе 11 + 0,6 * (Таблица 1 строка 4 графа 5 - Таблица 1.1 сумма строк по графе 11) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст22Гр01 = ПоказательПоСтроке("Т2_Ст22Гр01");
	Т1_Ст3Гр05 = ПоказательПоСтроке("Т1_Ст3Гр05");
	Т1_Ст4Гр05 = ПоказательПоСтроке("Т1_Ст4Гр05");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр10 = ПоказательПоСтроке("Т11_Гр10");
	Т11_Гр11 = ПоказательПоСтроке("Т11_Гр11");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст22Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр05);                                          	
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр10 = 0; СуммаГр10Стр = "";
	СуммаГр11 = 0; СуммаГр11Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр10, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр11, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр10, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр11, "Таблица1_1");
		СуммаГр10 = СуммаГр10 + Т11_Гр10.Значение;
		СуммаГр11 = СуммаГр11 + Т11_Гр11.Значение;
		СуммаГр10Стр = СуммаГр10Стр + Т11_Гр10.ЗначениеСтр + " + "; 
		СуммаГр11Стр = СуммаГр11Стр + Т11_Гр11.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст22Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст22Гр01.Значение, (Т1_Ст3Гр05.Значение - Т1_Ст4Гр05.Значение - СуммаГр10 + СуммаГр11 + 0.6 * Т1_Ст4Гр05.Значение - СуммаГр11) * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = (" + Т1_Ст3Гр05.ЗначениеСтр + " - " + Т1_Ст4Гр05.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр10Стр) + ") + (" +  РасшифровкаВСтр(СуммаГр11Стр)
			+ ") + 0,6 * (" + Т1_Ст4Гр05.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр11Стр) + ")) * " + Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
			
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4г_3м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4г)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""3 месяц"" равно (Таблица 1 строка 3 графа 6 – Таблица 1 строка 4 графа 6 - Таблица 1.1 сумма строк по графе 12 + "
		+ "Таблица 1.1 сумма строк по графе 13 + 0,6 * (Таблица 1 строка 4 графа 6 - Таблица 1.1 сумма строк по графе 13) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст23Гр01 = ПоказательПоСтроке("Т2_Ст23Гр01");
	Т1_Ст3Гр06 = ПоказательПоСтроке("Т1_Ст3Гр06");
	Т1_Ст4Гр06 = ПоказательПоСтроке("Т1_Ст4Гр06");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр12 = ПоказательПоСтроке("Т11_Гр12");
	Т11_Гр13 = ПоказательПоСтроке("Т11_Гр13");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст23Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр06);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр06);                                          	
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр12 = 0; СуммаГр12Стр = "";
	СуммаГр13 = 0; СуммаГр13Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр12, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр13, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр12, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр13, "Таблица1_1");
		СуммаГр12 = СуммаГр12 + Т11_Гр12.Значение;
		СуммаГр13 = СуммаГр13 + Т11_Гр13.Значение;
		СуммаГр12Стр = СуммаГр12Стр + Т11_Гр12.ЗначениеСтр + " + "; 
		СуммаГр13Стр = СуммаГр13Стр + Т11_Гр13.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст23Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст23Гр01.Значение, (Т1_Ст3Гр06.Значение - Т1_Ст4Гр06.Значение - СуммаГр12 + СуммаГр13 + 0.6 * Т1_Ст4Гр06.Значение - СуммаГр13) * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = (" + Т1_Ст3Гр06.ЗначениеСтр + " - " + Т1_Ст4Гр06.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр12Стр) + ") + (" +  РасшифровкаВСтр(СуммаГр13Стр)
			+ ") + 0,6 * (" + Т1_Ст4Гр06.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр13Стр) + ")) * " + Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";	
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
		
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4д_2м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4д)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""2 месяц"" равно 0,6 * (Таблица 1 строка 3 графа 5 – Таблица 1.1 сумма строк по графе 10) * Таблица 1 строка 9 / 100"
		+ " сумма начислений Таблица 1.1 по всем строкам за соответствующий месяц +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст22Гр01 = ПоказательПоСтроке("Т2_Ст22Гр01");
	Т1_Ст3Гр05 = ПоказательПоСтроке("Т1_Ст3Гр05");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр10 = ПоказательПоСтроке("Т11_Гр10");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст22Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр05);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр10 = 0; СуммаГр10Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр10, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр10, "Таблица1_1");
		СуммаГр10 = СуммаГр10 + Т11_Гр10.Значение;
		СуммаГр10Стр = СуммаГр10Стр + Т11_Гр10.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст22Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр05, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст22Гр01.Значение, 0.6 * (Т1_Ст3Гр05.Значение - СуммаГр10) * Т1_Ст9.Значение / 100 + СуммаГр10);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + "0,6 * (" + Т1_Ст3Гр05.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр10Стр) + ")) * " + Т1_Ст9.ЗначениеСтр + " / 100 + (" + РасшифровкаВСтр(СуммаГр10Стр) + ") Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр01_4д_3м(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 4д)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 1 показатель ""3 месяц"" равно 0,6 * (Таблица 1 строка 3 графа 6 – Таблица 1.1 сумма строк по графе 11) * Таблица 1 строка 9 / 100"
		+ " сумма начислений Таблица 1.1 по всем строкам за соответствующий месяц +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст23Гр01 = ПоказательПоСтроке("Т2_Ст23Гр01");
	Т1_Ст3Гр06 = ПоказательПоСтроке("Т1_Ст3Гр06");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр11 = ПоказательПоСтроке("Т11_Гр11");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст23Гр01);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр06);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр11 = 0; СуммаГр11Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр11, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр11, "Таблица1_1");
		СуммаГр11 = СуммаГр11 + Т11_Гр11.Значение;
		СуммаГр11Стр = СуммаГр11Стр + Т11_Гр11.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст23Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр06, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст23Гр01.Значение, 0.6 * (Т1_Ст3Гр06.Значение - СуммаГр11) * Т1_Ст9.Значение / 100 + СуммаГр11);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + "0,6 * (" + Т1_Ст3Гр06.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр11Стр) + ")) * " + Т1_Ст9.ЗначениеСтр + " / 100 + (" + РасшифровкаВСтр(СуммаГр11Стр) + ") Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр03_5а(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 5а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно (Таблица 1 строка 3 графа 3 – Таблица 1 строка 4 графа 3 + 0,6 * Таблица 1 строка 4 графа 3) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст20Гр03 = ПоказательПоСтроке("Т2_Ст20Гр03");
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст20Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);                                          	
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст20Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст20Гр03.Значение, (Т1_Ст3Гр03.Значение - Т1_Ст4Гр03.Значение + 0.6 * Т1_Ст4Гр03.Значение) * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = (" + Т1_Ст3Гр03.ЗначениеСтр + " - " + Т1_Ст4Гр03.ЗначениеСтр + " + 0,6 * " + Т1_Ст4Гр03.ЗначениеСтр + ") * "
			+ Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
			
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр03_5б(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "отсутствует Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 5б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно (0,6 * Таблица 1 строка 3 графа 3) * Таблица 1 строка 9 / 100 +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст20Гр03 = ПоказательПоСтроке("Т2_Ст20Гр03");
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст20Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	ВнестиПоказательВРасшифровку(Т2_Ст20Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = НЕ РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст20Гр03.Значение, 0.6 * Т1_Ст3Гр03.Значение * Т1_Ст9.Значение / 100);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + "0,6 * " + Т1_Ст3Гр03.ЗначениеСтр + " * " + Т1_Ст9.ЗначениеСтр + " / 100" + " Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
			
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КССучетомОтклонения(КС.ЛеваяЧасть, КС.ПраваяЧасть, 1)) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр03_5г(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" не установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 5г)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно ((Таблица 1 строка 3 графа 3 – Таблица 1 строка 4 графа 3 - Таблица 1.1 сумма строк по графе 6 + Таблица 1.1 сумма строк по графе 7 "
		+ "+ 0,6 * (Таблица 1 строка 4 графа 3 - Таблица 1.1 сумма строк по графе 7)) * Таблица 1 строка 9 / 100 + сумма начислений Таблица 1.1 по всем строкам +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст20Гр03 = ПоказательПоСтроке("Т2_Ст20Гр03");
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Т1_Ст4Гр03 = ПоказательПоСтроке("Т1_Ст4Гр03");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр06 = ПоказательПоСтроке("Т11_Гр06");
	Т11_Гр07 = ПоказательПоСтроке("Т11_Гр07");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст20Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст4Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр06 = 0; СуммаГр06Стр = "";
	СуммаГр07 = 0; СуммаГр07Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр06, Инд);
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр07, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр06, "Таблица1_1");
		ВнестиПоказательВРасшифровку(Т11_Гр07, "Таблица1_1");
		СуммаГр06 = СуммаГр06 + Т11_Гр06.Значение;
		СуммаГр07 = СуммаГр07 + Т11_Гр07.Значение;
		СуммаГр06Стр = СуммаГр06Стр + Т11_Гр06.ЗначениеСтр + " + "; 
		СуммаГр07Стр = СуммаГр07Стр + Т11_Гр07.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст20Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст4Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст20Гр03.Значение, ((Т1_Ст3Гр03.Значение - Т1_Ст4Гр03.Значение - СуммаГр06 + СуммаГр07 + 0.6 * (Т1_Ст4Гр03.Значение - СуммаГр07)) * Т1_Ст9.Значение / 100) + СуммаГр06);
		Расшифровка = КС.ЛеваяЧастьСтр + " = ((" + Т1_Ст3Гр03.ЗначениеСтр + " - " + Т1_Ст4Гр03.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр06Стр) + ") + (" + РасшифровкаВСтр(СуммаГр07Стр) 
			+ ") + 0,6 * (" + Т1_Ст4Гр03.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр06Стр) + "))) * " + Т1_Ст9.ЗначениеСтр + " / 100 + (" + РасшифровкаВСтр(СуммаГр06Стр) + ") Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст20Гр03_5д(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "заполнена Таблица 1.1 и признак ""Льгота 60%"" установлен";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 5д)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 3 равно (0,6 * (Таблица 1 строка 3 графа 3 - Таблица 1.1 сумма строк по графе 6)) * Таблица 1 строка 9 / 100 + "
		+ "сумма начислений Таблица 1.1 по всем строкам +- 1 рубль, когда %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Льгота60Процентов = ?(ЗначениеЗаполнено(СтруктураДанныхТаблица1.П000010000002), 1, 0);
	
	Т2_Ст20Гр03 = ПоказательПоСтроке("Т2_Ст20Гр03");
	Т1_Ст3Гр03 = ПоказательПоСтроке("Т1_Ст3Гр03");
	Т1_Ст9 = ПоказательПоСтроке("Т1_Ст9");
	Т11_Гр06 = ПоказательПоСтроке("Т11_Гр06");
	
	Таблица1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1;
	Таблица1_1 = мДанныеОтчета.ПолеТабличногоДокументаТаблица1_1;
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст20Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст3Гр03);
	ВставитьЗначениеПоказателя(Таблица1, Т1_Ст9);                                          	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр));
	
	КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(ЭтаФорма, "П000110000110_");
	СуммаГр06 = 0; СуммаГр06Стр = "";
	Для Инд = 1 По КолвоСтрокВМногострочнойЧасти Цикл
		ВставитьЗначениеМногострочногоПоказателя(Таблица1_1, Т11_Гр06, Инд);
		ВнестиПоказательВРасшифровку(Т11_Гр06, "Таблица1_1");
		СуммаГр06 = СуммаГр06 + Т11_Гр06.Значение;
		СуммаГр06Стр = СуммаГр06Стр + Т11_Гр06.ЗначениеСтр + " + "; 
	КонецЦикла;
	
	ВнестиПоказательВРасшифровку(Т2_Ст20Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т1_Ст3Гр03, "Таблица1");
	ВнестиПоказательВРасшифровку(Т1_Ст9, "Таблица1");
	
	УсловиеВыполнено = РазделЗаполнен(ЭтаФорма, "Таблица1_1") И (Льгота60Процентов = 1);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т2_Ст20Гр03.Значение, (0.6 * (Т1_Ст3Гр03.Значение - СуммаГр06)) * Т1_Ст9.Значение / 100 + СуммаГр06);
		Расшифровка = КС.ЛеваяЧастьСтр + " = ( 0,6 * (" + Т1_Ст3Гр03.ЗначениеСтр + " - (" + РасшифровкаВСтр(СуммаГр06Стр) + "))) * " + Т1_Ст9.ЗначениеСтр + " / 100 + ("
			+ РасшифровкаВСтр(СуммаГр06Стр) + ") Итог [" + КС.ПраваяЧастьСтр + "] +- 1";
		
	Иначе
		КС = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст80Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 6)'");
	ОписаниеКС      = НСтр("ru='Значение строки 8 графы 3 равно сумме строк 1-7 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст10Гр03 = ПоказательПоСтроке("Т2_Ст10Гр03");
	Т2_Ст20Гр03 = ПоказательПоСтроке("Т2_Ст20Гр03");
	Т2_Ст30Гр03 = ПоказательПоСтроке("Т2_Ст30Гр03");
	Т2_Ст40Гр03 = ПоказательПоСтроке("Т2_Ст40Гр03");
	Т2_Ст50Гр03 = ПоказательПоСтроке("Т2_Ст50Гр03");
	Т2_Ст60Гр03 = ПоказательПоСтроке("Т2_Ст60Гр03");
	Т2_Ст70Гр03 = ПоказательПоСтроке("Т2_Ст70Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст10Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст20Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст30Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст40Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст50Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст60Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст70Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст10Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст20Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст30Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст40Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст50Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст60Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст70Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст80Гр03.Значение, Т2_Ст10Гр03.Значение + Т2_Ст20Гр03.Значение + Т2_Ст30Гр03.Значение + Т2_Ст40Гр03.Значение
		+ Т2_Ст50Гр03.Значение + Т2_Ст60Гр03.Значение + Т2_Ст70Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст10Гр03.ЗначениеСтр + " + " + Т2_Ст20Гр03.ЗначениеСтр + " + " + Т2_Ст30Гр03.ЗначениеСтр
		+ " + " + Т2_Ст40Гр03.ЗначениеСтр + " + " + Т2_Ст50Гр03.ЗначениеСтр + " + " + Т2_Ст60Гр03.ЗначениеСтр + " + "
		+ Т2_Ст70Гр03.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст90Гр03_7а(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 7а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 9 графы 3 равно строка 18 графа 3 - строка 8 графа 3, если значение строки 18 графы 3 больше значения строки 8 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст90Гр03 = ПоказательПоСтроке("Т2_Ст90Гр03");
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст90Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст90Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	
	УсловиеВыполнено = Т2_Ст180Гр03.Значение > Т2_Ст80Гр03.Значение;
	РасшифровкаУсловия = Т2_Ст180Гр03.ЗначениеСтр + " > " + Т2_Ст80Гр03.ЗначениеСтр;
	ЗначениеПравойЧасти = Т2_Ст180Гр03.Значение - Т2_Ст80Гр03.Значение;
	
	КС = ПоказателиКС(Т2_Ст90Гр03.Значение, ЗначениеПравойЧасти);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + РасшифровкаУсловия;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст90Гр03_7б(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 7б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 9 графы 3 равно 0, если значение строки 18 графы 3 меньше или равно значения строки 8 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст90Гр03 = ПоказательПоСтроке("Т2_Ст90Гр03");
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст90Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст90Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	УсловиеВыполнено = Т2_Ст180Гр03.Значение <= Т2_Ст80Гр03.Значение;
	РасшифровкаУсловия = Т2_Ст180Гр03.ЗначениеСтр + " <= " + Т2_Ст80Гр03.ЗначениеСтр;
	
	КС = ПоказателиКС(Т2_Ст90Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + РасшифровкаУсловия;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст90Гр03_8(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 8)'");
	ОписаниеКС      = НСтр("ru='Значение строки 9 графы 3 равно сумме строк 10 и 11 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст90Гр03 = ПоказательПоСтроке("Т2_Ст90Гр03");
	Т2_Ст100Гр03 = ПоказательПоСтроке("Т2_Ст100Гр03");
	Т2_Ст110Гр03 = ПоказательПоСтроке("Т2_Ст110Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст90Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст100Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст110Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст90Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст100Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст110Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст90Гр03.Значение, Т2_Ст100Гр03.Значение + Т2_Ст110Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст100Гр03.ЗначениеСтр + " + " + Т2_Ст110Гр03.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст100Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 9)'");
	ОписаниеКС      = НСтр("ru='Значение строки 10 графы 3 равно 0, если значения строк 13 и 15 по графе 3 равны 0'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст100Гр03 = ПоказательПоСтроке("Т2_Ст100Гр03");
	Т2_Ст130Гр03 = ПоказательПоСтроке("Т2_Ст130Гр03");
	Т2_Ст150Гр03 = ПоказательПоСтроке("Т2_Ст150Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст100Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст130Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст150Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст100Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст130Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст150Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст100Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + Т2_Ст130Гр03.ЗначениеСтр + " = 0 и "
		+ Т2_Ст150Гр03.ЗначениеСтр + " = 0";
	
	УсловиеВыполнено = Т2_Ст130Гр03.Значение = 0 И Т2_Ст150Гр03.Значение = 0;
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст110Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 10)'");
	ОписаниеКС      = НСтр("ru='Значение строки 11 графы 3 равно 0, если значения строк 14 и 16 по графе 3 равны 0'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст110Гр03 = ПоказательПоСтроке("Т2_Ст110Гр03");
	Т2_Ст140Гр03 = ПоказательПоСтроке("Т2_Ст140Гр03");
	Т2_Ст160Гр03 = ПоказательПоСтроке("Т2_Ст160Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст110Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст140Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст160Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст110Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст140Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст160Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст110Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + Т2_Ст140Гр03.ЗначениеСтр + " = 0 и "
		+ Т2_Ст160Гр03.ЗначениеСтр + " = 0";
	
	УсловиеВыполнено = Т2_Ст140Гр03.Значение = 0 И Т2_Ст160Гр03.Значение = 0;
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст120Гр03_11а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 11а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 12 графы 3 равно значению строки 9 графы 3 за предыдущий расчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	ТекущийГод = Год(ОкончаниеПериодаОтчета);
	
	Если ТекущийГод > 2017 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
			Ст90Гр03ПНП = ПоказательПоСтроке("Т2_Ст90Гр03");
			ТаблицаПНПСтр = "Таблица2";
		Иначе
			Возврат;
		КонецЕсли;
	ИначеЕсли ТекущийГод = 2017 Тогда //Если 1 квартал 2017 года
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, -112, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаРаздел2_7;
			Ст90Гр03ПНП = ПоказательПоСтроке("Т7_Ст90Гр03ПНП");
			ТаблицаПНПСтр = "Раздел2_7";
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

	Т2_Ст120Гр03 = ПоказательПоСтроке("Т2_Ст120Гр03");

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст120Гр03_11б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 11б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 12 графы 3 равно значению строки 12 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст120Гр03_12(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 12)'");
	ОписаниеКС      = НСтр("ru='Значение строки 12 графы 3 равно сумме строк 13 и 14 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст120Гр03 = ПоказательПоСтроке("Т2_Ст120Гр03");
	Т2_Ст130Гр03 = ПоказательПоСтроке("Т2_Ст130Гр03");
	Т2_Ст140Гр03 = ПоказательПоСтроке("Т2_Ст140Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст120Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст130Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст140Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст120Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст130Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст140Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст120Гр03.Значение, Т2_Ст130Гр03.Значение + Т2_Ст140Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст130Гр03.ЗначениеСтр + " + " + Т2_Ст140Гр03.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст130Гр03_13а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 13а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 13 графы 3 равно значению строки 10 ""за счет превышения расходов"" графы 3 за предыдущий расчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	ТекущийГод = Год(ОкончаниеПериодаОтчета);
	
	Если ТекущийГод > 2017 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
			Ст100Гр03ПНП = ПоказательПоСтроке("Т2_Ст100Гр03");
			ТаблицаПНПСтр = "Таблица2";
		Иначе
			Возврат;
		КонецЕсли;
	ИначеЕсли ТекущийГод = 2017 Тогда //Если 1 квартал 2017 года
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, -112, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаРаздел2_7;
			Ст100Гр03ПНП = ПоказательПоСтроке("Т7_Ст100Гр03ПНП");
			ТаблицаПНПСтр = "Раздел2_7";
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

	Т2_Ст130Гр03 = ПоказательПоСтроке("Т2_Ст130Гр03");

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст130Гр03_13б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 13б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 13 графы 3 равно значению строки 13 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст140Гр03_14а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 14а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 14 графы 3 равно значению строки 11 ""за счет переплаты взносов"" графы 3 за предыдущий расчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	ТекущийГод = Год(ОкончаниеПериодаОтчета);
	
	Если ТекущийГод > 2017 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
			Ст110Гр03ПНП = ПоказательПоСтроке("Т2_Ст110Гр03");
			ТаблицаПНПСтр = "Таблица2";
		Иначе
			Возврат;
		КонецЕсли;
	ИначеЕсли ТекущийГод = 2017 Тогда //Если 1 квартал 2017 года
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, -112, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			ТаблицаПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаРаздел2_7;
			Ст110Гр03ПНП = ПоказательПоСтроке("Т7_Ст110Гр03ПНП");
			ТаблицаПНПСтр = "Раздел2_7";
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

	Т2_Ст140Гр03 = ПоказательПоСтроке("Т2_Ст140Гр03");

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст140Гр03_14б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 14б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 14 графы 3 равно значению строки 14 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст150Гр01_15б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 15б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 15 графы 1, показатель ""на начало отчетного периода"" равно значению строки 15 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст150Гр03_16(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 16)'");
	ОписаниеКС      = НСтр("ru='Значение строки 15 графы 3 равно сумме строки 15 графы 1, показатель ""на начало отчетного периода"" + показатель ""за последние три месяца отчетного периода""'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст150Гр03 = ПоказательПоСтроке("Т2_Ст150Гр03");
	Т2_Ст150Гр01 = ПоказательПоСтроке("Т2_Ст150Гр01");
	Т2_Ст154Гр01 = ПоказательПоСтроке("Т2_Ст154Гр01");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст150Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст150Гр01);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст154Гр01);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст150Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст150Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст154Гр01, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст150Гр03.Значение, Т2_Ст150Гр01.Значение + Т2_Ст154Гр01.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст150Гр01.ЗначениеСтр + " + " + Т2_Ст154Гр01.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр
		+ "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст150Гр3_17(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 17)'");
	ОписаниеКС      = НСтр("ru='Значение строки 15 графы 3 равно значению таблицы 3 строки 10 графы 4'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст150Гр03 = ПоказательПоСтроке("Т2_Ст150Гр03");
	Т3_Ст10Гр04 = ПоказательПоСтроке("Т3_Ст10Гр04");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	Таблица3_4 = мДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст150Гр03);
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст10Гр04);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст150Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т3_Ст10Гр04, "Таблица3_4");
	
	КС = ПоказателиКС(Т2_Ст150Гр03.Значение, Т3_Ст10Гр04.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст160Гр01_18а(СтруктураРезультата)
	
	// Актуально только за 1-й квартал
	Если НЕ РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 18а)'");
	ОписаниеКС      = НСтр("ru='Значение строки 16 графы 1, показатель ""на начало отчетного периода"" равно 0, если расчет за 1-й квартал'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст160Гр01 = ПоказательПоСтроке("Т2_Ст160Гр01");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст160Гр01);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст160Гр01, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст160Гр01.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст160Гр01_18б(СтруктураРезультата)
	
	// Актуально за период 2-й, 3-й, 4-й квартал
	Если РасчетЗаКвартал(1) Тогда
		Возврат;
		
	КонецЕсли;
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 18б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 16 графы 1, показатель ""на начало отчетного периода"" равно значению строки 16 графы 3 за предыдущий отчетный период'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	ТекущийКвартал = НомерКвартала();
	Если ТекущийКвартал <> 0 И ТекущийКвартал > 1 Тогда
		ДокументПНП = РегламентированнаяОтчетность.ПолучитьДокументПНП(СтруктураРеквизитовФормы.мСохраненныйДок, ТекущийКвартал - 1, Истина);
		Если ДокументПНП <> Неопределено Тогда 
			СведенияДокументПНП = ДокументПНП.ДанныеОтчета.Получить();
			Таблица2ПНП = СведенияДокументПНП.ПоказателиОтчета.ПолеТабличногоДокументаТаблица2;
		Иначе
			Возврат;
		КонецЕсли;
	Иначе
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьКС_Т2_Ст160Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 19)'");
	ОписаниеКС      = НСтр("ru='Значение строки 16 графы 3 равно сумме строки 16 графы 1, показатель ""на начало отчетного периода"" + показатель ""за последние три месяца отчетного периода""'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст160Гр03 = ПоказательПоСтроке("Т2_Ст160Гр03");
	Т2_Ст160Гр01 = ПоказательПоСтроке("Т2_Ст160Гр01");
	Т2_Ст164Гр01 = ПоказательПоСтроке("Т2_Ст164Гр01");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст160Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст160Гр01);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст164Гр01);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст160Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст160Гр01, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст164Гр01, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст160Гр03.Значение, Т2_Ст160Гр01.Значение + Т2_Ст164Гр01.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст160Гр01.ЗначениеСтр + " + " + Т2_Ст164Гр01.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст180Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 20)'");
	ОписаниеКС      = НСтр("ru='Значение строки 18 графы 3 равно сумме строк 12, 15, 16, 17 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Т2_Ст120Гр03 = ПоказательПоСтроке("Т2_Ст120Гр03");
	Т2_Ст150Гр03 = ПоказательПоСтроке("Т2_Ст150Гр03");
	Т2_Ст160Гр03 = ПоказательПоСтроке("Т2_Ст160Гр03");
	Т2_Ст170Гр03 = ПоказательПоСтроке("Т2_Ст170Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст120Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст150Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст160Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст170Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст120Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст150Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст160Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст170Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст180Гр03.Значение, Т2_Ст120Гр03.Значение + Т2_Ст150Гр03.Значение + Т2_Ст160Гр03.Значение + Т2_Ст170Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + Т2_Ст120Гр03.ЗначениеСтр + " + " + Т2_Ст150Гр03.ЗначениеСтр + " + " + Т2_Ст160Гр03.ЗначениеСтр
		+ " + " + Т2_Ст170Гр03.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст19Гр3_21а(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 21а)'");
	ОписаниеКС = НСтр("ru='Значение строки 19 графы 3 равно строка 8 графа 3 - строка 18 графа 3,
								|если значение строки 8 графы 3 больше значения строки 18 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст190Гр03 = ПоказательПоСтроке("Т2_Ст190Гр03");
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст190Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст190Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	
	УсловиеВыполнено = Т2_Ст80Гр03.Значение > Т2_Ст180Гр03.Значение;
	ЗначениеПравойЧасти = Т2_Ст80Гр03.Значение - Т2_Ст180Гр03.Значение;
	РасшифровкаУсловия = Т2_Ст80Гр03.ЗначениеСтр + " > " + Т2_Ст180Гр03.ЗначениеСтр;
	
	КС = ПоказателиКС(Т2_Ст190Гр03.Значение, ЗначениеПравойЧасти);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + РасшифровкаУсловия;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст19Гр3_21б(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 21б)'");
	ОписаниеКС      = НСтр("ru='Значение строки 19 графы 3 равно 0, если значение строки 8 графы 3 меньше или равно значения строки 18 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст190Гр03 = ПоказательПоСтроке("Т2_Ст190Гр03");
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст190Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст190Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	
	УсловиеВыполнено = Т2_Ст80Гр03.Значение <= Т2_Ст180Гр03.Значение;
	РасшифровкаУсловия = Т2_Ст80Гр03.ЗначениеСтр + " <= " + Т2_Ст180Гр03.ЗначениеСтр;
	
	КС = ПоказателиКС(Т2_Ст190Гр03.Значение, 0);
	Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", когда " + РасшифровкаУсловия;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст200Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 22)'");
	ОписаниеКС      = НСтр("ru='Значение строки 20 графы 3 меньше или равно значения строки 19 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст200Гр03 = ПоказательПоСтроке("Т2_Ст200Гр03");
	Т2_Ст190Гр03 = ПоказательПоСтроке("Т2_Ст190Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст200Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст190Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст200Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст190Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст200Гр03.Значение, Т2_Ст190Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " <= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть <= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т2_Ст8_9Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 2 (КС 23)'");
	ОписаниеКС      = НСтр("ru='Сумма строк 8 и 9 графы 3 равно сумме строк 18 и 19 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т2_Ст80Гр03 = ПоказательПоСтроке("Т2_Ст80Гр03");
	Т2_Ст90Гр03 = ПоказательПоСтроке("Т2_Ст90Гр03");
	Т2_Ст180Гр03 = ПоказательПоСтроке("Т2_Ст180Гр03");
	Т2_Ст190Гр03 = ПоказательПоСтроке("Т2_Ст190Гр03");
	Таблица2 = мДанныеОтчета.ПолеТабличногоДокументаТаблица2;
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст80Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст90Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст180Гр03);
	ВставитьЗначениеПоказателя(Таблица2, Т2_Ст190Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т2_Ст80Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст90Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст180Гр03, "Таблица2");
	ВнестиПоказательВРасшифровку(Т2_Ст190Гр03, "Таблица2");
	
	КС = ПоказателиКС(Т2_Ст80Гр03.Значение + Т2_Ст90Гр03.Значение, Т2_Ст180Гр03.Значение + Т2_Ст190Гр03.Значение);
	Расшифровка = Т2_Ст80Гр03.ЗначениеСтр + " + " + Т2_Ст90Гр03.ЗначениеСтр + " Итог [" + КС.ЛеваяЧастьСтр + "] = "
		+ Т2_Ст180Гр03.ЗначениеСтр + " + " + Т2_Ст190Гр03.ЗначениеСтр + " Итог [" + КС.ПраваяЧастьСтр + "]";
	
	Если КС.ЛеваяЧасть = КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура ПроверитьКС_Т3_Ст7Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 3 (КС 5)'");
	ОписаниеКС      = НСтр("ru='Значение строки 7 графы 3 больше или равно значения строки 8 графы 3'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т3_Ст7Гр03 = ПоказательПоСтроке("Т3_Ст7Гр03");
	Т3_Ст8Гр03 = ПоказательПоСтроке("Т3_Ст8Гр03");
	Таблица3_4 = мДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст7Гр03);
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст8Гр03);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т3_Ст7Гр03, "Таблица3_4");
	ВнестиПоказательВРасшифровку(Т3_Ст8Гр03, "Таблица3_4");
	
	КС = ПоказателиКС(Т3_Ст7Гр03.Значение, Т3_Ст8Гр03.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т3_Ст7Гр04(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 3 (КС 6)'");
	ОписаниеКС      = НСтр("ru='Значение строки 7 графы 4 больше или равно значения строки 8 графы 4'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т3_Ст7Гр04 = ПоказательПоСтроке("Т3_Ст7Гр04");
	Т3_Ст8Гр04 = ПоказательПоСтроке("Т3_Ст8Гр04");
	Таблица3_4 = мДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст7Гр04);
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст8Гр04);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т3_Ст7Гр04, "Таблица3_4");
	ВнестиПоказательВРасшифровку(Т3_Ст8Гр04, "Таблица3_4");
	
	КС = ПоказателиКС(Т3_Ст7Гр04.Значение, Т3_Ст8Гр04.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_Т3_Ст11Гр04(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 3 (КС 8)'");
	ОписаниеКС      = НСтр("ru='Значение строки 11 графы 4 меньше или равно значения строки 10 графы 4'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т3_Ст11Гр04 = ПоказательПоСтроке("Т3_Ст11Гр04");
	Т3_Ст10Гр04 = ПоказательПоСтроке("Т3_Ст10Гр04");
	Таблица3_4 = мДанныеОтчета.ПолеТабличногоДокументаТаблица3_4;
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст11Гр04);
	ВставитьЗначениеПоказателя(Таблица3_4, Т3_Ст10Гр04);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т3_Ст11Гр04, "Таблица3_4");
	ВнестиПоказательВРасшифровку(Т3_Ст10Гр04, "Таблица3_4");
	
	КС = ПоказателиКС(Т3_Ст11Гр04.Значение, Т3_Ст10Гр04.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " <= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть <= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ПроверитьКС_Т5_Ст1Гр03(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 5 (КС 1)'");
	ОписаниеКС      = НСтр("ru='Значение строки 1 графы 3 больше или равно значения строки 1 графы 4'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т5_Ст1Гр03 = ПоказательПоСтроке("Т5_Ст1Гр03");
	Т5_Ст1Гр04 = ПоказательПоСтроке("Т5_Ст1Гр04");
	Таблица5 = мДанныеОтчета.ПолеТабличногоДокументаТаблица5;
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст1Гр03);
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст1Гр04);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т5_Ст1Гр03, "Таблица5");
	ВнестиПоказательВРасшифровку(Т5_Ст1Гр04, "Таблица5");
	
	КС = ПоказателиКС(Т5_Ст1Гр03.Значение, Т5_Ст1Гр04.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

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

&НаСервере
Процедура ПроверитьКС_Т5_Ст2Гр07_3(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 5 (КС 3)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 7 больше или равно значения строки 2 графы 8'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т5_Ст2Гр07 = ПоказательПоСтроке("Т5_Ст2Гр07");
	Т5_Ст2Гр08 = ПоказательПоСтроке("Т5_Ст2Гр08");
	Таблица5 = мДанныеОтчета.ПолеТабличногоДокументаТаблица5;
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст2Гр07);
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст2Гр08);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т5_Ст2Гр07, "Таблица5");
	ВнестиПоказательВРасшифровку(Т5_Ст2Гр08, "Таблица5");
	
	КС = ПоказателиКС(Т5_Ст2Гр07.Значение, Т5_Ст2Гр08.Значение);
	Расшифровка = КС.ЛеваяЧастьСтр + " >= " + КС.ПраваяЧастьСтр;
	
	Если КС.ЛеваяЧасть >= КС.ПраваяЧасть Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка,
		ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т5_Ст2Гр07_4(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "показатель ""Численность работников, занятых на работах с вредными и (или) опасными производственными факторами"" равен 0";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 5 (КС 4)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 7 равно 0, если %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т5_Ст2Гр07 = ПоказательПоСтроке("Т5_Ст2Гр07");
	ЧислВред = ПоказательПоСтроке("ЧислВред");
	Таблица5 = мДанныеОтчета.ПолеТабличногоДокументаТаблица5;
	Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст2Гр07);
	ВставитьЗначениеПоказателя(Титульный, ЧислВред);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т5_Ст2Гр07, "Таблица5");
	ВнестиПоказательВРасшифровку(ЧислВред, "Титульный");
	
	УсловиеВыполнено = (ЧислВред.Значение = 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т5_Ст2Гр07.Значение, 0);
		Расшифровка = КС.ЛеваяЧастьСтр + " = " + КС.ПраваяЧастьСтр + ", если " + ЧислВред.ЗначениеСтр + " = 0";
		
	Иначе
		Кс = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть = КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_Т5_Ст2Гр07_5(СтруктураРезультата)
	
	ОбщееЧислоОшибок    = СтруктураРезультата.КоличествоНайденныхОшибок;
	ОбщееЧислоБезОшибок = СтруктураРезультата.КоличествоНайденныхБезОшибок;
	СтруктураОшибок     = СтруктураРезультата.СтруктураОшибок;
	
	УсловиеКССтр = "показатель ""Численность работников, занятых на работах с вредными и (или) опасными производственными факторами"" больше 0";
	
	ТекстФормулы    = НСтр("ru='Проверка таблицы 5 (КС 5)'");
	ОписаниеКС      = НСтр("ru='Значение строки 2 графы 7 больше 0, если %1'");
	
	ОписаниеОшибки  = НСтр("ru=''");
	
	Т5_Ст2Гр07 = ПоказательПоСтроке("Т5_Ст2Гр07");
	ЧислВред = ПоказательПоСтроке("ЧислВред");
	Таблица5 = мДанныеОтчета.ПолеТабличногоДокументаТаблица5;
	Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
	ВставитьЗначениеПоказателя(Таблица5, Т5_Ст2Гр07);
	ВставитьЗначениеПоказателя(Титульный, ЧислВред);
	
	СчетчикФормулДляРасшифровок = СчетчикФормулДляРасшифровок + 1;
	ЗарегистрироватьФормулуДляРасшифровки(ОписаниеКС);
	
	ВнестиПоказательВРасшифровку(Т5_Ст2Гр07, "Таблица5");
	ВнестиПоказательВРасшифровку(ЧислВред, "Титульный");
	
	УсловиеВыполнено = (ЧислВред.Значение > 0);
	Если УсловиеВыполнено Тогда
		КС = ПоказателиКС(Т5_Ст2Гр07.Значение, 0);
		Расшифровка = КС.ЛеваяЧастьСтр + " > " + КС.ПраваяЧастьСтр + ", если " + ЧислВред.ЗначениеСтр + " > 0";
		
	Иначе
		Кс = "";
		Расшифровка = "Условие не выполнено: " + УсловиеКССтр;
		
	КонецЕсли;
	
	Если НЕ УсловиеВыполнено ИЛИ (УсловиеВыполнено И КС.ЛеваяЧасть > КС.ПраваяЧасть) Тогда
		ЭтоОшибка = Ложь;
		ОбщееЧислоБезОшибок = ОбщееЧислоБезОшибок + 1;
		
	Иначе
		ЭтоОшибка = Истина;
		ОбщееЧислоОшибок = ОбщееЧислоОшибок + 1;
		
	КонецЕсли;
	
	ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеКС, УсловиеКССтр),
		ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка, ЭтоОшибка, ОписаниеОшибки, , );
	
	СтруктураРезультата.Вставить("КоличествоНайденныхОшибок", ОбщееЧислоОшибок);
	СтруктураРезультата.Вставить("КоличествоНайденныхБезОшибок", ОбщееЧислоБезОшибок);
	СтруктураРезультата.Вставить("СтруктураОшибок", СтруктураОшибок);
	
КонецПроцедуры

&НаСервере
Функция ПоказательПоСтроке(УсловныйКодПоказателя)
	
	Результат = Новый Структура;
	Результат.Вставить("Имя");
	Результат.Вставить("Представление");
	
	Если УсловныйКодПоказателя = "ЧислИнвалидов" Тогда
		Результат.Вставить("Имя", "ЧислИнвалидов");
		Результат.Вставить("Представление", Нстр("ru='Численность работающих инвалидов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "ЧислВред" Тогда
		Результат.Вставить("Имя", "ЧислВред");
		Результат.Вставить("Представление", Нстр("ru='Численность работников работающих, занятых на работах с вредными и (или) опасными производственными факторами'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст1Гр03" Тогда
		Результат.Вставить("Имя", "П000010000103");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат и иных вознаграждений. Всего с начала расчетного периода'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст1Гр04" Тогда
		Результат.Вставить("Имя", "П000010000104");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат и иных вознаграждений. 1 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст1Гр05" Тогда
		Результат.Вставить("Имя", "П000010000105");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат и иных вознаграждений. 2 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст1Гр06" Тогда
		Результат.Вставить("Имя", "П000010000106");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат и иных вознаграждений. 3 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр03" Тогда
		Результат.Вставить("Имя", "П000010000203");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. Всего с начала расчетного периода'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр04" Тогда
		Результат.Вставить("Имя", "П000010000204");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 1 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр05" Тогда
		Результат.Вставить("Имя", "П000010000205");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 2 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр06" Тогда
		Результат.Вставить("Имя", "П000010000206");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 3 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр03" Тогда
		Результат.Вставить("Имя", "П000010000303");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. Всего с начала расчетного периода'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр04" Тогда
		Результат.Вставить("Имя", "П000010000304");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 1 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр05" Тогда
		Результат.Вставить("Имя", "П000010000305");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 2 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр06" Тогда
		Результат.Вставить("Имя", "П000010000306");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 3 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст4Гр03" Тогда
		Результат.Вставить("Имя", "П000010000403");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат в пользу работающих инвалидов. Всего с начала расчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст4Гр04" Тогда
		Результат.Вставить("Имя", "П000010000404");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат в пользу работающих инвалидов. 1 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст4Гр05" Тогда
		Результат.Вставить("Имя", "П000010000405");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат в пользу работающих инвалидов. 2 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст4Гр06" Тогда
		Результат.Вставить("Имя", "П000010000406");
		Результат.Вставить("Представление", Нстр("ru='Сумма выплат в пользу работающих инвалидов. 3 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст5" Тогда
		Результат.Вставить("Имя", "П000010000503");
		Результат.Вставить("Представление", Нстр("ru='Размер страхового тарифа в соответствии с классом профессионального риска (%)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст6" Тогда
		Результат.Вставить("Имя", "П000010000603");
		Результат.Вставить("Представление", Нстр("ru='Скидка к страховому тарифу (%)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст7" Тогда
		Результат.Вставить("Имя", "П000010000703");
		Результат.Вставить("Представление", Нстр("ru='Надбавка к страховому тарифу (%)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст9" Тогда
		Результат.Вставить("Имя", "П000010000903");
		Результат.Вставить("Представление", Нстр("ru='Размер страхового тарифа с учетом скидки (надбавки) (%)'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр03" Тогда
		Результат.Вставить("Имя", "П000010000203");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. Всего с начала расчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр04" Тогда
		Результат.Вставить("Имя", "П000010000204");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 1 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр05" Тогда
		Результат.Вставить("Имя", "П000010000205");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 2 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст2Гр06" Тогда
		Результат.Вставить("Имя", "П000010000206");
		Результат.Вставить("Представление", Нстр("ru='Суммы, не подлежащие обложению страховыми взносами. 3 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр03" Тогда
		Результат.Вставить("Имя", "П000010000303");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. Всего с начала расчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр04" Тогда
		Результат.Вставить("Имя", "П000010000304");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 1 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр05" Тогда
		Результат.Вставить("Имя", "П000010000305");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 2 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т1_Ст3Гр06" Тогда
		Результат.Вставить("Имя", "П000010000306");
		Результат.Вставить("Представление", Нстр("ru='Итого база для начисления страховых взносов. 3 месяц'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр06" Тогда
		Результат.Вставить("Имя", "П000110000106_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. Всего с начала расчетного периода'"));
				
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр07" Тогда
		Результат.Вставить("Имя", "П000110000107_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. В т.ч. инвалиды'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр08" Тогда
		Результат.Вставить("Имя", "П000110000108_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 1 месяц. Всего'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр09" Тогда
		Результат.Вставить("Имя", "П000110000109_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 1 месяц. В т.ч. инвалиды'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр10" Тогда
		Результат.Вставить("Имя", "П000110000110_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 2 месяц. Всего'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр11" Тогда
		Результат.Вставить("Имя", "П000110000111_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 2 месяц. В т.ч. инвалиды'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр12" Тогда
		Результат.Вставить("Имя", "П000110000112_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 3 месяц. Всего'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т11_Гр13" Тогда
		Результат.Вставить("Имя", "П000110000113_%1");
		Результат.Вставить("Представление", Нстр("ru='База для начисления страховых взносов. 3 месяц. В т.ч. инвалиды'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст20Гр01" Тогда
		Результат.Вставить("Имя", "П000020002001");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов на начало отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст20Гр03" Тогда
		Результат.Вставить("Имя", "П000020002003");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст24Гр01" Тогда
		Результат.Вставить("Имя", "П000020002401");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов за последние три месяца отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст21Гр01" Тогда
		Результат.Вставить("Имя", "П000020002101");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов. 1 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст22Гр01" Тогда
		Результат.Вставить("Имя", "П000020002201");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов. 2 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст23Гр01" Тогда
		Результат.Вставить("Имя", "П000020002301");
		Результат.Вставить("Представление", Нстр("ru='Начислено к уплате страховых взносов. 3 месяц'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст80Гр03" Тогда
		Результат.Вставить("Имя", "П000020008003");
		Результат.Вставить("Представление", Нстр("ru='Всего (сумма строк 1+2+3+4+5+6+7)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст10Гр03" Тогда
		Результат.Вставить("Имя", "П000020001003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за плательщиком страховых взносов (страхователем) на начало расчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст30Гр03" Тогда
		Результат.Вставить("Имя", "П000020003003");
		Результат.Вставить("Представление", Нстр("ru='Начислено взносов по результатам проверок'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст40Гр03" Тогда
		Результат.Вставить("Имя", "П000020004003");
		Результат.Вставить("Представление", Нстр("ru='Не принято к зачету расходов территориальным органом Фонда за прошлые расчетные периоды'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст50Гр03" Тогда
		Результат.Вставить("Имя", "П000020005003");
		Результат.Вставить("Представление", Нстр("ru='Начислено взносов  страхователем за прошлые расчетные периоды'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст60Гр03" Тогда
		Результат.Вставить("Имя", "П000020006003");
		Результат.Вставить("Представление", Нстр("ru='Получено от территориального органа Фонда на банковский счет'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст70Гр03" Тогда
		Результат.Вставить("Имя", "П000020007003");
		Результат.Вставить("Представление", Нстр("ru='Возврат (зачет) сумм излишне уплаченных (взысканных) страховых взносов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст90Гр03" Тогда
		Результат.Вставить("Имя", "П000020009003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст180Гр03" Тогда
		Результат.Вставить("Имя", "П000020018003");
		Результат.Вставить("Представление", Нстр("ru='Всего (сумма строк 12+15+16+17)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст100Гр03" Тогда
		Результат.Вставить("Имя", "П000020010003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода за счет превышения расходов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст110Гр03" Тогда
		Результат.Вставить("Имя", "П000020011003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода за счет переплаты страховых взносов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст120Гр03" Тогда
		Результат.Вставить("Имя", "П000020012003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на начало расчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст150Гр03" Тогда
		Результат.Вставить("Имя", "П000020015003");
		Результат.Вставить("Представление", Нстр("ru='Расходы по обязательному социальному страхованию'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст140Гр03" Тогда
		Результат.Вставить("Имя", "П000020014003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на начало расчетного периода за счет переплаты страховых взносов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст160Гр03" Тогда
		Результат.Вставить("Имя", "П000020016003");
		Результат.Вставить("Представление", Нстр("ru='Уплачено страховых взносов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст130Гр03" Тогда
		Результат.Вставить("Имя", "П000020013003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на начало расчетного периода за счет превышения расходов'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст150Гр01" Тогда
		Результат.Вставить("Имя", "П000020015001");
		Результат.Вставить("Представление", Нстр("ru='Расходы по обязательному социальному страхованию на начало отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст154Гр01" Тогда
		Результат.Вставить("Имя", "П000020015401");
		Результат.Вставить("Представление", Нстр("ru='Расходы по обязательному социальному страхованию за последние три месяца отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст1Гр04" Тогда
		Результат.Вставить("Имя", "П000030001004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве, всего. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст160Гр01" Тогда
		Результат.Вставить("Имя", "П000020016001");
		Результат.Вставить("Представление", Нстр("ru='Уплачено страховых взносов на начало отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст164Гр01" Тогда
		Результат.Вставить("Имя", "П000020016401");
		Результат.Вставить("Представление", Нстр("ru='Уплачено страховых взносов в последние три месяца отчетного периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст170Гр03" Тогда
		Результат.Вставить("Имя", "П000020017003");
		Результат.Вставить("Представление", Нстр("ru='Списанная сумма задолженности страхователя'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст190Гр03" Тогда
		Результат.Вставить("Имя", "П000020019003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за плательщиком страховых взносов (страхователем) на конец отчетного (расчетного) периода'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т2_Ст200Гр03" Тогда
		Результат.Вставить("Имя", "П000020020003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за плательщиком страховых взносов (страхователем) на конец отчетного (расчетного) периода. Недоимка'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст1Гр03" Тогда
		Результат.Вставить("Имя", "П000030001003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве, всего. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст2Гр03" Тогда
		Результат.Вставить("Имя", "П000030002003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве по внешнему совместительству'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст3Гр03" Тогда
		Результат.Вставить("Имя", "П000030003003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве пострадавшим в другой организации'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст2Гр04" Тогда
		Результат.Вставить("Имя", "П000030002004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве по внешнему совместительству'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст3Гр04" Тогда
		Результат.Вставить("Имя", "П000030003004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с несчастными случаями на производстве пострадавшим в другой организации. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст4Гр03" Тогда
		Результат.Вставить("Имя", "П000030004003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, всего. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст5Гр03" Тогда
		Результат.Вставить("Имя", "П000030005003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, по внешнему совместительству. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст6Гр03" Тогда
		Результат.Вставить("Имя", "П000030006003");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, пострадавшим в другой организации. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст4Гр04" Тогда
		Результат.Вставить("Имя", "П000030004004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, всего. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст5Гр04" Тогда
		Результат.Вставить("Имя", "П000030005004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, по внешнему совместительству. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст6Гр04" Тогда
		Результат.Вставить("Имя", "П000030006004");
		Результат.Вставить("Представление", Нстр("ru='Пособия по временной нетрудоспособности в связи с профессиональными заболеваниями, пострадавшим в другой организации. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст7Гр03" Тогда
		Результат.Вставить("Имя", "П000030007003");
		Результат.Вставить("Представление", Нстр("ru='Оплата отпуска для санаторно-курортного лечения. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст8Гр03" Тогда
		Результат.Вставить("Имя", "П000030008003");
		Результат.Вставить("Представление", Нстр("ru='Оплата отпуска для санаторно-курортного лечения застрахованным, пострадавшим в другой организации. Количество дней'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст7Гр04" Тогда
		Результат.Вставить("Имя", "П000030007004");
		Результат.Вставить("Представление", Нстр("ru='Оплата отпуска для санаторно-курортного лечения. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст8Гр04" Тогда
		Результат.Вставить("Имя", "П000030008004");
		Результат.Вставить("Представление", Нстр("ru='Оплата отпуска для санаторно-курортного лечения застрахованным, пострадавшим в другой организации. Сумма'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст9Гр04" Тогда
		Результат.Вставить("Имя", "П000030009004");
		Результат.Вставить("Представление", Нстр("ru='Финансирование предупредительных мер по сокращению производственного травматизма и профзаболеваний'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст10Гр04" Тогда
		Результат.Вставить("Имя", "П000030010004");
		Результат.Вставить("Представление", Нстр("ru='Всего расходов (сумма строк 1, 4, 7, 9)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т3_Ст11Гр04" Тогда
		Результат.Вставить("Имя", "П000030011004");
		Результат.Вставить("Представление", Нстр("ru='Начисленные и невыплаченные пособия'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т4_Ст1Гр03" Тогда
		Результат.Вставить("Имя", "П000040001003");
		Результат.Вставить("Представление", Нстр("ru='Численность пострадавших человек по несчастным случаям, всего'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т4_Ст2Гр03" Тогда
		Результат.Вставить("Имя", "П000040002003");
		Результат.Вставить("Представление", Нстр("ru='Численность пострадавших человек по несчастным случаям, со смертельным исходом'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т4_Ст3Гр03" Тогда
		Результат.Вставить("Имя", "П000040003003");
		Результат.Вставить("Представление", Нстр("ru='Численность пострадавших человек по профессиональным заболеваниям'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т4_Ст4Гр03" Тогда
		Результат.Вставить("Имя", "П000040004003");
		Результат.Вставить("Представление", Нстр("ru='Численность пострадавших человек. Всего пострадавших (сумма строк 1, 3)'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т4_Ст5Гр03" Тогда
		Результат.Вставить("Имя", "П000040005003");
		Результат.Вставить("Представление", Нстр("ru='Численность пострадавших (застрахованных) по случаям, закончившимся только  временной  нетрудоспособностью'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст1Гр03" Тогда
		Результат.Вставить("Имя", "П000050000103");
		Результат.Вставить("Представление", Нстр("ru='Проведение специальной оценки условий труда. Общее количество рабочих мест'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст1Гр04" Тогда
		Результат.Вставить("Имя", "П000050000104");
		Результат.Вставить("Представление", Нстр("ru='Проведение специальной оценки условий труда. Количество рабочих мест, в отношении условий труда на которых проведена специальная оценка условий труда на начало года'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст1Гр05" Тогда
		Результат.Вставить("Имя", "П000050000105");
		Результат.Вставить("Представление", Нстр("ru='Проведение специальной оценки условий труда. Количество рабочих мест, в отношении условий труда на которых проведена специальная оценка условий труда на начало года. 3 класс'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст1Гр06" Тогда
		Результат.Вставить("Имя", "П000050000106");
		Результат.Вставить("Представление", Нстр("ru='Проведение специальной оценки условий труда. Количество рабочих мест, в отношении условий труда на которых проведена специальная оценка условий труда на начало года. 4 класс'"));
	
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст2Гр07" Тогда
		Результат.Вставить("Имя", "П000050000207");
		Результат.Вставить("Представление", Нстр("ru='Проведение обязательных предварительных и периодических медицинских осмотров работников. Общее число работников, занятых на работах с вредными и (или) опасными производственными факторами'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т5_Ст2Гр08" Тогда
		Результат.Вставить("Имя", "П000050000208");
		Результат.Вставить("Представление", Нстр("ru='Проведение обязательных предварительных и периодических медицинских осмотров работников. Количество работников, занятых на работах с вредными и (или) опасными производственными факторами'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т7_Ст90Гр03ПНП" Тогда
		Результат.Вставить("Имя", "П000070009003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода (2016 год)'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т7_Ст100Гр03ПНП" Тогда
		Результат.Вставить("Имя", "П000070010003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода за счет превышения расходов (2016 год)'"));
		
	ИначеЕсли УсловныйКодПоказателя = "Т7_Ст110Гр03ПНП" Тогда
		Результат.Вставить("Имя", "П000070011003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за территориальным органом Фонда на конец отчетного (расчетного) периода за счет переплаты страховых взносов (2016 год)'"));

	ИначеЕсли УсловныйКодПоказателя = "Т7_Ст190Гр03ПНП" Тогда
		Результат.Вставить("Имя", "П000070019003");
		Результат.Вставить("Представление", Нстр("ru='Задолженность за плательщиком страховых взносов (страхователем) на конец отчетного (расчетного) периода (2016 год)'"));
				
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

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

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

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

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

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

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

&НаСервере
Функция СтрокаСНомеромСтраницы (ИсходнаяСтрока, НомерСтраницы)
	
	ТекстСтраница = Нстр("ru='страница №'");
	
	Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИсходнаяСтрока, ", " + ТекстСтраница + " " + НомерСтраницы + ")");
	
КонецФункции

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

&НаСервере
Процедура ДобавитьЭлементВСтруктуруОшибок(СтруктураОшибок, ТекстФормулы, ОписаниеКС, ОбщееЧислоОшибок, ОбщееЧислоБезОшибок, Расшифровка,
	ЭтоОшибка, Описание = Неопределено, Нарушение = Неопределено, Коммент = Неопределено)
	
	ТекстовоеПредставлениеФормулы = ?(ПустаяСтрока(ТекстФормулы), "", ТекстФормулы + ". ") + ОписаниеКС;
	СтруктураОшибок.Вставить("Описание" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), Описание));
	СтруктураОшибок.Вставить("Нарушение" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), Нарушение));
	СтруктураОшибок.Вставить("Расшифровка" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), Расшифровка));
	СтруктураОшибок.Вставить("ЭтоОшибка" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), ЭтоОшибка);
	СтруктураОшибок.Вставить("ТекстовоеПредставлениеФормулы" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), ТекстовоеПредставлениеФормулы));
	СтруктураОшибок.Вставить("Комментарий" + Формат(ОбщееЧислоОшибок + ОбщееЧислоБезОшибок, "ЧГ=0"), Коммент);
	
КонецПроцедуры

&НаСервере
Функция КССучетомОтклонения(ЛеваяЧасть, ПраваяЧасть, Отклонение)
	
	Возврат (ЛеваяЧасть >= ПраваяЧасть - Отклонение И ЛеваяЧасть <= ПраваяЧасть + Отклонение);
	
КонецФункции

&НаСервере
Функция РасчетЗаКвартал(НомерКвартала = Неопределено)
	ОкончаниеПериодаОтчета = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
	Возврат НомерКвартала * 3 = Месяц(ОкончаниеПериодаОтчета);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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