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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ПроверитьКонтрольныеСоотношенияВОтчете() Экспорт
	
	Документирование = Ложь;
	
	СтруктураРеквизитовФормы.ТекстДляЗаголовочнойЧасти =
		РегламентированнаяОтчетностьКлиентСервер.ПредставлениеДокументаРеглОтч(СтруктураРеквизитовФормы.мСохраненныйДок);
	
	СписокРасшифровкиПоказателей	= РегламентированнаяОтчетность.СоздатьСписокРасшифровкиПоказателей();
	СписокРасшифровкиформулы		= РегламентированнаяОтчетность.СоздатьСписокРасшифровкиформулы();
	СчетчикФормулДляРасшифровок		= 0;
	
	ДанныеКС = Новый Структура;
	ДанныеКС.Вставить("КолОшибок"	, 0);
	ДанныеКС.Вставить("КолНеОшибок"	, 0);
	ДанныеКС.Вставить("Результат"	, Новый Структура);
	ДанныеКС.Вставить("ДопИнфо"		, Истина);
	ДанныеКС.Вставить("Отчет"		, СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка);
	ДанныеКС.Вставить("ГодОтчета"	, Год(ДанныеКС.Отчет.ДатаОкончания));
	ДанныеКС.Вставить("МесОтчета"	, Месяц(ДанныеКС.Отчет.ДатаОкончания));
	ДанныеКС.Вставить("ДатаОтчета"	, ДанныеКС.Отчет.ДатаОкончания);
	
	СформироватьДанныеОтчета(ДанныеКС.Отчет);
	СформироватьСлужебныеДанные();
	СформироватьДанныеПРП();
	
	// проверки
	
	// проверки Титульного листа
	
	ПроверитьКС_1_01_1();
	ПроверитьКС_1_01_2();
	ПроверитьКС_1_02();
	ПроверитьКС_1_03();
	ПроверитьКС_1_04();
	
	// проверки Таблицы 1
	
	ПроверитьКС_2_01();
	ПроверитьКС_2_02_1();
	ПроверитьКС_2_02_2();
	ПроверитьКС_2_02_3();
	ПроверитьКС_2_03();
	ПроверитьКС_2_04();
	ПроверитьКС_2_05();
	ПроверитьКС_2_06();
	ПроверитьКС_2_07_1();
	ПроверитьКС_2_07_2();
	ПроверитьКС_2_07_3();
	ПроверитьКС_2_08();
	ПроверитьКС_2_09_1();
	ПроверитьКС_2_09_2();
	ПроверитьКС_2_09_3();
	ПроверитьКС_2_10();
	ПроверитьКС_2_11();
	ПроверитьКС_2_12();
	ПроверитьКС_2_13();
	ПроверитьКС_2_14();
	ПроверитьКС_2_15();
	ПроверитьКС_2_16();
	ПроверитьКС_2_17();
	ПроверитьКС_2_18();
	ПроверитьКС_2_19_1();
	ПроверитьКС_2_19_2();
	ПроверитьКС_2_19_3();
	ПроверитьКС_2_20();
	ПроверитьКС_2_21();
	ПроверитьКС_2_22();
	ПроверитьКС_2_23();
	ПроверитьКС_2_24();
	ПроверитьКС_2_25();
	ПроверитьКС_2_26();
	ПроверитьКС_2_27();
	ПроверитьКС_2_28();
	ПроверитьКС_2_29();
	ПроверитьКС_2_30();
	ПроверитьКС_2_31();
	ПроверитьКС_2_32();
	ПроверитьКС_2_33();
	ПроверитьКС_2_34();
	ПроверитьКС_2_35();
	ПроверитьКС_2_36_1();
	ПроверитьКС_2_36_2();
	ПроверитьКС_2_36_3();
	ПроверитьКС_2_37();
	
	// проверки Таблицы 1.1
	
	ПроверитьКС_3_01();
	ПроверитьКС_3_02();
	
	ПроверитьКС_3_04();
	ПроверитьКС_3_05();
	ПроверитьКС_3_06();
	
	ПроверитьКС_3_13();
	ПроверитьКС_3_14();
	ПроверитьКС_3_15();
	ПроверитьКС_3_16();
	ПроверитьКС_3_17();
	
	ПроверитьКС_3_19();
	ПроверитьКС_3_20();
	
	ПроверитьКС_3_22();
	ПроверитьКС_3_23();
	ПроверитьКС_3_24();
	ПроверитьКС_3_25();
	ПроверитьКС_3_26();
	ПроверитьКС_3_27();
	ПроверитьКС_3_28();
	ПроверитьКС_3_29();
	ПроверитьКС_3_30();
	ПроверитьКС_3_31();
	ПроверитьКС_3_32();
	ПроверитьКС_3_33();
	
	ПроверитьКС_3_46();
	ПроверитьКС_3_47();
	
	ПроверитьКС_3_49();
	ПроверитьКС_3_50();
	ПроверитьКС_3_51();
	ПроверитьКС_3_52();
	ПроверитьКС_3_53();
	ПроверитьКС_3_54();
	
	// проверки Таблицы 2
	
	ПроверитьКС_4_01();
	ПроверитьКС_4_02();
	ПроверитьКС_4_03();
	ПроверитьКС_4_04();
	ПроверитьКС_4_05();
	ПроверитьКС_4_06();
	ПроверитьКС_4_07();
	ПроверитьКС_4_08();
	
	ПроверитьКС_4_11();
	
	// проверки Таблицы 3
	
	ПроверитьКС_5_01();
	ПроверитьКС_5_02();
	ПроверитьКС_5_03();
	
	// проверки Таблицы 4
	
	ПроверитьКС_6_01();
	ПроверитьКС_6_02();
	ПроверитьКС_6_03();
	ПроверитьКС_6_04();
	
	РегламентированнаяОтчетность.ПоместитьВКэш(СписокРасшифровкиформулы , УникальныйИдентификатор,
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресФормул);
	РегламентированнаяОтчетность.ПоместитьВКэш(СписокРасшифровкиПоказателей, УникальныйИдентификатор,
		СтруктураРеквизитовФормы.КонтрольныеСоотношенияАдресПоказателей);
	
	Возврат ОбработатьРезультат();
	
КонецФункции

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

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

&НаКлиенте
Функция ВыполнитьДокументирование() Экспорт
	
	Возврат ВыполнитьДокументированиеНаСервере();
	
КонецФункции

&НаСервере
Функция ВыполнитьДокументированиеНаСервере()
	
	Документирование	= Истина;	
	СтруктураРезультата	= Новый Структура;
	СтруктураРезультата.Вставить("НаименованиеОтчета"	, "4-ФСС");
	СтруктураРезультата.Вставить("НаименованиеФормы"	, "2022Кв2");
	
	ТаблицаОписаний		= СформироватьТаблицуОписаний();
	ДанныеКС 			= Новый Структура;
	
	// проверки
	
	// проверки Титульного листа
	
	ПроверитьКС_1_01_1();
	ПроверитьКС_1_01_2();
	ПроверитьКС_1_02();
	ПроверитьКС_1_03();
	ПроверитьКС_1_04();
	
	// проверки Таблицы 1
	
	ПроверитьКС_2_01();
	ПроверитьКС_2_02_1();
	ПроверитьКС_2_02_2();
	ПроверитьКС_2_02_3();
	ПроверитьКС_2_03();
	ПроверитьКС_2_04();
	ПроверитьКС_2_05();
	ПроверитьКС_2_06();
	ПроверитьКС_2_07_1();
	ПроверитьКС_2_07_2();
	ПроверитьКС_2_07_3();
	ПроверитьКС_2_08();
	ПроверитьКС_2_09_1();
	ПроверитьКС_2_09_2();
	ПроверитьКС_2_09_3();
	ПроверитьКС_2_10();
	ПроверитьКС_2_11();
	ПроверитьКС_2_12();
	ПроверитьКС_2_13();
	ПроверитьКС_2_14();
	ПроверитьКС_2_15();
	ПроверитьКС_2_16();
	ПроверитьКС_2_17();
	ПроверитьКС_2_18();
	ПроверитьКС_2_19_1();
	ПроверитьКС_2_19_2();
	ПроверитьКС_2_19_3();
	ПроверитьКС_2_20();
	ПроверитьКС_2_21();
	ПроверитьКС_2_22();
	ПроверитьКС_2_23();
	ПроверитьКС_2_24();
	ПроверитьКС_2_25();
	ПроверитьКС_2_26();
	ПроверитьКС_2_27();
	ПроверитьКС_2_28();
	ПроверитьКС_2_29();
	ПроверитьКС_2_30();
	ПроверитьКС_2_31();
	ПроверитьКС_2_32();
	ПроверитьКС_2_33();
	ПроверитьКС_2_34();
	ПроверитьКС_2_35();
	ПроверитьКС_2_36_1();
	ПроверитьКС_2_36_2();
	ПроверитьКС_2_36_3();
	ПроверитьКС_2_37();
	
	// проверки Таблицы 1.1
	
	ПроверитьКС_3_01();
	ПроверитьКС_3_02();
	
	ПроверитьКС_3_04();
	ПроверитьКС_3_05();
	ПроверитьКС_3_06();
	
	ПроверитьКС_3_13();
	ПроверитьКС_3_14();
	ПроверитьКС_3_15();
	ПроверитьКС_3_16();
	ПроверитьКС_3_17();
	
	ПроверитьКС_3_19();
	ПроверитьКС_3_20();
	
	ПроверитьКС_3_22();
	ПроверитьКС_3_23();
	ПроверитьКС_3_24();
	ПроверитьКС_3_25();
	ПроверитьКС_3_26();
	ПроверитьКС_3_27();
	ПроверитьКС_3_28();
	ПроверитьКС_3_29();
	ПроверитьКС_3_30();
	ПроверитьКС_3_31();
	ПроверитьКС_3_32();
	ПроверитьКС_3_33();
	
	ПроверитьКС_3_46();
	ПроверитьКС_3_47();
	
	ПроверитьКС_3_49();
	ПроверитьКС_3_50();
	ПроверитьКС_3_51();
	ПроверитьКС_3_52();
	ПроверитьКС_3_53();
	ПроверитьКС_3_54();
	
	// проверки Таблицы 2
	
	ПроверитьКС_4_01();
	ПроверитьКС_4_02();
	ПроверитьКС_4_03();
	ПроверитьКС_4_04();
	ПроверитьКС_4_05();
	ПроверитьКС_4_06();
	ПроверитьКС_4_07();
	ПроверитьКС_4_08();
	
	ПроверитьКС_4_11();
	
	// проверки Таблицы 3
	
	ПроверитьКС_5_01();
	ПроверитьКС_5_02();
	ПроверитьКС_5_03();
	
	// проверки Таблицы 4
	
	ПроверитьКС_6_01();
	ПроверитьКС_6_02();
	ПроверитьКС_6_03();
	ПроверитьКС_6_04();
	
	АдресТаблицыОписаний = ПоместитьВоВременноеХранилище(ТаблицаОписаний, Новый УникальныйИдентификатор);
	СтруктураРезультата.Вставить("АдресТаблицыОписаний", АдресТаблицыОписаний);
	
	Возврат СтруктураРезультата;
	
КонецФункции

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

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

#Область КС_Данные

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

&НаСервере
Процедура СформироватьСлужебныеДанные()
	
	ПредставлениеРазделов = Новый Структура();
	
	ПредставлениеРазделов.Вставить("Р00", "Титульного листа");
	ПредставлениеРазделов.Вставить("Р01", "Таблицы 1");
	ПредставлениеРазделов.Вставить("Р11", "Таблицы 1.1");
	ПредставлениеРазделов.Вставить("Р02", "Таблицы 2");
	ПредставлениеРазделов.Вставить("Р03", "Таблицы 3");
	ПредставлениеРазделов.Вставить("Р04", "Таблицы 4");
	
	ДанныеКС.Вставить("ПредставлениеРазделов", ПредставлениеРазделов);
	
	РазделыПоказателей = Новый Структура();
	
	РазделыПоказателей.Вставить("Р00", "Титульный");
	РазделыПоказателей.Вставить("Р01", "Таблица1");
	РазделыПоказателей.Вставить("Р11", "Таблица1_1");
	РазделыПоказателей.Вставить("Р02", "Таблица2");
	РазделыПоказателей.Вставить("Р03", "Таблица3");
	РазделыПоказателей.Вставить("Р04", "Таблица4");
	
	ДанныеКС.Вставить("РазделыПоказателей", РазделыПоказателей);
	
	ПоляИсключений = Новый Соответствие;
	ПоляИсключений.Вставить("ЧислФизЛицВыпл", "Численность физических лиц");
	ПоляИсключений.Вставить("ЧислИнвалидов"	, "Численность работающих инвалидов");
	ПоляИсключений.Вставить("ЧислВред"		, "Численность занятых на вредных работах");
	ПоляИсключений.Вставить("П00011ВСЕГО09"	, "Графа 9 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО10"	, "Графа 10 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО11"	, "Графа 11 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО12"	, "Графа 12 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО13"	, "Графа 13 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО14"	, "Графа 14 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО15"	, "Графа 15 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО16"	, "Графа 16 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО17"	, "Графа 17 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО18"	, "Графа 18 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО19"	, "Графа 19 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО22"	, "Графа 22 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО23"	, "Графа 23 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ВСЕГО24"	, "Графа 24 Строка ""Всего""");
	ПоляИсключений.Вставить("П00011ОСВЭД05"	, "Графа 5 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД06"	, "Графа 6 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД07"	, "Графа 7 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД08"	, "Графа 8 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД09"	, "Графа 9 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД10"	, "Графа 10 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД11"	, "Графа 11 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД12"	, "Графа 12 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД13"	, "Графа 13 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД14"	, "Графа 14 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД15"	, "Графа 15 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД16"	, "Графа 16 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД17"	, "Графа 17 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД18"	, "Графа 18 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД19"	, "Графа 19 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД22"	, "Графа 22 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД23"	, "Графа 23 Строка ""Основной ВЭД""");
	ПоляИсключений.Вставить("П00011ОСВЭД24"	, "Графа 24 Строка ""Основной ВЭД""");
	
	ДанныеКС.Вставить("ПоляИсключений", ПоляИсключений);
	
	МногострочныеЧасти = "";
	ДанныеКС.Вставить("МногострочныеЧасти", МногострочныеЧасти);
	
	ПоляТитульногоЛиста = Новый Структура();
	ДанныеКС.Вставить("ПоляТитульногоЛиста", ПоляТитульногоЛиста);
	
	ЦелочисленныеРазделы = Новый Массив;
	ДанныеКС.Вставить("ЦелочисленныеРазделы", ЦелочисленныеРазделы);
	
	МассивПолейСписочныхЗначений = Новый Массив;
	
	ТаблицаСписков = РеквизитФормыВЗначение("СвойстваПоказателей", Тип("ТаблицаЗначений"));
	СоответствиеСписков = Новый Соответствие;
	
	ДанныеКС.Вставить("СоответствиеСписков", СоответствиеСписков);
	
	ПубликацияКомментариев = Новый Массив;
	ДанныеКС.Вставить("ПубликацияКомментариев", ПубликацияКомментариев);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецПроцедуры // ПроверитьКС_1_01()

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

КонецПроцедуры // ПроверитьКС_1_01()

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

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

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

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

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

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

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

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 1);
	ПроверитьКС_2_36_1_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 1);
	ПроверитьКС_2_36_2_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 1);
	ПроверитьКС_2_36_3_код(Настройки);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 2);
	ПроверитьКС_2_36_1_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 2);
	ПроверитьКС_2_36_2_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 2);
	ПроверитьКС_2_36_3_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 3);
	ПроверитьКС_2_36_1_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 3);	
	ПроверитьКС_2_36_2_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 3);
	ПроверитьКС_2_36_3_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "303");
	Настройки.Вставить("ГрафаР11"		, "09");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "304");
	Настройки.Вставить("ГрафаР11"		, "13");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "305");
	Настройки.Вставить("ГрафаР11"		, "15");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "306");
	Настройки.Вставить("ГрафаР11"		, "17");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "303");
	Настройки.Вставить("ГрафаР02"		, "08");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "304");
	Настройки.Вставить("ГрафаР02"		, "10");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "305");
	Настройки.Вставить("ГрафаР02"		, "12");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "306");
	Настройки.Вставить("ГрафаР02"		, "14");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 4);
	ПроверитьКС_2_36_1_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 4);
	ПроверитьКС_2_36_2_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 4);
	ПроверитьКС_2_36_3_код(Настройки);
	
КонецПроцедуры

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "403");
	Настройки.Вставить("ГрафаР11"		, "10");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "404");
	Настройки.Вставить("ГрафаР11"		, "14");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "405");
	Настройки.Вставить("ГрафаР11"		, "16");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "406");
	Настройки.Вставить("ГрафаР11"		, "18");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "403");
	Настройки.Вставить("ГрафаР02"		, "09");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "404");
	Настройки.Вставить("ГрафаР02"		, "11");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "405");
	Настройки.Вставить("ГрафаР02"		, "13");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "406");
	Настройки.Вставить("ГрафаР02"		, "15");
	
	ПроверитьКС_2_31_код(Настройки);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 9);
	ПроверитьКС_2_36_1_код(Настройки);
	
КонецПроцедуры

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 9);
	ПроверитьКС_2_36_2_код(Настройки);
	
КонецПроцедуры

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("НомерСтроки", 9);
	ПроверитьКС_2_36_3_код(Настройки);
	
КонецПроцедуры

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("СтрокаГрафаР01"	, "903");
	Настройки.Вставить("ГрафаР11"		, "19");
	
	ПроверитьКС_2_37_код(Настройки);
	
КонецПроцедуры

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "06");
	Настройки.Вставить("СтрокаГрафаР01"	, "603");
	
	ПроверитьКС_3_03_код(Настройки);
	
КонецПроцедуры

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "07");
	Настройки.Вставить("СтрокаГрафаР01"	, "703");
	
	ПроверитьКС_3_03_код(Настройки);
	
КонецПроцедуры

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р11П008"		, "П00011ОСВЭД08");
	ИменаПоказателей.Вставить("Р11П005"		, "П00011ОСВЭД05");
	ИменаПоказателей.Вставить("Р11П006"		, "П00011ОСВЭД06");
	ИменаПоказателей.Вставить("Р11П007"		, "П00011ОСВЭД07");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р11);
	
	РасчетнаяСумма = Окр(Показатели.Р11П005.Значение * (1 - Показатели.Р11П006.Значение / 100 
		+ Показатели.Р11П007.Значение / 100), 3);
	Настройки.ЭтоОшибка = НЕ Показатели.Р11П008.Значение = РасчетнаяСумма;
	Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р11П008.Значение, 
		Показатели.Р11П005.Значение, Показатели.Р11П006.Значение, Показатели.Р11П007.Значение, РасчетнаяСумма);
	ДополнитьСтруктуруОшибок(Настройки);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "09");
	Настройки.Вставить("СтрокаГрафаР01"	, "303");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "10");
	Настройки.Вставить("СтрокаГрафаР01"	, "403");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "13");
	Настройки.Вставить("СтрокаГрафаР01"	, "304");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "14");
	Настройки.Вставить("СтрокаГрафаР01"	, "404");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "15");
	Настройки.Вставить("СтрокаГрафаР01"	, "305");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "16");
	Настройки.Вставить("СтрокаГрафаР01"	, "405");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "17");
	Настройки.Вставить("СтрокаГрафаР01"	, "306");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "18");
	Настройки.Вставить("СтрокаГрафаР01"	, "406");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "19");
	Настройки.Вставить("СтрокаГрафаР01"	, "903");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "22");
	Настройки.Вставить("СтрокаГрафаР01"	, "904");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "23");
	Настройки.Вставить("СтрокаГрафаР01"	, "905");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР11"		, "24");
	Настройки.Вставить("СтрокаГрафаР01"	, "906");
	
	ПроверитьКС_3_53_код(Настройки);
	
КонецПроцедуры

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

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

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

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02Г001"		, "П000020000106_");
	ИменаПоказателей.Вставить("Р02Г002"		, "П000020000107_");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02Г001"		, "П000020000107_");
	ИменаПоказателей.Вставить("Р00С002"		, "ЧислИнвалидов");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР02"		, "08");
	Настройки.Вставить("СтрокаГрафаР01"	, "303");
	
	ПроверитьКС_4_08_код(Настройки);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПроверитьКС_4_07_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02Г001"		, "П0000200001" + Формат(Настройки.ГрафаР02, "ЧЦ=2; ЧВН=") + "_");
	ИменаПоказателей.Вставить("Р02Г002"		, "П0000200001" + Формат((Настройки.ГрафаР02 + 1), "ЧЦ=2; ЧВН=") + "_");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	Настройки.Вставить("ГрафаР02"		, "09");
	Настройки.Вставить("СтрокаГрафаР01"	, "403");
	
	ПроверитьКС_4_08_код(Настройки);
	
КонецПроцедуры

&НаСервере
Процедура ПроверитьКС_4_08_код(Настройки)
	
	Перем Показатели;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02Г001"		, "П0000200001" + Настройки.ГрафаР02 + "_");
	ИменаПоказателей.Вставить("Р01П001"		, "П000010000" + Настройки.СтрокаГрафаР01);
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);

	Для Счетчик = 1 По ДанныеКС.КолСтрокР02 Цикл
		ЗаполнитьИРасшифроватьПоказатель(Показатели.Р02Г001, ДанныеКС.Р02, Счетчик);
	КонецЦикла;

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р02Г019"		, "П000020000119_");
	ИменаПоказателей.Вставить("Р02Г016"		, "П000020000116_");
	ИменаПоказателей.Вставить("Р02Г017"		, "П000020000117_");
	ИменаПоказателей.Вставить("Р02Г018"		, "П000020000118_");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);

	Для Счетчик = 1 По ДанныеКС.КолСтрокР02 Цикл
		
		ЗарегистрироватьФормулу(Настройки);
		ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р02, Счетчик);
	
		РасчетнаяСумма = Окр(Показатели.Р02Г016.Значение * (1 - Показатели.Р02Г017.Значение / 100 
			+ Показатели.Р02Г018.Значение / 100), 3);
		Настройки.ЭтоОшибка = НЕ Показатели.Р02Г019.Значение = РасчетнаяСумма;
		Настройки.Расшифровка = СтрШаблон(Настройки.ШаблонРасшифровки, Показатели.Р02Г019.Значение, 
			Показатели.Р02Г016.Значение, Показатели.Р02Г017.Значение, Показатели.Р02Г018.Значение, РасчетнаяСумма);
		ДополнитьСтруктуруОшибок(Настройки);
	
	КонецЦикла;
		
КонецПроцедуры

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

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

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

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

	Настройки.ЭтоОшибка = Показатели.Р03С001.Значение > Показатели.Р03С002.Значение;
	Настройки.Расшифровка = ПодставитьПараметрыВСтроку(Настройки.ШаблонРасшифровки, Показатели.Р03С001.Значение, 
		Показатели.Р03С002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);

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

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

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

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

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

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

	Настройки.ЭтоОшибка = Показатели.Р03С001.Значение > Показатели.Р03С002.Значение;
	Настройки.Расшифровка = ПодставитьПараметрыВСтроку(Настройки.ШаблонРасшифровки, Показатели.Р03С001.Значение, 
		Показатели.Р03С002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);

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

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р04П001"		, "П000040000103");
	ИменаПоказателей.Вставить("Р04П002"		, "П000040000104");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р04);

	Настройки.ЭтоОшибка = Показатели.Р04П001.Значение < Показатели.Р04П002.Значение;
	Настройки.Расшифровка = ПодставитьПараметрыВСтроку(Настройки.ШаблонРасшифровки, Показатели.Р04П001.Значение, 
		Показатели.Р04П002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р04П001"		, "П000040000104");
	ИменаПоказателей.Вставить("Р04П002"		, "П000040000105");
	ИменаПоказателей.Вставить("Р04П003"		, "П000040000106");
	ИменаПоказателей.Вставить("Р04П004"		, "П000040000107");
	ИменаПоказателей.Вставить("Р04П005"		, "П000040000108");
	ИменаПоказателей.Вставить("Р04П006"		, "П000040000109");
	ИменаПоказателей.Вставить("Р04П007"		, "П000040000110");
	ИменаПоказателей.Вставить("Р04П008"		, "П000040000111");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р04);

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

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

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

	Если Документирование Тогда
		Возврат;
	КонецЕсли;
	
	ИменаПоказателей = Новый Структура;
	ИменаПоказателей.Вставить("Р04П001"		, "П000040000212");
	ИменаПоказателей.Вставить("Р04П002"		, "П000040000213");
	
	СформироватьПоказатели(Показатели, ИменаПоказателей);
	ЗарегистрироватьФормулу(Настройки);
	ЗаполнитьИРасшифроватьПоказатели(Показатели, ДанныеКС.Р04);

	Настройки.ЭтоОшибка = Показатели.Р04П001.Значение < Показатели.Р04П002.Значение;
	Настройки.Расшифровка = ПодставитьПараметрыВСтроку(Настройки.ШаблонРасшифровки, Показатели.Р04П001.Значение, 
		Показатели.Р04П002.Значение);
	ДополнитьСтруктуруОшибок(Настройки);

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

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

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

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

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

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

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

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

	МассивБулево = Новый Массив;
	МассивБулево.Добавить(Тип("Булево"));
	СтруктураРеквизитовФормы.мОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
	
	СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(16, 2));
	
	КолИсхСтрокИдГруппы92 = 1;
	КолИсхСтрокИдГруппы11 = 1;
	КолИсхСтрокИдГруппы2  = 1;
	
	КолКолонокИдГруппы92 = 4;
	КолКолонокИдГруппы11 = 24;
	КолКолонокИдГруппы2  = 19;
	
	СтруктураДанныхТитульный  = Новый Структура;
	СтруктураДанныхТаблица92  = Новый Структура;
	СтруктураДанныхТаблица1   = Новый Структура;
	СтруктураДанныхТаблица1_1 = Новый Структура;
	СтруктураДанныхТаблица2   = Новый Структура;
	СтруктураДанныхТаблица3   = Новый Структура;
	СтруктураДанныхТаблица4   = Новый Структура;
	
	// Структура многострочных разделов формы.
	мСтруктураМногострочныхРазделов = Новый Структура;
	мСтруктураМногострочныхРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы92, СтруктураРеквизитовФормы.ИдГруппы92);
	мСтруктураМногострочныхРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы11, СтруктураРеквизитовФормы.ИдГруппы11);
	мСтруктураМногострочныхРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы2,  СтруктураРеквизитовФормы.ИдГруппы2);
	
	// Структура содержит данные дополнительных страниц.
	мСтруктураМногостраничныхРазделов = Новый Структура;
	
	// Структура исходных строк (минимального кол-ва) многострочных разделов формы.
	мСтруктураИсхКолвоСтрокРазделов = Новый Структура;
	мСтруктураИсхКолвоСтрокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы92, КолИсхСтрокИдГруппы92);
	мСтруктураИсхКолвоСтрокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы11, КолИсхСтрокИдГруппы11);
	мСтруктураИсхКолвоСтрокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы2,  КолИсхСтрокИдГруппы2);
	
	мСтруктураКолвоКолонокРазделов = Новый Структура;
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы92, КолКолонокИдГруппы92);
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы11, КолКолонокИдГруппы11);
	мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.ИдГруппы2,  КолКолонокИдГруппы2);
	
	РегламентированнаяОтчетность.СформироватьСтруктуруЦветовРаскраски(ЭтаФорма);
	
	мСтруктураВариантыЗаполнения       = Новый Структура;
	мСтруктураВариантыЗаполненияЭталон = Новый Структура;
	
	// Код отчета условный.
	СтруктураРеквизитовФормы.мКодОтчета = "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");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010000803", "П000010000503;П000010000603;П000010000703");
	
	// Таблица 1.1.
	//
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П00011ОСВЭД08", "П00011ОСВЭД02;П00011ОСВЭД03;П00011ОСВЭД05;П00011ОСВЭД06;П00011ОСВЭД07");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П00011ОСВЭД09", "П00011ОСВЭД11;П00011ОСВЭД13;П00011ОСВЭД15;П00011ОСВЭД17");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П00011ОСВЭД10", "П00011ОСВЭД12;П00011ОСВЭД14;П00011ОСВЭД16;П00011ОСВЭД18");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П00011ОСВЭД19", "П00011ОСВЭД20;П00011ОСВЭД21;П00011ОСВЭД22;П00011ОСВЭД23;П00011ОСВЭД24");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П00011ОСВЭД21", "П00011ОСВЭД22;П00011ОСВЭД23;П00011ОСВЭД24");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000109", "П000110000111;П000110000113;П000110000115;П000110000117");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000110", "П000110000112;П000110000114;П000110000116;П000110000118");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000119", "П000110000120;П000110000121;П000110000122;П000110000123;П000110000124");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000110000121", "П000110000122;П000110000123;П000110000124");
	
	// Таблица 2.
	//
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020000108", "П000020000110;П000020000112;П000020000114");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020000109", "П000020000111;П000020000113;П000020000115");
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020000119", "П000020000105;П000020000116;П000020000117;П000020000118");
	
	// Таблица 3.
	//
	СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030000403", "П000030000103;П000030000303");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВвестиПоказатели(РезультатВыбора, ДополнительныеПараметры) Экспорт
	
	Если РезультатВыбора = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Область = ДополнительныеПараметры.Область;
	КолонкаДляПоиска = ДополнительныеПараметры.КолонкаДляПоиска;
	
	РезультатВыбора.Колонка2 = СтрЗаменить(РезультатВыбора.Колонка2, "Пустое значение", "");
	РезультатВыбора.Колонка4 = ?(РезультатВыбора.Колонка4 = "", 0, Число(РезультатВыбора.Колонка4));
	
	Если КолонкаДляПоиска = "Колонка1" Тогда
		
		Область.Значение = РезультатВыбора.Колонка1;
		
		Если СтрНачинаетсяС(Область.Имя, "П00011ОСВЭД03") Тогда
			
			Обл = ТабличныйДокумент.Области.Найти("П00011ОСВЭД02");
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка2;
			КонецЕсли;
			Обл = ТабличныйДокумент.Области.Найти("П00011ОСВЭД05");
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка4;
			КонецЕсли;
			
		ИначеЕсли СтрНачинаетсяС(Область.Имя, "П000110000103") Тогда
			
			Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000110000103", "П000110000102"));
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка2;
			КонецЕсли;
			Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000110000103", "П000110000105"));
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка4;
			КонецЕсли;
			
		ИначеЕсли СтрНачинаетсяС(Область.Имя, "П000020000105") Тогда
			
			Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000020000105", "П000020000116"));
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка4;
			КонецЕсли;
			
		КонецЕсли;
		
	ИначеЕсли КолонкаДляПоиска = "Колонка2" Тогда
		
		Область.Значение = РезультатВыбора.Колонка2;
		
		Если СтрНачинаетсяС(Область.Имя, "П00011ОСВЭД02") Тогда
			
			Обл = ТабличныйДокумент.Области.Найти("П00011ОСВЭД03");
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка1;
			КонецЕсли;
			Обл = ТабличныйДокумент.Области.Найти("П00011ОСВЭД05");
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка4;
			КонецЕсли;
			
		ИначеЕсли СтрНачинаетсяС(Область.Имя, "П000110000102") Тогда
			
			Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000110000102", "П000110000103"));
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка1;
			КонецЕсли;
			Обл = ТабличныйДокумент.Области.Найти(СтрЗаменить(Область.Имя, "П000110000102", "П000110000105"));
			Если Обл <> Неопределено Тогда
				Обл.Значение = РезультатВыбора.Колонка4;
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Модифицированность = Истина;
	
	ИмяОбласти = Область.Имя;
	
	ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
	
	Если ПозицияПодстроки > 0 Тогда
		ИмяОбласти = Лев(ИмяОбласти, ПозицияПодстроки - 1);
	КонецЕсли;
	
	РасчетНаКлиенте(Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим, ИмяОбласти);
	
	ВключитьПечатьЗаполненногоНеобязательногоРаздела(ЭтаФорма,
	Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

		КонецЦикла;

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

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

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

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

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

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

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

	КонецЦикла;

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

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

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

	КонецЦикла;

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

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

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

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

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

			КонецЕсли;

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

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

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

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

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

						КонецЦикла;

					КонецЕсли;

				КонецЦикла; 

			КонецЕсли; 

		КонецЦикла;

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

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

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

			КонецЕсли;

		КонецЦикла;

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

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

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

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

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

	КонецЦикла; 

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

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

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

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

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

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

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

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

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

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

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

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

	Иначе

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

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

		КонецЦикла;

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура Расчет(Форма, ИмяТекущегоРаздела = "", ОбластьИмя = "")
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
	
	ТДО = Форма.ТабличныйДокумент.Области;
	
	Если ИмяТекущегоРаздела = "Таблица1" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000303, ОбластьИмя) > 0 Тогда
			ТДО.П000010000303.Значение = ТДО.П000010000103.Значение - ТДО.П000010000203.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000304, ОбластьИмя) > 0 Тогда
			ТДО.П000010000304.Значение = ТДО.П000010000104.Значение - ТДО.П000010000204.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000305, ОбластьИмя) > 0 Тогда
			ТДО.П000010000305.Значение = ТДО.П000010000105.Значение - ТДО.П000010000205.Значение;
		КонецЕсли;
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000306, ОбластьИмя) > 0 Тогда
			ТДО.П000010000306.Значение = ТДО.П000010000106.Значение - ТДО.П000010000206.Значение;
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010000803, ОбластьИмя) > 0 Тогда
			ТДО.П000010000803.Значение = Окр(ТДО.П000010000503.Значение * (1
			+ ТДО.П000010000703.Значение / 100 - ТДО.П000010000603.Значение / 100), 3);
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица1_1" Тогда
		
		ТДО.П00011ОСВЭД08.Значение = Окр(ТДО.П00011ОСВЭД05.Значение * (1
		+ ТДО.П00011ОСВЭД07.Значение / 100 - ТДО.П00011ОСВЭД06.Значение / 100), 3);
		
		ТДО.П00011ОСВЭД21.Значение = ТДО.П00011ОСВЭД22.Значение
		+ ТДО.П00011ОСВЭД23.Значение + ТДО.П00011ОСВЭД24.Значение;
		
		ТДО.П00011ОСВЭД09.Значение
		= ТДО.П00011ОСВЭД11.Значение + ТДО.П00011ОСВЭД13.Значение
		+ ТДО.П00011ОСВЭД15.Значение + ТДО.П00011ОСВЭД17.Значение;
		
		ТДО.П00011ОСВЭД10.Значение
		= ТДО.П00011ОСВЭД12.Значение + ТДО.П00011ОСВЭД14.Значение
		+ ТДО.П00011ОСВЭД16.Значение + ТДО.П00011ОСВЭД18.Значение;
		
		ТДО.П00011ОСВЭД19.Значение
		= ТДО.П00011ОСВЭД20.Значение + ТДО.П00011ОСВЭД21.Значение;
		
		П00011ВСЕГО09 = ТДО.П00011ОСВЭД09.Значение;
		П00011ВСЕГО10 = ТДО.П00011ОСВЭД10.Значение;
		П00011ВСЕГО11 = ТДО.П00011ОСВЭД11.Значение;
		П00011ВСЕГО12 = ТДО.П00011ОСВЭД12.Значение;
		П00011ВСЕГО13 = ТДО.П00011ОСВЭД13.Значение;
		П00011ВСЕГО14 = ТДО.П00011ОСВЭД14.Значение;
		П00011ВСЕГО15 = ТДО.П00011ОСВЭД15.Значение;
		П00011ВСЕГО16 = ТДО.П00011ОСВЭД16.Значение;
		П00011ВСЕГО17 = ТДО.П00011ОСВЭД17.Значение;
		П00011ВСЕГО18 = ТДО.П00011ОСВЭД18.Значение;
		П00011ВСЕГО19 = ТДО.П00011ОСВЭД19.Значение;
		П00011ВСЕГО20 = ТДО.П00011ОСВЭД20.Значение;
		П00011ВСЕГО21 = ТДО.П00011ОСВЭД21.Значение;
		П00011ВСЕГО22 = ТДО.П00011ОСВЭД22.Значение;
		П00011ВСЕГО23 = ТДО.П00011ОСВЭД23.Значение;
		П00011ВСЕГО24 = ТДО.П00011ОСВЭД24.Значение;
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы11, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			Постфикс = Формат(Ном, "ЧГ=");
			
			ТДО["П000110000121_" + Постфикс].Значение = ТДО["П000110000122_" + Постфикс].Значение
			+ ТДО["П000110000123_" + Постфикс].Значение + ТДО["П000110000124_" + Постфикс].Значение;
			
			ТДО["П000110000109_" + Постфикс].Значение
			= ТДО["П000110000111_" + Постфикс].Значение + ТДО["П000110000113_" + Постфикс].Значение
			+ ТДО["П000110000115_" + Постфикс].Значение + ТДО["П000110000117_" + Постфикс].Значение;
			
			ТДО["П000110000110_" + Постфикс].Значение
			= ТДО["П000110000112_" + Постфикс].Значение + ТДО["П000110000114_" + Постфикс].Значение
			+ ТДО["П000110000116_" + Постфикс].Значение + ТДО["П000110000118_" + Постфикс].Значение;
			
			ТДО["П000110000119_" + Постфикс].Значение
			= ТДО["П000110000120_" + Постфикс].Значение + ТДО["П000110000121_" + Постфикс].Значение;
			
			П00011ВСЕГО09 = П00011ВСЕГО09 + ТДО["П000110000109_" + Постфикс].Значение;
			П00011ВСЕГО10 = П00011ВСЕГО10 + ТДО["П000110000110_" + Постфикс].Значение;
			П00011ВСЕГО11 = П00011ВСЕГО11 + ТДО["П000110000111_" + Постфикс].Значение;
			П00011ВСЕГО12 = П00011ВСЕГО12 + ТДО["П000110000112_" + Постфикс].Значение;
			П00011ВСЕГО13 = П00011ВСЕГО13 + ТДО["П000110000113_" + Постфикс].Значение;
			П00011ВСЕГО14 = П00011ВСЕГО14 + ТДО["П000110000114_" + Постфикс].Значение;
			П00011ВСЕГО15 = П00011ВСЕГО15 + ТДО["П000110000115_" + Постфикс].Значение;
			П00011ВСЕГО16 = П00011ВСЕГО16 + ТДО["П000110000116_" + Постфикс].Значение;
			П00011ВСЕГО17 = П00011ВСЕГО17 + ТДО["П000110000117_" + Постфикс].Значение;
			П00011ВСЕГО18 = П00011ВСЕГО18 + ТДО["П000110000118_" + Постфикс].Значение;
			П00011ВСЕГО19 = П00011ВСЕГО19 + ТДО["П000110000119_" + Постфикс].Значение;
			П00011ВСЕГО20 = П00011ВСЕГО20 + ТДО["П000110000120_" + Постфикс].Значение;
			П00011ВСЕГО21 = П00011ВСЕГО21 + ТДО["П000110000121_" + Постфикс].Значение;
			П00011ВСЕГО22 = П00011ВСЕГО22 + ТДО["П000110000122_" + Постфикс].Значение;
			П00011ВСЕГО23 = П00011ВСЕГО23 + ТДО["П000110000123_" + Постфикс].Значение;
			П00011ВСЕГО24 = П00011ВСЕГО24 + ТДО["П000110000124_" + Постфикс].Значение;
			
		КонецЦикла;
		
		ТДО.П00011ВСЕГО09.Значение = П00011ВСЕГО09;
		ТДО.П00011ВСЕГО10.Значение = П00011ВСЕГО10;
		ТДО.П00011ВСЕГО11.Значение = П00011ВСЕГО11;
		ТДО.П00011ВСЕГО12.Значение = П00011ВСЕГО12;
		ТДО.П00011ВСЕГО13.Значение = П00011ВСЕГО13;
		ТДО.П00011ВСЕГО14.Значение = П00011ВСЕГО14;
		ТДО.П00011ВСЕГО15.Значение = П00011ВСЕГО15;
		ТДО.П00011ВСЕГО16.Значение = П00011ВСЕГО16;
		ТДО.П00011ВСЕГО17.Значение = П00011ВСЕГО17;
		ТДО.П00011ВСЕГО18.Значение = П00011ВСЕГО18;
		ТДО.П00011ВСЕГО19.Значение = П00011ВСЕГО19;
		ТДО.П00011ВСЕГО20.Значение = П00011ВСЕГО20;
		ТДО.П00011ВСЕГО21.Значение = П00011ВСЕГО21;
		ТДО.П00011ВСЕГО22.Значение = П00011ВСЕГО22;
		ТДО.П00011ВСЕГО23.Значение = П00011ВСЕГО23;
		ТДО.П00011ВСЕГО24.Значение = П00011ВСЕГО24;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица2" Тогда
		
		Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
			
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020000108, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы2, ТаблицаБлока);
				ТаблицаБлока = Форма[ТаблицаБлока];
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					ТДО["П000020000108_" + Постфикс].Значение = ТДО["П000020000110_" + Постфикс].Значение
					+ ТДО["П000020000112_" + Постфикс].Значение + ТДО["П000020000114_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
				Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020000109, ОбластьИмя) > 0 Тогда
				
				Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы2, ТаблицаБлока);
				ТаблицаБлока = Форма[ТаблицаБлока];
				Для Ном = 1 По ТаблицаБлока.Количество() Цикл
					Постфикс = Формат(Ном, "ЧГ=");
					ТДО["П000020000109_" + Постфикс].Значение = ТДО["П000020000111_" + Постфикс].Значение
					+ ТДО["П000020000113_" + Постфикс].Значение + ТДО["П000020000115_" + Постфикс].Значение;
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020000119, ОбластьИмя) > 0 Тогда
			
			Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы2, ТаблицаБлока);
			ТаблицаБлока = Форма[ТаблицаБлока];
			Для Ном = 1 По ТаблицаБлока.Количество() Цикл
				Постфикс = Формат(Ном, "ЧГ=");
				ТДО["П000020000119_" + Постфикс].Значение = Окр(ТДО["П000020000116_" + Постфикс].Значение * (1
				+ ТДО["П000020000118_" + Постфикс].Значение / 100 - ТДО["П000020000117_" + Постфикс].Значение / 100), 3);
			КонецЦикла;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица3" Тогда
		
		Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(
			Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030000403, ОбластьИмя) > 0 Тогда
			ТДО.П000030000403.Значение = ТДО.П000030000103.Значение + ТДО.П000030000303.Значение;
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "" Тогда
		
		РасчетВСтруктуре(Форма, "Таблица1");
		РасчетВСтруктуре(Форма, "Таблица1_1");
		РасчетВСтруктуре(Форма, "Таблица2");
		РасчетВСтруктуре(Форма, "Таблица3");
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура РасчетВСтруктуре(Форма, ИмяТекущегоРаздела)
	
	Перем ТаблицаБлока;
	
	Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
		Возврат;
	КонецЕсли;
	
	ТДО = Форма.ТабличныйДокумент.Области;
	
	Если ИмяТекущегоРаздела = "Таблица1" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000010000303 = ТДО.П000010000103.Значение - ТДО.П000010000203.Значение;
			СтруктураДанныхРаздела.П000010000304 = ТДО.П000010000104.Значение - ТДО.П000010000204.Значение;
			СтруктураДанныхРаздела.П000010000305 = ТДО.П000010000105.Значение - ТДО.П000010000205.Значение;
			СтруктураДанныхРаздела.П000010000306 = ТДО.П000010000106.Значение - ТДО.П000010000206.Значение;
			
			СтруктураДанныхРаздела.П000010000803 = Окр(ТДО.П000010000503.Значение * (1
			+ ТДО.П000010000703.Значение / 100 - ТДО.П000010000603.Значение / 100), 3);
			
			ТДО.П000010000303.Значение = СтруктураДанныхРаздела.П000010000303;
			ТДО.П000010000304.Значение = СтруктураДанныхРаздела.П000010000304;
			ТДО.П000010000305.Значение = СтруктураДанныхРаздела.П000010000305;
			ТДО.П000010000306.Значение = СтруктураДанныхРаздела.П000010000306;
			
			ТДО.П000010000803.Значение = СтруктураДанныхРаздела.П000010000803;
			
		Иначе
			
			СтруктураДанныхРаздела.П000010000303 = СтруктураДанныхРаздела.П000010000103 - СтруктураДанныхРаздела.П000010000203;
			СтруктураДанныхРаздела.П000010000304 = СтруктураДанныхРаздела.П000010000104 - СтруктураДанныхРаздела.П000010000204;
			СтруктураДанныхРаздела.П000010000305 = СтруктураДанныхРаздела.П000010000105 - СтруктураДанныхРаздела.П000010000205;
			СтруктураДанныхРаздела.П000010000306 = СтруктураДанныхРаздела.П000010000106 - СтруктураДанныхРаздела.П000010000206;
			
			СтруктураДанныхРаздела.П000010000803 = Окр(СтруктураДанныхРаздела.П000010000503 * (1
			+ СтруктураДанныхРаздела.П000010000703 / 100 - СтруктураДанныхРаздела.П000010000603 / 100), 3);
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица1_1" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П00011ОСВЭД08 = Окр(ТДО.П00011ОСВЭД05.Значение * (1
			+ ТДО.П00011ОСВЭД07.Значение / 100 - ТДО.П00011ОСВЭД06.Значение / 100), 3);
			
			СтруктураДанныхРаздела.П00011ОСВЭД21 = ТДО.П00011ОСВЭД22.Значение
			+ ТДО.П00011ОСВЭД23.Значение + ТДО.П00011ОСВЭД24.Значение;
			
			ТДО.П00011ОСВЭД08.Значение = СтруктураДанныхРаздела.П00011ОСВЭД08;
			
			ТДО.П00011ОСВЭД21.Значение = СтруктураДанныхРаздела.П00011ОСВЭД21;
			
			СтруктураДанныхРаздела.П00011ОСВЭД09
			= ТДО.П00011ОСВЭД11.Значение + ТДО.П00011ОСВЭД13.Значение
			+ ТДО.П00011ОСВЭД15.Значение + ТДО.П00011ОСВЭД17.Значение;
			
			СтруктураДанныхРаздела.П00011ОСВЭД10
			= ТДО.П00011ОСВЭД12.Значение + ТДО.П00011ОСВЭД14.Значение
			+ ТДО.П00011ОСВЭД16.Значение + ТДО.П00011ОСВЭД18.Значение;
			
			СтруктураДанныхРаздела.П00011ОСВЭД19
			= ТДО.П00011ОСВЭД20.Значение + ТДО.П00011ОСВЭД21.Значение;
			
			ТДО.П00011ОСВЭД09.Значение = СтруктураДанныхРаздела.П00011ОСВЭД09;
			
			ТДО.П00011ОСВЭД10.Значение = СтруктураДанныхРаздела.П00011ОСВЭД10;
			
			ТДО.П00011ОСВЭД19.Значение = СтруктураДанныхРаздела.П00011ОСВЭД19;
			
			П00011ВСЕГО09 = ТДО.П00011ОСВЭД09.Значение;
			П00011ВСЕГО10 = ТДО.П00011ОСВЭД10.Значение;
			П00011ВСЕГО11 = ТДО.П00011ОСВЭД11.Значение;
			П00011ВСЕГО12 = ТДО.П00011ОСВЭД12.Значение;
			П00011ВСЕГО13 = ТДО.П00011ОСВЭД13.Значение;
			П00011ВСЕГО14 = ТДО.П00011ОСВЭД14.Значение;
			П00011ВСЕГО15 = ТДО.П00011ОСВЭД15.Значение;
			П00011ВСЕГО16 = ТДО.П00011ОСВЭД16.Значение;
			П00011ВСЕГО17 = ТДО.П00011ОСВЭД17.Значение;
			П00011ВСЕГО18 = ТДО.П00011ОСВЭД18.Значение;
			П00011ВСЕГО19 = ТДО.П00011ОСВЭД19.Значение;
			П00011ВСЕГО20 = ТДО.П00011ОСВЭД20.Значение;
			П00011ВСЕГО21 = ТДО.П00011ОСВЭД21.Значение;
			П00011ВСЕГО22 = ТДО.П00011ОСВЭД22.Значение;
			П00011ВСЕГО23 = ТДО.П00011ОСВЭД23.Значение;
			П00011ВСЕГО24 = ТДО.П00011ОСВЭД24.Значение;
			
		Иначе
			
			СтруктураДанныхРаздела.П00011ОСВЭД08 = Окр(СтруктураДанныхРаздела.П00011ОСВЭД05 * (1
			+ СтруктураДанныхРаздела.П00011ОСВЭД07 / 100 - СтруктураДанныхРаздела.П00011ОСВЭД06 / 100), 3);
			
			СтруктураДанныхРаздела.П00011ОСВЭД21 = СтруктураДанныхРаздела.П00011ОСВЭД22
			+ СтруктураДанныхРаздела.П00011ОСВЭД23 + СтруктураДанныхРаздела.П00011ОСВЭД24;
			
			СтруктураДанныхРаздела.П00011ОСВЭД09
			= СтруктураДанныхРаздела.П00011ОСВЭД11 + СтруктураДанныхРаздела.П00011ОСВЭД13
			+ СтруктураДанныхРаздела.П00011ОСВЭД15 + СтруктураДанныхРаздела.П00011ОСВЭД17;
			
			СтруктураДанныхРаздела.П00011ОСВЭД10
			= СтруктураДанныхРаздела.П00011ОСВЭД12 + СтруктураДанныхРаздела.П00011ОСВЭД14
			+ СтруктураДанныхРаздела.П00011ОСВЭД16 + СтруктураДанныхРаздела.П00011ОСВЭД18;
			
			СтруктураДанныхРаздела.П00011ОСВЭД19
			= СтруктураДанныхРаздела.П00011ОСВЭД20 + СтруктураДанныхРаздела.П00011ОСВЭД21;
			
			П00011ВСЕГО09 = СтруктураДанныхРаздела.П00011ОСВЭД09;
			П00011ВСЕГО10 = СтруктураДанныхРаздела.П00011ОСВЭД10;
			П00011ВСЕГО11 = СтруктураДанныхРаздела.П00011ОСВЭД11;
			П00011ВСЕГО12 = СтруктураДанныхРаздела.П00011ОСВЭД12;
			П00011ВСЕГО13 = СтруктураДанныхРаздела.П00011ОСВЭД13;
			П00011ВСЕГО14 = СтруктураДанныхРаздела.П00011ОСВЭД14;
			П00011ВСЕГО15 = СтруктураДанныхРаздела.П00011ОСВЭД15;
			П00011ВСЕГО16 = СтруктураДанныхРаздела.П00011ОСВЭД16;
			П00011ВСЕГО17 = СтруктураДанныхРаздела.П00011ОСВЭД17;
			П00011ВСЕГО18 = СтруктураДанныхРаздела.П00011ОСВЭД18;
			П00011ВСЕГО19 = СтруктураДанныхРаздела.П00011ОСВЭД19;
			П00011ВСЕГО20 = СтруктураДанныхРаздела.П00011ОСВЭД20;
			П00011ВСЕГО21 = СтруктураДанныхРаздела.П00011ОСВЭД21;
			П00011ВСЕГО22 = СтруктураДанныхРаздела.П00011ОСВЭД22;
			П00011ВСЕГО23 = СтруктураДанныхРаздела.П00011ОСВЭД23;
			П00011ВСЕГО24 = СтруктураДанныхРаздела.П00011ОСВЭД24;
			
		КонецЕсли;
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы11, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			
			Постфикс = Формат(Ном, "ЧГ=");
			
			Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
				
				ТДО["П000110000121_" + Постфикс].Значение = ТДО["П000110000122_" + Постфикс].Значение
				+ ТДО["П000110000123_" + Постфикс].Значение + ТДО["П000110000124_" + Постфикс].Значение;
				
				ТДО["П000110000109_" + Постфикс].Значение
				= ТДО["П000110000111_" + Постфикс].Значение + ТДО["П000110000113_" + Постфикс].Значение
				+ ТДО["П000110000115_" + Постфикс].Значение + ТДО["П000110000117_" + Постфикс].Значение;
				
				ТДО["П000110000110_" + Постфикс].Значение
				= ТДО["П000110000112_" + Постфикс].Значение + ТДО["П000110000114_" + Постфикс].Значение
				+ ТДО["П000110000116_" + Постфикс].Значение + ТДО["П000110000118_" + Постфикс].Значение;
				
				ТДО["П000110000119_" + Постфикс].Значение
				= ТДО["П000110000120_" + Постфикс].Значение + ТДО["П000110000121_" + Постфикс].Значение;
				
				П00011ВСЕГО09 = П00011ВСЕГО09 + ТДО["П000110000109_" + Постфикс].Значение;
				П00011ВСЕГО10 = П00011ВСЕГО10 + ТДО["П000110000110_" + Постфикс].Значение;
				П00011ВСЕГО11 = П00011ВСЕГО11 + ТДО["П000110000111_" + Постфикс].Значение;
				П00011ВСЕГО12 = П00011ВСЕГО12 + ТДО["П000110000112_" + Постфикс].Значение;
				П00011ВСЕГО13 = П00011ВСЕГО13 + ТДО["П000110000113_" + Постфикс].Значение;
				П00011ВСЕГО14 = П00011ВСЕГО14 + ТДО["П000110000114_" + Постфикс].Значение;
				П00011ВСЕГО15 = П00011ВСЕГО15 + ТДО["П000110000115_" + Постфикс].Значение;
				П00011ВСЕГО16 = П00011ВСЕГО16 + ТДО["П000110000116_" + Постфикс].Значение;
				П00011ВСЕГО17 = П00011ВСЕГО17 + ТДО["П000110000117_" + Постфикс].Значение;
				П00011ВСЕГО18 = П00011ВСЕГО18 + ТДО["П000110000118_" + Постфикс].Значение;
				П00011ВСЕГО19 = П00011ВСЕГО19 + ТДО["П000110000119_" + Постфикс].Значение;
				П00011ВСЕГО20 = П00011ВСЕГО20 + ТДО["П000110000120_" + Постфикс].Значение;
				П00011ВСЕГО21 = П00011ВСЕГО21 + ТДО["П000110000121_" + Постфикс].Значение;
				П00011ВСЕГО22 = П00011ВСЕГО22 + ТДО["П000110000122_" + Постфикс].Значение;
				П00011ВСЕГО23 = П00011ВСЕГО23 + ТДО["П000110000123_" + Постфикс].Значение;
				П00011ВСЕГО24 = П00011ВСЕГО24 + ТДО["П000110000124_" + Постфикс].Значение;
				
			Иначе
				
				СтрБлока = ТаблицаБлока[Ном - 1];
				
				СтрБлока["П000110000121"] = СтрБлока["П000110000122"]
				+ СтрБлока["П000110000123"] + СтрБлока["П000110000124"];
				СтруктураДанныхРаздела["П000110000121_" + Постфикс] = СтрБлока["П000110000121"];
				
				СтрБлока["П000110000109"]
				= СтрБлока["П000110000111"] + СтрБлока["П000110000113"]
				+ СтрБлока["П000110000115"] + СтрБлока["П000110000117"];
				СтруктураДанныхРаздела["П000110000109_" + Постфикс] = СтрБлока["П000110000109"];
				
				СтрБлока["П000110000110"]
				= СтрБлока["П000110000112"] + СтрБлока["П000110000114"]
				+ СтрБлока["П000110000116"] + СтрБлока["П000110000118"];
				СтруктураДанныхРаздела["П000110000110_" + Постфикс] = СтрБлока["П000110000110"];
				
				СтрБлока["П000110000119"]
				= СтрБлока["П000110000120"] + СтрБлока["П000110000121"];
				СтруктураДанныхРаздела["П000110000119_" + Постфикс] = СтрБлока["П000110000119"];
				
				П00011ВСЕГО09 = П00011ВСЕГО09 + СтрБлока["П000110000109"];
				П00011ВСЕГО10 = П00011ВСЕГО10 + СтрБлока["П000110000110"];
				П00011ВСЕГО11 = П00011ВСЕГО11 + СтрБлока["П000110000111"];
				П00011ВСЕГО12 = П00011ВСЕГО12 + СтрБлока["П000110000112"];
				П00011ВСЕГО13 = П00011ВСЕГО13 + СтрБлока["П000110000113"];
				П00011ВСЕГО14 = П00011ВСЕГО14 + СтрБлока["П000110000114"];
				П00011ВСЕГО15 = П00011ВСЕГО15 + СтрБлока["П000110000115"];
				П00011ВСЕГО16 = П00011ВСЕГО16 + СтрБлока["П000110000116"];
				П00011ВСЕГО17 = П00011ВСЕГО17 + СтрБлока["П000110000117"];
				П00011ВСЕГО18 = П00011ВСЕГО18 + СтрБлока["П000110000118"];
				П00011ВСЕГО19 = П00011ВСЕГО19 + СтрБлока["П000110000119"];
				П00011ВСЕГО20 = П00011ВСЕГО20 + СтрБлока["П000110000120"];
				П00011ВСЕГО21 = П00011ВСЕГО21 + СтрБлока["П000110000121"];
				П00011ВСЕГО22 = П00011ВСЕГО22 + СтрБлока["П000110000122"];
				П00011ВСЕГО23 = П00011ВСЕГО23 + СтрБлока["П000110000123"];
				П00011ВСЕГО24 = П00011ВСЕГО24 + СтрБлока["П000110000124"];
				
			КонецЕсли;
			
		КонецЦикла;
		
		СтруктураДанныхРаздела.П00011ВСЕГО09 = П00011ВСЕГО09;
		СтруктураДанныхРаздела.П00011ВСЕГО10 = П00011ВСЕГО10;
		СтруктураДанныхРаздела.П00011ВСЕГО11 = П00011ВСЕГО11;
		СтруктураДанныхРаздела.П00011ВСЕГО12 = П00011ВСЕГО12;
		СтруктураДанныхРаздела.П00011ВСЕГО13 = П00011ВСЕГО13;
		СтруктураДанныхРаздела.П00011ВСЕГО14 = П00011ВСЕГО14;
		СтруктураДанныхРаздела.П00011ВСЕГО15 = П00011ВСЕГО15;
		СтруктураДанныхРаздела.П00011ВСЕГО16 = П00011ВСЕГО16;
		СтруктураДанныхРаздела.П00011ВСЕГО17 = П00011ВСЕГО17;
		СтруктураДанныхРаздела.П00011ВСЕГО18 = П00011ВСЕГО18;
		СтруктураДанныхРаздела.П00011ВСЕГО19 = П00011ВСЕГО19;
		СтруктураДанныхРаздела.П00011ВСЕГО20 = П00011ВСЕГО20;
		СтруктураДанныхРаздела.П00011ВСЕГО21 = П00011ВСЕГО21;
		СтруктураДанныхРаздела.П00011ВСЕГО22 = П00011ВСЕГО22;
		СтруктураДанныхРаздела.П00011ВСЕГО23 = П00011ВСЕГО23;
		СтруктураДанныхРаздела.П00011ВСЕГО24 = П00011ВСЕГО24;
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			ТДО.П00011ВСЕГО09.Значение = П00011ВСЕГО09;
			ТДО.П00011ВСЕГО10.Значение = П00011ВСЕГО10;
			ТДО.П00011ВСЕГО11.Значение = П00011ВСЕГО11;
			ТДО.П00011ВСЕГО12.Значение = П00011ВСЕГО12;
			ТДО.П00011ВСЕГО13.Значение = П00011ВСЕГО13;
			ТДО.П00011ВСЕГО14.Значение = П00011ВСЕГО14;
			ТДО.П00011ВСЕГО15.Значение = П00011ВСЕГО15;
			ТДО.П00011ВСЕГО16.Значение = П00011ВСЕГО16;
			ТДО.П00011ВСЕГО17.Значение = П00011ВСЕГО17;
			ТДО.П00011ВСЕГО18.Значение = П00011ВСЕГО18;
			ТДО.П00011ВСЕГО19.Значение = П00011ВСЕГО19;
			ТДО.П00011ВСЕГО20.Значение = П00011ВСЕГО20;
			ТДО.П00011ВСЕГО21.Значение = П00011ВСЕГО21;
			ТДО.П00011ВСЕГО22.Значение = П00011ВСЕГО22;
			ТДО.П00011ВСЕГО23.Значение = П00011ВСЕГО23;
			ТДО.П00011ВСЕГО24.Значение = П00011ВСЕГО24;
			
		КонецЕсли;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица2" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.ИдГруппы2, ТаблицаБлока);
		ТаблицаБлока = Форма[ТаблицаБлока];
		
		Для Ном = 1 По ТаблицаБлока.Количество() Цикл
			
			Постфикс = Формат(Ном, "ЧГ=");
			
			Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
				
				Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
					
					ТДО["П000020000108_" + Постфикс].Значение = ТДО["П000020000110_" + Постфикс].Значение
					+ ТДО["П000020000112_" + Постфикс].Значение + ТДО["П000020000114_" + Постфикс].Значение;
					ТДО["П000020000109_" + Постфикс].Значение = ТДО["П000020000111_" + Постфикс].Значение
					+ ТДО["П000020000113_" + Постфикс].Значение + ТДО["П000020000115_" + Постфикс].Значение;
					
				КонецЕсли;
				
				ТДО["П000020000119_" + Постфикс].Значение = Окр(ТДО["П000020000116_" + Постфикс].Значение * (1
				+ ТДО["П000020000118_" + Постфикс].Значение / 100 - ТДО["П000020000117_" + Постфикс].Значение / 100), 3);
				
			Иначе
				
				СтрБлока = ТаблицаБлока[Ном - 1];
				
				Если Форма.СтруктураРеквизитовФормы.ПериодОтчетаВходитВПервыйКвартал Тогда
					
					СтрБлока["П000020000108"] = СтрБлока["П000020000110"] + СтрБлока["П000020000112"] + СтрБлока["П000020000114"];
					СтруктураДанныхРаздела["П000020000108_" + Постфикс] = СтрБлока["П000020000108"];
					СтрБлока["П000020000109"] = СтрБлока["П000020000111"] + СтрБлока["П000020000113"] + СтрБлока["П000020000115"];
					СтруктураДанныхРаздела["П000020000109_" + Постфикс] = СтрБлока["П000020000109"];
					
				КонецЕсли;
				
				СтрБлока["П000020000119"] = Окр(СтрБлока["П000020000116"] * (1
				+ СтрБлока["П000020000118"] / 100 - СтрБлока["П000020000117"] / 100), 3);
				СтруктураДанныхРаздела["П000020000119_" + Постфикс] = СтрБлока["П000020000119"];
				
			КонецЕсли;
			
		КонецЦикла;
		
	ИначеЕсли ИмяТекущегоРаздела = "Таблица3" Тогда
		
		СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
		
		Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
			
			СтруктураДанныхРаздела.П000030000403 = ТДО.П000030000103.Значение + ТДО.П000030000303.Значение;
			ТДО.П000030000403.Значение = СтруктураДанныхРаздела.П000030000403;
			
		Иначе
			
			СтруктураДанныхРаздела.П000030000403 = СтруктураДанныхРаздела.П000030000103 + СтруктураДанныхРаздела.П000030000303;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Расшифровать(Команда)
	
	ИмяТекущейЯчейки = Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя;
	
	Таблица1_1_ОКВЭД = "";
	Если Лев(ИмяТекущейЯчейки, 6) = "П00011" Тогда
		ОбластьИскомойЯчейки = ТабличныйДокумент.Области.Найти(Лев(ИмяТекущейЯчейки, 11) + "03");
		Если ОбластьИскомойЯчейки <> Неопределено Тогда
			Таблица1_1_ОКВЭД = СокрЛП(ОбластьИскомойЯчейки.Значение);
		Иначе
			ОбластьИскомойЯчейки = ТабличныйДокумент.Области.Найти(Лев(ИмяТекущейЯчейки, 11) + "03" + Сред(ИмяТекущейЯчейки, 14));
			Если ОбластьИскомойЯчейки <> Неопределено Тогда
				Таблица1_1_ОКВЭД = СокрЛП(ОбластьИскомойЯчейки.Значение);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	ПараметрыОтчета = Новый Структура();
	
	ПараметрыОтчета.Вставить("Организация",                СтруктураРеквизитовФормы.Организация);
	ПараметрыОтчета.Вставить("мДатаНачалаПериодаОтчета",   СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
	ПараметрыОтчета.Вставить("мДатаКонцаПериодаОтчета",    СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
	ПараметрыОтчета.Вставить("ЗначениеТекущегоПоказателя", Элементы.ТабличныйДокумент.ТекущаяОбласть.Текст);
	
	ПараметрыОтчета.Вставить("Таблица1_1_ОКВЭД", Таблица1_1_ОКВЭД);
	
	ИДИменПоказателей = Новый Массив();
	ИДИменПоказателей.Добавить(Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя);
	
	РегламентированнаяОтчетностьКлиент.ОткрытьРасшифровкуОтчета(
		ИмяОтчета(ЭтаФорма.ИмяФормы),
		ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ИДИменПоказателей, ПараметрыОтчета);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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