&НаСервере
Перем мОбъектОтчета;
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
МодульРегламентированнаяОтчетностьИнтерфейс85 = ОбщегоНазначения.ОбщийМодуль("РегламентированнаяОтчетностьИнтерфейс85");
МодульРегламентированнаяОтчетностьИнтерфейс85.УстановитьНазначениеДействияКомандФормыРеглОтчета(Команды);
КонецЕсли;
ТабличныйДокумент.Очистить();
СформироватьСтруктуруРеквизитовФормы();
СтруктураРеквизитовФормы.СписокПечатаемыхЛистов = Новый СписокЗначений;
СтруктураРеквизитовФормы.мЧтоОчищать = "Расчетную ведомость";
СтруктураРеквизитовФормы.мСоставПоказателей = "СоставПоказателей2011Кв1";
СтруктураРеквизитовФормы.мПоляПоискаПоказателяВТСП = "КодПоказателяПоСоставу, КодПоказателяПоФорме";
СоответствиеЕдиницыИзмеренияДелителю = Новый Структура;
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1", 1);
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000", 1000);
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000000", 1000000);
МассивБулево = Новый Массив;
МассивБулево.Добавить(Тип("Булево"));
СтруктураРеквизитовФормы.мОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));
СтруктураРеквизитовФормы.мИдГруппы1 = "П0003100010";
КолИсхСтрокИдГруппы1 = 1;
КолКолонокИдГруппы1 = 8;
СтруктураДанныхТитульный = Новый Структура;
СтруктураДанныхРаздел1_1 = Новый Структура;
СтруктураДанныхРаздел1_2 = Новый Структура;
СтруктураДанныхРаздел1_3 = Новый Структура;
СтруктураДанныхРаздел1_4 = Новый Структура;
СтруктураДанныхРаздел1_5 = Новый Структура;
СтруктураДанныхРаздел1_6 = Новый Структура;
СтруктураДанныхРаздел1_7 = Новый Структура;
СтруктураДанныхРаздел2_1 = Новый Структура;
СтруктураДанныхРаздел2_2 = Новый Структура;
мСтруктураМногострочныхРазделов = Новый Структура;
мСтруктураМногострочныхРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, СтруктураРеквизитовФормы.мИдГруппы1);
мСтруктураМногостраничныхРазделов = Новый Структура;
мСтруктураИсхКолвоСтрокРазделов = Новый Структура;
мСтруктураИсхКолвоСтрокРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, КолИсхСтрокИдГруппы1);
мСтруктураКолвоКолонокРазделов = Новый Структура;
мСтруктураКолвоКолонокРазделов.Вставить(СтруктураРеквизитовФормы.мИдГруппы1, КолКолонокИдГруппы1);
ЦветЗаполняетсяТолькоВручную = Новый Цвет(255, 255, 225);
ЦветЗаполняетсяАвтоКорректир = Новый Цвет(255, 240, 200);
ЦветЗаполняетсяАвтоБезКорректир = Новый Цвет(230, 240, 220);
ЦветЗаполняетсяАвтоАрифметика = Новый Цвет(192, 220, 192);
ЦветЗаполняетсяОднозначноВручную = Новый Цвет(255, 255, 192);
ЦветЗаполняетсяАвтоматически = Новый Цвет(255, 255, 255);
СтруктураРеквизитовФормы.ЦветБелый = Новый Цвет(255, 255, 255);
СтруктураРеквизитовФормы.ЦветЖелтый = Новый Цвет(255, 255, 192);
мСтруктураЦветовРаскраски = Новый Структура;
мСтруктураЦветовРаскраски.Вставить("_1", ЦветЗаполняетсяТолькоВручную);
мСтруктураЦветовРаскраски.Вставить("_2", ЦветЗаполняетсяАвтоКорректир);
мСтруктураЦветовРаскраски.Вставить("_3", ЦветЗаполняетсяАвтоБезКорректир);
мСтруктураЦветовРаскраски.Вставить("_4", ЦветЗаполняетсяАвтоАрифметика);
мСтруктураЦветовРаскраски.Вставить("_0", ЦветЗаполняетсяОднозначноВручную);
мСтруктураЦветовРаскраски.Вставить("_5", ЦветЗаполняетсяАвтоматически);
мСтруктураВариантыЗаполнения = Новый Структура;
мСтруктураВариантыЗаполненияЭталон = Новый Структура;
СтруктураРеквизитовФормы.мВерсияФормы = "15/03/2011";
СтруктураРеквизитовФормы.мКодОтчета = "1159999";
СтруктураРеквизитовФормы.ВариантыФорматовВыгрузки = Новый СписокЗначений;
СтруктураРеквизитовФормы.ВариантыФорматовВыгрузки.Добавить(СтруктураРеквизитовФормы.мСоставПоказателей, "Формат 0.1", Истина);
СтруктураРеквизитовФормы.мПечатныеФормы = Новый СписокЗначений;
СтруктураРеквизитовФормы.ЕстьРеквизитДополнительныйКодФСС = Метаданные.Справочники.Организации.Реквизиты.Найти("ДополнительныйКодФСС") <> Неопределено;
СтруктураРеквизитовФормы.ЕстьРеквизитКодПодчиненностиФСС = Метаданные.Справочники.Организации.Реквизиты.Найти("КодПодчиненностиФСС") <> Неопределено;
ИмяРаздела = "Титульный";
ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
ИмяМакета = Сред(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, "ФормаОтчета")) + "_" + ИмяРаздела;
Попытка
ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФормаИмя).ПолучитьМакет(ИмяМакета));
Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
МодульРегламентированнаяОтчетностьИнтерфейс85 = ОбщегоНазначения.ОбщийМодуль("РегламентированнаяОтчетностьИнтерфейс85");
МодульРегламентированнаяОтчетностьИнтерфейс85.УстановитьТипОтображенияРедактируемойЯчейкиТабличногоДокумента(ТабличныйДокумент);
КонецЕсли;
Исключение
КонецПопытки;
СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяРаздела;
СтруктураРеквизитовФормы.мВыбраннаяФорма = Параметры.мВыбраннаяФорма;
СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета = Параметры.мДатаКонцаПериодаОтчета;
СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета = Параметры.мДатаНачалаПериодаОтчета;
СтруктураРеквизитовФормы.мСкопированаФорма = Параметры.мСкопированаФорма;
СтруктураРеквизитовФормы.мСохраненныйДок = Параметры.мСохраненныйДок;
СтруктураРеквизитовФормы.Организация = Параметры.Организация;
СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически = Параметры.СформироватьФормуОтчетаАвтоматически;
ДатаПодписи = ТекущаяДатаСеанса();
ПорядкиОкругленияОтчетности = Новый Структура;
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1", Перечисления.ПорядкиОкругленияОтчетности.Окр1);
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1000", Перечисления.ПорядкиОкругленияОтчетности.Окр1000);
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1000000", Перечисления.ПорядкиОкругленияОтчетности.Окр1000000);
Инициализация(Параметры.БезОткрытияФормы);
ИнициализироватьВыводСтатусовИВажныхСообщений_85();
КонецПроцедуры
&НаСервере
Процедура СформироватьСтруктуруРеквизитовФормы()
СтруктураРеквизитовФормы = Новый Структура;
СтруктураРеквизитовФормы.Вставить("ВыводитьСтраницуВТаблДокНаСервере");
СтруктураРеквизитовФормы.Вставить("НаимТекущегоРаздела");
СтруктураРеквизитовФормы.Вставить("Организация");
СтруктураРеквизитовФормы.Вставить("ЕдиницаИзмерения");
СтруктураРеквизитовФормы.Вставить("ТочностьЕдиницыИзмерения");
СтруктураРеквизитовФормы.Вставить("мКодОрганаФСС");
СтруктураРеквизитовФормы.Вставить("ВидДокумента");
СтруктураРеквизитовФормы.Вставить("ВариантыФорматовВыгрузки");
СтруктураРеквизитовФормы.Вставить("ФлажокОтклАвтоРасчет", Ложь);
СтруктураРеквизитовФормы.Вставить("мСчетчикСтраниц");
СтруктураРеквизитовФормы.Вставить("мАвтоВыборКодов");
СтруктураРеквизитовФормы.Вставить("мБезОткрытияФормы");
СтруктураРеквизитовФормы.Вставить("мРежимПечати");
СтруктураРеквизитовФормы.Вставить("мВариант");
СтруктураРеквизитовФормы.Вставить("мКодОтчета");
СтруктураРеквизитовФормы.Вставить("мВерсияФормы");
СтруктураРеквизитовФормы.Вставить("мВПрограммеИзмененаОрганизация");
СтруктураРеквизитовФормы.Вставить("мВыбраннаяФорма");
СтруктураРеквизитовФормы.Вставить("мДатаНачалаПериодаОтчета");
СтруктураРеквизитовФормы.Вставить("мДатаКонцаПериодаОтчета");
СтруктураРеквизитовФормы.Вставить("мДелитель");
СтруктураРеквизитовФормы.Вставить("мДокументВосстановлен");
СтруктураРеквизитовФормы.Вставить("мЗаписываетсяНовыйДокумент");
СтруктураРеквизитовФормы.Вставить("мЗаписьЗапрещена");
СтруктураРеквизитовФормы.Вставить("мИдГруппы1");
СтруктураРеквизитовФормы.Вставить("мИнтервалАвтосохранения");
СтруктураРеквизитовФормы.Вставить("мОписаниеТиповБулево");
СтруктураРеквизитовФормы.Вставить("мОписаниеТиповЧислоЕ");
СтруктураРеквизитовФормы.Вставить("мПериодичность");
СтруктураРеквизитовФормы.Вставить("мПечатныеФормы");
СтруктураРеквизитовФормы.Вставить("мПолноеИмяФайлаВнешнейОбработки");
СтруктураРеквизитовФормы.Вставить("мПоляПоискаПоказателяВТСП");
СтруктураРеквизитовФормы.Вставить("мСкопированаФорма");
СтруктураРеквизитовФормы.Вставить("мСоставПоказателей");
СтруктураРеквизитовФормы.Вставить("мСохраненныйДок");
СтруктураРеквизитовФормы.Вставить("мСтрокаФормата");
СтруктураРеквизитовФормы.Вставить("мЧтоОчищать");
СтруктураРеквизитовФормы.Вставить("НомерГода");
СтруктураРеквизитовФормы.Вставить("ФлагСохранения");
СтруктураРеквизитовФормы.Вставить("ЦветБелый");
СтруктураРеквизитовФормы.Вставить("ЦветЖелтый");
СтруктураРеквизитовФормы.Вставить("СписокПечатаемыхЛистов");
СтруктураРеквизитовФормы.Вставить("ЕстьРеквизитДополнительныйКодФСС");
СтруктураРеквизитовФормы.Вставить("ЕстьРеквизитКодПодчиненностиФСС");
СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуЗаполнить", Ложь);
СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуРасшифровать", Ложь);
СтруктураРеквизитовФормы.Вставить("ТекущаяСтрокаРазделовОтчета");
СтруктураРеквизитовФормы.Вставить("СформироватьФормуОтчетаАвтоматически");
СтруктураРеквизитовФормы.Вставить("ОКВЭД", "");
СтруктураРеквизитовФормы.Вставить("ОКВЭД2", "");
СтруктураРеквизитовФормы.Вставить("ПустаяСсылкаНаРегламентированныйОтчет",
Документы.РегламентированныйОтчет.ПустаяСсылка());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета()
СтруктураЗависимыхЯчеекДляАвторасчета = Новый Структура;
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010002201", "П000010002301;П000010002401;П000010002501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010003201", "П000010003301;П000010003401;П000010003501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010005201", "П000010005301;П000010005401;П000010005501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010006201", "П000010006301;П000010006401;П000010006501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010015201", "П000010015301;П000010015401;П000010015501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010016201", "П000010016301;П000010016401;П000010016501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010002003", "П000010002101;П000010002201; П000010002301;П000010002401;П000010002501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010003003", "П000010003101;П000010003201; П000010003301;П000010003401;П000010003501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010005003", "П000010005101;П000010005201; П000010005301;П000010005401;П000010005501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010006003", "П000010006101;П000010006201; П000010006301;П000010006401;П000010006501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010015003", "П000010015101;П000010015201; П000010015301;П000010015401;П000010015501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010016003", "П000010016101;П000010016201; П000010016301;П000010016401;П000010016501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010008003", "П000010001003;П000010002003;П000010003003;П000010004003;П000010005003;"
+"П000010006003;П000010007003; П000010002101;П000010002201;П000010003101;"
+"П000010003201;П000010005101;П000010005201;П000010006101;П000010006201; "
+"П000010002301;П000010002401;П000010002501;П000010003301;П000010003401;"
+"П000010003501;П000010005301;П000010005401;П000010005501;П000010006301;"
+"П000010006401;П000010006501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010012003", "П000010013003;П000010014003");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000010018003", "П000010012003;П000010015003;П000010016003;П000010017003; П000010013003;"
+"П000010014003;П000010015101;П000010015201;П000010016101;П000010016201; "
+"П000010015301;П000010015401;П000010015501;П000010016301;П000010016401;"
+"П000010016501");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007003", "П000020008003;П000020009003");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007004", "П000020008004;П000020009004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020007005", "П000020008005;П000020009005");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020010005", "П000020010004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020012004", "П000020001004;П000020003004;П000020005004;П000020006004;П000020007004;П000020010004;П000020011004; П000020008004;П000020009004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000020012005", "П000020001005;П000020003005;П000020007005;П000020010005;П000020011005; П000020008005;П000020009005;П000020010004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004003", "П000030001003;П000030002003;П000030003003");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004004", "П000030001004;П000030002004;П000030003004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004005", "П000030001005;П000030002005;П000030003005");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000030004006", "П000030001006;П000030002006;П000030003006");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002005", "П000310001005");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002006", "П000310001006");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002007", "П000310001007");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000310002008", "П000310001008");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000303", "П000040000103;П000040000203");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000304", "П000040000104;П000040000204");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000305", "П000040000105;П000040000205");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000306", "П000040000106;П000040000206");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000603", "П000040000403;П000040000503");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000604", "П000040000404;П000040000504");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000605", "П000040000405;П000040000505");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000606", "П000040000406;П000040000506");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000903", "П000040000703;П000040000803");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000904", "П000040000704;П000040000804");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000905", "П000040000705;П000040000805");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000040000906", "П000040000706;П000040000806");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000410004003", "П000410002003;П000410003003");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003007", "П000050004007;П000050005007");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003008", "П000050004008;П000050005008");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003010", "П000050004010;П000050005010");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003011", "П000050004011;П000050005011");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003016", "П000050004016;П000050005016");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003017", "П000050004017;П000050005017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001003", "П000050001006;П000050001009;П000050001012;П000050001015;П000050001018");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002003", "П000050002006;П000050002009;П000050002015;П000050002018");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003003", "П000050003006;П000050003009;П000050003015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004003", "П000050004006;П000050004009;П000050004015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005003", "П000050005006;П000050005009;П000050005015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006003", "П000050006006;П000050006009;П000050006015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001004", "П000050001007;П000050001010;П000050001013;П000050001016;П000050001019");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002004", "П000050002007;П000050002010;П000050002016;П000050002019");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003004", "П000050003007;П000050003010;П000050003016; П000050004007;П000050005007;"
+"П000050004010;П000050005010;П000050004016;П000050005016");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004004", "П000050004007;П000050004010;П000050004016");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005004", "П000050005007;П000050005010;П000050005016");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006004", "П000050006007;П000050006010;П000050006016");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050001005", "П000050001008;П000050001011;П000050001014;П000050001017;П000050001020");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050002005", "П000050002008;П000050002011;П000050002017;П000050002020");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050003005", "П000050003008;П000050003011;П000050003017; П000050004008;П000050005008;"
+"П000050004011;П000050005011;П000050004017;П000050005017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050004005", "П000050004008;П000050004011;П000050004017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050005005", "П000050005008;П000050005011;П000050005017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050006005", "П000050006008;П000050006011;П000050006017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007003", "П000050001003;П000050002003;П000050003003;П000050006003; П000050001006;"
+"П000050001009;П000050001012;П000050001015;П000050001018;П000050002006;"
+"П000050002009;П000050002015;П000050002018;П000050003006;П000050003009;"
+"П000050003015;П000050006006;П000050006009;П000050006015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007005", "П000050001005;П000050002005;П000050003005;П000050006005; П000050001008;"
+"П000050001011;П000050001014;П000050001017;П000050001020;П000050002008;"
+"П000050002011;П000050002017;П000050002020;П000050003008;П000050003011;"
+"П000050003017;П000050006008;П000050006011;П000050006017; П000050004008;"
+"П000050005008;П000050004011;П000050005011;П000050004017;П000050005017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007006", "П000050001006;П000050002006;П000050003006;П000050006006");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007008", "П000050001008;П000050002008;П000050003008;П000050006008; П000050004008;П000050005008");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007009", "П000050001009;П000050002009;П000050003009;П000050006009");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007011", "П000050001011;П000050002011;П000050003011;П000050006011; П000050004011;П000050005011");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007012", "П000050001012");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007014", "П000050001014");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007015", "П000050001015;П000050002015;П000050003015;П000050006015");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007017", "П000050001017;П000050002017;П000050003017;П000050006017; П000050004017;П000050005017");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007018", "П000050001018;П000050002018");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000050007020", "П000050001020;П000050002020");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001203", "П000060001303;П000060001403;П000060001503");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001204", "П000060001304;П000060001404;П000060001504");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001205", "П000060001305;П000060001405;П000060001505");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000060001010", "П000060001006;П000060001007;П000060001009");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070002401", "П000070002101;П000070002201;П000070002301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011401", "П000070011101;П000070011201;П000070011301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070012401", "П000070012101;П000070012201;П000070012301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070002003", "П000070002001;П000070002401; П000070002101;П000070002201;П000070002301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070011003", "П000070011001;П000070011401; П000070011101;П000070011201;П000070011301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070012003", "П000070012001;П000070012401; П000070012101;П000070012201;П000070012301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070008003", "П000070001003;П000070002003;П000070003003;П000070004003;П000070005003;П000070006003;"
+"П000070007003; П000070002001;П000070002401; П000070002101;П000070002201;П000070002301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070014003", "П000070010003;П000070011003;П000070012003;П000070013003; П000070011001;П000070011401;"
+"П000070012001;П000070012401; П000070011101;П000070011201;П000070011301;П000070012101;П000070012201;П000070012301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070009003", "П000070014003;П000070008003; П000070010003;П000070011003;П000070012003;П000070013003;"
+"П000070001003;П000070002003;П000070003003;П000070004003;П000070005003;П000070006003;П000070007003; П000070011001;"
+"П000070011401;П000070012001;П000070012401;П000070002001;П000070002401; П000070011101;П000070011201;П000070011301;"
+"П000070012101;П000070012201;П000070012301;П000070002101;П000070002201;П000070002301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000070015003", "П000070008003;П000070014003; П000070001003;П000070002003;П000070003003;П000070004003;"
+"П000070005003;П000070006003;П000070007003;П000070010003;П000070011003;П000070012003;"
+"П000070013003; П000070002001;П000070002401;П000070011001;П000070011401;П000070012001;"
+"П000070012401; П000070002101;П000070002201;П000070002301;П000070011101;П000070011201;"
+"П000070011301;П000070012101;П000070012201;П000070012301");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000080010004", "П000080001004;П000080004004;П000080007004;П000080009004");
СтруктураЗависимыхЯчеекДляАвторасчета.Вставить("П000090004003", "П000090001003;П000090003003");
КонецПроцедуры
&НаСервере
Процедура Инициализация(БезОткрытияФормы = Ложь) Экспорт
СтруктураРеквизитовФормы.мБезОткрытияФормы = БезОткрытияФормы;
ЗаполнитьСтруктуруЗависимыхЯчеекДляАвторасчета();
ЗаполнитьНачальныеНастройки();
ФормироватьСтруктуруСвойствСтраниц();
СформироватьДеревоРазделовОтчетаНаСервере();
Если НЕ БезОткрытияФормы Тогда
СформироватьСпискиВыбора();
КонецЕсли;
НачальнаяПодготовкаФормы();
УстановитьДоступностьОбластей();
СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Ложь;
ЗаполнитьПустыеСтруктурыДанных();
Если (СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(СтруктураДанныхРаздел2_1.П000060001006)) Тогда
СтруктураДанныхРаздел2_1.П000060001006 = ПолучитьРазмерСтраховогоТарифа(ЭтаФорма);
СтруктураДанныхРаздел2_1.П000060001010 = СтруктураДанныхРаздел2_1.П000060001006;
КонецЕсли;
РегламентированнаяОтчетность.ДобавитьКнопкуПрисоединенныеФайлы(ЭтаФорма);
РегламентированнаяОтчетностьКлиентСервер.ПриИнициализацииФормыРегламентированногоОтчета(ЭтаФорма, "ФСС");
Если СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически Тогда
ЗаполнитьАвтоНаСервере();
Если Элементы.Расшифровать.Видимость Тогда
Элементы.Расшифровать.Доступность = Истина;
Элементы.ТабличныйДокументКонтекстноеМенюРасшифровать.Доступность = Истина;
КонецЕсли;
КонецЕсли;
НомерКорректировки = НомерКорректировки * СтруктураРеквизитовФормы.ВидДокумента;
ОтобразитьНомерКорректировки(ЭтаФорма);
ТабличныйДокумент.Области.ДатаПодписи.Значение = ДатаПодписи;
РегламентированнаяОтчетность.ПриИнициализации(ЭтотОбъект,
?(ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСохраненныйДок),
СтруктураРеквизитовФормы.мСохраненныйДок,
СтруктураРеквизитовФормы.ПустаяСсылкаНаРегламентированныйОтчет));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНачальныеНастройки() Экспорт
ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
МакетСоставаПоказателей = ОбъектОтчета(ЭтаФормаИмя).ПолучитьМакет(СтруктураРеквизитовФормы.мСоставПоказателей);
Для Инд = 0 По МакетСоставаПоказателей.Области.Количество() - 1 Цикл
ТекОбласть = МакетСоставаПоказателей.Области[Инд];
ИмяСтраницы = ТекОбласть.Имя;
ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы].Добавить();
Для Ном = ТекОбласть.Верх По ТекОбласть.Низ Цикл
КодПоказателя = СокрП(МакетСоставаПоказателей.Область(Ном, 1).Текст);
ИмяПоказателя = КодПоказателя;
Если КодПоказателя = "===" Тогда
Прервать;
КонецЕсли;
Если Лев(КодПоказателя, 2) = "//" Тогда
Продолжить;
КонецЕсли;
КодПоказателяПоФорме = СокрЛП(МакетСоставаПоказателей.Область(Ном, 2).Текст);
ПризнМногострочность = СокрЛП(МакетСоставаПоказателей.Область(Ном, 3).Текст);
ТипДанныхРеквизита = СокрЛП(МакетСоставаПоказателей.Область(Ном, 4).Текст);
стрКолСтрокИсходный = СокрЛП(МакетСоставаПоказателей.Область(Ном, 5).Текст);
стрВариантЗаполнения = РегламентированнаяОтчетность.ПолучитьВариантЗаполненияПоказателяРегОтчета(МакетСоставаПоказателей, Ном);
КодПоказателяПоСтруктуре = СокрЛП(МакетСоставаПоказателей.Область(Ном, 9).Текст);
чКолСтрокИсходный = ? (ПустаяСтрока(стрКолСтрокИсходный), 0, Число(стрКолСтрокИсходный));
чВариантЗаполнения = ? (ПустаяСтрока(стрВариантЗаполнения), 0, Число(стрВариантЗаполнения));
НоваяСтрока = мТаблицаСоставПоказателей.Добавить();
НоваяСтрока.ИмяПоляТаблДокумента = ИмяСтраницы;
НоваяСтрока.КодПоказателяПоСоставу = КодПоказателя;
НоваяСтрока.КодПоказателяПоФорме = КодПоказателяПоФорме;
НоваяСтрока.ПризнМногострочности = ПризнМногострочность;
НоваяСтрока.ТипДанныхПоказателя = ТипДанныхРеквизита;
НоваяСтрока.КодПоказателяПоСтруктуре = КодПоказателяпоСтруктуре;
Если чВариантЗаполнения <> 0 Тогда
НоваяСтрока = ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы][0].ТаблицаВариантовЗаполнения.Добавить();
НоваяСтрока.КодПоказателя = ? (Не ПустаяСтрока(КодПоказателяПоФорме), КодПоказателяПоФорме, КодПоказателя);
НоваяСтрока.ВариантЗаполнения = чВариантЗаполнения;
КонецЕсли;
КонецЦикла;
Если ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы][0].ТаблицаВариантовЗаполнения.Количество() > 0 Тогда
мСтруктураВариантыЗаполнения.Вставить(ИмяСтраницы, ИмяСтраницы);
мСтруктураВариантыЗаполненияЭталон.Вставить(ИмяСтраницы, ИмяСтраницы);
Конецесли;
КонецЦикла;
ФормироватьСтруктуруСтраницОтчета();
КонецПроцедуры
&НаСервере
Процедура ФормироватьСтруктуруСтраницОтчета() Экспорт
мДеревоСтраницОтчета.ПолучитьЭлементы().Очистить();
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Титульный";
СтрокаУровня1.Представление = "Титульный лист";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_1";
СтрокаУровня1.Представление = "Раздел I. Табл. 1";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_2";
СтрокаУровня1.Представление = "Раздел I. Табл. 2";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_3";
СтрокаУровня1.Представление = "Раздел I. Табл. 3";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_4";
СтрокаУровня1.Представление = "Раздел I. Табл. 3.1";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_5";
СтрокаУровня1.Представление = "Раздел I. Табл. 4";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_6";
СтрокаУровня1.Представление = "Раздел I. Табл. 4.1";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_7";
СтрокаУровня1.Представление = "Раздел I. Табл. 5";
СтрокаУровня1.ОриентацияСтраницы = "Ландшафт";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел2_1";
СтрокаУровня1.Представление = "Раздел II. Табл. 6, 7";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
СтрокаУровня1 = мДеревоСтраницОтчета.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел2_2";
СтрокаУровня1.Представление = "Раздел II. Табл. 8, 9";
СтрокаУровня1.ОриентацияСтраницы = "Портрет";
СтрокаУровня1.ВыводНаПечать = 1;
СтрокаУровня1.ПоказатьСтраницу = 1;
КонецПроцедуры
&НаСервере
Процедура ФормироватьСтруктуруСвойствСтраниц() Экспорт
мСвойстваРазделовДекларации.ПолучитьЭлементы().Очистить();
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Титульный";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Ложь;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Ложь;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_1";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_2";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_3";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_4";
СтрокаУровня1.СохранятьМногострКакТЗ = Истина;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
НовСтр = СтрокаУровня1.МногострочностьВРазделе.Добавить();
НовСтр.ИдГруппы = СтруктураРеквизитовФормы.мИдГруппы1;
НовСтр.Область = "МногострочнаяЧасть";
НовСтр.ВысотаСтроки = 1;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_5";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_6";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел1_7";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел2_1";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "Раздел2_2";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Истина;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Истина;
КонецПроцедуры
&НаСервере
Процедура СформироватьДеревоРазделовОтчетаНаСервере() Экспорт
СформироватьДеревоРазделовОтчета(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СформироватьДеревоРазделовОтчетаНаКлиенте() Экспорт
СформироватьДеревоРазделовОтчета(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СформироватьДеревоРазделовОтчета(Форма)
Форма["РазделыОтчета"].ПолучитьЭлементы().Очистить();
Для Каждого ЭлементДереваСтраницОтчета Из Форма["мДеревоСтраницОтчета"].ПолучитьЭлементы() Цикл
Если ЭлементДереваСтраницОтчета.ПоказатьСтраницу = 1 Тогда
ЭлементРазделовОтчета = Форма["РазделыОтчета"].ПолучитьЭлементы().Добавить();
ЭлементРазделовОтчета.КолонкаРазделыОтчета = ЭлементДереваСтраницОтчета.Представление;
ЭлементРазделовОтчета.КолонкаРазделыОтчетаСокрНаим = ЭлементДереваСтраницОтчета.ИмяСтраницы;
ЭлементРазделовОтчета.ИндексКартинки = 1;
ЭлементРазделовОтчета.РазделМногостраничный = Ложь;
ЭлементРазделовОтчета.РазделМногострочный = РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(Форма, "мТаблицаМногострочныхРазделов");
НайденноеЗначение = Неопределено;
Если Форма["мСтруктураМногостраничныхРазделов"].Свойство(ЭлементРазделовОтчета.КолонкаРазделыОтчетаСокрНаим, НайденноеЗначение) Тогда
Если НЕ НайденноеЗначение = Неопределено Тогда
НайденноеЗначение = Форма[НайденноеЗначение];
ЭлементРазделовОтчета.ИндексКартинки = 0;
ЭлементРазделовОтчета.РазделМногостраничный = Истина;
Для НомерСтраницы = 1 По НайденноеЗначение.Количество() Цикл
СтраницаРазделаОтчета = ЭлементРазделовОтчета.ПолучитьЭлементы().Добавить();
СтраницаРазделаОтчета.КолонкаРазделыОтчета = "Стр. " + НомерСтраницы;
СтраницаРазделаОтчета.КолонкаРазделыОтчетаСокрНаим = ЭлементРазделовОтчета.КолонкаРазделыОтчетаСокрНаим;
СтраницаРазделаОтчета.КолонкаНомерСтраницыРазделаОтчета = НомерСтраницы;
СтраницаРазделаОтчета.ИндексКартинки = 1;
СтраницаРазделаОтчета.РазделМногостраничный = ЭлементРазделовОтчета.РазделМногостраничный;
СтраницаРазделаОтчета.РазделМногострочный = ЭлементРазделовОтчета.РазделМногострочный;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СформироватьСпискиВыбора()
МакетСоставаПоказателей = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("Списки2011Кв1");
КоллекцияСписковВыбора = Новый Соответствие;
Для Каждого Область Из МакетСоставаПоказателей.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
ВерхОбласти = Область.Верх;
НизОбласти = Область.Низ;
ТаблСписка = Новый ТаблицаЗначений;
ТаблСписка.Колонки.Добавить("Код",,, МакетСоставаПоказателей.Область(ВерхОбласти, 1, ВерхОбласти, 1).ШиринаКолонки);
ТаблСписка.Колонки.Добавить("Название",,, МакетСоставаПоказателей.Область(ВерхОбласти, 2, ВерхОбласти, 2).ШиринаКолонки);
Для НомСтр = ВерхОбласти По НизОбласти Цикл
КодПоказателя = СокрП(МакетСоставаПоказателей.Область(НомСтр, 1).Текст);
Если КодПоказателя <> "###" Тогда
НовСтрока = ТаблСписка.Добавить();
НовСтрока.Код = КодПоказателя;
НовСтрока.Название = СокрП(МакетСоставаПоказателей.Область(НомСтр, 2).Текст);
КонецЕсли;
КонецЦикла;
КоллекцияСписковВыбора.Вставить(Область.Имя, ТаблСписка);
КонецЕсли;
КонецЦикла;
СвойстваПоказателей.Очистить();
РегламентированнаяОтчетность.ДобавитьСтрокуОписанияВвода(СвойстваПоказателей, "ПрПодп", 1, , "Выбор подписанта", КоллекцияСписковВыбора["Подписант"]);
РегламентированнаяОтчетность.ДобавитьСтрокуОписанияВвода(СвойстваПоказателей, "ШифрСтрах1Часть", 3, , "Выбор шифра", КоллекцияСписковВыбора["ШифрыСтрахователя"]);
РегламентированнаяОтчетность.ДобавитьСтрокуОписанияВвода(СвойстваПоказателей, "ШифрСтрах2Часть", 2, , "Выбор расширения шифра", КоллекцияСписковВыбора["РасширенияШифра"]);
РегламентированнаяОтчетность.ДобавитьСтрокуОписанияВвода(СвойстваПоказателей, "ШифрСтрах3Часть", 2, , "Выбор дополнительного шифра", КоллекцияСписковВыбора["ДополнительныеШифры"]);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиПоказатель(Элемент, Область, КодПоказателя, Знач ЭтоСумма, Знач ТекстВыбора, ТаблицаВыбора, СтандартнаяОбработка, КолонкаПоиска = "Код") Экспорт
Если ТаблицаВыбора = Неопределено ИЛИ СтруктураРеквизитовФормы.мАвтоВыборКодов Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если Область.Имя = КодПоказателя Тогда
ИсходноеЗначение = ?(ТипЗнч(Область.Значение) = Тип("Строка"), СокрЛП(Область.Значение), Область.Значение);
Иначе
Разделитель = ?(Лев(Область.Имя, СтрДлина(КодПоказателя) + 1) = КодПоказателя + "_", "_", "");
ИндексОбласти = 1;
ИсходноеЗначение = "";
Пока ЭтаФорма[ТекущийЭлемент.Имя].Области.Найти(КодПоказателя + Разделитель + Формат(ИндексОбласти, "ЧГ=")) <> Неопределено Цикл
ИсходноеЗначение = ИсходноеЗначение + Строка(ЭтаФорма[ТекущийЭлемент.Имя].Области[КодПоказателя + Разделитель + Формат(ИндексОбласти, "ЧГ=")].Значение);
ИндексОбласти = ИндексОбласти + 1;
КонецЦикла;
ИсходноеЗначение = СокрЛП(ИсходноеЗначение);
КонецЕсли;
ПрПодписанта = ТабличныйДокумент.Области.ПрПодп.Значение;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Заголовок", ТекстВыбора);
ПараметрыФормы.Вставить("ТаблицаЗначений", ТаблицаВыбора);
ПараметрыФормы.Вставить("СтруктураДляПоиска", Новый Структура(КолонкаПоиска, ИсходноеЗначение));
ДополнительныеПараметры = Новый Структура("ИндексОбласти, КодПоказателя, КолонкаПоиска, Область, ПрПодписанта, Разделитель", ИндексОбласти, КодПоказателя, КолонкаПоиска, Область, ПрПодписанта, Разделитель);
ОписаниеОповещения = Новый ОписаниеОповещения("ВвестиПоказательЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаВыбораЗначенияИзТаблицы", ПараметрыФормы, ЭтаФорма,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиПоказательЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
ИндексОбласти = ДополнительныеПараметры.ИндексОбласти;
КодПоказателя = ДополнительныеПараметры.КодПоказателя;
КолонкаПоиска = ДополнительныеПараметры.КолонкаПоиска;
Область = ДополнительныеПараметры.Область;
ПрПодписанта = ДополнительныеПараметры.ПрПодписанта;
Разделитель = ДополнительныеПараметры.Разделитель;
Если РезультатВыбора = Неопределено Тогда
Возврат;
КонецЕсли;
Если Область.Имя = КодПоказателя Тогда
Область.Значение = РезультатВыбора[КолонкаПоиска];
Иначе
СтрокаРезультатВыбора = Строка(РезультатВыбора[КолонкаПоиска]);
Для Инд = СтрДлина(СтрокаРезультатВыбора) + 1 По ИндексОбласти - 1 Цикл
СтрокаРезультатВыбора = " " + РезультатВыбора[КолонкаПоиска];
КонецЦикла;
Для Инд = 1 По ИндексОбласти - 1 Цикл
ЭтаФорма[ТекущийЭлемент.Имя].Области[КодПоказателя + Разделитель + Формат(Инд, "ЧГ=")].Значение = СокрЛП(Сред(РезультатВыбора[КолонкаПоиска], Инд, 1));
КонецЦикла;
КонецЕсли;
Если Область.Имя = "ПрПодп" Тогда
ПрПодписантаНов = ТабличныйДокумент.Области.ПрПодп.Значение;
СменилсяПрПодписанта = ?(ПрПодписанта = ПрПодписантаНов, Ложь, Истина);
Если СменилсяПрПодписанта Тогда
Если ПрПодписантаНов = "1" Тогда
ЗаполнитьСведенияОбОрганизацииНаСервере(Истина);
Иначе
ТабличныйДокумент.Области.ДокУпПред.Защита = Ложь;
ТабличныйДокумент.Области.ДокУпПред.ЦветФона = СтруктураРеквизитовФормы.ЦветЖелтый;
ТабличныйДокумент.Области.ОргПодписантФамилия.Значение = "";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура НачальнаяПодготовкаФормы()
Перем ИсходноеКоличествоСтрокГруппы;
Если СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически Тогда
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
Иначе
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецЕсли;
СтруктураРеквизитовФормы.мДокументВосстановлен = Ложь;
СтруктураРеквизитовФормы.мАвтоВыборКодов = Ложь;
СтруктураРеквизитовФормы.ФлагСохранения = Ложь;
СтруктураРеквизитовФормы.мРежимПечати = Ложь;
СтруктураРеквизитовФормы.ВидДокумента = 0;
НомерКорректировки = 1;
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
НачальныеОперацииСМногострочнымиБлоками();
мСтруктураДокУпПред = Новый Структура;
мСтруктураДокУпПред.Вставить("НаименованиеУдостоверяющего", " ");
мСтруктураДокУпПред.Вставить("СерияРимскиеЦифры", " ");
мСтруктураДокУпПред.Вставить("СерияРусскиеБуквы", " ");
мСтруктураДокУпПред.Вставить("НомерУдостоверяющего", " ");
мСтруктураДокУпПред.Вставить("ДатаВыдачи", "");
мСтруктураДокУпПред.Вставить("КемВыдан", " ");
Если СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено Тогда
ВосстановитьСохраненныеДанные();
Иначе
СтруктураРеквизитовФормы.ЕдиницаИзмерения = Перечисления.ПорядкиОкругленияОтчетности.Окр1;
СтруктураРеквизитовФормы.мДелитель = 1;
СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения = 2;
ОтобразитьНомерКорректировки(ЭтаФорма);
КопироватьДанныеФормы(мДеревоСтраницОтчета, мДеревоВыбранныхСтраниц);
КонецЕсли;
Модифицированность = Истина;
Иначе
ВосстановитьСохраненныеДанные();
Если ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСкопированаФорма) Тогда
СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено;
Модифицированность = Истина;
КонецЕсли;
Если НЕ СтруктураРеквизитовФормы.мБезОткрытияФормы
И НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
ЗаблокироватьДанныеДляРедактирования(СтруктураРеквизитовФормы.мСохраненныйДок, , ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
РегламентированнаяОтчетность.ПолучитьСведенияОПоказателяхОтчета(ЭтаФорма, ПараметрыОтчета);
Если НЕ СтруктураРеквизитовФормы.ОтображатьКнопкуЗаполнить Тогда
Элементы.Заполнить.Видимость = Ложь;
КонецЕсли;
Если НЕ СтруктураРеквизитовФормы.ОтображатьКнопкуРасшифровать Тогда
Элементы.Расшифровать.Видимость = Ложь;
Элементы.ТабличныйДокументКонтекстноеМенюРасшифровать.Видимость = Ложь;
КонецЕсли;
ПоказатьПериод();
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено
Или СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация
ИЛИ СтруктураРеквизитовФормы.СформироватьФормуОтчетаАвтоматически Тогда
ЗаполнитьДатуВЯчейкахНаСервере();
ЗаполнитьСведенияОбОрганизацииНаСервере();
Иначе
РегламентированнаяОтчетность.ПолучитьЗначениеОКВЭД(ДатаПодписи, СтруктураРеквизитовФормы);
КонецЕсли;
Для Каждого СтрокаУровня1 Из мСвойстваРазделовДекларации.ПолучитьЭлементы() Цикл
НазваниеСтраницы = СтрокаУровня1.ИмяСтраницы;
МногостраничностьВРазделе = СтрокаУровня1.МногостраничностьВРазделе;
Если (НазваниеСтраницы = "Титульный") Тогда
Продолжить;
КонецЕсли;
Если (СтруктураРеквизитовФормы.мДокументВосстановлен) И (МногостраничностьВРазделе) Тогда
Продолжить;
КонецЕсли;
УстановитьЦветФонаЯчейкиНаСервере(,, НазваниеСтраницы);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьОбластей();
Если ТабличныйДокумент.Области.ПрПодп.Значение = "1" Тогда
ТабличныйДокумент.Области.ДокУпПред.Защита = Истина;
ТабличныйДокумент.Области.ДокУпПред.ЦветФона = СтруктураРеквизитовФормы.ЦветБелый;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НачальныеОперацииСМногострочнымиБлоками()
Перем ИсходноеКоличествоСтрокГруппы;
Для Каждого ЭлементСтруктуры Из мСтруктураМногострочныхРазделов Цикл
ИмяГруппы = ЭлементСтруктуры.Ключ;
СтруктураГруппы = ЭтаФорма[ЭлементСтруктуры.Значение];
мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);
Для НСтр = 1 По ИсходноеКоличествоСтрокГруппы Цикл
СтруктураГруппы.Добавить();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОтобразитьНомерКорректировки(Форма)
НомерКорр = Форма.СтруктураРеквизитовФормы.ВидДокумента * Форма.НомерКорректировки;
НомерКорректировкиСтрока = Формат(НомерКорр, "ЧН=0; ЧГ=");
СтрДлинаНомерКорректировкиСтрока = СтрДлина(НомерКорректировкиСтрока);
НомерКорректировкиСтрока = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(НомерКорректировкиСтрока,3,"0",0);
Форма.ТабличныйДокумент.Области.НомерКорректировки.Значение = НомерКорректировкиСтрока;
Конецпроцедуры
&НаСервере
Процедура ПоказатьПериод()
НомерМесяца = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=М");
Если НомерМесяца = "12" Тогда
НомерМесяца = "0";
КонецЕсли;
МассивМесяцев = РегламентированнаяОтчетностьКлиентСервер.РазобратьСтрокуВМассивПоРазделителю("1.2.4.5.7.8.10.11");
Если МассивМесяцев.Найти(НомерМесяца) <> Неопределено Тогда
НомерМесяца = "1";
КонецЕсли;
НомерКвартала = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=к");
СтруктураРеквизитовФормы.НомерГода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=гггг");
КодПериода = Формат(КонецКвартала(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета), "ДФ=ММ");
КодПериода = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(КодПериода,2,0);
ЗаполнениеПериодаОтчетаПоПриказу1385н = (КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) >= КонецГода('20111231'));
Если ЗаполнениеПериодаОтчетаПоПриказу1385н Тогда
КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
Если КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12" Тогда
ТабличныйДокумент.Области.Период.Значение = КодПериода;
КонецЕсли;
Иначе
ТабличныйДокумент.Области.Период.Значение = КодПериода;
КонецЕсли;
ТабличныйДокумент.Области.ОтчетГод.Значение = СтруктураРеквизитовФормы.НомерГода;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуВЯчейкахНаСервере() Экспорт
ЗаполнитьДатуВЯчейках(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуВЯчейкахНаКлиенте() Экспорт
ЗаполнитьДатуВЯчейках(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьДатуВЯчейках(Форма)
Форма.ТабличныйДокумент.Области.ДатаПодписи.Значение = Форма.ДатаПодписи;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСведенияОбОрганизацииНаСервере(ВПрограммеИзмененаДатаПодписи = Ложь)
ЗаполнитьСведенияОбОрганизации(ЭтаФорма, ВПрограммеИзмененаДатаПодписи);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьСведенияОбОрганизации(Форма, ВПрограммеИзмененаДатаПодписи = Ложь, СменилсяПризнакПодписанта = Ложь)
Если (Форма.СтруктураРеквизитовФормы.Организация = Неопределено) Или (Форма.СтруктураРеквизитовФормы.Организация = РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа("СправочникСсылка.Организации")) Тогда
Возврат
КонецЕсли;
ПБОЮЛ = НЕ РегламентированнаяОтчетностьВызовСервера.ЭтоЮридическоеЛицо(Форма.СтруктураРеквизитовФормы.Организация);
Сведения = Новый СписокЗначений;
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
Сведения.Добавить("", "ИННЮЛ");
Сведения.Добавить("", "КППЮЛ");
Сведения.Добавить("", "НаимЮЛПол");
Сведения.Добавить("", "ОГРН");
Сведения.Добавить("", "ОКАТО");
Сведения.Добавить("", "ОКПО");
Сведения.Добавить("", "ОКОПФ");
Сведения.Добавить("", "ОКФС");
Сведения.Добавить("", "РегистрационныйНомерФСС");
Сведения.Добавить("", "КодПодчиненностиФСС");
Сведения.Добавить("", "АдрЮР");
Сведения.Добавить("", "АдрПрописки");
КонецЕсли;
Сведения.Добавить("", "ФИОРук");
Сведения.Добавить("", "ФИО");
Сведения.Добавить("", "ТелОрганизации");
Сведения.Добавить("", "ТелСлуж");
ОргСведения = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Форма.СтруктураРеквизитовФормы.Организация, Форма.ДатаПодписи, Сведения);
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
ИННЮЛ = "";
КППЮЛ = "";
НаимЮЛПол = "";
ОГРН = "";
ОКАТО = "";
ОКПО = "";
ОКОПФ = "";
ОКФС = "";
РегистрационныйНомерФСС = "";
КодПодчиненностиФСС = "";
АдрЮР = "";
АдрПрописки = "";
КонецЕсли;
ФИОРук = "";
ФИО = "";
ТелОрганизации = "";
ТелСлуж = "";
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
ОргСведения.Свойство("ИННЮЛ", ИННЮЛ);
ОргСведения.Свойство("КППЮЛ", КППЮЛ);
ОргСведения.Свойство("НаимЮЛПол", НаимЮЛПол);
ОргСведения.Свойство("ОГРН", ОГРН);
ОргСведения.Свойство("ОКАТО", ОКАТО);
ОргСведения.Свойство("ОКПО", ОКПО);
ОргСведения.Свойство("ОКОПФ", ОКОПФ);
ОргСведения.Свойство("ОКФС", ОКФС);
ОргСведения.Свойство("РегистрационныйНомерФСС", РегистрационныйНомерФСС);
ОргСведения.Свойство("КодПодчиненностиФСС", КодПодчиненностиФСС);
ОргСведения.Свойство("АдрЮР", АдрЮР);
ОргСведения.Свойство("АдрПрописки", АдрПрописки);
КонецЕсли;
ОргСведения.Свойство("ФИОРук", ФИОРук);
ОргСведения.Свойство("ФИО", ФИО);
ОргСведения.Свойство("ТелОрганизации", ТелОрганизации);
ОргСведения.Свойство("ТелСлуж", ТелСлуж);
Если ПБОЮЛ Тогда
НаимЮлПол = ФИО;
Адрес = АдрПрописки;
ТелОрганизации = ТелСлуж;
ФИОРук = ФИО;
КонецЕсли;
РегламентированнаяОтчетность.ПолучитьЗначениеОКВЭД(Форма.ДатаПодписи, Форма.СтруктураРеквизитовФормы);
РегламентированнаяОтчетностьКлиентСервер.УстановитьЗначениеОКВЭД(Форма.ДатаПодписи,
Форма.СтруктураРеквизитовФормы,
Форма.ТабличныйДокумент.Области.ОКВЭД.Значение);
Если ВПрограммеИзмененаДатаПодписи Тогда
Форма.ТабличныйДокумент.Области.ПрПодп.Значение = "1";
Форма.ТабличныйДокумент.Области.ОргПодписантФамилия.Значение = ФИОРук;
ЗапретитьВводДокументаПредставителя(Форма);
Возврат;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОргНазв.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОргНазв.Значение = НаимЮЛПол;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ПрПодп.Значение)) Или (СменилсяПризнакПодписанта) Тогда
Форма.ТабличныйДокумент.Области.ПрПодп.Значение = "1";
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОргПодписантФамилия.Значение)) Или (СменилсяПризнакПодписанта) Тогда
Форма.ТабличныйДокумент.Области.ОргПодписантФамилия.Значение = ФИОРук;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ДокУпПред.Значение)) Или (СменилсяПризнакПодписанта) Тогда
ЗапретитьВводДокументаПредставителя(Форма);
КонецЕсли;
ИННЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(ИННЮЛ,12,"0",0);
КППЮЛ = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(КППЮЛ,9,"-",1);
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ИНН.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ИНН.Значение = ИННЮЛ;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.КПП.Значение)) Тогда
Форма.ТабличныйДокумент.Области.КПП.Значение = КППЮЛ;
КонецЕсли;
ОГРН = РегламентированнаяОтчетностьКлиентСервер.ДополнитьСтроку(СокрЛП(ОГРН),15,"0",0);
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОГРН.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОГРН.Значение = ОГРН;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ТелОрганизации.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ТелОрганизации.Значение = ТелОрганизации;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОКАТО.Значение) Тогда
Форма.ТабличныйДокумент.Области.ОКАТО.Значение = ОКАТО;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОКПО.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОКПО.Значение = ОКПО;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОКОПФ.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОКОПФ.Значение = ОКОПФ;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОКФС.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОКФС.Значение = ОКФС;
КонецЕсли;
Если Не ПБОЮЛ Тогда
Адрес = АдрЮр;
КонецЕсли;
СтруктураАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(Адрес);
Если Не СтруктураАдреса = Неопределено Тогда
Форма.ТабличныйДокумент.Области.Адрес1.Значение = СтруктураАдреса.Индекс;
Форма.ТабличныйДокумент.Области.Адрес2.Значение = СтруктураАдреса.Регион;
Форма.ТабличныйДокумент.Области.Адрес3.Значение = СтруктураАдреса.Район;
Форма.ТабличныйДокумент.Области.Адрес4.Значение = СтруктураАдреса.Город;
Форма.ТабличныйДокумент.Области.Адрес5.Значение = СтруктураАдреса.НаселенныйПункт;
Форма.ТабличныйДокумент.Области.Адрес6.Значение = СтруктураАдреса.Улица;
Форма.ТабличныйДокумент.Области.Адрес7.Значение = СтруктураАдреса.Дом;
Форма.ТабличныйДокумент.Области.Адрес8.Значение = СтруктураАдреса.Корпус;
Форма.ТабличныйДокумент.Области.Адрес9.Значение = СтруктураАдреса.Квартира;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.ОргФССКод.Значение)) Тогда
Форма.ТабличныйДокумент.Области.ОргФССКод.Значение = РегистрационныйНомерФСС;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) ИЛИ (НЕ ЗначениеЗаполнено(Форма.ТабличныйДокумент.Области.КодПодчиненности.Значение)) Тогда
Форма.ТабличныйДокумент.Области.КодПодчиненности.Значение = КодПодчиненностиФСС;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗапретитьВводДокументаПредставителя(Форма)
Форма.ТабличныйДокумент.Области.ДокУпПред.Значение = "";
Форма.мСтруктураДокУпПред.Вставить("НаименованиеУдостоверяющего", " ");
Форма.мСтруктураДокУпПред.Вставить("СерияРимскиеЦифры", " ");
Форма.мСтруктураДокУпПред.Вставить("СерияРусскиеБуквы", " ");
Форма.мСтруктураДокУпПред.Вставить("НомерУдостоверяющего", " ");
Форма.мСтруктураДокУпПред.Вставить("ДатаВыдачи", "");
Форма.мСтруктураДокУпПред.Вставить("КемВыдан", " ");
Форма.ТабличныйДокумент.Области.ДокУпПред.Защита = Истина;
Форма.ТабличныйДокумент.Области.ДокУпПред.ЦветФона = Форма.СтруктураРеквизитовФормы.ЦветБелый;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьРазмерСтраховогоТарифа(Форма)
Сведения = Новый СписокЗначений;
Сведения.Добавить("", "СтраховойТариф");
СтраховойТариф = Неопределено;
ОргСведения = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Форма.СтруктураРеквизитовФормы.Организация, Форма.СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, Сведения);
ОргСведения.Свойство("СтраховойТариф", СтраховойТариф);
Возврат ?(СтраховойТариф = Неопределено, 0, СтраховойТариф);
КонецФункции
&НаСервере
Процедура ЗаполнитьПустыеСтруктурыДанных()
СохрТабличныйДокумент = Новый ТабличныйДокумент;
СохрТабличныйДокумент.Вывести(ТабличныйДокумент);
Для Каждого Раздел Из мСвойстваРазделовДекларации.ПолучитьЭлементы() Цикл
Если НЕ Раздел.МногостраничностьВРазделе
И (ЭтаФорма["СтруктураДанных" + Раздел.ИмяСтраницы].Количество() = 0) Тогда
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(Сред(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, "ФормаОтчета")) + "_" + Раздел.ИмяСтраницы));
СохранитьДанныеРаздела(Раздел.ИмяСтраницы, Ложь);
ИначеЕсли Раздел.МногостраничностьВРазделе
И (ЭтаФорма[мСтруктураМногостраничныхРазделов[Раздел.ИмяСтраницы]][0].Данные.Количество() = 0) Тогда
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(Сред(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, "ФормаОтчета")) + "_" + Раздел.ИмяСтраницы));
СохранитьДанныеРаздела(Раздел.ИмяСтраницы, Ложь);
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СохрТабличныйДокумент);
КонецПроцедуры
&НаСервере
Процедура СохранитьДанныеРаздела(НаимРаздела, ОчищатьРазделЕслиЕстьМногострочность, ИзменятьАктивнуюСтраницу = Истина)
Если НаимРаздела = "Раздел1_4" Тогда
ЭтаФорма["СтруктураДанных" + НаимРаздела] = СобратьДанныеТекущегоТаблПоля(ЭтаФорма, "ТабличныйДокумент");
ИмяГруппы = ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(НаимРаздела);
ОбновитьСтруктуруМногострочногоРаздела(ЭтаФорма, ИмяГруппы);
Иначе
ЭтаФорма["СтруктураДанных" + НаимРаздела] = СобратьДанныеТекущегоТаблПоля(ЭтаФорма, "ТабличныйДокумент");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьДеревоНастройкиСтраниц(Знач мСохраненныйДок)
Если мСохраненныйДок <> Неопределено Тогда
Если ТипЗнч(мСохраненныйДок) = Тип("ДокументСсылка.РегламентированныйОтчет") Тогда
мСохраненныйДок = мСохраненныйДок.ПолучитьОбъект();
КонецЕсли;
Если Не мСохраненныйДок.ЭтоНовый() Тогда
ХранилищеДанных = Новый ХранилищеЗначения(РеквизитФормыВЗначение("мДеревоСтраницОтчета"));
мСохраненныйДок.ДеревоНастройкиСтраниц = ХранилищеДанных;
Попытка
мСохраненныйДок.Записать();
Исключение
КонецПопытки;
КонецЕсли;
КонецЕсли;
Конецпроцедуры
&НаСервере
Функция СобратьДанныеТекущегоТаблПоляНаСервере(ИмяТабличногоПоля) Экспорт
Возврат СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);
КонецФункции
&НаКлиенте
Функция СобратьДанныеТекущегоТаблПоляНаКлиенте(ИмяТабличногоПоля) Экспорт
Возврат СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СобратьДанныеТекущегоТаблПоля(Форма, ИмяТабличногоПоля) Экспорт
СтруктураДанныхПоля = Новый Структура;
Для Инд = 0 По Форма[ИмяТабличногоПоля].Области.Количество() - 1 Цикл
ТекущаяОбласть = Форма[ИмяТабличногоПоля].Области[Инд];
Если Не ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
Продолжить;
КонецЕсли;
Если ТекущаяОбласть.СодержитЗначение <> Истина Тогда
Продолжить;
КонецЕсли;
ИмяПоказателя = ТекущаяОбласть.Имя;
ЗначениеПоказателя = ТекущаяОбласть.Значение;
СтруктураДанныхПоля.Вставить(ИмяПоказателя, ЗначениеПоказателя);
КонецЦикла;
Возврат СтруктураДанныхПоля;
КонецФункции
&НаКлиенте
Процедура ОчиститьТабличноеПолеНаКлиенте(ВыбТабличноеПолеИмя) Экспорт
ОчиститьТабличноеПоле(ЭтаФорма, ВыбТабличноеПолеИмя);
КонецПроцедуры
&НаСервере
Процедура ОчиститьТабличноеПолеНаСервере(ВыбТабличноеПолеИмя) Экспорт
ОчиститьТабличноеПоле(ЭтаФорма, ВыбТабличноеПолеИмя);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьТабличноеПоле(Форма, ВыбТабличноеПолеИмя)
РегламентированнаяОтчетностьКлиентСервер.ОчиститьТабличноеПоле(Форма, ВыбТабличноеПолеИмя);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПодписиПриИзмененииНаКлиенте()
ЗаполнитьСведенияОбОрганизацииНаСервере(Истина);
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ЗаполнитьДатуВЯчейкахНаКлиенте();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецПроцедуры
&НаСервере
Процедура ДатаПодписиПриИзмененииНаСервере()
ЗаполнитьСведенияОбОрганизацииНаСервере(Истина);
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ЗаполнитьДатуВЯчейкахНаСервере();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ОбновитьНаСервере();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ОбновитьНаСервере()
ЗаполнитьСведенияОбОрганизации(ЭтаФорма);
СтруктураДанныхРаздел2_1.Вставить("П000060001006", ПолучитьРазмерСтраховогоТарифа(ЭтаФорма));
РасчетВСтруктуре(ЭтаФорма, "Раздел2_1");
КонецПроцедуры
&НаКлиенте
Процедура РазделыОтчетаПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущиеДанные = Неопределено
ИЛИ Элемент.ТекущаяСтрока = СтруктураРеквизитовФормы.ТекущаяСтрокаРазделовОтчета Тогда
Возврат;
КонецЕсли;
СтруктураРеквизитовФормы.ТекущаяСтрокаРазделовОтчета = Элемент.ТекущаяСтрока;
Элементы.ОчиститьТекущуюСтраницу.Доступность = Истина;
Если СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере Тогда
Если Элемент.ТекущиеДанные.РазделМногостраничный Тогда
Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = ?(Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = Неопределено
ИЛИ Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета = 0, 1, Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета);
КонецЕсли;
ВывестиМакетСтраницыВТабличныйДокументНаСервере(Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим, Элемент.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета);
Иначе
СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Истина;
КонецЕсли;
Если Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим = "Титульный" Тогда
Элементы.Обновить.Доступность = Истина;
Иначе
Элементы.Обновить.Доступность = Ложь;
КонецЕсли;
КМенюТД = Элементы.ТабличныйДокумент.КонтекстноеМеню;
Если Элемент.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим = "Раздел1_4" Тогда
КМенюТД.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюГруппаСтроки.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюУдалитьСтроку.Видимость = Истина;
КМенюТД.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюГруппаСтроки.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюДобавитьСтроку.Видимость = Истина;
Иначе
КМенюТД.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюГруппаСтроки.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюУдалитьСтроку.Видимость = Ложь;
КМенюТД.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюГруппаСтроки.ПодчиненныеЭлементы.ТабличныйДокументКонтекстноеМенюДобавитьСтроку.Видимость = Ложь;
КонецЕсли;
Элементы.ТабличныйДокумент.ТекущаяОбласть = ТабличныйДокумент.Область(1, 1);
КонецПроцедуры
&НаСервере
Процедура ВывестиМакетСтраницыВТабличныйДокументНаСервере(ИмяТекРаздела, НомерСтраницыРазделаОтчета)
СохранитьДанныеРаздела(СтруктураРеквизитовФормы.НаимТекущегоРаздела, Истина);
ВывестиМакетВТаблДокНаСервере(ИмяТекРаздела, НомерСтраницыРазделаОтчета);
СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекРаздела;
КонецПроцедуры
&НаСервере
Процедура ВывестиМакетВТаблДокНаСервере(ИмяТекРаздела, НомерСтраницыРазделаОтчета)
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(Сред(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, "ФормаОтчета")) + "_" + ИмяТекРаздела));
Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
МодульРегламентированнаяОтчетностьИнтерфейс85 = ОбщегоНазначения.ОбщийМодуль("РегламентированнаяОтчетностьИнтерфейс85");
МодульРегламентированнаяОтчетностьИнтерфейс85.УстановитьТипОтображенияРедактируемойЯчейкиТабличногоДокумента(ТабличныйДокумент);
КонецЕсли;
Если ИмяТекРаздела = "Раздел1_4" Тогда
Для Каждого ЭлСтруктуры Из ЭтаФорма["СтруктураДанных" + ИмяТекРаздела] Цикл
Обл = ТабличныйДокумент.Области.Найти(ЭлСтруктуры.Ключ);
Если Обл <> Неопределено И Обл.СодержитЗначение Тогда
Обл.Значение = ЭлСтруктуры.Значение;
КонецЕсли;
КонецЦикла;
ИмяГруппы = ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ИмяТекРаздела);
СтруктураГруппы = Неопределено;
мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы);
СтруктураГруппы = ЭтаФорма[СтруктураГруппы];
ВывестиРазделВТабличныйДокумент(ЭтаФорма, ИмяГруппы, СтруктураГруппы);
РегламентированнаяОтчетностьКлиентСервер.ОтрисоватьЗначкиУдаленияСтрок(ЭтаФорма);
Иначе
Для Каждого ЭлСтруктуры Из ЭтаФорма["СтруктураДанных" + ИмяТекРаздела] Цикл
Обл = ТабличныйДокумент.Области.Найти(ЭлСтруктуры.Ключ);
Если Обл <> Неопределено И Обл.СодержитЗначение Тогда
Обл.Значение = ЭлСтруктуры.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ИмяТекРаздела = "Титульный" Тогда
УстановитьДоступностьОбластей();
Иначе
УстановитьФорматВыводаВПоляхВводаНаСервере(ИмяТекРаздела);
УстановитьЦветФонаЯчейкиНаСервере(,, ИмяТекРаздела);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиРазделВТабличныйДокументНаКлиенте(ИмяГруппы, СтруктураГруппы) Экспорт
ВывестиРазделВТабличныйДокумент(ЭтаФорма, ИмяГруппы, СтруктураГруппы);
КонецПроцедуры
&НаСервере
Процедура ВывестиРазделВТабличныйДокументНаСервере(ИмяГруппы, СтруктураГруппы) Экспорт
ВывестиРазделВТабличныйДокумент(ЭтаФорма, ИмяГруппы, СтруктураГруппы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВывестиРазделВТабличныйДокумент(Форма, ИмяГруппы, СтруктураГруппы)
Перем ИсходноеКоличествоСтрокГруппы;
Форма.мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);
ТекущееКоличествоСтрокГруппы = СтруктураГруппы.Количество();
ТекТабличноеПолеИмя = "ТабличныйДокумент";
ТекТабличноеПоле = Форма[ТекТабличноеПолеИмя];
Если ТекущееКоличествоСтрокГруппы > ИсходноеКоличествоСтрокГруппы Тогда
Форма.ДобавитьНеобходимоеКоличествоДопСтрокНаСервере(ТекТабличноеПоле, ТекТабличноеПолеИмя, ИсходноеКоличествоСтрокГруппы, ТекущееКоличествоСтрокГруппы, ИмяГруппы, СтруктураГруппы);
Форма[ТекТабличноеПолеИмя] = ТекТабличноеПоле;
КонецЕсли;
Для Каждого СтрокаТаблицы Из СтруктураГруппы Цикл
НомерСтрокиВТаблице = СтруктураГруппы.Индекс(СтрокаТаблицы);
НомерСтрокиВФормеТаблицы = НомерСтрокиВТаблице + 1;
Для НомерГрафы = 1 По Форма.мСтруктураКолвоКолонокРазделов[ИмяГруппы] Цикл
КолонкаТаблицыИмя = ИмяГруппы + Формат(НомерГрафы, "ЧЦ=2; ЧВН=");
Если СтруктураГруппы[0].Свойство(КолонкаТаблицыИмя) Тогда
ИмяЯчейки = КолонкаТаблицыИмя + "_" + НомерСтрокиВФормеТаблицы;
ОбластьЯчейкиТаблицы = ТекТабличноеПоле.Области[ИмяЯчейки];
ЗначениеЯчейки = СтрокаТаблицы[КолонкаТаблицыИмя];
Если ОбластьЯчейкиТаблицы.СодержитЗначение = Истина Тогда
ОбластьЯчейкиТаблицы.Значение = ЗначениеЯчейки;
Иначе
ОбластьЯчейкиТаблицы.Текст = ЗначениеЯчейки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоказателиОтчетаНаСервере(ПоказателиОтчета)
Префикс = "ПолеТабличногоДокумента";
Для Каждого Раздел Из мСвойстваРазделовДекларации.ПолучитьЭлементы() Цикл
Если НЕ Раздел.МногостраничностьВРазделе Тогда
ПоказателиОтчета.Вставить(Префикс + Раздел.ИмяСтраницы, ЭтаФорма["СтруктураДанных" + Раздел.ИмяСтраницы]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьОтчет(Команда)
Если Элементы.РазделыОтчета.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СохранитьНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиенте(Автосохранение = Ложь, ВыполняемоеОповещение = Неопределено) Экспорт
Вариант = СтруктураРеквизитовФормы.ВидДокумента * НомерКорректировки;
Если НЕ РегламентированнаяОтчетностьКлиент.ПриЗаписиРегламентированногоОтчетаНаКлиенте(ЭтаФорма, , Автосохранение, Вариант) Тогда
Возврат;
КонецЕсли;
ПодобныйОтчетСуществует = Ложь;
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = Ложь;
Если Элементы.РазделыОтчета.ТекущиеДанные = Неопределено Тогда
НаименованиеТекущегоРаздела = СтруктураРеквизитовФормы.НаимТекущегоРаздела;
Иначе
НаименованиеТекущегоРаздела = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
КонецЕсли;
РезультатСохранения = ПередСохранением(, ПодобныйОтчетСуществует, Вариант, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, Автосохранение, НаименованиеТекущегоРаздела);
ВидДокументаНомерКорректировкиИзменен = Неопределено;
Если ПодобныйОтчетСуществует И Автосохранение Тогда
Возврат;
КонецЕсли;
НуженВопросПередСохранением = (ПодобныйОтчетСуществует ИЛИ ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
Если НуженВопросПередСохранением Тогда
СохранитьНаКлиентеСВопросом(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПодобныйОтчетСуществует);
Иначе
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиентеСВопросом(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПодобныйОтчетСуществует)
Если ПодобныйОтчетСуществует Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, "Сохранить");
Кнопки.Добавить(КодВозвратаДиалога.Нет, "Отмена");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Отчет с видом %1 уже существует.
|Сохранить отчет с таким же видом?'"), ?(Вариант = 0, """Первичный""", """Корректирующий/" + Вариант + """"));
ДополнительныеПараметры = Новый Структура("Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки", Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСохранитьОтчетСТакимЖеВидомЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , Кнопки.Получить(1).Значение);
Иначе
СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросСохранитьОтчетСТакимЖеВидомЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Автосохранение = ДополнительныеПараметры.Автосохранение;
Вариант = ДополнительныеПараметры.Вариант;
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = ДополнительныеПараметры.ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки;
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки)
Если ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки Тогда
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ВидОтчета", Вариант);
ФормаВопроса = РегламентированнаяОтчетностьКлиент.ПолучитьОбщуюФормуПоИмени("ВопросПриИзмененииВидаДокументаНомераКорректировки", ПараметрыФормы);
ФормаВопроса.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
КодВозврата = Неопределено;
ДополнительныеПараметры = Новый Структура("Автосохранение, Вариант, ВыполняемоеОповещение", Автосохранение, Вариант, ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросПриИзмененииВидаДокументаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ФормаВопроса.ОписаниеОповещенияОЗакрытии = ОписаниеОповещения;
ФормаВопроса.Открыть();
Иначе
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Сохраняется %1...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Записать);
РезультатСохранения = Сохранить(Автосохранение, , Вариант, Неопределено, Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросПриИзмененииВидаДокументаЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт
Автосохранение = ДополнительныеПараметры.Автосохранение;
Вариант = ДополнительныеПараметры.Вариант;
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
Если КодВозврата = КодВозвратаДиалога.Да
ИЛИ КодВозврата = КодВозвратаДиалога.Нет Тогда
ВидДокументаНомерКорректировкиИзменен = ?(КодВозврата = КодВозвратаДиалога.Да, Истина, Ложь);
Иначе
Возврат;
КонецЕсли;
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Сохраняется %1...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Записать);
РезультатСохранения = Сохранить(Автосохранение, , Вариант, ВидДокументаНомерКорректировкиИзменен, Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения)
КлючУникальности = СтруктураРеквизитовФормы.мСохраненныйДок;
Если РезультатСохранения Тогда
РегламентированнаяОтчетностьКлиент.ПослеЗаписиРегламентированногоОтчета(ЭтаФорма);
Если ВыполняемоеОповещение <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПередСохранением(КодИФНС = "не применимо", ПодобныйОтчетСуществует, Вариант, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, Автосохранение, НаимТекРаздела)
Если РегламентированнаяОтчетность.БылиИзмененыКлючевыеРеквизитыОтчета(ЭтаФорма, КодИФНС)
И РегламентированнаяОтчетность.СуществуетДокументСАналогичнымиРеквизитами(ЭтаФорма, КодИФНС) Тогда
ПодобныйОтчетСуществует = Истина;
КонецЕсли;
СтруктураРеквизитовФормы.мЗаписываетсяНовыйДокумент = (СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено ИЛИ СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено);
Если Вариант <> Неопределено И ((СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено) ИЛИ (СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено) ИЛИ (Вариант <> СтруктураРеквизитовФормы.мВариант)) Тогда
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено ИЛИ СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено Тогда
ИначеЕсли Вариант <> СтруктураРеквизитовФормы.мВариант Тогда
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = Истина;
КонецЕсли;
КонецЕсли;
Если ПодобныйОтчетСуществует
ИЛИ ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки Тогда
Возврат Ложь;
КонецЕсли;
Возврат Сохранить(Автосохранение, , Вариант, , НаимТекРаздела);
КонецФункции
&НаСервере
Функция Сохранить(Автосохранение = Ложь, КодИФНС = "не применимо", Вариант, ВидДокументаНомерКорректировкиИзменен = Неопределено, НаимТекРаздела) Экспорт
ДанныеДляРазблокирования = Неопределено;
Если НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
Если НЕ СтруктураРеквизитовФормы.мБезОткрытияФормы Тогда
ДанныеДляРазблокирования = Новый Структура("Ключ,ИдФормы",
СтруктураРеквизитовФормы.мСохраненныйДок, ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.ПолучитьОбъект();
КонецЕсли;
Если НЕ РегламентированнаяОтчетность.ПриЗаписиРегламентированногоОтчетаНаСервере(ЭтаФорма, КодИФНС, Автосохранение, Вариант, ВидДокументаНомерКорректировкиИзменен, СтруктураРеквизитовФормы.мСохраненныйДок) Тогда
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Возврат Ложь;
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок.ИсточникОтчета = Метаданные.Отчеты[ИмяОтчета(ЭтаФорма.ИмяФормы)].Имя;
СтруктураРеквизитовФормы.мСохраненныйДок.НаименованиеОтчета = Метаданные.Отчеты[ИмяОтчета(ЭтаФорма.ИмяФормы)].ОсновнаяФорма.Синоним;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаНачала = СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
СтруктураРеквизитовФормы.мСохраненныйДок.ВыбраннаяФорма = СтруктураРеквизитовФормы.мВыбраннаяФорма;
СтруктураРеквизитовФормы.мСохраненныйДок.Организация = СтруктураРеквизитовФормы.Организация;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи = ДатаПодписи;
СтруктураРеквизитовФормы.мСохраненныйДок.ЕдиницаИзмерения = СтруктураРеквизитовФормы.ЕдиницаИзмерения;
СтруктураРеквизитовФормы.мСохраненныйДок.ТочностьЕдиницыИзмерения = СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения;
СтруктураРеквизитовФормы.мСохраненныйДок.ВидОтчетности = Перечисления.ВидыОтчетности.РегламентированнаяОтчетность;
СтруктураРеквизитовФормы.мСохраненныйДок.Комментарий = Комментарий;
СтруктураРеквизитовФормы.мСохраненныйДок.Вид = Вариант;
СтруктураРеквизитовФормы.мСохраненныйДок.ПредставлениеВида = РегламентированнаяОтчетность.ПредставлениеВидаДокумента(СтруктураРеквизитовФормы.мСохраненныйДок.Вид);
СтруктураРеквизитовФормы.мВариант = Вариант;
СтруктураРеквизитовФормы.мСохраненныйДок.ФорматВыгрузки = "Автоматически";
СохранитьДанныеРаздела(НаимТекРаздела, Ложь);
ЗаполнитьПустыеСтруктурыДанных();
ПоказателиОтчета = Новый Структура();
ЗаполнитьПоказателиОтчетаНаСервере(ПоказателиОтчета);
СписокСохранения = Новый Структура();
СписокСохранения.Вставить("ПоказателиОтчета", ПоказателиОтчета);
ДанныеМногострочныхРазделов = Новый Структура;
Для Каждого ЭлементСтруктуры Из мСтруктураМногострочныхРазделов Цикл
ДанныеМногострочныхРазделов.Вставить(ЭлементСтруктуры.Ключ, ДанныеФормыВЗначение(ЭтаФорма[ЭлементСтруктуры.Значение], Тип("ТаблицаЗначений")));
КонецЦикла;
СписокСохранения.Вставить("ДанныеМногострочныхРазделов", ДанныеМногострочныхРазделов);
ДанныеМногостраничныхРазделов = Новый Структура;
МассивТиповНеопределено = Новый Массив;
МассивТиповНеопределено.Добавить(Тип("Неопределено"));
ОписаниеТиповНеопределено = Новый ОписаниеТипов(МассивТиповНеопределено);
Для Каждого ЭлементСтруктуры Из мСтруктураМногостраничныхРазделов Цикл
ДанныеМногостраничныхРазделов.Вставить(ЭлементСтруктуры.Ключ, ДанныеФормыВЗначение(ЭтаФорма[ЭлементСтруктуры.Значение], Тип("ТаблицаЗначений")));
ТаблЗнач = Неопределено;
Если ДанныеМногостраничныхРазделов.Свойство(ЭлементСтруктуры.Ключ, ТаблЗнач) Тогда
Если НЕ ТаблЗнач.Колонки.Найти("Данные") = Неопределено Тогда
ТаблЗнач.Колонки.Удалить("Данные");
ТаблЗнач.Колонки.Добавить("Данные", ОписаниеТиповНеопределено);
Ном = 0;
Для Каждого СтрокаТаблЗнач Из ТаблЗнач Цикл
СтрокаТаблЗнач.Данные = ЭтаФорма[ЭлементСтруктуры.Значение][Ном].Данные[0].Значение;
Ном = Ном + 1;
КонецЦикла;
КонецЕсли;
Если НЕ ТаблЗнач.Колонки.Найти("ДанныеДопСтрок") = Неопределено Тогда
ТаблЗнач.Колонки.Удалить("ДанныеДопСтрок");
ТаблЗнач.Колонки.Добавить("ДанныеДопСтрок", ОписаниеТиповНеопределено);
Ном = 0;
Для Каждого СтрокаТаблЗнач Из ТаблЗнач Цикл
Если (ЭтаФорма[ЭлементСтруктуры.Значение][Ном].ДанныеДопСтрок.Количество() > 0)
И (ЭтаФорма[ЭлементСтруктуры.Значение][Ном].ДанныеДопСтрок[0].Представление = "ДанныеФормыКоллекцияТаблицаДопСтрокРаздела") Тогда
СтрокаТаблЗнач.ДанныеДопСтрок = ДанныеФормыВЗначение(ЭтаФорма[ЭлементСтруктуры.Значение][Ном].ДанныеДопСтрок[0].Значение, Тип("ТаблицаЗначений"));
Ном = Ном + 1;
Продолжить;
КонецЕсли;
СтруктураДанныхДопСтрок = Новый Структура;
Для Каждого ЭлСтруктуры Из ЭтаФорма[ЭлементСтруктуры.Значение][Ном].ДанныеДопСтрок Цикл
СтруктураДанныхДопСтрок.Вставить(ДанныеФормыВЗначение(ЭлСтруктуры.Значение, Тип("ТаблицаЗначений")));
КонецЦикла;
СтрокаТаблЗнач.ДанныеДопСтрок = СтруктураДанныхДопСтрок;
Ном = Ном + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
СписокСохранения.Вставить("ДанныеМногостраничныхРазделов", ДанныеМногостраничныхРазделов);
ДанныеВариантовАвтоЗаполнения = Новый Структура;
Для Каждого ЭлементСтруктуры Из мСтруктураВариантыЗаполнения Цикл
МассивТаблЗнач = Новый Массив;
ДанныеВариантовАвтоЗаполнения.Вставить(ЭлементСтруктуры.Ключ, МассивТаблЗнач);
Для Каждого ЭлементМассива Из ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ] Цикл
МассивТаблЗнач.Добавить(ДанныеФормыВЗначение(ЭлементМассива.ТаблицаВариантовЗаполнения, Тип("ТаблицаЗначений")));
КонецЦикла;
КонецЦикла;
СписокСохранения.Вставить("ДанныеВариантовАвтоЗаполнения", ДанныеВариантовАвтоЗаполнения);
СписокСохранения.Вставить("АвторасчетОтключен", СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет);
СписокСохранения.Вставить("ВерсияФормы", СтруктураРеквизитовФормы.мВерсияФормы);
СписокСохранения.Вставить("ФлПодсчетСтраниц", СтруктураРеквизитовФормы.мСчетчикСтраниц);
СписокСохранения.Вставить("ФлОтклВыборЗначений", СтруктураРеквизитовФормы.мАвтоВыборКодов);
СписокСохранения.Вставить("ДокументУпПред", мСтруктураДокУпПред);
СтруктураРеквизитовФормы.мКодОрганаФСС = СокрЛП(СтруктураДанныхТитульный.КодОрганаФСС);
СписокСохранения.Вставить("КодОрганаФСС", СтруктураРеквизитовФормы.мКодОрганаФСС);
ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения);
СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета = ХранилищеДанных;
РегламентированнаяОтчетность.ПередЗаписьюНаСервере(ЭтотОбъект,
СтруктураРеквизитовФормы.мСохраненныйДок, Новый Структура);
Попытка
СтруктураРеквизитовФормы.мСохраненныйДок.Записать();
РегламентированнаяОтчетность.СохранитьСтатусОтправкиРеглОтчета(ЭтаФорма);
Исключение
Если НЕ Автосохранение Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), РегламентированнаяОтчетностьКлиентСервер.СформироватьТекстСообщения(ОписаниеОшибки()));
Сообщение.Сообщить();
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Возврат Ложь;
КонецПопытки;
Модифицированность = Ложь;
СохранитьДеревоНастройкиСтраниц(СтруктураРеквизитовФормы.мСохраненныйДок);
РегламентированнаяОтчетность.ПослеЗаписиНаСервере(ЭтотОбъект,
СтруктураРеквизитовФормы.мСохраненныйДок, Новый Структура);
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Если НЕ СтруктураРеквизитовФормы.мБезОткрытияФормы
И НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
ЗаблокироватьДанныеДляРедактирования(СтруктураРеквизитовФормы.мСохраненныйДок, , ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
Если ДанныеДляРазблокирования <> Неопределено Тогда
РазблокироватьДанныеДляРедактирования(ДанныеДляРазблокирования.Ключ, ДанныеДляРазблокирования.ИдФормы);
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура ВосстановитьСохраненныеДанные()
Перем ДанныеМногострочныхРазделов;
Перем ДанныеМногостраничныхРазделов;
Перем ДанныеВариановАвтоЗаполнения;
Перем ПоказателиОтчета;
Перем ВерсияФормы;
Перем АвторасчетОтключен;
Перем ТаблицаМногостраничногоДокумента;
Если СтруктураРеквизитовФормы.Организация <> СтруктураРеквизитовФормы.мСохраненныйДок.Организация
И СтруктураРеквизитовФормы.Организация <> РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа("СправочникСсылка.Организации")
И СтруктураРеквизитовФормы.Организация <> Неопределено Тогда
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
Иначе
СтруктураРеквизитовФормы.Организация = СтруктураРеквизитовФормы.мСохраненныйДок.Организация;
КонецЕсли;
ДатаПодписи = СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи;
СтруктураРеквизитовФормы.ЕдиницаИзмерения = СтруктураРеквизитовФормы.мСохраненныйДок.ЕдиницаИзмерения;
СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения = СтруктураРеквизитовФормы.мСохраненныйДок.ТочностьЕдиницыИзмерения;
Комментарий = СтруктураРеквизитовФормы.мСохраненныйДок.Комментарий;
СписокСохранения = СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета.Получить();
ДеревоНастройкиСтраниц = СтруктураРеквизитовФормы.мСохраненныйДок.ДеревоНастройкиСтраниц.Получить();
ЗначениеВРеквизитФормы(ДеревоНастройкиСтраниц.Скопировать(), "мДеревоСтраницОтчета");
Если СписокСохранения.Свойство( "ДанныеМногострочныхРазделов", ДанныеМногострочныхРазделов) Тогда
Для Каждого ЭлементСтруктуры Из ДанныеМногострочныхРазделов Цикл
НайденноеЗначение = Неопределено;
мСтруктураМногострочныхРазделов.Свойство(ЭлементСтруктуры.Ключ, НайденноеЗначение);
Если НЕ НайденноеЗначение = Неопределено Тогда
ЗначениеВДанныеФормы(ЭлементСтруктуры.Значение, ЭтаФорма[НайденноеЗначение])
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если СписокСохранения.Свойство("ДанныеМногостраничныхРазделов", ДанныеМногостраничныхРазделов) Тогда
Для Каждого ЭлементСтруктуры Из ДанныеМногостраничныхРазделов Цикл
НайденноеЗначение = Неопределено;
мСтруктураМногостраничныхРазделов.Свойство(ЭлементСтруктуры.Ключ, НайденноеЗначение);
Если НЕ НайденноеЗначение = Неопределено Тогда
НайденноеЗначение = ЭтаФорма[НайденноеЗначение];
ЗначениеВДанныеФормы(ЭлементСтруктуры.Значение, НайденноеЗначение);
Если НайденноеЗначение[0].Свойство("Данные") Тогда
Для Каждого СтрокаТаблЗнач Из НайденноеЗначение Цикл
Если ТипЗнч(СтрокаТаблЗнач.Данные) = Тип("СписокЗначений") Тогда
СтрокаТаблЗнач.Данные.Очистить();
СтрокаТаблЗнач.Данные.Добавить(ЭлементСтруктуры.Значение[НайденноеЗначение.Индекс(СтрокаТаблЗнач)].Данные);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НайденноеЗначение[0].Свойство("ДанныеДопСтрок") Тогда
Ном = 0;
Для Каждого СтрокаТаблЗнач Из ЭлементСтруктуры.Значение Цикл
Если ТипЗнч(СтрокаТаблЗнач.ДанныеДопСтрок) = Тип("Структура") Тогда
Для Каждого ЭлСтруктуры Из СтрокаТаблЗнач.ДанныеДопСтрок Цикл
ТаблЗнач = ЭлСтруктуры.Значение;
ЭлСтруктуры.Значение = ЭтаФорма["Хранилище" + ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ЭлементСтруктуры.Ключ)].Добавить().Таблица;
ЗначениеВДанныеФормы(ТаблЗнач, ЭлСтруктуры.Значение);
НайденноеЗначение[Ном].ДанныеДопСтрок.Добавить(ЭлСтруктуры.Значение);
КонецЦикла;
ИначеЕсли ТипЗнч(СтрокаТаблЗнач.ДанныеДопСтрок) = Тип("ТаблицаЗначений") Тогда
СтрокаТаблЗначДанныеДопСтрок = ЭтаФорма["Хранилище" + ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ЭлементСтруктуры.Ключ)].Добавить().Таблица;
ЗначениеВДанныеФормы(СтрокаТаблЗнач.ДанныеДопСтрок, СтрокаТаблЗначДанныеДопСтрок);
НайденноеЗначение[Ном].ДанныеДопСтрок.Добавить(СтрокаТаблЗначДанныеДопСтрок, "ДанныеФормыКоллекцияТаблицаДопСтрокРаздела");
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если СписокСохранения.Свойство("ДанныеВариантовАвтоЗаполнения", ДанныеВариановАвтоЗаполнения) Тогда
Если НЕ ДанныеВариановАвтоЗаполнения = Неопределено Тогда
мСтруктураВариантыЗаполнения.Очистить();
Для Каждого ЭлементСтруктуры Из ДанныеВариановАвтоЗаполнения Цикл
мСтруктураВариантыЗаполнения.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Ключ);
ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ].Очистить();
Для Каждого ЭлементМассива Из ЭлементСтруктуры.Значение Цикл
ТаблВарЗаполнения = ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ].Добавить().ТаблицаВариантовЗаполнения;
ЗначениеВДанныеФормы(ЭлементМассива, ТаблВарЗаполнения);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
СписокСохранения.Свойство("ФлПодсчетСтраниц", СтруктураРеквизитовФормы.мСчетчикСтраниц);
СписокСохранения.Свойство("ФлОтклВыборЗначений", СтруктураРеквизитовФормы.мАвтоВыборКодов);
Если СтруктураРеквизитовФормы.мАвтоВыборКодов = Неопределено Тогда
СтруктураРеквизитовФормы.мАвтоВыборКодов = Ложь;
КонецЕсли;
СписокСохранения.Свойство("АвторасчетОтключен", АвторасчетОтключен);
Если АвторасчетОтключен = Неопределено Тогда
СписокСохранения.Свойство("Автозаполнение", АвторасчетОтключен);
КонецЕсли;
Если НЕ АвторасчетОтключен = Неопределено Тогда
СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет = АвторасчетОтключен;
КонецЕсли;
СписокСохранения.Свойство("ДокументУпПред", мСтруктураДокУпПред);
Если мСтруктураДокУпПред = Неопределено Тогда
мСтруктураДокУпПред = Новый Структура;
мСтруктураДокУпПред.Вставить("НаименованиеУдостоверяющего", " ");
мСтруктураДокУпПред.Вставить("СерияРимскиеЦифры", " ");
мСтруктураДокУпПред.Вставить("СерияРусскиеБуквы", " ");
мСтруктураДокУпПред.Вставить("НомерУдостоверяющего", " ");
мСтруктураДокУпПред.Вставить("ДатаВыдачи", "");
мСтруктураДокУпПред.Вставить("КемВыдан", " ");
КонецЕсли;
Если СписокСохранения.Свойство("ВерсияФормы", ВерсияФормы) Тогда
Если ВерсияФормы <> СтруктураРеквизитовФормы.мВерсияФормы Тогда
СтруктураРеквизитовФормы.ФлагСохранения = Истина;
ОбновитьПользовательскиеНастройки();
КонецЕсли;
КонецЕсли;
СписокСохранения.Свойство( "ПоказателиОтчета", ПоказателиОтчета );
СформироватьДеревоРазделовОтчетаНаСервере();
Префикс = "ПолеТабличногоДокумента";
Для Каждого Раздел Из мСвойстваРазделовДекларации.ПолучитьЭлементы() Цикл
Если НЕ Раздел.МногостраничностьВРазделе Тогда
ЭтаФорма["СтруктураДанных" + Раздел.ИмяСтраницы] = ПоказателиОтчета[Префикс + Раздел.ИмяСтраницы];
КонецЕсли;
КонецЦикла;
ВосстановитьСведенияОбОрганизацииИзТитульногоЛистаСтарогоОбразца(ПоказателиОтчета);
Если СписокСохранения.Свойство("КодОрганаФСС", СтруктураРеквизитовФормы.мКодОрганаФСС) Тогда
Если СтруктураДанныхТитульный.Свойство("КодОрганаФСС") Тогда
СтруктураДанныхТитульный.КодОрганаФСС = СтруктураРеквизитовФормы.мКодОрганаФСС;
Иначе
СтруктураДанныхТитульный.Вставить("КодОрганаФСС", СтруктураРеквизитовФормы.мКодОрганаФСС);
КонецЕсли;
КонецЕсли;
ИмяТекРаздела = "Титульный";
Для Каждого ЭлСтруктуры Из ЭтаФорма["СтруктураДанных" + ИмяТекРаздела] Цикл
Попытка
ТабличныйДокумент.Области[ЭлСтруктуры.Ключ].Значение = ЭлСтруктуры.Значение;
Исключение
КонецПопытки;
КонецЦикла;
РегламентированнаяОтчетность.ОперацииПриВосстановленииРегламентированногоОтчета(ЭтаФорма);
СтруктураРеквизитовФормы.мДелитель = 1;
КопироватьДанныеФормы(мДеревоСтраницОтчета, мДеревоВыбранныхСтраниц);
ПривестиВСоответствиеЗначенияИзДопСтрокСтруктурамДанныхРазделов();
Модифицированность = Ложь;
СтруктураРеквизитовФормы.мДокументВосстановлен = Истина;
КонецПроцедуры
&НаСервере
Процедура ВосстановитьСведенияОбОрганизацииИзТитульногоЛистаСтарогоОбразца(ПоказателиОтчета)
ПоказателиТаблПоле = ПоказателиОтчета["ПолеТабличногоДокументаТитульный"];
Для Каждого Показатель Из ПоказателиТаблПоле Цикл
ИмяПоказателя = Показатель.Ключ;
Если ИмяПоказателя = "ОргФССКод_1" Тогда
СтруктураДанныхТитульный.Вставить("ОргФССКод");
Для Ном = 1 По 10 Цикл
СтруктураДанныхТитульный.ОргФССКод = СокрЛП(СтруктураДанныхТитульный.ОргФССКод) + ПоказателиТаблПоле["ОргФССКод_" + Ном];
СтруктураДанныхТитульный.Удалить("ОргФССКод_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ДополнительныйКод_1" Тогда
СтруктураДанныхТитульный.Вставить("ДополнительныйКод");
Для Ном = 1 По 10 Цикл
СтруктураДанныхТитульный.ДополнительныйКод = СокрЛП(СтруктураДанныхТитульный.ДополнительныйКод) + ПоказателиТаблПоле["ДополнительныйКод_" + Ном];
СтруктураДанныхТитульный.Удалить("ДополнительныйКод_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "КодПодчиненности_1" Тогда
СтруктураДанныхТитульный.Вставить("КодПодчиненности");
Для Ном = 1 По 5 Цикл
СтруктураДанныхТитульный.КодПодчиненности = СокрЛП(СтруктураДанныхТитульный.КодПодчиненности) + ПоказателиТаблПоле["КодПодчиненности_" + Ном];
СтруктураДанныхТитульный.Удалить("КодПодчиненности_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ИНН1" Тогда
СтруктураДанныхТитульный.Вставить("ИНН");
Для Ном = 1 По 12 Цикл
СтруктураДанныхТитульный.ИНН = СокрЛП(СтруктураДанныхТитульный.ИНН) + ПоказателиТаблПоле["ИНН" + Ном];
СтруктураДанныхТитульный.Удалить("ИНН" + Ном);
КонецЦикла;
Если Лев(СтруктураДанныхТитульный.ИНН, 2) = "00" Тогда
СтруктураДанныхТитульный.ИНН = Сред(СтруктураДанныхТитульный.ИНН, 3);
КонецЕсли;
ИначеЕсли ИмяПоказателя = "КПП1" Тогда
СтруктураДанныхТитульный.Вставить("КПП");
Для Ном = 1 По 9 Цикл
СтруктураДанныхТитульный.КПП = СокрЛП(СтруктураДанныхТитульный.КПП) + ПоказателиТаблПоле["КПП" + Ном];
СтруктураДанныхТитульный.Удалить("КПП" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОГРН1" Тогда
СтруктураДанныхТитульный.Вставить("ОГРН");
Для Ном = 1 По 15 Цикл
СтруктураДанныхТитульный.ОГРН = СокрЛП(СтруктураДанныхТитульный.ОГРН) + ПоказателиТаблПоле["ОГРН" + Ном];
СтруктураДанныхТитульный.Удалить("ОГРН" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ТелОрганизации1" Тогда
СтруктураДанныхТитульный.Вставить("ТелОрганизации");
Для Ном = 1 По 15 Цикл
СтруктураДанныхТитульный.ТелОрганизации = СокрЛП(СтруктураДанныхТитульный.ТелОрганизации) + ПоказателиТаблПоле["ТелОрганизации" + Ном];
СтруктураДанныхТитульный.Удалить("ТелОрганизации" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОКАТО1" Тогда
СтруктураДанныхТитульный.Вставить("ОКАТО");
Для Ном = 1 По 11 Цикл
СтруктураДанныхТитульный.ОКАТО = СокрЛП(СтруктураДанныхТитульный.ОКАТО) + ПоказателиТаблПоле["ОКАТО" + Ном];
СтруктураДанныхТитульный.Удалить("ОКАТО" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОКВЭД1" Тогда
СтруктураДанныхТитульный.Вставить("ОКВЭД");
Для Ном = 1 По 8 Цикл
СтруктураДанныхТитульный.ОКВЭД = СокрЛП(СтруктураДанныхТитульный.ОКВЭД) + ПоказателиТаблПоле["ОКВЭД" + Ном];
СтруктураДанныхТитульный.Удалить("ОКВЭД" + Ном);
КонецЦикла;
СтруктураДанныхТитульный.ОКВЭД = СокрЛП(СтруктураДанныхТитульный.ОКВЭД);
Если СтрДлина(СтруктураДанныхТитульный.ОКВЭД) > 4 Тогда
СтруктураДанныхТитульный.ОКВЭД = Лев(СтруктураДанныхТитульный.ОКВЭД, 2)
+ "."
+ Сред(СтруктураДанныхТитульный.ОКВЭД, 3, 2)
+ "."
+ Сред(СтруктураДанныхТитульный.ОКВЭД, 5);
ИначеЕсли СтрДлина(СтруктураДанныхТитульный.ОКВЭД) > 2 Тогда
СтруктураДанныхТитульный.ОКВЭД = Лев(СтруктураДанныхТитульный.ОКВЭД, 2)
+ "."
+ Сред(СтруктураДанныхТитульный.ОКВЭД, 3);
КонецЕсли;
ИначеЕсли ИмяПоказателя = "ОКПО1" Тогда
СтруктураДанныхТитульный.Вставить("ОКПО");
Для Ном = 1 По 10 Цикл
СтруктураДанныхТитульный.ОКПО = СокрЛП(СтруктураДанныхТитульный.ОКПО) + ПоказателиТаблПоле["ОКПО" + Ном];
СтруктураДанныхТитульный.Удалить("ОКПО" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОКОПФ1" Тогда
СтруктураДанныхТитульный.Вставить("ОКОПФ");
Для Ном = 1 По 2 Цикл
СтруктураДанныхТитульный.ОКОПФ = СокрЛП(СтруктураДанныхТитульный.ОКОПФ) + ПоказателиТаблПоле["ОКОПФ" + Ном];
СтруктураДанныхТитульный.Удалить("ОКОПФ" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОКФС1" Тогда
СтруктураДанныхТитульный.Вставить("ОКФС");
Для Ном = 1 По 4 Цикл
СтруктураДанныхТитульный.ОКФС = СокрЛП(СтруктураДанныхТитульный.ОКФС) + ПоказателиТаблПоле["ОКФС" + Ном];
СтруктураДанныхТитульный.Удалить("ОКФС" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ШифрСтрах1Часть_1" Тогда
СтруктураДанныхТитульный.Вставить("ШифрСтрах1Часть");
Для Ном = 1 По 3 Цикл
СтруктураДанныхТитульный.ШифрСтрах1Часть = СокрЛП(СтруктураДанныхТитульный.ШифрСтрах1Часть) + ПоказателиТаблПоле["ШифрСтрах1Часть_" + Ном];
СтруктураДанныхТитульный.Удалить("ШифрСтрах1Часть_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ШифрСтрах2Часть_1" Тогда
СтруктураДанныхТитульный.Вставить("ШифрСтрах2Часть");
Для Ном = 1 По 2 Цикл
СтруктураДанныхТитульный.ШифрСтрах2Часть = СокрЛП(СтруктураДанныхТитульный.ШифрСтрах2Часть) + ПоказателиТаблПоле["ШифрСтрах2Часть_" + Ном];
СтруктураДанныхТитульный.Удалить("ШифрСтрах2Часть_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ШифрСтрах3Часть_1" Тогда
СтруктураДанныхТитульный.Вставить("ШифрСтрах3Часть");
Для Ном = 1 По 2 Цикл
СтруктураДанныхТитульный.ШифрСтрах3Часть = СокрЛП(СтруктураДанныхТитульный.ШифрСтрах3Часть) + ПоказателиТаблПоле["ШифрСтрах3Часть_" + Ном];
СтруктураДанныхТитульный.Удалить("ШифрСтрах3Часть_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "НомерКорректировки1" Тогда
СтруктураДанныхТитульный.Вставить("НомерКорректировки");
Для Ном = 1 По 3 Цикл
СтруктураДанныхТитульный.НомерКорректировки = СокрЛП(СтруктураДанныхТитульный.НомерКорректировки) + ПоказателиТаблПоле["НомерКорректировки" + Ном];
СтруктураДанныхТитульный.Удалить("НомерКорректировки" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "Период_1" Тогда
СтруктураДанныхТитульный.Вставить("Период");
Для Ном = 1 По 2 Цикл
СтруктураДанныхТитульный.Период = СокрЛП(СтруктураДанныхТитульный.Период) + ПоказателиТаблПоле["Период_" + Ном];
СтруктураДанныхТитульный.Удалить("Период_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "НомДопРасчета_1" Тогда
СтруктураДанныхТитульный.Вставить("НомДопРасчета");
Для Ном = 1 По 2 Цикл
СтруктураДанныхТитульный.НомДопРасчета = СокрЛП(СтруктураДанныхТитульный.НомДопРасчета) + ПоказателиТаблПоле["НомДопРасчета_" + Ном];
СтруктураДанныхТитульный.Удалить("НомДопРасчета_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ОтчетГод1" Тогда
СтруктураДанныхТитульный.Вставить("ОтчетГод");
Для Ном = 1 По 4 Цикл
СтруктураДанныхТитульный.ОтчетГод = СокрЛП(СтруктураДанныхТитульный.ОтчетГод) + ПоказателиТаблПоле["ОтчетГод" + Ном];
СтруктураДанныхТитульный.Удалить("ОтчетГод" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ЧислРаботников_1" Тогда
СтруктураДанныхТитульный.Вставить("ЧислРаботников");
Для Ном = 1 По 6 Цикл
СтруктураДанныхТитульный.ЧислРаботников = СокрЛП(СтруктураДанныхТитульный.ЧислРаботников) + ПоказателиТаблПоле["ЧислРаботников_" + Ном];
СтруктураДанныхТитульный.Удалить("ЧислРаботников_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ЧислЖенщин_1" Тогда
СтруктураДанныхТитульный.Вставить("ЧислЖенщин");
Для Ном = 1 По 6 Цикл
СтруктураДанныхТитульный.ЧислЖенщин = СокрЛП(СтруктураДанныхТитульный.ЧислЖенщин) + ПоказателиТаблПоле["ЧислЖенщин_" + Ном];
СтруктураДанныхТитульный.Удалить("ЧислЖенщин_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ЧислИнвалидов_1" Тогда
СтруктураДанныхТитульный.Вставить("ЧислИнвалидов");
Для Ном = 1 По 6 Цикл
СтруктураДанныхТитульный.ЧислИнвалидов = СокрЛП(СтруктураДанныхТитульный.ЧислИнвалидов) + ПоказателиТаблПоле["ЧислИнвалидов_" + Ном];
СтруктураДанныхТитульный.Удалить("ЧислИнвалидов_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "ЧислВред_1" Тогда
СтруктураДанныхТитульный.Вставить("ЧислВред");
Для Ном = 1 По 6 Цикл
СтруктураДанныхТитульный.ЧислВред = СокрЛП(СтруктураДанныхТитульный.ЧислВред) + ПоказателиТаблПоле["ЧислВред_" + Ном];
СтруктураДанныхТитульный.Удалить("ЧислВред_" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "СоставленаНа1" Тогда
СтруктураДанныхТитульный.Вставить("СоставленаНа");
Для Ном = 1 По 3 Цикл
СтруктураДанныхТитульный.Прил = СокрЛП(СтруктураДанныхТитульный.Прил) + ПоказателиТаблПоле["СоставленаНа" + Ном];
СтруктураДанныхТитульный.Удалить("СоставленаНа" + Ном);
КонецЦикла;
ИначеЕсли ИмяПоказателя = "Прил1" Тогда
СтруктураДанныхТитульный.Вставить("Прил");
Для Ном = 1 По 3 Цикл
СтруктураДанныхТитульный.Прил = СокрЛП(СтруктураДанныхТитульный.Прил) + ПоказателиТаблПоле["Прил" + Ном];
СтруктураДанныхТитульный.Удалить("Прил" + Ном);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ЗаполнитьДатуВЯчейкахНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПривестиВСоответствиеЗначенияИзДопСтрокСтруктурамДанныхРазделов()
СохранитьОтчет = Ложь;
Если НЕ РегламентированнаяОтчетность.ЗначенияИзДопСтрокСоответствуютСтруктуреДанныхРаздела(
СтруктураДанныхРаздел1_4, П0003100010) Тогда
РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
СтруктураДанныхРаздел1_4, П0003100010);
СохранитьОтчет = Истина;
КонецЕсли;
Если СохранитьОтчет Тогда
Сохранить( , , СтруктураРеквизитовФормы.ВидДокумента * НомерКорректировки, , "Титульный");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ИмяЛиста = Неопределено) Экспорт
ИдГрупп = Новый Структура;
ИдГрупп.Вставить("мИдГруппы1", СтруктураРеквизитовФормы.мИдГруппы1);
Возврат ОпределитьИдМногострочногоРазделаПоАктивнойСтранице(ИмяЛиста, , ИдГрупп);
КонецФункции
&НаКлиенте
Функция ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаКлиенте(ИмяЛиста = Неопределено) Экспорт
ИдГрупп = Новый Структура;
ИдГрупп.Вставить("мИдГруппы1", СтруктураРеквизитовФормы.мИдГруппы1);
Возврат ОпределитьИдМногострочногоРазделаПоАктивнойСтранице(ИмяЛиста, , ИдГрупп);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОпределитьИдМногострочногоРазделаПоАктивнойСтранице(ИмяЛиста = Неопределено, ТекущаяСтраница = Неопределено, ИдГрупп)
Перем ИмяГруппы;
Если ИмяЛиста = Неопределено Тогда
ИмяТекущейСтраницыПанели = ТекущаяСтраница.Имя;
Иначе
ИмяТекущейСтраницыПанели = ИмяЛиста;
КонецЕсли;
Если ИмяТекущейСтраницыПанели = "Раздел1_4" Тогда
ИмяГруппы = ИдГрупп.мИдГруппы1;
КонецЕсли;
Возврат ИмяГруппы;
КонецФункции
&НаСервере
Функция ОпределитьТабличноеПолеПоИдМногострочногоРазделаНаСервере(ИдГруппы) Экспорт
ИдГрупп = Новый Структура;
ИдГрупп.Вставить("мИдГруппы1", СтруктураРеквизитовФормы.мИдГруппы1);
Возврат ОпределитьТабличноеПолеПоИдМногострочногоРаздела(ИдГруппы, ИдГрупп);
КонецФункции
&НаКлиенте
Функция ОпределитьТабличноеПолеПоИдМногострочногоРазделаНаКлиенте(ИдГруппы) Экспорт
ИдГрупп = Новый Структура;
ИдГрупп.Вставить("мИдГруппы1", СтруктураРеквизитовФормы.мИдГруппы1);
Возврат ОпределитьТабличноеПолеПоИдМногострочногоРаздела(ИдГруппы, ИдГрупп);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОпределитьТабличноеПолеПоИдМногострочногоРаздела(ИдГруппы, ИдГрупп) Экспорт
Перем ТекТабличноеПоле;
Если ИдГруппы = ИдГрупп.мИдГруппы1 Тогда
ТекТабличноеПоле = "Раздел1_4";
КонецЕсли;
Возврат ТекТабличноеПоле;
КонецФункции
&НаСервере
Процедура ОбновитьСтруктуруМногострочногоРазделаНаСервере(ИмяГруппы) Экспорт
ОбновитьСтруктуруМногострочногоРаздела(ЭтаФорма, ИмяГруппы);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСтруктуруМногострочногоРазделаНаКлиенте(ИмяГруппы) Экспорт
ОбновитьСтруктуруМногострочногоРаздела(ЭтаФорма, ИмяГруппы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьСтруктуруМногострочногоРаздела(Форма, ИмяГруппы)
Перем СтруктураГруппы;
Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы);
СтруктураГруппы = Форма[СтруктураГруппы];
ТекТабличноеПолеИмя = "ТабличныйДокумент";
ТекТабличноеПоле = Форма[ТекТабличноеПолеИмя];
Для НСтр = 1 По СтруктураГруппы.Количество() Цикл
ТекСтрокаТаблицы = СтруктураГруппы[НСтр - 1];
Для НомерГрафы = 1 По Форма.мСтруктураКолвоКолонокРазделов[ИмяГруппы] Цикл
ИмяКолонки = ИмяГруппы + Формат(НомерГрафы, "ЧЦ=2; ЧВН=");
Если СтруктураГруппы[0].Свойство(ИмяКолонки) Тогда
ИмяЯчейки = ИмяКолонки + "_" + НСтр;
ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяЯчейки];
Если ОбластьЯчейки.СодержитЗначение = Истина Тогда
ЗначениеЯчейки = ОбластьЯчейки.Значение;
Иначе
ЗначениеЯчейки = ОбластьЯчейки.Текст;
КонецЕсли;
ТекСтрокаТаблицы[ИмяКолонки] = ЗначениеЯчейки;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПользовательскиеНастройки()
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Изменилась версия формы отчета.%1Выполняется обновление пользовательских настроек.'"), Символы.ПС);
Сообщение.Сообщить();
ЕстьИзмененияВариантыЗаполнения = ОбновитьВариантыЗаполнения();
ЕстьИзмененияНастройкаСтраниц = ОбновитьНастройкиСтраниц();
Если ЕстьИзмененияВариантыЗаполнения ИЛИ ЕстьИзмененияНастройкаСтраниц Тогда
Модифицированность = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Обновление пользовательских настроек успешно завершено!'");
Сообщение.Сообщить();
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Изменения в структуре пользовательских настроек не обнаружены!'");
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОбновитьВариантыЗаполнения()
Перем МассивВариантовЗаполненияСтраниц;
ЕстьИзменения = Ложь;
МакетСоставаПоказателей = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(СтруктураРеквизитовФормы.мСоставПоказателей);
ОписаниеТиповСтрока15 = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(15));
ОписаниеТиповСтрока100 = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100));
ОписаниеТиповСтрока50 = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50));
ОписаниеТиповЧисло1 = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1));
ОписаниеТиповЧисло15 = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2));
ЕстьИзменения = Ложь;
Для Инд = 0 По МакетСоставаПоказателей.Области.Количество() - 1 Цикл
ТекОбласть = МакетСоставаПоказателей.Области[Инд];
ИмяСтраницы = ТекОбласть.Имя;
ТаблицаВариантыЗаполнения = Новый ТаблицаЗначений;
ТаблицаВариантыЗаполнения.Колонки.Добавить( "КодПоказателя", ОписаниеТиповСтрока15 );
ТаблицаВариантыЗаполнения.Колонки.Добавить( "ВариантЗаполнения", ОписаниеТиповЧисло1 );
ТаблицаВариантыЗаполнения.Колонки.Добавить( "ЗначениеАвто", ОписаниеТиповЧисло15 );
ТаблицаВариантыЗаполнения.Колонки.Добавить( "Дельта", ОписаниеТиповЧисло15 );
ТаблицаВариантыЗаполнения.Колонки.Добавить( "Комментарий", ОписаниеТиповСтрока100 );
ТаблицаВариантыЗаполнения.Колонки.Добавить( "КодПоказателяПоСтруктуре", ОписаниеТиповСтрока50 );
Для Ном = ТекОбласть.Верх По ТекОбласть.Низ Цикл
КодПоказателя = СокрП(МакетСоставаПоказателей.Область(Ном, 1).Текст);
ИмяПоказателя = КодПоказателя;
Если КодПоказателя = "===" Тогда
Прервать;
КонецЕсли;
Если Лев(КодПоказателя, 2) = "//" Тогда
Продолжить;
КонецЕсли;
КодПоказателяПоФорме = СокрЛП(МакетСоставаПоказателей.Область(Ном, 2).Текст);
стрВариантЗаполнения = РегламентированнаяОтчетность.ПолучитьВариантЗаполненияПоказателяРегОтчета(МакетСоставаПоказателей, Ном);
чВариантЗаполнения = ? (ПустаяСтрока(стрВариантЗаполнения), 0, Число(стрВариантЗаполнения));
Если чВариантЗаполнения <> 0 Тогда
НоваяСтрока = ТаблицаВариантыЗаполнения.Добавить();
НоваяСтрока.КодПоказателя = ? (Не ПустаяСтрока(КодПоказателяПоФорме), КодПоказателяПоФорме, КодПоказателя);
НоваяСтрока.ВариантЗаполнения = чВариантЗаполнения;
КонецЕсли;
КонецЦикла;
Если Не мСтруктураВариантыЗаполнения.Свойство(ИмяСтраницы, МассивВариантовЗаполненияСтраниц) Тогда
МассивВариантовЗаполненияСтраниц = ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы];
Если ТаблицаВариантыЗаполнения.Количество() > 0 Тогда
МассивВариантовЗаполненияСтраниц.Очистить();
МассивВариантовЗаполненияСтраниц.Добавить(ТаблицаВариантыЗаполнения);
мСтруктураВариантыЗаполнения.Вставить(ИмяСтраницы, ИмяСтраницы);
ЕстьИзменения = Истина;
КонецЕсли;
Иначе
МассивВариантовЗаполненияСтраниц = ЭтаФорма["ТаблицаВариантыЗаполнения" + ИмяСтраницы];
Если ТаблицаВариантыЗаполнения.Количество() = 0 Тогда
мСтруктураВариантыЗаполнения.Удалить(ИмяСтраницы);
ЕстьИзменения = Истина;
Иначе
Для каждого ЭлементМассива Из МассивВариантовЗаполненияСтраниц Цикл
ЭлементМассива = ЭлементМассива.ТаблицаВариантовЗаполнения;
Для каждого СтрокаТаблицы Из ТаблицаВариантыЗаполнения Цикл
КодПоказателя = СтрокаТаблицы.КодПоказателя;
ВариантЗаполнения = СтрокаТаблицы.ВариантЗаполнения;
Если ЭлементМассива.НайтиСтроки(Новый Структура("КодПоказателя", КодПоказателя)).Количество() = 0 Тогда
НоваяСтрока = ЭлементМассива.Добавить();
НоваяСтрока.КодПоказателя = КодПоказателя;
НоваяСтрока.ВариантЗаполнения = ВариантЗаполнения;
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
ТаблДляЦикла = ЭлементМассива.Выгрузить();
Для каждого СтрокаТаблицы Из ТаблДляЦикла Цикл
КодПоказателя = СтрокаТаблицы.КодПоказателя;
Если ТаблицаВариантыЗаполнения.Найти(КодПоказателя, "КодПоказателя") = Неопределено Тогда
СтрокиВЭлементеМассива = ЭлементМассива.НайтиСтроки(Новый Структура("КодПоказателя", КодПоказателя));
Если СтрокиВЭлементеМассива.Количество() > 0 Тогда
ЭлементМассива.Удалить(СтрокиВЭлементеМассива[0]);
ЕстьИзменения = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ЕстьИзменения;
КонецФункции
&НаСервере
Функция ОбновитьНастройкиСтраниц()
ЕстьИзменения = Ложь;
мПользовательскиеНастройкиСтраниц = РеквизитФормыВЗначение("мДеревоСтраницОтчета").Скопировать();
ФормироватьСтруктуруСтраницОтчета();
Для каждого ИсхКолонка Из РеквизитФормыВЗначение("мДеревоСтраницОтчета").Колонки Цикл
Если мПользовательскиеНастройкиСтраниц.Колонки.Найти(ИсхКолонка.Имя) = Неопределено Тогда
мПользовательскиеНастройкиСтраниц.Колонки.Добавить(ИсхКолонка.Имя, ИсхКолонка.ТипЗначения, ИсхКолонка.Заголовок, ИсхКолонка.Ширина);
мПользовательскиеНастройкиСтраниц.ЗагрузитьКолонку(РеквизитФормыВЗначение("мДеревоСтраницОтчета").ВыгрузитьКолонку(ИсхКолонка.Имя), ИсхКолонка.Имя);
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Для каждого ТекКолонка Из мПользовательскиеНастройкиСтраниц.Колонки Цикл
Если РеквизитФормыВЗначение("мДеревоСтраницОтчета").Колонки.Найти(ТекКолонка.Имя) = Неопределено Тогда
мПользовательскиеНастройкиСтраниц.Колонки.Удалить(мПользовательскиеНастройкиСтраниц.Колонки.Индекс(ТекКолонка));
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Если мДеревоСтраницОтчета.ПолучитьЭлементы().Количество() <> мПользовательскиеНастройкиСтраниц.Строки.Количество() Тогда
КолвоКолонок = РеквизитФормыВЗначение("мДеревоСтраницОтчета").Колонки.Количество();
Для каждого Строка Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл
Если мПользовательскиеНастройкиСтраниц.Найти(Строка.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда
НоваяСтрока = мПользовательскиеНастройкиСтраниц.Строки.Добавить();
Для НомКолонки = 0 По (КолвоКолонок - 1) Цикл
НоваяСтрока[НомКолонки] = Строка[НомКолонки];
КонецЦикла;
КонецЕсли;
Если Строка.Строки.Количество() > 0 Тогда
Для каждого Строка2 Из Строка.Строки Цикл
Если мПользовательскиеНастройкиСтраниц.Найти(Строка2.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда
НоваяСтрока2 = НоваяСтрока.Строки.Добавить();
Для НомКолонки = 0 По (КолвоКолонок - 1) Цикл
НоваяСтрока2[НомКолонки] = Строка2[НомКолонки];
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Для каждого Строка Из мПользовательскиеНастройкиСтраниц Цикл
Если РеквизитФормыВЗначение("мДеревоСтраницОтчета").Найти(Строка.ИмяСтраницы, "ИмяСтраницы") = Неопределено Тогда
мПользовательскиеНастройкиСтраниц.Строки.Удалить(мПользовательскиеНастройкиСтраниц.Строки.Индекс(Строка));
КонецЕсли;
КонецЦикла;
ЕстьИзменения = Истина;
КонецЕсли;
Для каждого ТекСтрока Из мДеревоСтраницОтчета.ПолучитьЭлементы() Цикл
НомСтр = мДеревоСтраницОтчета.ПолучитьЭлементы().Индекс(ТекСтрока);
Если ТекСтрока.Представление <> мПользовательскиеНастройкиСтраниц.Строки[НомСтр].Представление Тогда
мПользовательскиеНастройкиСтраниц.Строки[НомСтр].Представление = ТекСтрока.Представление;
ЕстьИзменения = Истина;
КонецЕсли;
Если ТекСтрока.ИмяПоляТабличногоДокум <> мПользовательскиеНастройкиСтраниц.Строки[НомСтр].ИмяПоляТабличногоДокум Тогда
мПользовательскиеНастройкиСтраниц.Строки[НомСтр].ИмяПоляТабличногоДокум = ТекСтрока.ИмяПоляТабличногоДокум;
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
ЗначениеВРеквизитФормы(мПользовательскиеНастройкиСтраниц.Скопировать(), "мДеревоСтраницОтчета");
Возврат ЕстьИзменения;
КонецФункции
&НаКлиенте
Функция ЗаголовокРегламентированногоОтчета(ДатаНач, ДатаКон, Периодичность = Неопределено) Экспорт
СтрПериодОтчета = ПредставлениеПериода( НачалоДня(СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета), КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета), "ФП = Истина" );
Если СтрНайти(ЭтаФорма.Заголовок, СтрПериодОтчета) = 0 Тогда
Возврат ЭтаФорма.Заголовок + " за " + СтрПериодОтчета;
Иначе
Возврат ЭтаФорма.Заголовок;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура УстановитьЦветФонаЯчейкиНаКлиенте(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "") Экспорт
УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
КонецПроцедуры
&НаСервере
Процедура УстановитьЦветФонаЯчейкиНаСервере(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "") Экспорт
УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЦветФонаЯчейки(Форма, ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = "")
Перем ЦветФона;
Перем Комментарий;
Если Форма.СтруктураРеквизитовФормы.мБезОткрытияФормы Или Форма.СтруктураРеквизитовФормы.мРежимПечати Тогда
Возврат;
КонецЕсли;
Если Не ИмяЯчейки = Неопределено Тогда
#Если НаКлиенте Тогда
ИмяСтраницыПанели = РегламентированнаяОтчетностьКлиент.ОпределитьСтраницуПанелиПоКодуПоказателяНаКлиенте(Форма, ИмяЯчейки);
#Иначе
ИмяСтраницыПанели = РегламентированнаяОтчетностьВызовСервера.ОпределитьСтраницуПанелиПоКодуПоказателяНаСервере(Форма, ИмяЯчейки);
#КонецЕсли
Если ИмяСтраницыПанели = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяПоляТаблДокумента = "ТабличныйДокумент";
Ключ = "_" + ВариантЗаполнения;
Форма.мСтруктураЦветовРаскраски.Свойство(Ключ, ЦветФона);
Если ВариантЗаполнения = 4 Тогда
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Истина;
Иначе
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Ложь;
КонецЕсли;
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].ЦветФона = ЦветФона;
Иначе
ТаблицаВариантыЗаполнения = ПолучитьТаблицуВариантовЗаполнения(Форма, ИмяТекущейСтраницыПанели);
Если ТаблицаВариантыЗаполнения = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого Строка Из ТаблицаВариантыЗаполнения Цикл
ИмяПоказателя = Строка.КодПоказателя;
ВариантЗаполнения = Строка.ВариантЗаполнения;
Комментарий = Строка.Комментарий;
КодПоказателяПоСтруктуре = Строка.КодПоказателяПоСтруктуре;
КолвоСтрокВМногострочнойЧасти = ПоказательВходитВМногострочнуюЧасть(Форма, ИмяПоказателя);
Если КолвоСтрокВМногострочнойЧасти > 0 Тогда
Многострочность = Истина;
БазоваяЧасть = ИмяПоказателя;
Иначе
Многострочность = Ложь;
КолвоСтрокВМногострочнойЧасти = 1;
КонецЕсли;
Для Инд = 1 по КолвоСтрокВМногострочнойЧасти Цикл
Если Многострочность Тогда
ИмяПоказателя = БазоваяЧасть + "_" + Строка(Инд);
КонецЕсли;
Попытка
ТекОбластьЯчеек = Форма.ТабличныйДокумент.Области[ИмяПоказателя];
Если (Не ПустаяСтрока(Комментарий)) ИЛИ (Не ПустаяСтрока(ТекОбластьЯчеек.Примечание.Текст)) Тогда
ТекОбластьЯчеек.Примечание.Текст = Комментарий;
КонецЕсли;
Ключ = "_" + ВариантЗаполнения;
Форма.мСтруктураЦветовРаскраски.Свойство(Ключ, ЦветФона);
Если ВариантЗаполнения = 4 Тогда
Форма.ТабличныйДокумент.Области[ИмяПоказателя].Защита = Истина;
Иначе
Форма.ТабличныйДокумент.Области[ИмяПоказателя].Защита = Ложь;
КонецЕсли;
Форма.ТабличныйДокумент.Области[ИмяПоказателя].ЦветФона = ЦветФона;
Исключение КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПоказательВходитВМногострочнуюЧасть(Форма, ИмяПоказателя)
ИмяГруппы = Лев(ИмяПоказателя, 11);
СтруктураГруппы = Неопределено;
Если НЕ Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы) Тогда
Возврат 0;
Иначе
СтруктураГруппы = Форма[СтруктураГруппы];
Возврат СтруктураГруппы.Количество();
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьТаблицуВариантовЗаполнения(Форма, ИмяСтраницыПанели, ПолучитьЭталонную = Ложь)
#Если НаКлиенте Тогда
Возврат РегламентированнаяОтчетностьКлиент.ПолучитьТаблицуВариантовЗаполненияНаКлиенте(Форма, ИмяСтраницыПанели, ПолучитьЭталонную);
#Иначе
Возврат РегламентированнаяОтчетностьВызовСервера.ПолучитьТаблицуВариантовЗаполненияНаСервере(Форма, ИмяСтраницыПанели, ПолучитьЭталонную);
#КонецЕсли
КонецФункции
&НаКлиенте
Процедура РасчетНаКлиенте(ИмяТекущегоРаздела = "", ОбластьИмя = "") Экспорт
Расчет(ЭтаФорма, ИмяТекущегоРаздела, ОбластьИмя);
КонецПроцедуры
&НаСервере
Процедура РасчетНаСервере(ИмяТекущегоРаздела = "", ОбластьИмя = "") Экспорт
Расчет(ЭтаФорма, ИмяТекущегоРаздела, ОбластьИмя);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура Расчет(Форма, ИмяТекущегоРаздела = "", ОбластьИмя = "")
Перем ТаблицаБлока;
Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
Возврат;
КонецЕсли;
Если ИмяТекущегоРаздела = "Раздел1_1" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010002201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010002201.Значение = Форма.ТабличныйДокумент.Области.П000010002301.Значение
+ Форма.ТабличныйДокумент.Области.П000010002401.Значение
+ Форма.ТабличныйДокумент.Области.П000010002501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010003201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010003201.Значение = Форма.ТабличныйДокумент.Области.П000010003301.Значение
+ Форма.ТабличныйДокумент.Области.П000010003401.Значение
+ Форма.ТабличныйДокумент.Области.П000010003501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010005201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010005201.Значение = Форма.ТабличныйДокумент.Области.П000010005301.Значение
+ Форма.ТабличныйДокумент.Области.П000010005401.Значение
+ Форма.ТабличныйДокумент.Области.П000010005501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010006201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010006201.Значение = Форма.ТабличныйДокумент.Области.П000010006301.Значение
+ Форма.ТабличныйДокумент.Области.П000010006401.Значение
+ Форма.ТабличныйДокумент.Области.П000010006501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010015201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010015201.Значение = Форма.ТабличныйДокумент.Области.П000010015301.Значение
+ Форма.ТабличныйДокумент.Области.П000010015401.Значение
+ Форма.ТабличныйДокумент.Области.П000010015501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010016201, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010016201.Значение = Форма.ТабличныйДокумент.Области.П000010016301.Значение
+ Форма.ТабличныйДокумент.Области.П000010016401.Значение
+ Форма.ТабличныйДокумент.Области.П000010016501.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010002003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010002003.Значение = Форма.ТабличныйДокумент.Области.П000010002101.Значение
+ Форма.ТабличныйДокумент.Области.П000010002201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010003003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010003003.Значение = Форма.ТабличныйДокумент.Области.П000010003101.Значение
+ Форма.ТабличныйДокумент.Области.П000010003201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010005003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010005003.Значение = Форма.ТабличныйДокумент.Области.П000010005101.Значение
+ Форма.ТабличныйДокумент.Области.П000010005201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010006003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010006003.Значение = Форма.ТабличныйДокумент.Области.П000010006101.Значение
+ Форма.ТабличныйДокумент.Области.П000010006201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010015003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010015003.Значение = Форма.ТабличныйДокумент.Области.П000010015101.Значение
+ Форма.ТабличныйДокумент.Области.П000010015201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010016003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010016003.Значение = Форма.ТабличныйДокумент.Области.П000010016101.Значение
+ Форма.ТабличныйДокумент.Области.П000010016201.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010008003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010008003.Значение = Форма.ТабличныйДокумент.Области.П000010001003.Значение
+ Форма.ТабличныйДокумент.Области.П000010002003.Значение
+ Форма.ТабличныйДокумент.Области.П000010003003.Значение
+ Форма.ТабличныйДокумент.Области.П000010004003.Значение
+ Форма.ТабличныйДокумент.Области.П000010005003.Значение
+ Форма.ТабличныйДокумент.Области.П000010006003.Значение
+ Форма.ТабличныйДокумент.Области.П000010007003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010012003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010012003.Значение = Форма.ТабличныйДокумент.Области.П000010013003.Значение
+ Форма.ТабличныйДокумент.Области.П000010014003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000010018003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000010018003.Значение = Форма.ТабличныйДокумент.Области.П000010012003.Значение
+ Форма.ТабличныйДокумент.Области.П000010015003.Значение
+ Форма.ТабличныйДокумент.Области.П000010016003.Значение
+ Форма.ТабличныйДокумент.Области.П000010017003.Значение;
КонецЕсли;
Если Форма.ТабличныйДокумент.Области.П000010018003.Значение > Форма.ТабличныйДокумент.Области.П000010008003.Значение Тогда
ЗадолженностьЗаФондомВсего = Форма.ТабличныйДокумент.Области.П000010018003.Значение
- Форма.ТабличныйДокумент.Области.П000010008003.Значение;
Форма.ТабличныйДокумент.Области.П000010019003.Значение = 0;
Иначе
Форма.ТабличныйДокумент.Области.П000010019003.Значение = Форма.ТабличныйДокумент.Области.П000010008003.Значение
- Форма.ТабличныйДокумент.Области.П000010018003.Значение;
ЗадолженностьЗаФондомВсего = 0;
КонецЕсли;
Форма.ТабличныйДокумент.Области.П000010010003.Значение = ЗадолженностьЗаФондомВсего
- Форма.ТабличныйДокумент.Области.П000010011003.Значение;
Форма.ТабличныйДокумент.Области.П000010009003.Значение = Форма.ТабличныйДокумент.Области.П000010010003.Значение
+ Форма.ТабличныйДокумент.Области.П000010011003.Значение;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_2" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020007003.Значение = Форма.ТабличныйДокумент.Области.П000020008003.Значение
+ Форма.ТабличныйДокумент.Области.П000020009003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020007004.Значение = Форма.ТабличныйДокумент.Области.П000020008004.Значение
+ Форма.ТабличныйДокумент.Области.П000020009004.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020007005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020007005.Значение = Форма.ТабличныйДокумент.Области.П000020008005.Значение
+ Форма.ТабличныйДокумент.Области.П000020009005.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020010005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020010005.Значение = Форма.ТабличныйДокумент.Области.П000020010004.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020012004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020012004.Значение = Форма.ТабличныйДокумент.Области.П000020001004.Значение
+ Форма.ТабличныйДокумент.Области.П000020003004.Значение
+ Форма.ТабличныйДокумент.Области.П000020005004.Значение
+ Форма.ТабличныйДокумент.Области.П000020006004.Значение
+ Форма.ТабличныйДокумент.Области.П000020007004.Значение
+ Форма.ТабличныйДокумент.Области.П000020010004.Значение
+ Форма.ТабличныйДокумент.Области.П000020011004.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000020012005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000020012005.Значение = Форма.ТабличныйДокумент.Области.П000020001005.Значение
+ Форма.ТабличныйДокумент.Области.П000020003005.Значение
+ Форма.ТабличныйДокумент.Области.П000020007005.Значение
+ Форма.ТабличныйДокумент.Области.П000020010005.Значение
+ Форма.ТабличныйДокумент.Области.П000020011005.Значение;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_3" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000030004003.Значение = Форма.ТабличныйДокумент.Области.П000030001003.Значение
- Форма.ТабличныйДокумент.Области.П000030002003.Значение
- Форма.ТабличныйДокумент.Области.П000030003003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000030004004.Значение = Форма.ТабличныйДокумент.Области.П000030001004.Значение
- Форма.ТабличныйДокумент.Области.П000030002004.Значение
- Форма.ТабличныйДокумент.Области.П000030003004.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000030004005.Значение = Форма.ТабличныйДокумент.Области.П000030001005.Значение
- Форма.ТабличныйДокумент.Области.П000030002005.Значение
- Форма.ТабличныйДокумент.Области.П000030003005.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000030004006, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000030004006.Значение = Форма.ТабличныйДокумент.Области.П000030001006.Значение
- Форма.ТабличныйДокумент.Области.П000030002006.Значение
- Форма.ТабличныйДокумент.Области.П000030003006.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) Тогда
Форма.ТабличныйДокумент.Области.П000030005003.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002005;
Форма.ТабличныйДокумент.Области.П000030005004.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002006;
Форма.ТабличныйДокумент.Области.П000030005005.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002007;
Форма.ТабличныйДокумент.Области.П000030005006.Значение = Форма.СтруктураДанныхРаздел1_4.П000310002008;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_4" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002005, ОбластьИмя) > 0 Тогда
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Колонка5 = 0;
Для Ном = 1 По ТаблицаБлока.Количество() Цикл
Колонка5 = Колонка5 + Форма.ТабличныйДокумент.Области["П000310001005_" + Ном].Значение;
КонецЦикла;
Форма.ТабличныйДокумент.Области.П000310002005.Значение = Колонка5;
Форма.СтруктураДанныхРаздел1_3.П000030005003 = Колонка5;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002006, ОбластьИмя) > 0 Тогда
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Колонка6 = 0;
Для Ном = 1 По ТаблицаБлока.Количество() Цикл
Колонка6 = Колонка6 + Форма.ТабличныйДокумент.Области["П000310001006_" + Ном].Значение;
КонецЦикла;
Форма.ТабличныйДокумент.Области.П000310002006.Значение = Колонка6;
Форма.СтруктураДанныхРаздел1_3.П000030005004 = Колонка6;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002007, ОбластьИмя) > 0 Тогда
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Колонка7 = 0;
Для Ном = 1 По ТаблицаБлока.Количество() Цикл
Колонка7 = Колонка7 + Форма.ТабличныйДокумент.Области["П000310001007_" + Ном].Значение;
КонецЦикла;
Форма.ТабличныйДокумент.Области.П000310002007.Значение = Колонка7;
Форма.СтруктураДанныхРаздел1_3.П000030005005 = Колонка7;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000310002008, ОбластьИмя) > 0 Тогда
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Колонка8 = 0;
Для Ном = 1 По ТаблицаБлока.Количество() Цикл
Колонка8 = Колонка8 + Форма.ТабличныйДокумент.Области["П000310001008_" + Ном].Значение;
КонецЦикла;
Форма.ТабличныйДокумент.Области.П000310002008.Значение = Колонка8;
Форма.СтруктураДанныхРаздел1_3.П000030005006 = Колонка8;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_5" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000303, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000303.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000103.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000203.Значение
/ Форма.ТабличныйДокумент.Области.П000040000103.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000304, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000304.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000104.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000204.Значение
/ Форма.ТабличныйДокумент.Области.П000040000104.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000305, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000305.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000105.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000205.Значение
/ Форма.ТабличныйДокумент.Области.П000040000105.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000306, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000306.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000106.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000206.Значение
/ Форма.ТабличныйДокумент.Области.П000040000106.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000603, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000603.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000403.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000503.Значение
/ Форма.ТабличныйДокумент.Области.П000040000403.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000604, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000604.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000404.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000504.Значение
/ Форма.ТабличныйДокумент.Области.П000040000404.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000605, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000605.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000405.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000505.Значение
/ Форма.ТабличныйДокумент.Области.П000040000405.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000606, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000606.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000406.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000506.Значение
/ Форма.ТабличныйДокумент.Области.П000040000406.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000903, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000903.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000703.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000803.Значение
/ Форма.ТабличныйДокумент.Области.П000040000703.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000904, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000904.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000704.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000804.Значение
/ Форма.ТабличныйДокумент.Области.П000040000704.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000905, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000905.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000705.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000805.Значение
/ Форма.ТабличныйДокумент.Области.П000040000705.Значение) * 100, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000040000906, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000040000906.Значение = ? (Форма.ТабличныйДокумент.Области.П000040000706.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000040000806.Значение
/ Форма.ТабличныйДокумент.Области.П000040000706.Значение) * 100, 0);
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_6" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000410004003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000410004003.Значение = ? (Форма.ТабличныйДокумент.Области.П000410002003.Значение <> 0,
(Форма.ТабличныйДокумент.Области.П000410003003.Значение
/ Форма.ТабличныйДокумент.Области.П000410002003.Значение) * 100, 0);
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_7" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003007, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003007.Значение = Форма.ТабличныйДокумент.Области.П000050004007.Значение
+ Форма.ТабличныйДокумент.Области.П000050005007.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003008, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003008.Значение = Форма.ТабличныйДокумент.Области.П000050004008.Значение
+ Форма.ТабличныйДокумент.Области.П000050005008.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003010, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003010.Значение = Форма.ТабличныйДокумент.Области.П000050004010.Значение
+ Форма.ТабличныйДокумент.Области.П000050005010.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003011, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003011.Значение = Форма.ТабличныйДокумент.Области.П000050004011.Значение
+ Форма.ТабличныйДокумент.Области.П000050005011.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003016, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003016.Значение = Форма.ТабличныйДокумент.Области.П000050004016.Значение
+ Форма.ТабличныйДокумент.Области.П000050005016.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003017, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003017.Значение = Форма.ТабличныйДокумент.Области.П000050004017.Значение
+ Форма.ТабличныйДокумент.Области.П000050005017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050001003.Значение = Форма.ТабличныйДокумент.Области.П000050001006.Значение
+ Форма.ТабличныйДокумент.Области.П000050001009.Значение
+ Форма.ТабличныйДокумент.Области.П000050001012.Значение
+ Форма.ТабличныйДокумент.Области.П000050001015.Значение
+ Форма.ТабличныйДокумент.Области.П000050001018.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050002003.Значение = Форма.ТабличныйДокумент.Области.П000050002006.Значение
+ Форма.ТабличныйДокумент.Области.П000050002009.Значение
+ Форма.ТабличныйДокумент.Области.П000050002015.Значение
+ Форма.ТабличныйДокумент.Области.П000050002018.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003003.Значение = Форма.ТабличныйДокумент.Области.П000050003006.Значение
+ Форма.ТабличныйДокумент.Области.П000050003009.Значение
+ Форма.ТабличныйДокумент.Области.П000050003015.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050004003.Значение = Форма.ТабличныйДокумент.Области.П000050004006.Значение
+ Форма.ТабличныйДокумент.Области.П000050004009.Значение
+ Форма.ТабличныйДокумент.Области.П000050004015.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050005003.Значение = Форма.ТабличныйДокумент.Области.П000050005006.Значение
+ Форма.ТабличныйДокумент.Области.П000050005009.Значение
+ Форма.ТабличныйДокумент.Области.П000050005015.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050006003.Значение = Форма.ТабличныйДокумент.Области.П000050006006.Значение
+ Форма.ТабличныйДокумент.Области.П000050006009.Значение
+ Форма.ТабличныйДокумент.Области.П000050006015.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050001004.Значение = Форма.ТабличныйДокумент.Области.П000050001007.Значение
+ Форма.ТабличныйДокумент.Области.П000050001010.Значение
+ Форма.ТабличныйДокумент.Области.П000050001013.Значение
+ Форма.ТабличныйДокумент.Области.П000050001016.Значение
+ Форма.ТабличныйДокумент.Области.П000050001019.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050002004.Значение = Форма.ТабличныйДокумент.Области.П000050002007.Значение
+ Форма.ТабличныйДокумент.Области.П000050002010.Значение
+ Форма.ТабличныйДокумент.Области.П000050002016.Значение
+ Форма.ТабличныйДокумент.Области.П000050002019.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003004.Значение = Форма.ТабличныйДокумент.Области.П000050003007.Значение
+ Форма.ТабличныйДокумент.Области.П000050003010.Значение
+ Форма.ТабличныйДокумент.Области.П000050003016.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050004004.Значение = Форма.ТабличныйДокумент.Области.П000050004007.Значение
+ Форма.ТабличныйДокумент.Области.П000050004010.Значение
+ Форма.ТабличныйДокумент.Области.П000050004016.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050005004.Значение = Форма.ТабличныйДокумент.Области.П000050005007.Значение
+ Форма.ТабличныйДокумент.Области.П000050005010.Значение
+ Форма.ТабличныйДокумент.Области.П000050005016.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050006004.Значение = Форма.ТабличныйДокумент.Области.П000050006007.Значение
+ Форма.ТабличныйДокумент.Области.П000050006010.Значение
+ Форма.ТабличныйДокумент.Области.П000050006016.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050001005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050001005.Значение = Форма.ТабличныйДокумент.Области.П000050001008.Значение
+ Форма.ТабличныйДокумент.Области.П000050001011.Значение
+ Форма.ТабличныйДокумент.Области.П000050001014.Значение
+ Форма.ТабличныйДокумент.Области.П000050001017.Значение
+ Форма.ТабличныйДокумент.Области.П000050001020.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050002005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050002005.Значение = Форма.ТабличныйДокумент.Области.П000050002008.Значение
+ Форма.ТабличныйДокумент.Области.П000050002011.Значение
+ Форма.ТабличныйДокумент.Области.П000050002017.Значение
+ Форма.ТабличныйДокумент.Области.П000050002020.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050003005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050003005.Значение = Форма.ТабличныйДокумент.Области.П000050003008.Значение
+ Форма.ТабличныйДокумент.Области.П000050003011.Значение
+ Форма.ТабличныйДокумент.Области.П000050003017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050004005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050004005.Значение = Форма.ТабличныйДокумент.Области.П000050004008.Значение
+ Форма.ТабличныйДокумент.Области.П000050004011.Значение
+ Форма.ТабличныйДокумент.Области.П000050004017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050005005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050005005.Значение = Форма.ТабличныйДокумент.Области.П000050005008.Значение
+ Форма.ТабличныйДокумент.Области.П000050005011.Значение
+ Форма.ТабличныйДокумент.Области.П000050005017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050006005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050006005.Значение = Форма.ТабличныйДокумент.Области.П000050006008.Значение
+ Форма.ТабличныйДокумент.Области.П000050006011.Значение
+ Форма.ТабличныйДокумент.Области.П000050006017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007003.Значение = Форма.ТабличныйДокумент.Области.П000050001003.Значение
+ Форма.ТабличныйДокумент.Области.П000050002003.Значение
+ Форма.ТабличныйДокумент.Области.П000050003003.Значение
+ Форма.ТабличныйДокумент.Области.П000050006003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007005, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007005.Значение = Форма.ТабличныйДокумент.Области.П000050001005.Значение
+ Форма.ТабличныйДокумент.Области.П000050002005.Значение
+ Форма.ТабличныйДокумент.Области.П000050003005.Значение
+ Форма.ТабличныйДокумент.Области.П000050006005.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007006, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007006.Значение = Форма.ТабличныйДокумент.Области.П000050001006.Значение
+ Форма.ТабличныйДокумент.Области.П000050002006.Значение
+ Форма.ТабличныйДокумент.Области.П000050003006.Значение
+ Форма.ТабличныйДокумент.Области.П000050006006.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007008, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007008.Значение = Форма.ТабличныйДокумент.Области.П000050001008.Значение
+ Форма.ТабличныйДокумент.Области.П000050002008.Значение
+ Форма.ТабличныйДокумент.Области.П000050003008.Значение
+ Форма.ТабличныйДокумент.Области.П000050006008.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007009, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007009.Значение = Форма.ТабличныйДокумент.Области.П000050001009.Значение
+ Форма.ТабличныйДокумент.Области.П000050002009.Значение
+ Форма.ТабличныйДокумент.Области.П000050003009.Значение
+ Форма.ТабличныйДокумент.Области.П000050006009.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007011, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007011.Значение = Форма.ТабличныйДокумент.Области.П000050001011.Значение
+ Форма.ТабличныйДокумент.Области.П000050002011.Значение
+ Форма.ТабличныйДокумент.Области.П000050003011.Значение
+ Форма.ТабличныйДокумент.Области.П000050006011.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007012, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007012.Значение = Форма.ТабличныйДокумент.Области.П000050001012.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007014, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007014.Значение = Форма.ТабличныйДокумент.Области.П000050001014.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007015, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007015.Значение = Форма.ТабличныйДокумент.Области.П000050001015.Значение
+ Форма.ТабличныйДокумент.Области.П000050002015.Значение
+ Форма.ТабличныйДокумент.Области.П000050003015.Значение
+ Форма.ТабличныйДокумент.Области.П000050006015.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007017, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007017.Значение = Форма.ТабличныйДокумент.Области.П000050001017.Значение
+ Форма.ТабличныйДокумент.Области.П000050002017.Значение
+ Форма.ТабличныйДокумент.Области.П000050003017.Значение
+ Форма.ТабличныйДокумент.Области.П000050006017.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007018, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007018.Значение = Форма.ТабличныйДокумент.Области.П000050001018.Значение
+ Форма.ТабличныйДокумент.Области.П000050002018.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000050007020, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000050007020.Значение = Форма.ТабличныйДокумент.Области.П000050001020.Значение
+ Форма.ТабличныйДокумент.Области.П000050002020.Значение;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел2_1" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001203, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000060001203.Значение = Форма.ТабличныйДокумент.Области.П000060001303.Значение
+ Форма.ТабличныйДокумент.Области.П000060001403.Значение
+ Форма.ТабличныйДокумент.Области.П000060001503.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001204, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000060001204.Значение = Форма.ТабличныйДокумент.Области.П000060001304.Значение
+ Форма.ТабличныйДокумент.Области.П000060001404.Значение
+ Форма.ТабличныйДокумент.Области.П000060001504.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001205, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000060001205.Значение = Форма.ТабличныйДокумент.Области.П000060001305.Значение
+ Форма.ТабличныйДокумент.Области.П000060001405.Значение
+ Форма.ТабличныйДокумент.Области.П000060001505.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000060001010, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000060001010.Значение = Форма.ТабличныйДокумент.Области.П000060001006.Значение
* (1 - Форма.ТабличныйДокумент.Области.П000060001007.Значение / 100
+ Форма.ТабличныйДокумент.Области.П000060001009.Значение / 100);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070002401, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070002401.Значение = Форма.ТабличныйДокумент.Области.П000070002101.Значение
+ Форма.ТабличныйДокумент.Области.П000070002201.Значение
+ Форма.ТабличныйДокумент.Области.П000070002301.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011401, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070011401.Значение = Форма.ТабличныйДокумент.Области.П000070011101.Значение
+ Форма.ТабличныйДокумент.Области.П000070011201.Значение
+ Форма.ТабличныйДокумент.Области.П000070011301.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070012401, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070012401.Значение = Форма.ТабличныйДокумент.Области.П000070012101.Значение
+ Форма.ТабличныйДокумент.Области.П000070012201.Значение
+ Форма.ТабличныйДокумент.Области.П000070012301.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070002003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070002003.Значение = Форма.ТабличныйДокумент.Области.П000070002001.Значение
+ Форма.ТабличныйДокумент.Области.П000070002401.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070011003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070011003.Значение = Форма.ТабличныйДокумент.Области.П000070011001.Значение
+ Форма.ТабличныйДокумент.Области.П000070011401.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070012003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070012003.Значение = Форма.ТабличныйДокумент.Области.П000070012001.Значение
+ Форма.ТабличныйДокумент.Области.П000070012401.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070008003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070008003.Значение = Форма.ТабличныйДокумент.Области.П000070001003.Значение
+ Форма.ТабличныйДокумент.Области.П000070002003.Значение
+ Форма.ТабличныйДокумент.Области.П000070003003.Значение
+ Форма.ТабличныйДокумент.Области.П000070004003.Значение
+ Форма.ТабличныйДокумент.Области.П000070005003.Значение
+ Форма.ТабличныйДокумент.Области.П000070006003.Значение
+ Форма.ТабличныйДокумент.Области.П000070007003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070014003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070014003.Значение = Форма.ТабличныйДокумент.Области.П000070010003.Значение
+ Форма.ТабличныйДокумент.Области.П000070011003.Значение
+ Форма.ТабличныйДокумент.Области.П000070012003.Значение
+ Форма.ТабличныйДокумент.Области.П000070013003.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070009003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070009003.Значение = ?(Форма.ТабличныйДокумент.Области.П000070014003.Значение > Форма.ТабличныйДокумент.Области.П000070008003.Значение
, Форма.ТабличныйДокумент.Области.П000070014003.Значение - Форма.ТабличныйДокумент.Области.П000070008003.Значение, 0);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000070015003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000070015003.Значение = ?(Форма.ТабличныйДокумент.Области.П000070008003.Значение > Форма.ТабличныйДокумент.Области.П000070014003.Значение
, Форма.ТабличныйДокумент.Области.П000070008003.Значение - Форма.ТабличныйДокумент.Области.П000070014003.Значение, 0);
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел2_2" Тогда
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000080010004, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000080010004.Значение = Форма.ТабличныйДокумент.Области.П000080001004.Значение
+ Форма.ТабличныйДокумент.Области.П000080004004.Значение
+ Форма.ТабличныйДокумент.Области.П000080007004.Значение
+ Форма.ТабличныйДокумент.Области.П000080009004.Значение;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбластьИмя) ИЛИ СтрЧислоВхождений(Форма.СтруктураЗависимыхЯчеекДляАвторасчета.П000090004003, ОбластьИмя) > 0 Тогда
Форма.ТабличныйДокумент.Области.П000090004003.Значение = Форма.ТабличныйДокумент.Области.П000090001003.Значение
+ Форма.ТабличныйДокумент.Области.П000090003003.Значение;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "" Тогда
РасчетВСтруктуре(Форма, "Раздел1_1");
РасчетВСтруктуре(Форма, "Раздел1_2");
РасчетВСтруктуре(Форма, "Раздел1_4");
РасчетВСтруктуре(Форма, "Раздел1_3");
РасчетВСтруктуре(Форма, "Раздел1_5");
РасчетВСтруктуре(Форма, "Раздел1_6");
РасчетВСтруктуре(Форма, "Раздел1_7");
РасчетВСтруктуре(Форма, "Раздел2_1");
РасчетВСтруктуре(Форма, "Раздел2_2");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РасчетВСтруктуре(Форма, ИмяТекущегоРаздела)
Перем ТаблицаБлока;
Если Форма.СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
Возврат;
КонецЕсли;
Если ИмяТекущегоРаздела = "Раздел1_1" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000010002201 = СтруктураДанныхРаздела.П000010002301
+ СтруктураДанныхРаздела.П000010002401
+ СтруктураДанныхРаздела.П000010002501;
СтруктураДанныхРаздела.П000010003201 = СтруктураДанныхРаздела.П000010003301
+ СтруктураДанныхРаздела.П000010003401
+ СтруктураДанныхРаздела.П000010003501;
СтруктураДанныхРаздела.П000010005201 = СтруктураДанныхРаздела.П000010005301
+ СтруктураДанныхРаздела.П000010005401
+ СтруктураДанныхРаздела.П000010005501;
СтруктураДанныхРаздела.П000010006201 = СтруктураДанныхРаздела.П000010006301
+ СтруктураДанныхРаздела.П000010006401
+ СтруктураДанныхРаздела.П000010006501;
СтруктураДанныхРаздела.П000010015201 = СтруктураДанныхРаздела.П000010015301
+ СтруктураДанныхРаздела.П000010015401
+ СтруктураДанныхРаздела.П000010015501;
СтруктураДанныхРаздела.П000010016201 = СтруктураДанныхРаздела.П000010016301
+ СтруктураДанныхРаздела.П000010016401
+ СтруктураДанныхРаздела.П000010016501;
СтруктураДанныхРаздела.П000010002003 = СтруктураДанныхРаздела.П000010002101
+ СтруктураДанныхРаздела.П000010002201;
СтруктураДанныхРаздела.П000010003003 = СтруктураДанныхРаздела.П000010003101
+ СтруктураДанныхРаздела.П000010003201;
СтруктураДанныхРаздела.П000010005003 = СтруктураДанныхРаздела.П000010005101
+ СтруктураДанныхРаздела.П000010005201;
СтруктураДанныхРаздела.П000010006003 = СтруктураДанныхРаздела.П000010006101
+ СтруктураДанныхРаздела.П000010006201;
СтруктураДанныхРаздела.П000010015003 = СтруктураДанныхРаздела.П000010015101
+ СтруктураДанныхРаздела.П000010015201;
СтруктураДанныхРаздела.П000010016003 = СтруктураДанныхРаздела.П000010016101
+ СтруктураДанныхРаздела.П000010016201;
СтруктураДанныхРаздела.П000010008003 = СтруктураДанныхРаздела.П000010001003
+ СтруктураДанныхРаздела.П000010002003
+ СтруктураДанныхРаздела.П000010003003
+ СтруктураДанныхРаздела.П000010004003
+ СтруктураДанныхРаздела.П000010005003
+ СтруктураДанныхРаздела.П000010006003
+ СтруктураДанныхРаздела.П000010007003;
СтруктураДанныхРаздела.П000010012003 = СтруктураДанныхРаздела.П000010013003
+ СтруктураДанныхРаздела.П000010014003;
СтруктураДанныхРаздела.П000010018003 = СтруктураДанныхРаздела.П000010012003
+ СтруктураДанныхРаздела.П000010015003
+ СтруктураДанныхРаздела.П000010016003
+ СтруктураДанныхРаздела.П000010017003;
Если СтруктураДанныхРаздела.П000010018003 > СтруктураДанныхРаздела.П000010008003 Тогда
ЗадолженностьЗаФондомВсего = СтруктураДанныхРаздела.П000010018003
- СтруктураДанныхРаздела.П000010008003;
СтруктураДанныхРаздела.П000010019003 = 0;
Иначе
СтруктураДанныхРаздела.П000010019003 = СтруктураДанныхРаздела.П000010008003
- СтруктураДанныхРаздела.П000010018003;
ЗадолженностьЗаФондомВсего = 0;
КонецЕсли;
СтруктураДанныхРаздела.П000010010003 = ЗадолженностьЗаФондомВсего
- СтруктураДанныхРаздела.П000010011003;
СтруктураДанныхРаздела.П000010009003 = СтруктураДанныхРаздела.П000010010003
+ СтруктураДанныхРаздела.П000010011003;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000010002201.Значение = СтруктураДанныхРаздела.П000010002201;
Форма.ТабличныйДокумент.Области.П000010003201.Значение = СтруктураДанныхРаздела.П000010003201;
Форма.ТабличныйДокумент.Области.П000010005201.Значение = СтруктураДанныхРаздела.П000010005201;
Форма.ТабличныйДокумент.Области.П000010006201.Значение = СтруктураДанныхРаздела.П000010006201;
Форма.ТабличныйДокумент.Области.П000010015201.Значение = СтруктураДанныхРаздела.П000010015201;
Форма.ТабличныйДокумент.Области.П000010016201.Значение = СтруктураДанныхРаздела.П000010016201;
Форма.ТабличныйДокумент.Области.П000010002003.Значение = СтруктураДанныхРаздела.П000010002003;
Форма.ТабличныйДокумент.Области.П000010003003.Значение = СтруктураДанныхРаздела.П000010003003;
Форма.ТабличныйДокумент.Области.П000010005003.Значение = СтруктураДанныхРаздела.П000010005003;
Форма.ТабличныйДокумент.Области.П000010006003.Значение = СтруктураДанныхРаздела.П000010006003;
Форма.ТабличныйДокумент.Области.П000010015003.Значение = СтруктураДанныхРаздела.П000010015003;
Форма.ТабличныйДокумент.Области.П000010016003.Значение = СтруктураДанныхРаздела.П000010016003;
Форма.ТабличныйДокумент.Области.П000010008003.Значение = СтруктураДанныхРаздела.П000010008003;
Форма.ТабличныйДокумент.Области.П000010012003.Значение = СтруктураДанныхРаздела.П000010012003;
Форма.ТабличныйДокумент.Области.П000010018003.Значение = СтруктураДанныхРаздела.П000010018003;
Форма.ТабличныйДокумент.Области.П000010019003.Значение = СтруктураДанныхРаздела.П000010019003;
Форма.ТабличныйДокумент.Области.П000010009003.Значение = СтруктураДанныхРаздела.П000010009003;
Форма.ТабличныйДокумент.Области.П000010010003.Значение = СтруктураДанныхРаздела.П000010010003;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_2" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000020007003 = СтруктураДанныхРаздела.П000020008003
+ СтруктураДанныхРаздела.П000020009003;
СтруктураДанныхРаздела.П000020007004 = СтруктураДанныхРаздела.П000020008004
+ СтруктураДанныхРаздела.П000020009004;
СтруктураДанныхРаздела.П000020007005 = СтруктураДанныхРаздела.П000020008005
+ СтруктураДанныхРаздела.П000020009005;
СтруктураДанныхРаздела.П000020010005 = СтруктураДанныхРаздела.П000020010004;
СтруктураДанныхРаздела.П000020012004 = СтруктураДанныхРаздела.П000020001004
+ СтруктураДанныхРаздела.П000020003004
+ СтруктураДанныхРаздела.П000020005004
+ СтруктураДанныхРаздела.П000020006004
+ СтруктураДанныхРаздела.П000020007004
+ СтруктураДанныхРаздела.П000020010004
+ СтруктураДанныхРаздела.П000020011004;
СтруктураДанныхРаздела.П000020012005 = СтруктураДанныхРаздела.П000020001005
+ СтруктураДанныхРаздела.П000020003005
+ СтруктураДанныхРаздела.П000020007005
+ СтруктураДанныхРаздела.П000020010005
+ СтруктураДанныхРаздела.П000020011005;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000020007003.Значение = СтруктураДанныхРаздела.П000020007003;
Форма.ТабличныйДокумент.Области.П000020007004.Значение = СтруктураДанныхРаздела.П000020007004;
Форма.ТабличныйДокумент.Области.П000020007005.Значение = СтруктураДанныхРаздела.П000020007005;
Форма.ТабличныйДокумент.Области.П000020010005.Значение = СтруктураДанныхРаздела.П000020010005;
Форма.ТабличныйДокумент.Области.П000020012004.Значение = СтруктураДанныхРаздела.П000020012004;
Форма.ТабличныйДокумент.Области.П000020012005.Значение = СтруктураДанныхРаздела.П000020012005;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_3" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000030004003 = СтруктураДанныхРаздела.П000030001003
- СтруктураДанныхРаздела.П000030002003
- СтруктураДанныхРаздела.П000030003003;
СтруктураДанныхРаздела.П000030004004 = СтруктураДанныхРаздела.П000030001004
- СтруктураДанныхРаздела.П000030002004
- СтруктураДанныхРаздела.П000030003004;
СтруктураДанныхРаздела.П000030004005 = СтруктураДанныхРаздела.П000030001005
- СтруктураДанныхРаздела.П000030002005
- СтруктураДанныхРаздела.П000030003005;
СтруктураДанныхРаздела.П000030004006 = СтруктураДанныхРаздела.П000030001006
- СтруктураДанныхРаздела.П000030002006
- СтруктураДанныхРаздела.П000030003006;
СтруктураДанныхРаздела.П000030005003 = Форма.СтруктураДанныхРаздел1_4.П000310002005;
СтруктураДанныхРаздела.П000030005004 = Форма.СтруктураДанныхРаздел1_4.П000310002006;
СтруктураДанныхРаздела.П000030005005 = Форма.СтруктураДанныхРаздел1_4.П000310002007;
СтруктураДанныхРаздела.П000030005006 = Форма.СтруктураДанныхРаздел1_4.П000310002008;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000030004003.Значение = СтруктураДанныхРаздела.П000030004003;
Форма.ТабличныйДокумент.Области.П000030004004.Значение = СтруктураДанныхРаздела.П000030004004;
Форма.ТабличныйДокумент.Области.П000030004005.Значение = СтруктураДанныхРаздела.П000030004005;
Форма.ТабличныйДокумент.Области.П000030004006.Значение = СтруктураДанныхРаздела.П000030004006;
Форма.ТабличныйДокумент.Области.П000030005003.Значение = СтруктураДанныхРаздела.П000030005003;
Форма.ТабличныйДокумент.Области.П000030005004.Значение = СтруктураДанныхРаздела.П000030005004;
Форма.ТабличныйДокумент.Области.П000030005005.Значение = СтруктураДанныхРаздела.П000030005005;
Форма.ТабличныйДокумент.Области.П000030005006.Значение = СтруктураДанныхРаздела.П000030005006;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_4" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Форма.мСтруктураМногострочныхРазделов.Свойство(Форма.СтруктураРеквизитовФормы.мИдГруппы1, ТаблицаБлока);
ТаблицаБлока = Форма[ТаблицаБлока];
Колонка5 = 0;
Колонка6 = 0;
Колонка7 = 0;
Колонка8 = 0;
Для Ном = 1 По ТаблицаБлока.Количество() Цикл
Колонка5 = Колонка5 + ТаблицаБлока[Ном-1]["П000310001005"];
Колонка6 = Колонка6 + ТаблицаБлока[Ном-1]["П000310001006"];
Колонка7 = Колонка7 + ТаблицаБлока[Ном-1]["П000310001007"];
Колонка8 = Колонка8 + ТаблицаБлока[Ном-1]["П000310001008"];
КонецЦикла;
СтруктураДанныхРаздела.П000310002005 = Колонка5;
Форма.СтруктураДанныхРаздел1_3.П000030005003 = Колонка5;
СтруктураДанныхРаздела.П000310002006 = Колонка6;
Форма.СтруктураДанныхРаздел1_3.П000030005004 = Колонка6;
СтруктураДанныхРаздела.П000310002007 = Колонка7;
Форма.СтруктураДанныхРаздел1_3.П000030005005 = Колонка7;
СтруктураДанныхРаздела.П000310002008 = Колонка8;
Форма.СтруктураДанныхРаздел1_3.П000030005006 = Колонка8;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000310002005.Значение = Колонка5;
Форма.ТабличныйДокумент.Области.П000310002006.Значение = Колонка6;
Форма.ТабличныйДокумент.Области.П000310002007.Значение = Колонка7;
Форма.ТабличныйДокумент.Области.П000310002008.Значение = Колонка8;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_5" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000040000303 = ? (СтруктураДанныхРаздела.П000040000103 <> 0,
(СтруктураДанныхРаздела.П000040000203
/ СтруктураДанныхРаздела.П000040000103) * 100, 0);
СтруктураДанныхРаздела.П000040000304 = ? (СтруктураДанныхРаздела.П000040000104 <> 0,
(СтруктураДанныхРаздела.П000040000204
/ СтруктураДанныхРаздела.П000040000104) * 100, 0);
СтруктураДанныхРаздела.П000040000305 = ? (СтруктураДанныхРаздела.П000040000105 <> 0,
(СтруктураДанныхРаздела.П000040000205
/ СтруктураДанныхРаздела.П000040000105) * 100, 0);
СтруктураДанныхРаздела.П000040000306 = ? (СтруктураДанныхРаздела.П000040000106 <> 0,
(СтруктураДанныхРаздела.П000040000206
/ СтруктураДанныхРаздела.П000040000106) * 100, 0);
СтруктураДанныхРаздела.П000040000603 = ? (СтруктураДанныхРаздела.П000040000403 <> 0,
(СтруктураДанныхРаздела.П000040000503
/ СтруктураДанныхРаздела.П000040000403) * 100, 0);
СтруктураДанныхРаздела.П000040000604 = ? (СтруктураДанныхРаздела.П000040000404 <> 0,
(СтруктураДанныхРаздела.П000040000504
/ СтруктураДанныхРаздела.П000040000404) * 100, 0);
СтруктураДанныхРаздела.П000040000605 = ? (СтруктураДанныхРаздела.П000040000405 <> 0,
(СтруктураДанныхРаздела.П000040000505
/ СтруктураДанныхРаздела.П000040000405) * 100, 0);
СтруктураДанныхРаздела.П000040000606 = ? (СтруктураДанныхРаздела.П000040000406 <> 0,
(СтруктураДанныхРаздела.П000040000506
/ СтруктураДанныхРаздела.П000040000406) * 100, 0);
СтруктураДанныхРаздела.П000040000903 = ? (СтруктураДанныхРаздела.П000040000703 <> 0,
(СтруктураДанныхРаздела.П000040000803
/ СтруктураДанныхРаздела.П000040000703) * 100, 0);
СтруктураДанныхРаздела.П000040000904 = ? (СтруктураДанныхРаздела.П000040000704 <> 0,
(СтруктураДанныхРаздела.П000040000804
/ СтруктураДанныхРаздела.П000040000704) * 100, 0);
СтруктураДанныхРаздела.П000040000905 = ? (СтруктураДанныхРаздела.П000040000705 <> 0,
(СтруктураДанныхРаздела.П000040000805
/ СтруктураДанныхРаздела.П000040000705) * 100, 0);
СтруктураДанныхРаздела.П000040000906 = ? (СтруктураДанныхРаздела.П000040000706 <> 0,
(СтруктураДанныхРаздела.П000040000806
/ СтруктураДанныхРаздела.П000040000706) * 100, 0);
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000040000303.Значение = СтруктураДанныхРаздела.П000040000303;
Форма.ТабличныйДокумент.Области.П000040000304.Значение = СтруктураДанныхРаздела.П000040000304;
Форма.ТабличныйДокумент.Области.П000040000305.Значение = СтруктураДанныхРаздела.П000040000305;
Форма.ТабличныйДокумент.Области.П000040000306.Значение = СтруктураДанныхРаздела.П000040000306;
Форма.ТабличныйДокумент.Области.П000040000603.Значение = СтруктураДанныхРаздела.П000040000603;
Форма.ТабличныйДокумент.Области.П000040000604.Значение = СтруктураДанныхРаздела.П000040000604;
Форма.ТабличныйДокумент.Области.П000040000605.Значение = СтруктураДанныхРаздела.П000040000605;
Форма.ТабличныйДокумент.Области.П000040000606.Значение = СтруктураДанныхРаздела.П000040000606;
Форма.ТабличныйДокумент.Области.П000040000903.Значение = СтруктураДанныхРаздела.П000040000903;
Форма.ТабличныйДокумент.Области.П000040000904.Значение = СтруктураДанныхРаздела.П000040000904;
Форма.ТабличныйДокумент.Области.П000040000905.Значение = СтруктураДанныхРаздела.П000040000905;
Форма.ТабличныйДокумент.Области.П000040000906.Значение = СтруктураДанныхРаздела.П000040000906;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_6" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000410004003 = ? (СтруктураДанныхРаздела.П000410002003 <> 0,
(СтруктураДанныхРаздела.П000410003003
/ СтруктураДанныхРаздела.П000410002003) * 100, 0);
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000410004003.Значение = СтруктураДанныхРаздела.П000410004003;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел1_7" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000050003007 = СтруктураДанныхРаздела.П000050004007
+ СтруктураДанныхРаздела.П000050005007;
СтруктураДанныхРаздела.П000050003008 = СтруктураДанныхРаздела.П000050004008
+ СтруктураДанныхРаздела.П000050005008;
СтруктураДанныхРаздела.П000050003010 = СтруктураДанныхРаздела.П000050004010
+ СтруктураДанныхРаздела.П000050005010;
СтруктураДанныхРаздела.П000050003011 = СтруктураДанныхРаздела.П000050004011
+ СтруктураДанныхРаздела.П000050005011;
СтруктураДанныхРаздела.П000050003016 = СтруктураДанныхРаздела.П000050004016
+ СтруктураДанныхРаздела.П000050005016;
СтруктураДанныхРаздела.П000050003017 = СтруктураДанныхРаздела.П000050004017
+ СтруктураДанныхРаздела.П000050005017;
СтруктураДанныхРаздела.П000050001003 = СтруктураДанныхРаздела.П000050001006
+ СтруктураДанныхРаздела.П000050001009
+ СтруктураДанныхРаздела.П000050001012
+ СтруктураДанныхРаздела.П000050001015
+ СтруктураДанныхРаздела.П000050001018;
СтруктураДанныхРаздела.П000050002003 = СтруктураДанныхРаздела.П000050002006
+ СтруктураДанныхРаздела.П000050002009
+ СтруктураДанныхРаздела.П000050002015
+ СтруктураДанныхРаздела.П000050002018;
СтруктураДанныхРаздела.П000050003003 = СтруктураДанныхРаздела.П000050003006
+ СтруктураДанныхРаздела.П000050003009
+ СтруктураДанныхРаздела.П000050003015;
СтруктураДанныхРаздела.П000050004003 = СтруктураДанныхРаздела.П000050004006
+ СтруктураДанныхРаздела.П000050004009
+ СтруктураДанныхРаздела.П000050004015;
СтруктураДанныхРаздела.П000050005003 = СтруктураДанныхРаздела.П000050005006
+ СтруктураДанныхРаздела.П000050005009
+ СтруктураДанныхРаздела.П000050005015;
СтруктураДанныхРаздела.П000050006003 = СтруктураДанныхРаздела.П000050006006
+ СтруктураДанныхРаздела.П000050006009
+ СтруктураДанныхРаздела.П000050006015;
СтруктураДанныхРаздела.П000050001004 = СтруктураДанныхРаздела.П000050001007
+ СтруктураДанныхРаздела.П000050001010
+ СтруктураДанныхРаздела.П000050001013
+ СтруктураДанныхРаздела.П000050001016
+ СтруктураДанныхРаздела.П000050001019;
СтруктураДанныхРаздела.П000050002004 = СтруктураДанныхРаздела.П000050002007
+ СтруктураДанныхРаздела.П000050002010
+ СтруктураДанныхРаздела.П000050002016
+ СтруктураДанныхРаздела.П000050002019;
СтруктураДанныхРаздела.П000050003004 = СтруктураДанныхРаздела.П000050003007
+ СтруктураДанныхРаздела.П000050003010
+ СтруктураДанныхРаздела.П000050003016;
СтруктураДанныхРаздела.П000050004004 = СтруктураДанныхРаздела.П000050004007
+ СтруктураДанныхРаздела.П000050004010
+ СтруктураДанныхРаздела.П000050004016;
СтруктураДанныхРаздела.П000050005004 = СтруктураДанныхРаздела.П000050005007
+ СтруктураДанныхРаздела.П000050005010
+ СтруктураДанныхРаздела.П000050005016;
СтруктураДанныхРаздела.П000050006004 = СтруктураДанныхРаздела.П000050006007
+ СтруктураДанныхРаздела.П000050006010
+ СтруктураДанныхРаздела.П000050006016;
СтруктураДанныхРаздела.П000050001005 = СтруктураДанныхРаздела.П000050001008
+ СтруктураДанныхРаздела.П000050001011
+ СтруктураДанныхРаздела.П000050001014
+ СтруктураДанныхРаздела.П000050001017
+ СтруктураДанныхРаздела.П000050001020;
СтруктураДанныхРаздела.П000050002005 = СтруктураДанныхРаздела.П000050002008
+ СтруктураДанныхРаздела.П000050002011
+ СтруктураДанныхРаздела.П000050002017
+ СтруктураДанныхРаздела.П000050002020;
СтруктураДанныхРаздела.П000050003005 = СтруктураДанныхРаздела.П000050003008
+ СтруктураДанныхРаздела.П000050003011
+ СтруктураДанныхРаздела.П000050003017;
СтруктураДанныхРаздела.П000050004005 = СтруктураДанныхРаздела.П000050004008
+ СтруктураДанныхРаздела.П000050004011
+ СтруктураДанныхРаздела.П000050004017;
СтруктураДанныхРаздела.П000050005005 = СтруктураДанныхРаздела.П000050005008
+ СтруктураДанныхРаздела.П000050005011
+ СтруктураДанныхРаздела.П000050005017;
СтруктураДанныхРаздела.П000050006005 = СтруктураДанныхРаздела.П000050006008
+ СтруктураДанныхРаздела.П000050006011
+ СтруктураДанныхРаздела.П000050006017;
СтруктураДанныхРаздела.П000050007003 = СтруктураДанныхРаздела.П000050001003
+ СтруктураДанныхРаздела.П000050002003
+ СтруктураДанныхРаздела.П000050003003
+ СтруктураДанныхРаздела.П000050006003;
СтруктураДанныхРаздела.П000050007005 = СтруктураДанныхРаздела.П000050001005
+ СтруктураДанныхРаздела.П000050002005
+ СтруктураДанныхРаздела.П000050003005
+ СтруктураДанныхРаздела.П000050006005;
СтруктураДанныхРаздела.П000050007006 = СтруктураДанныхРаздела.П000050001006
+ СтруктураДанныхРаздела.П000050002006
+ СтруктураДанныхРаздела.П000050003006
+ СтруктураДанныхРаздела.П000050006006;
СтруктураДанныхРаздела.П000050007008 = СтруктураДанныхРаздела.П000050001008
+ СтруктураДанныхРаздела.П000050002008
+ СтруктураДанныхРаздела.П000050003008
+ СтруктураДанныхРаздела.П000050006008;
СтруктураДанныхРаздела.П000050007009 = СтруктураДанныхРаздела.П000050001009
+ СтруктураДанныхРаздела.П000050002009
+ СтруктураДанныхРаздела.П000050003009
+ СтруктураДанныхРаздела.П000050006009;
СтруктураДанныхРаздела.П000050007011 = СтруктураДанныхРаздела.П000050001011
+ СтруктураДанныхРаздела.П000050002011
+ СтруктураДанныхРаздела.П000050003011
+ СтруктураДанныхРаздела.П000050006011;
СтруктураДанныхРаздела.П000050007012 = СтруктураДанныхРаздела.П000050001012;
СтруктураДанныхРаздела.П000050007014 = СтруктураДанныхРаздела.П000050001014;
СтруктураДанныхРаздела.П000050007015 = СтруктураДанныхРаздела.П000050001015
+ СтруктураДанныхРаздела.П000050002015
+ СтруктураДанныхРаздела.П000050003015
+ СтруктураДанныхРаздела.П000050006015;
СтруктураДанныхРаздела.П000050007017 = СтруктураДанныхРаздела.П000050001017
+ СтруктураДанныхРаздела.П000050002017
+ СтруктураДанныхРаздела.П000050003017
+ СтруктураДанныхРаздела.П000050006017;
СтруктураДанныхРаздела.П000050007018 = СтруктураДанныхРаздела.П000050001018
+ СтруктураДанныхРаздела.П000050002018;
СтруктураДанныхРаздела.П000050007020 = СтруктураДанныхРаздела.П000050001020
+ СтруктураДанныхРаздела.П000050002020;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000050003007.Значение = СтруктураДанныхРаздела.П000050003007;
Форма.ТабличныйДокумент.Области.П000050003008.Значение = СтруктураДанныхРаздела.П000050003008;
Форма.ТабличныйДокумент.Области.П000050003010.Значение = СтруктураДанныхРаздела.П000050003010;
Форма.ТабличныйДокумент.Области.П000050003011.Значение = СтруктураДанныхРаздела.П000050003011;
Форма.ТабличныйДокумент.Области.П000050003016.Значение = СтруктураДанныхРаздела.П000050003016;
Форма.ТабличныйДокумент.Области.П000050003017.Значение = СтруктураДанныхРаздела.П000050003017;
Форма.ТабличныйДокумент.Области.П000050001003.Значение = СтруктураДанныхРаздела.П000050001003;
Форма.ТабличныйДокумент.Области.П000050002003.Значение = СтруктураДанныхРаздела.П000050002003;
Форма.ТабличныйДокумент.Области.П000050003003.Значение = СтруктураДанныхРаздела.П000050003003;
Форма.ТабличныйДокумент.Области.П000050004003.Значение = СтруктураДанныхРаздела.П000050004003;
Форма.ТабличныйДокумент.Области.П000050005003.Значение = СтруктураДанныхРаздела.П000050005003;
Форма.ТабличныйДокумент.Области.П000050006003.Значение = СтруктураДанныхРаздела.П000050006003;
Форма.ТабличныйДокумент.Области.П000050001004.Значение = СтруктураДанныхРаздела.П000050001004;
Форма.ТабличныйДокумент.Области.П000050002004.Значение = СтруктураДанныхРаздела.П000050002004;
Форма.ТабличныйДокумент.Области.П000050003004.Значение = СтруктураДанныхРаздела.П000050003004;
Форма.ТабличныйДокумент.Области.П000050004004.Значение = СтруктураДанныхРаздела.П000050004004;
Форма.ТабличныйДокумент.Области.П000050005004.Значение = СтруктураДанныхРаздела.П000050005004;
Форма.ТабличныйДокумент.Области.П000050006004.Значение = СтруктураДанныхРаздела.П000050006004;
Форма.ТабличныйДокумент.Области.П000050001005.Значение = СтруктураДанныхРаздела.П000050001005;
Форма.ТабличныйДокумент.Области.П000050002005.Значение = СтруктураДанныхРаздела.П000050002005;
Форма.ТабличныйДокумент.Области.П000050003005.Значение = СтруктураДанныхРаздела.П000050003005;
Форма.ТабличныйДокумент.Области.П000050004005.Значение = СтруктураДанныхРаздела.П000050004005;
Форма.ТабличныйДокумент.Области.П000050005005.Значение = СтруктураДанныхРаздела.П000050005005;
Форма.ТабличныйДокумент.Области.П000050006005.Значение = СтруктураДанныхРаздела.П000050006005;
Форма.ТабличныйДокумент.Области.П000050007003.Значение = СтруктураДанныхРаздела.П000050007003;
Форма.ТабличныйДокумент.Области.П000050007005.Значение = СтруктураДанныхРаздела.П000050007005;
Форма.ТабличныйДокумент.Области.П000050007006.Значение = СтруктураДанныхРаздела.П000050007006;
Форма.ТабличныйДокумент.Области.П000050007008.Значение = СтруктураДанныхРаздела.П000050007008;
Форма.ТабличныйДокумент.Области.П000050007009.Значение = СтруктураДанныхРаздела.П000050007009;
Форма.ТабличныйДокумент.Области.П000050007011.Значение = СтруктураДанныхРаздела.П000050007011;
Форма.ТабличныйДокумент.Области.П000050007012.Значение = СтруктураДанныхРаздела.П000050007012;
Форма.ТабличныйДокумент.Области.П000050007014.Значение = СтруктураДанныхРаздела.П000050007014;
Форма.ТабличныйДокумент.Области.П000050007015.Значение = СтруктураДанныхРаздела.П000050007015;
Форма.ТабличныйДокумент.Области.П000050007017.Значение = СтруктураДанныхРаздела.П000050007017;
Форма.ТабличныйДокумент.Области.П000050007018.Значение = СтруктураДанныхРаздела.П000050007018;
Форма.ТабличныйДокумент.Области.П000050007020.Значение = СтруктураДанныхРаздела.П000050007020;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел2_1" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000060001203 = СтруктураДанныхРаздела.П000060001303
+ СтруктураДанныхРаздела.П000060001403
+ СтруктураДанныхРаздела.П000060001503;
СтруктураДанныхРаздела.П000060001204 = СтруктураДанныхРаздела.П000060001304
+ СтруктураДанныхРаздела.П000060001404
+ СтруктураДанныхРаздела.П000060001504;
СтруктураДанныхРаздела.П000060001205 = СтруктураДанныхРаздела.П000060001305
+ СтруктураДанныхРаздела.П000060001405
+ СтруктураДанныхРаздела.П000060001505;
СтруктураДанныхРаздела.П000060001010 = СтруктураДанныхРаздела.П000060001006
* (1 - СтруктураДанныхРаздела.П000060001007 / 100
+ СтруктураДанныхРаздела.П000060001009 / 100);
СтруктураДанныхРаздела.П000070002401 = СтруктураДанныхРаздела.П000070002101
+ СтруктураДанныхРаздела.П000070002201
+ СтруктураДанныхРаздела.П000070002301;
СтруктураДанныхРаздела.П000070011401 = СтруктураДанныхРаздела.П000070011101
+ СтруктураДанныхРаздела.П000070011201
+ СтруктураДанныхРаздела.П000070011301;
СтруктураДанныхРаздела.П000070012401 = СтруктураДанныхРаздела.П000070012101
+ СтруктураДанныхРаздела.П000070012201
+ СтруктураДанныхРаздела.П000070012301;
СтруктураДанныхРаздела.П000070002003 = СтруктураДанныхРаздела.П000070002001
+ СтруктураДанныхРаздела.П000070002401;
СтруктураДанныхРаздела.П000070011003 = СтруктураДанныхРаздела.П000070011001
+ СтруктураДанныхРаздела.П000070011401;
СтруктураДанныхРаздела.П000070012003 = СтруктураДанныхРаздела.П000070012001
+ СтруктураДанныхРаздела.П000070012401;
СтруктураДанныхРаздела.П000070008003 = СтруктураДанныхРаздела.П000070001003
+ СтруктураДанныхРаздела.П000070002003
+ СтруктураДанныхРаздела.П000070003003
+ СтруктураДанныхРаздела.П000070004003
+ СтруктураДанныхРаздела.П000070005003
+ СтруктураДанныхРаздела.П000070006003
+ СтруктураДанныхРаздела.П000070007003;
СтруктураДанныхРаздела.П000070014003 = СтруктураДанныхРаздела.П000070010003
+ СтруктураДанныхРаздела.П000070011003
+ СтруктураДанныхРаздела.П000070012003
+ СтруктураДанныхРаздела.П000070013003;
СтруктураДанныхРаздела.П000070009003 = ?(СтруктураДанныхРаздела.П000070014003 > СтруктураДанныхРаздела.П000070008003
, СтруктураДанныхРаздела.П000070014003 - СтруктураДанныхРаздела.П000070008003, 0);
СтруктураДанныхРаздела.П000070015003 = ?(СтруктураДанныхРаздела.П000070008003 > СтруктураДанныхРаздела.П000070014003
, СтруктураДанныхРаздела.П000070008003 - СтруктураДанныхРаздела.П000070014003, 0);
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000060001203.Значение = СтруктураДанныхРаздела.П000060001203;
Форма.ТабличныйДокумент.Области.П000060001204.Значение = СтруктураДанныхРаздела.П000060001204;
Форма.ТабличныйДокумент.Области.П000060001205.Значение = СтруктураДанныхРаздела.П000060001205;
Форма.ТабличныйДокумент.Области.П000060001010.Значение = СтруктураДанныхРаздела.П000060001010;
Форма.ТабличныйДокумент.Области.П000070002401.Значение = СтруктураДанныхРаздела.П000070002401;
Форма.ТабличныйДокумент.Области.П000070011401.Значение = СтруктураДанныхРаздела.П000070011401;
Форма.ТабличныйДокумент.Области.П000070012401.Значение = СтруктураДанныхРаздела.П000070012401;
Форма.ТабличныйДокумент.Области.П000070002003.Значение = СтруктураДанныхРаздела.П000070002003;
Форма.ТабличныйДокумент.Области.П000070011003.Значение = СтруктураДанныхРаздела.П000070011003;
Форма.ТабличныйДокумент.Области.П000070012003.Значение = СтруктураДанныхРаздела.П000070012003;
Форма.ТабличныйДокумент.Области.П000070008003.Значение = СтруктураДанныхРаздела.П000070008003;
Форма.ТабличныйДокумент.Области.П000070014003.Значение = СтруктураДанныхРаздела.П000070014003;
Форма.ТабличныйДокумент.Области.П000070009003.Значение = СтруктураДанныхРаздела.П000070009003;
Форма.ТабличныйДокумент.Области.П000070015003.Значение = СтруктураДанныхРаздела.П000070015003;
КонецЕсли;
ИначеЕсли ИмяТекущегоРаздела = "Раздел2_2" Тогда
СтруктураДанныхРаздела = Форма["СтруктураДанных" + ИмяТекущегоРаздела];
СтруктураДанныхРаздела.П000080010004 = СтруктураДанныхРаздела.П000080001004
+ СтруктураДанныхРаздела.П000080004004
+ СтруктураДанныхРаздела.П000080007004
+ СтруктураДанныхРаздела.П000080009004;
СтруктураДанныхРаздела.П000090004003 = СтруктураДанныхРаздела.П000090001003
+ СтруктураДанныхРаздела.П000090003003;
Если Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела = ИмяТекущегоРаздела Тогда
Форма.ТабличныйДокумент.Области.П000080010004.Значение = СтруктураДанныхРаздела.П000080010004;
Форма.ТабличныйДокумент.Области.П000090004003.Значение = СтруктураДанныхРаздела.П000090004003;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСтроку(Команда)
#Если ВебКлиент Тогда
ДобавитьСтрокуНаСервере(Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
#Иначе
ДобавитьСтрокуНаКлиенте(Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим);
#КонецЕсли
КонецПроцедуры
&НаСервере
Процедура ДобавитьСтрокуНаСервере(КолонкаРазделыОтчетаСокрНаим)
ВставитьДополнительнуюСтроку(ЭтаФорма, КолонкаРазделыОтчетаСокрНаим);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСтрокуНаКлиенте(КолонкаРазделыОтчетаСокрНаим)
ВставитьДополнительнуюСтроку(ЭтаФорма, КолонкаРазделыОтчетаСокрНаим);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьСтроку(Команда)
ТекТабличноеПоле = ЭтаФорма["ТабличныйДокумент"];
ТекущаяОбласть = ТекТабличноеПоле.ТекущаяОбласть;
ИмяГруппы = РегламентированнаяОтчетностьКлиент.РазделТекущейОбласти(ЭтаФорма, ТекущаяОбласть);
Если ИмяГруппы = Неопределено Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Не выбрана удаляемая строка многострочного раздела.'");
Сообщение.Сообщить();
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьСтрокуЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru='Удалить выбранную строку?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьСтрокуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
#Если ВебКлиент Тогда
УдалитьДополнительнуюСтрокуНаСервере();
#Иначе
УдалитьДополнительнуюСтрокуНаКлиенте();
#КонецЕсли
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВставитьДополнительнуюСтроку(Форма, ТекущаяСтраница)
Перем СтруктураГруппы;
Перем МаксимальноеКоличествоСтрокГруппы;
#Если НаКлиенте Тогда
ИмяГруппы = Форма.ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаКлиенте(ТекущаяСтраница);
#Иначе
ИмяГруппы = Форма.ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ТекущаяСтраница);
#КонецЕсли
Если ИмяГруппы = Неопределено Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Не выбран многострочный раздел, в который необходимо добавить строку.'");
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Форма.мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, МаксимальноеКоличествоСтрокГруппы);
ТекТабличноеПолеИмя = "ТабличныйДокумент";
ТекТабличноеПоле = Форма[ТекТабличноеПолеИмя];
Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы);
СтруктураГруппы = Форма[СтруктураГруппы];
КолСтрок = СтруктураГруппы.Количество();
КолСтрокСтр = Формат(КолСтрок, "ЧГ=0");
КолСтрокСтр1 = Формат(КолСтрок + 1, "ЧГ=0");
ИмяПервойЯчейкиПоследнейСтроки = ИмяГруппы + "01_" + КолСтрокСтр;
ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяПервойЯчейкиПоследнейСтроки];
НомерВерхЯчейкиОбласти = ОбластьЯчейки.Верх;
НомерНижнЯчейкиОбласти = ОбластьЯчейки.Низ;
СдвигСтрок = НомерНижнЯчейкиОбласти - НомерВерхЯчейкиОбласти + 1;
НомерВерхЯчейкиНовойОбласти = НомерВерхЯчейкиОбласти + СдвигСтрок;
НомерНижнЯчейкиНовойОбласти = НомерНижнЯчейкиОбласти + СдвигСтрок;
РегламентированнаяОтчетностьВызовСервера.СпециальногоДобавленияСтроки(ТекТабличноеПоле, ТекТабличноеПолеИмя, ИмяГруппы, НомерВерхЯчейкиОбласти, НомерНижнЯчейкиОбласти);
Форма[ТекТабличноеПолеИмя] = ТекТабличноеПоле;
Для НомерГрафы = 1 По Форма.мСтруктураКолвоКолонокРазделов[ИмяГруппы] Цикл
ИмяКолонки = ИмяГруппы + Формат(НомерГрафы, "ЧЦ=2; ЧВН=");
Если СтруктураГруппы[0].Свойство(ИмяКолонки) Тогда
ИмяОбластиЯчейки = ИмяКолонки + "_" + КолСтрокСтр;
ИмяНовОбластиЯчейки = ИмяКолонки + "_" + КолСтрокСтр1;
ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяОбластиЯчейки];
ОбластьЯчейки.Имя = ИмяНовОбластиЯчейки;
НомерВерхСтрокиЯчейки = ОбластьЯчейки.Верх - СдвигСтрок;
НомерНижнСтрокиЯчейки = ОбластьЯчейки.Низ - СдвигСтрок;
НомерЛевоКолонкиЯчейки = ОбластьЯчейки.Лево;
НомерПравКолонкиЯчейки = ОбластьЯчейки.Право;
ОбластьЯчейкиИсходнойОбласти = ТекТабличноеПоле.Область(НомерВерхСтрокиЯчейки, НомерЛевоКолонкиЯчейки, НомерНижнСтрокиЯчейки, НомерПравКолонкиЯчейки);
ОбластьЯчейкиИсходнойОбласти.Имя = ИмяОбластиЯчейки;
Если НомерГрафы = 1 Тогда
НовОбластьЯчейкиУдалитьСтроку = ТекТабличноеПоле.Область(ОбластьЯчейки.Верх, 2, ОбластьЯчейки.Верх, 2);
НовОбластьЯчейкиУдалитьСтроку.Имя = "УдалитьСтроку" + ИмяНовОбластиЯчейки;
ИсхОбластьЯчейкиУдалитьСтроку = ТекТабличноеПоле.Область(ОбластьЯчейкиИсходнойОбласти.Верх, 2, ОбластьЯчейкиИсходнойОбласти.Верх, 2);
ИсхОбластьЯчейкиУдалитьСтроку.Имя = "УдалитьСтроку" + ИмяОбластиЯчейки;
КонецЕсли;
Если ОбластьЯчейки.СодержитЗначение = Истина Тогда
ОбластьЯчейки.Очистить();
Иначе
ИсходныйНомер = Число("0" + ОбластьЯчейки.Текст);
НовыйПорядковыйНомер = ИсходныйНомер + 1;
ОбластьЯчейки.Текст = ? (НЕ НовыйПорядковыйНомер > МаксимальноеКоличествоСтрокГруппы, Строка(НовыйПорядковыйНомер), "");
КонецЕсли;
КонецЕсли;
КонецЦикла;
ИмяТекущейОбласти = ИмяГруппы + "01_" + КолСтрокСтр1;
Форма.Элементы[ТекТабличноеПолеИмя].ТекущаяОбласть = ТекТабличноеПоле.Области[ИмяТекущейОбласти];
Форма.ТекущийЭлемент = Форма.Элементы[ТекТабличноеПолеИмя];
СтруктураГруппы.Добавить();
РегламентированнаяОтчетностьКлиентСервер.ОтрисоватьЗначкиУдаленияСтрок(Форма);
Форма.Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура УдалитьДополнительнуюСтрокуНаСервере()
УдалитьДополнительнуюСтроку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьДополнительнуюСтрокуНаКлиенте()
УдалитьДополнительнуюСтроку(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ДобавитьНеобходимоеКоличествоДопСтрокНаСервере(ТекТабличноеПоле, ТекТабличноеПолеИмя, ИсходноеКоличествоСтрокГруппы, ТекущееКоличествоСтрокГруппы, ИмяГруппы, СтруктураГруппы) Экспорт
ОбластьДопСтроки = ТекТабличноеПоле.ПолучитьОбласть("МногострочнаяЧасть");
МногострочнаяЧастьВерх = ТекТабличноеПоле.Области.МногострочнаяЧасть.Верх;
ТекТабличноеПоле.ВставитьОбласть(ОбластьДопСтроки.Область(), ТекТабличноеПоле.Область(МногострочнаяЧастьВерх + 1, , МногострочнаяЧастьВерх + ТекущееКоличествоСтрокГруппы - 1), ТипСмещенияТабличногоДокумента.ПоВертикали);
Для НомНовойСтроки = ИсходноеКоличествоСтрокГруппы По ТекущееКоличествоСтрокГруппы Цикл
Для Каждого Область Из ОбластьДопСтроки.Области Цикл
ОбластьТаблДок = ТекТабличноеПоле.Область(МногострочнаяЧастьВерх + ТекущееКоличествоСтрокГруппы - НомНовойСтроки, Область.Лево, МногострочнаяЧастьВерх + ТекущееКоличествоСтрокГруппы - НомНовойСтроки, Область.Право);
Если ОбластьТаблДок.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
Если ОбластьТаблДок.СодержитЗначение Тогда
ОбластьТаблДок.Очистить();
КонецЕсли;
ОбластьТаблДок.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_")) + Строка(ТекущееКоличествоСтрокГруппы - НомНовойСтроки + 1);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТекТабличноеПоле.Область(ТекТабличноеПоле.Области.МногострочнаяЧасть.Верх, , ТекТабличноеПоле.Области.МногострочнаяЧасть.Верх).Имя = "";
ТекТабличноеПоле.Область(МногострочнаяЧастьВерх, , МногострочнаяЧастьВерх).Имя = "МногострочнаяЧасть";
КонецПроцедуры
&НаСервере
Процедура УдалитьНеобходимоеКоличествоДопСтрокНаСервере(ВыбТабличноеПоле, ВыбТабличноеПолеИмя, ИмяГруппыДопСтрок) Экспорт
ПромТаблицаДопСтрокРаздела = Неопределено;
мСтруктураМногострочныхРазделов.Свойство(ИмяГруппыДопСтрок, ПромТаблицаДопСтрокРаздела);
ПромТаблицаДопСтрокРаздела = ЭтаФорма[ПромТаблицаДопСтрокРаздела];
ИсходноеКоличествоСтрокГруппы = 0;
мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппыДопСтрок, ИсходноеКоличествоСтрокГруппы);
ТекущееКоличествоСтрок = ПромТаблицаДопСтрокРаздела.Количество();
Если ТекущееКоличествоСтрок > ИсходноеКоличествоСтрокГруппы Тогда
НСтр = ПромТаблицаДопСтрокРаздела.Количество();
Пока НСтр > ИсходноеКоличествоСтрокГруппы Цикл
ТекСтрокаТаблицы = ПромТаблицаДопСтрокРаздела[НСтр - 1];
ИмяПервойКолонки = ИмяГруппыДопСтрок + "01_";
ИмяПервойЯчейкиУдаляемойСтроки = ИмяПервойКолонки + НСтр;
ОбластьЯчейки = ВыбТабличноеПоле.Области[ИмяПервойЯчейкиУдаляемойСтроки];
НомерВерхЯчейкиОбласти = ОбластьЯчейки.Верх;
НомерНижнЯчейкиОбласти = ОбластьЯчейки.Низ;
РегламентированнаяОтчетностьВызовСервера.СпециальногоУдаленияСтроки(ВыбТабличноеПоле, ВыбТабличноеПолеИмя, ИмяГруппыДопСтрок, НомерВерхЯчейкиОбласти, НомерНижнЯчейкиОбласти);
ПромТаблицаДопСтрокРаздела.Удалить(ТекСтрокаТаблицы);
НСтр = НСтр - 1;
КонецЦикла;
Если ВыбТабличноеПоле.Области.Найти("МногострочнаяЧасть") = Неопределено Тогда
ВыбТабличноеПоле.Область(НомерВерхЯчейкиОбласти - 1, , НомерНижнЯчейкиОбласти - 1).Имя = "МногострочнаяЧасть";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УдалитьДополнительнуюСтроку(Форма, СпециальноеДобавление = Ложь, ИмяКолонкиНомера = Неопределено) Экспорт
Перем ИсходноеКоличествоСтрокГруппы;
Перем СтруктураГруппы;
ТекущаяСтраница = Форма.СтруктураРеквизитовФормы.НаимТекущегоРаздела;
ТекТабличноеПоле = Форма.ТабличныйДокумент;
ТекущаяОбласть = Форма.Элементы["ТабличныйДокумент"].ТекущаяОбласть;
#Если НаКлиенте ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
ИмяГруппы = РегламентированнаяОтчетностьКлиент.РазделТекущейОбласти(Форма, ТекущаяОбласть);
#Иначе
ИмяГруппы = РегламентированнаяОтчетностьВызовСервера.РазделТекущейОбластиНаСервере(Форма, ТекущаяОбласть);
#КонецЕсли
Форма.мСтруктураИсхКолвоСтрокРазделов.Свойство(ИмяГруппы, ИсходноеКоличествоСтрокГруппы);
ТекТабличноеПолеИмя = "ТабличныйДокумент";
ТекТабличноеПоле = Форма[ТекТабличноеПолеИмя];
Форма.мСтруктураМногострочныхРазделов.Свойство(ИмяГруппы, СтруктураГруппы);
СтруктураГруппы = Форма[СтруктураГруппы];
ТекущаяОбласть = Форма.Элементы["ТабличныйДокумент"].ТекущаяОбласть;
ИмяЯчейки = ТекущаяОбласть.Имя;
НомУдаляемойСтроки = Число(Сред(ИмяЯчейки, СтрНайти(ИмяЯчейки, "_") + 1));
НомерСтрокиТаблицы = НомУдаляемойСтроки - 1;
Если СтруктураГруппы.Количество() > ИсходноеКоличествоСтрокГруппы Тогда
ИмяПервойЯчейкиУдаляемойСтроки = ИмяГруппы + "01_" + Формат(НомУдаляемойСтроки, "ЧГ=0");
ОбластьЯчейки = ТекТабличноеПоле.Области[ИмяПервойЯчейкиУдаляемойСтроки];
НастройкиМнгЧ = РегламентированнаяОтчетностьКлиентСервер.ПолучитьСвойствоРаздела(Форма, ТекущаяСтраница, "МногострочностьВРазделе").НайтиСтроки(Новый Структура("ИдГруппы", ИмяГруппы))[0];
ВысотаСтроки = НастройкиМнгЧ.ВысотаСтроки;
НомерВерхЯчейкиОбласти = ОбластьЯчейки.Верх;
НомерНижнЯчейкиОбласти = ОбластьЯчейки.Верх + ВысотаСтроки - 1;
МногострочностьВРазделе = РегламентированнаяОтчетностьКлиентСервер.ПолучитьСвойствоРаздела(Форма, ТекущаяСтраница, "МногострочностьВРазделе");
МногострочностьВРазделеТип = ТипЗнч(МногострочностьВРазделе);
Если МногострочностьВРазделеТип = Тип("Число") Тогда
ИмяОбластиМнгЧ = "МногострочнаяЧасть";
ИначеЕсли МногострочностьВРазделеТип = Тип("ДанныеФормыКоллекция") Тогда
ИмяОбластиМнгЧ = МногострочностьВРазделе.НайтиСтроки(Новый Структура("ИдГруппы", ИмяГруппы))[0].Область;
КонецЕсли;
Если ТекТабличноеПоле.Области.Найти(ИмяОбластиМнгЧ) <> Неопределено Тогда
ОбластьВерх = ТекТабличноеПоле.Области[ИмяОбластиМнгЧ].Верх;
ОбластьНиз = ТекТабличноеПоле.Области[ИмяОбластиМнгЧ].Низ;
КонецЕсли;
Если СпециальноеДобавление Тогда
Иначе
РегламентированнаяОтчетностьВызовСервера.УдалитьОбластьИзТабличногоДокумента(ТекТабличноеПоле, НомерВерхЯчейкиОбласти, НомерНижнЯчейкиОбласти);
Форма[ТекТабличноеПолеИмя] = ТекТабличноеПоле;
КонецЕсли;
ТекТабличноеПоле.Область(ОбластьВерх, 0, ОбластьНиз, 0).Имя = ИмяОбластиМнгЧ;
КолвоСдвигаемыхСтрок = СтруктураГруппы.Количество() - НомУдаляемойСтроки;
Если КолвоСдвигаемыхСтрок > 0 Тогда
Для НСтр = НомУдаляемойСтроки + 1 По СтруктураГруппы.Количество() Цикл
ТекСтрока = СтруктураГруппы[НСтр - 1];
НСтрСтр = Формат(НСтр, "ЧГ=0");
НСтрСтр1 = Формат(НСтр - 1, "ЧГ=0");
Для НомерГрафы = 1 По Форма.мСтруктураКолвоКолонокРазделов[ИмяГруппы] Цикл
КолонкаИмя = ИмяГруппы + Формат(НомерГрафы, "ЧЦ=2; ЧВН=");
Если СтруктураГруппы[0].Свойство(КолонкаИмя) Тогда
ИмяСдвинутойЯчейки = КолонкаИмя + "_" + НСтрСтр;
НовоеИмяСдвинутойЯчейки = КолонкаИмя + "_" + НСтрСтр1;
ОбластьСдвинутойЯчейки = ТекТабличноеПоле.Области[ИмяСдвинутойЯчейки];
ОбластьСдвинутойЯчейки.Имя = НовоеИмяСдвинутойЯчейки;
Если НомерГрафы = 1 Тогда
ОбластьЯчейкиУдалитьСтроку = ТекТабличноеПоле.Область(ОбластьСдвинутойЯчейки.Верх, 2, ОбластьСдвинутойЯчейки.Верх, 2);
ОбластьЯчейкиУдалитьСтроку.Имя = "УдалитьСтроку" + НовоеИмяСдвинутойЯчейки;
КонецЕсли;
Если ИмяКолонкиНомера <> Неопределено Тогда
Если ИмяКолонкиНомера = КолонкаИмя Тогда
СтарыйНомер = Число(ТекСтрока[КолонкаИмя]);
НовыйПорядковыйНомер = Строка(Макс(СтарыйНомер - 1, 0));
ОбластьСдвинутойЯчейки.Текст = НовыйПорядковыйНомер;
ТекСтрока[КолонкаИмя] = НовыйПорядковыйНомер;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
СтруктураГруппы.Удалить(НомерСтрокиТаблицы);
Иначе
СтруктураГруппы.Удалить(НомерСтрокиТаблицы);
ДобавляемаяСтрока = СтруктураГруппы.Добавить();
Для Каждого СтрокаТаблицы Из СтруктураГруппы Цикл
НомерСтрокиВТаблице = СтруктураГруппы.Индекс(СтрокаТаблицы);
НомерСтрокиВФормеТаблицы = Формат(НомерСтрокиВТаблице + 1, "ЧГ=0");
Для НомерГрафы = 1 По Форма.мСтруктураКолвоКолонокРазделов[ИмяГруппы] Цикл
КолонкаТаблицыИмя = ИмяГруппы + Формат(НомерГрафы, "ЧЦ=2; ЧВН=");
Если СтруктураГруппы[0].Свойство(КолонкаТаблицыИмя) Тогда
Если ИмяКолонкиНомера <> Неопределено Тогда
Если ИмяКолонкиНомера = КолонкаТаблицыИмя Тогда
СтрокаТаблицы[КолонкаТаблицыИмя] = НомерСтрокиВФормеТаблицы;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
#Если НаКлиенте Тогда
Форма.ВывестиРазделВТабличныйДокументНаКлиенте(ИмяГруппы, СтруктураГруппы);
#Иначе
Форма.ВывестиРазделВТабличныйДокументНаСервере(ИмяГруппы, СтруктураГруппы);
#КонецЕсли
КонецЕсли;
НомТекущейСтроки = Мин(НомУдаляемойСтроки, СтруктураГруппы.Количество());
ИмяТекущейОбласти = ИмяГруппы + "01_" + Формат(НомТекущейСтроки, "ЧГ=0");
Форма.Элементы[ТекТабличноеПолеИмя].ТекущаяОбласть = ТекТабличноеПоле.Области[ИмяТекущейОбласти];
ТекущийЭлемент = Форма.Элементы[ТекТабличноеПолеИмя];
РегламентированнаяОтчетностьКлиентСервер.ОтрисоватьЗначкиУдаленияСтрок(Форма);
Форма.Модифицированность = Истина;
#Если НаКлиенте Тогда
Форма.РасчетНаКлиенте("Раздел1_4");
#Иначе
Форма.РасчетНаСервере("Раздел1_4");
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура Очистить(ВыполняемоеОповещение = Неопределено) Экспорт
РегламентированнаяОтчетностьКлиент.Очистить(ЭтаФорма, ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьОтчет(Команда)
РегламентированнаяОтчетностьКлиент.МеханизмыОчисткиРегламентированныхОтчетов(ЭтаФорма, "ОчиститьВесьОтчет");
КонецПроцедуры
&НаСервере
Процедура ОчиститьНаСервере() Экспорт
СтруктураДанныхРаздел1_1.Очистить();
СтруктураДанныхРаздел1_2.Очистить();
СтруктураДанныхРаздел1_3.Очистить();
СтруктураДанныхРаздел1_4.Очистить();
СтруктураДанныхРаздел1_5.Очистить();
СтруктураДанныхРаздел1_6.Очистить();
СтруктураДанныхРаздел1_7.Очистить();
СтруктураДанныхРаздел2_1.Очистить();
СтруктураДанныхРаздел2_2.Очистить();
Для Каждого мнгРаздел Из мСтруктураМногострочныхРазделов Цикл
ЭтаФорма[мнгРаздел.Ключ].Очистить();
КонецЦикла;
НачальныеОперацииСМногострочнымиБлоками();
ЗаполнитьПустыеСтруктурыДанных();
Если НЕ СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Титульный" Тогда
ОчиститьТабличноеПолеНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела);
КонецЕсли;
ВывестиМакетСтраницыВТабличныйДокументНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела, 1);
РасчетНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела);
РегламентированнаяОтчетностьКлиентСервер.ОчиститьВариантыЗаполнения(ЭтаФорма);
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
РегламентированнаяОтчетность.ПолучитьСведенияОПоказателяхОтчета(ЭтаФорма, ПараметрыОтчета);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьТекущуюСтраницу(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ОчиститьТекущуюСтраницуЗавершение", ЭтотОбъект);
РегламентированнаяОтчетностьКлиент.МеханизмыОчисткиРегламентированныхОтчетов(
ЭтаФорма, "ОчиститьТекущийЭкземплярМногостраничногоРаздела"
+ Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьТекущуюСтраницуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если СтруктураРеквизитовФормы.НаимТекущегоРаздела = "Титульный" Тогда
НомерКорректировки = 0;
СтруктураРеквизитовФормы.ВидДокумента = 0;
ДатаПодписи = Неопределено;
ОтобразитьНомерКорректировки(ЭтаФорма);
ТабличныйДокумент.Области.ДатаПодписи.Значение = ДатаПодписи;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОчисткаРегламентированногоОтчетаНаСервере(ИмяСтраницы, ЗапускатьОтдельнуюОбработкуПослеОчисткиЛиста, РежимОчистки, Многостраничность, КолВоСтраницВРазделе) Экспорт
УдалятьсяВсеДопЭкземпляры = Ложь;
Если СтрНайти(РежимОчистки, "ОчиститьТекущийРаздел") > 0 Тогда
Если (Многостраничность) И (КолВоСтраницВРазделе > 1) Тогда
ОчиститьПоказателиОтчетаЗаполняемыеИзИБНаСервере(ИмяСтраницы);
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
РегламентированнаяОтчетность.ПолучитьСведенияОПоказателяхОтчета(ЭтаФорма, ПараметрыОтчета);
УдалятьсяВсеДопЭкземпляры = Истина;
Иначе
ОчиститьТабличноеПолеНаСервере(ИмяСтраницы);
КонецЕсли;
СформироватьДеревоРазделовОтчетаНаСервере();
СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Ложь;
ИначеЕсли СтрНайти(РежимОчистки, "ОчиститьТекущийЭкземплярМногостраничногоРаздела") > 0 Тогда
ОчиститьТабличноеПолеНаСервере(ИмяСтраницы);
КонецЕсли;
Если ИмяСтраницы = "Титульный" Тогда
Если Элементы.Найти("ДатаПодписи") = Неопределено Тогда
Область = ТабличныйДокумент.Области.Найти("ДатаПодписи");
Если НЕ Область = Неопределено Тогда
Если ТипЗнч(Область.Значение) = Тип("Строка") Тогда
ДатаПодписи = Лев(СтрЗаменить(Область.Значение, ".", ""), 8);
ИначеЕсли ТипЗнч(Область.Значение) = Тип("Дата") Тогда
Если ЗначениеЗаполнено(Область.Значение) Тогда
ДатаПодписи = Лев(СтрЗаменить(Формат(Область.Значение, "ДФ = ""дд.ММ.гггг 'г.'"""), ".", ""), 8);
Иначе
ДатаПодписи = " ";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
РегламентированнаяОтчетностьКлиентСервер.ПослеОчисткиРегламентированногоОтчета(ЭтаФорма, ИмяСтраницы, ЗапускатьОтдельнуюОбработкуПослеОчисткиЛиста);
КонецПроцедуры
&НаКлиенте
Процедура ОчисткаРегламентированногоОтчетаНаКлиенте(ИмяСтраницы, ЗапускатьОтдельнуюОбработкуПослеОчисткиЛиста, РежимОчистки, Многостраничность, КолВоСтраницВРазделе) Экспорт
УдалятьсяВсеДопЭкземпляры = Ложь;
Если СтрНайти(РежимОчистки, "ОчиститьТекущийРаздел") > 0 Тогда
Если (Многостраничность) И (КолВоСтраницВРазделе > 1) Тогда
РегламентированнаяОтчетностьКлиентСервер.ОчиститьПоказателиОтчетаЗаполняемыеИзИБ(ЭтаФорма, ИмяСтраницы);
УдалятьсяВсеДопЭкземпляры = Истина;
Иначе
ОчиститьТабличноеПолеНаКлиенте(ИмяСтраницы);
КонецЕсли;
СформироватьДеревоРазделовОтчетаНаКлиенте();
ИначеЕсли СтрНайти(РежимОчистки, "ОчиститьТекущийЭкземплярМногостраничногоРаздела") > 0 Тогда
ОчиститьТабличноеПолеНаКлиенте(ИмяСтраницы);
КонецЕсли;
РегламентированнаяОтчетностьКлиентСервер.ПослеОчисткиРегламентированногоОтчета(ЭтаФорма, ИмяСтраницы, ЗапускатьОтдельнуюОбработкуПослеОчисткиЛиста);
КонецПроцедуры
&НаСервере
Процедура ОчиститьПоказателиОтчетаЗаполняемыеИзИБНаСервере(НазванияМногостраничныхРазделовДляУдаления = "")
РегламентированнаяОтчетностьКлиентСервер.ОчиститьПоказателиОтчетаЗаполняемыеИзИБ(ЭтаФорма, НазванияМногостраничныхРазделовДляУдаления);
КонецПроцедуры
&НаСервере
Процедура УстановитьФорматВыводаВПоляхВводаНаСервере(НаимРаздела)
УстановитьФорматВыводаВПоляхВвода(ЭтаФорма, НаимРаздела);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьФорматВыводаВПоляхВвода(Форма, НаимРаздела) Экспорт
Перем СтруктураГруппы;
Если Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 0";
ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 3";
ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000000 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "ЧЦ = 17; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 6";
КонецЕсли;
ИмяПоляТаблДокументаСтароеЗначение = "";
Для Каждого СтрПоказатели Из Форма.мТаблицаСоставПоказателей Цикл
ИмяПоляТаблДокумента = СокрП(СтрПоказатели.ИмяПоляТаблДокумента);
КодПоказателя = СокрП(СтрПоказатели.КодПоказателяПоСоставу);
ПризнМногострочность = СокрП(СтрПоказатели.ПризнМногострочности);
КодПоказателяПоСтруктуре = СокрП(СтрПоказатели.КодПоказателяПоСтруктуре);
КодПоказателяПоФорме = СокрП(СтрПоказатели.КодПоказателяПоФорме);
ТипДанныхПоказателя = СокрП(СтрПоказатели.ТипДанныхПоказателя);
ИмяПоказателя = ?(ПустаяСтрока(СтрПоказатели.КодПоказателяПоФорме), КодПоказателя, КодПоказателяПоФорме);
Если НаимРаздела <> ИмяПоляТаблДокумента Тогда
Продолжить;
КонецЕсли;
Если ПустаяСтрока(КодПоказателя) ИЛИ КодПоказателя = "===" ИЛИ КодПоказателя = "###" ИЛИ Лев(КодПоказателя, 2) = "//" Тогда
Продолжить;
КонецЕсли;
Если ТипДанныхПоказателя = "Е" И ПустаяСтрока(КодПоказателяПоСтруктуре) Тогда
ТекТабличноеПоле = Форма["ТабличныйДокумент"];
Если ПризнМногострочность <> "/" Тогда
ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя];
ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
ЧислоЕЗнак = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность,ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
КонецЕсли;
ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
ФорматируемаяОбласть.Формат = Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
Иначе
НСтр = 1;
Пока ТекТабличноеПоле.Области.Найти(ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")) <> Неопределено Цикл
ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")];
ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
ЧислоЕЗнак = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность,ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
КонецЕсли;
ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
ФорматируемаяОбласть.Формат = Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
НСтр = НСтр + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ИмяПоляТаблДокументаСтароеЗначение = ИмяПоляТаблДокумента;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНастроек(Команда)
ОткрытьФормуВыбораСтраниц("ВыбратьДляНастройки");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораСтраниц(ВариантВыбора)
Перем ТекущийРазделОтчетаСокрНаим;
Перем НомерСтраницыРазделаОтчета;
Если НЕ Элементы.РазделыОтчета.ТекущиеДанные = Неопределено Тогда
ТекущийРазделОтчетаСокрНаим = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
НомерСтраницыРазделаОтчета = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаНомерСтраницыРазделаОтчета;
КонецЕсли;
мПараметры = Новый Структура;
мПараметры.Вставить("ПроверкаСоотношений", Ложь);
мПараметры.Вставить("РазрешитьВстроеннуюПечать", Ложь);
мПараметры.Вставить("Автосохранение", Ложь);
мПараметры.Вставить("СчетчикСтраниц", Истина);
мПараметры.Вставить("Выгрузка", Ложь);
мПараметры.Вставить("ИмеетсяРеквизитДеревоВыбранныхСтраниц", Истина);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ФлажокОтклАвтоРасчет", СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет);
ПараметрыФормы.Вставить("мСчетчикСтраниц", СтруктураРеквизитовФормы.мСчетчикСтраниц);
ПараметрыФормы.Вставить("мАвтоВыборКодов", СтруктураРеквизитовФормы.мАвтоВыборКодов);
ПараметрыФормы.Вставить("мИнтервалАвтосохранения", СтруктураРеквизитовФормы.мИнтервалАвтосохранения);
ПараметрыФормы.Вставить("мПараметры", мПараметры);
ФормаНастройкиОтчета = РегламентированнаяОтчетностьКлиент.ПолучитьОбщуюФормуПоИмени("НастройкиОтчета", ПараметрыФормы, ЭтаФорма);
мДеревоВыбранныхСтраниц.ПолучитьЭлементы().Очистить();
КопироватьДанныеФормы(мДеревоСтраницОтчета, ФормаНастройкиОтчета.Дерево);
ЗначениеАвторасчета = СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет;
ЗначениеЕдИзм = СтруктураРеквизитовФормы.ЕдиницаИзмерения;
ЗначениеЗпт = СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения;
ДополнительныеПараметры = Новый Структура("ЗначениеАвторасчета, ЗначениеЕдИзм, ЗначениеЗпт, НомерСтраницыРазделаОтчета, ТекущийРазделОтчетаСокрНаим", ЗначениеАвторасчета, ЗначениеЕдИзм, ЗначениеЗпт, НомерСтраницыРазделаОтчета, ТекущийРазделОтчетаСокрНаим);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьФормуВыбораСтраницЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ФормаНастройкиОтчета.ОписаниеОповещенияОЗакрытии = ОписаниеОповещения;
ФормаНастройкиОтчета.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаНастройкиОтчета.Открыть();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораСтраницЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
ЗначениеАвторасчета = ДополнительныеПараметры.ЗначениеАвторасчета;
ЗначениеЕдИзм = ДополнительныеПараметры.ЗначениеЕдИзм;
ЗначениеЗпт = ДополнительныеПараметры.ЗначениеЗпт;
НомерСтраницыРазделаОтчета = ДополнительныеПараметры.НомерСтраницыРазделаОтчета;
ТекущийРазделОтчетаСокрНаим = ДополнительныеПараметры.ТекущийРазделОтчетаСокрНаим;
Модифицированность = Истина;
флЗначенияИдентичны = Истина;
Для Индекс = 0 По мДеревоСтраницОтчета.ПолучитьЭлементы().Количество() - 1 Цикл
Если НЕ мДеревоСтраницОтчета.ПолучитьЭлементы()[Индекс].ПоказатьСтраницу = мДеревоВыбранныхСтраниц.ПолучитьЭлементы()[Индекс].ПоказатьСтраницу Тогда
флЗначенияИдентичны = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЗначениеАвторасчета <> СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет Тогда
#Если ВебКлиент Тогда
ИзменитьТаблицуВариантовЗаполненияНаСервере();
#Иначе
РегламентированнаяОтчетностьКлиентСервер.ИзменитьТаблицуВариантовЗаполнения(ЭтаФорма, НЕ СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет);
#КонецЕсли
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПоказатьСтраницыОтчетаНаКлиенте(ЭтаФорма);
Если НЕ флЗначенияИдентичны Тогда
СформироватьДеревоРазделовОтчетаНаКлиенте();
Если НЕ ТекущийРазделОтчетаСокрНаим = Неопределено Тогда
НайденнаяСтрока = РегламентированнаяОтчетностьКлиентСервер.НайтиЭлементВДанныхФормыДерево(РазделыОтчета.ПолучитьЭлементы(), "КолонкаРазделыОтчетаСокрНаим", ТекущийРазделОтчетаСокрНаим);
Если НЕ НайденнаяСтрока = Неопределено
И НЕ НомерСтраницыРазделаОтчета = Неопределено
И НайденнаяСтрока.ПолучитьЭлементы().Количество() > 0 Тогда
НайденнаяСтрока = РегламентированнаяОтчетностьКлиентСервер.НайтиЭлементВДанныхФормыДерево(НайденнаяСтрока.ПолучитьЭлементы(), "КолонкаНомерСтраницыРазделаОтчета", НомерСтраницыРазделаОтчета);
КонецЕсли;
Если НЕ НайденнаяСтрока = Неопределено Тогда
Элементы.РазделыОтчета.ТекущаяСтрока = НайденнаяСтрока.ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьТаблицуВариантовЗаполненияНаСервере()
ИмяТекущегоРаздела = СтруктураРеквизитовФормы.НаимТекущегоРаздела;
РегламентированнаяОтчетностьКлиентСервер.ИзменитьТаблицуВариантовЗаполнения(ЭтаФорма, НЕ СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет);
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
РегламентированнаяОтчетность.ПолучитьСведенияОПоказателяхОтчета(ЭтаФорма, ПараметрыОтчета);
КонецПроцедуры
&НаКлиенте
Процедура АктивизироватьЯчейку(Ячейка) Экспорт
РегламентированнаяОтчетностьКлиент.АктивизироватьЯчейку(ЭтаФорма, Ячейка);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьБланк(Команда)
Отказ = Ложь;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Команда", Команда);
ОписаниеОповещения = Новый ОписаниеОповещения("ПоказатьБланкЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередПечатьюРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьБланкЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Команда = ДополнительныеПараметры.Команда;
Печать(Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Печать(ВидПечати, НеИзФормыОтчета = Ложь) Экспорт
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1. Формируется печатная форма...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Печать);
Если НЕ ПечатьНаСервере(ВидПечати) Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтаФорма, ВидПечати, , СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
СтруктураРеквизитовФормы.мРежимПечати = Ложь;
КонецПроцедуры
&НаСервере
Функция ПечатьНаСервере(ВидПечати)
Если НЕ РегламентированнаяОтчетность.ПринтерДоступен() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Перед формированием печатных форм необходимо определить в системе принтер и задать его в качестве используемого по умолчанию!'");
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Если ТипЗнч(мДеревоВыбранныхСтраниц) <> Тип("ДанныеФормыДерево") Тогда
Возврат Ложь;
КонецЕсли;
СтруктураРеквизитовФормы.мПечатныеФормы.Очистить();
СтруктураРеквизитовФормы.мРежимПечати = Истина;
СохранитьДанныеРаздела(СтруктураРеквизитовФормы.НаимТекущегоРаздела, Ложь);
сохрТаблДок = ТабличныйДокумент.ПолучитьОбласть();
СтрПоля = "ПолеСверху, ПолеСправа, ПолеСнизу, ПолеСлева";
ВремПоля = Новый Структура(СтрПоля);
ЗаполнитьЗначенияСвойств(ВремПоля, ТабличныйДокумент, СтрПоля);
ВывестиМакетВТаблДокНаСервере("Титульный", 0);
ОбщиеРеквизитыРазделов = ПолучитьОбщиеРеквизитыСТитульногоЛиста();
Для Каждого СтрокаУровня1 Из мДеревоВыбранныхСтраниц.ПолучитьЭлементы() Цикл
Если СтрокаУровня1.ВыводНаПечать = 0 Тогда
Продолжить;
КонецЕсли;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НаименованиеЛиста", СтрокаУровня1.Представление);
СтруктураПараметров.Вставить("ОриентацияЛиста", СтрокаУровня1.ОриентацияСтраницы);
СтруктураПараметров.Вставить("ИмяСтраницы", СтрокаУровня1.ИмяСтраницы);
Структурапараметров.Вставить("ИмяОбластиТаблПоля", СтрокаУровня1.ИмяОбластиТабличногоПоля);
СтруктураПараметров.Вставить("ВидПечати", ВидПечати);
Если НЕ мСтруктураМногостраничныхРазделов.Свойство(СтрокаУровня1.ИмяСтраницы) Тогда
ВывестиМакетВТаблДокНаСервере(СтрокаУровня1.ИмяСтраницы, 0);
Пометка = ?(ВыводитьНаПечатьПоПисьмуОт_28_12_2011(СтрокаУровня1), 1, 0);
Если Пометка = 0 Тогда
Продолжить;
КонецЕсли;
ВывестиНаПечатьЛист(СтруктураПараметров, ОбщиеРеквизитыРазделов, СтрПоля);
Иначе
СтруктураПараметров.Вставить("ИмяСтраницыПанели", СтрокаУровня1.ИмяСтраницы);
ВывестиНаПечатьДополнительныеСтраницы(СтруктураПараметров, ОбщиеРеквизитыРазделов, СтрокаУровня1);
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(сохрТаблДок);
ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ВремПоля, СтрПоля);
РегламентированнаяОтчетностьКлиентСервер.ПроставлениеНомеровЛистов(ЭтаФорма, , СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
КопироватьДанныеФормы(мДеревоВыбранныхСтраниц, мДеревоСтраницОтчета);
Возврат Истина;
КонецФункции
&НаСервере
Процедура ВывестиНаПечатьЛист(Парам1, ОбщиеРеквизитыРазделов, СтрПоля = Неопределено)
СоответствиеРазделовМакетам = Новый Соответствие;
СоответствиеРазделовМакетам.Вставить("Титульный", "ПечатнаяФормаОтчета2011Кв1_Титульный");
СоответствиеРазделовМакетам.Вставить("Раздел1_1", "ПечатнаяФормаОтчета2011Кв1_Раздел1_1");
СоответствиеРазделовМакетам.Вставить("Раздел1_2", "ПечатнаяФормаОтчета2011Кв1_Раздел1_2");
СоответствиеРазделовМакетам.Вставить("Раздел1_3", "ПечатнаяФормаОтчета2011Кв1_Раздел1_3");
СоответствиеРазделовМакетам.Вставить("Раздел1_4", "ПечатнаяФормаОтчета2011Кв1_Раздел1_4");
СоответствиеРазделовМакетам.Вставить("Раздел1_5", "ПечатнаяФормаОтчета2011Кв1_Раздел1_5");
СоответствиеРазделовМакетам.Вставить("Раздел1_6", "ПечатнаяФормаОтчета2011Кв1_Раздел1_6");
СоответствиеРазделовМакетам.Вставить("Раздел1_7", "ПечатнаяФормаОтчета2011Кв1_Раздел1_7");
СоответствиеРазделовМакетам.Вставить("Раздел2_1", "ПечатнаяФормаОтчета2011Кв1_Раздел2_1");
СоответствиеРазделовМакетам.Вставить("Раздел2_2", "ПечатнаяФормаОтчета2011Кв1_Раздел2_2");
ПечатнаяФормаРаздела = СоответствиеРазделовМакетам[Парам1.ИмяСтраницы];
МакетПечатнойФормы = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет(ПечатнаяФормаРаздела);
МакетПечатнойФормы.ПолеСверху = 5;
МакетПечатнойФормы.ПолеСправа = 5;
МакетПечатнойФормы.ПолеСнизу = 5;
МакетПечатнойФормы.ПолеСлева = 5;
ИдГруппы = ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(Парам1.ИмяСтраницы);
Если ИдГруппы <> Неопределено Тогда
КолвоСтрокВТаблДок = ЭтаФорма[ИдГруппы].Количество();
ОбластьМнгЧасти = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть");
ВысотаОбластиМнгЧасти = МакетПечатнойФормы.ПолучитьОбласть("МногострочнаяЧасть").ВысотаТаблицы;
ИмяОбластиПоследнейДопСтроки = ОбластьМнгЧасти.ПолучитьОбласть(ВысотаОбластиМнгЧасти, , ВысотаОбластиМнгЧасти).Области[0].Имя;
КолвоСтрокВПечатнойФорме = Число(Сред(ИмяОбластиПоследнейДопСтроки, СтрНайти(ИмяОбластиПоследнейДопСтроки, "_") + 1));
Если КолвоСтрокВТаблДок > КолвоСтрокВПечатнойФорме Тогда
НомерВерхЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + "01_" + КолвоСтрокВПечатнойФорме).Верх;
НомерНижнЯчейкиОбласти = МакетПечатнойФормы.Область(ИдГруппы + Формат(мСтруктураКолвоКолонокРазделов[ИдГруппы], "ЧЦ=2; ЧВН=") + "_" + КолвоСтрокВПечатнойФорме).Низ;
ВставляемаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти, , НомерНижнЯчейкиОбласти);
КолвоДопСтрок = КолвоСтрокВТаблДок - КолвоСтрокВПечатнойФорме;
Для Ном = 1 По КолвоДопСтрок Цикл
МакетПечатнойФормы.ВставитьОбласть(ВставляемаяОбласть, , ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЦикла;
Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
НайденнаяОбласть = МакетПечатнойФормы.Области.Найти(Область.Имя);
Если НЕ НайденнаяОбласть = Неопределено Тогда
НайденнаяОбласть.Имя = Лев(НайденнаяОбласть.Имя, СтрНайти(НайденнаяОбласть.Имя, "_") - 1) + "_" + Формат(КолвоСтрокВТаблДок, "ЧЦ=3");
КонецЕсли;
КонецЦикла;
Для Ном = 0 По КолвоДопСтрок - 1 Цикл
Для Каждого Область Из МакетПечатнойФормы.ПолучитьОбласть(НомерВерхЯчейкиОбласти + КолвоДопСтрок, , НомерНижнЯчейкиОбласти + КолвоДопСтрок).Области Цикл
НайденнаяОбласть = МакетПечатнойФормы.Область(НомерВерхЯчейкиОбласти + Ном, Область.Лево, НомерВерхЯчейкиОбласти + Ном, Область.Право);
Если НЕ НайденнаяОбласть = Неопределено Тогда
НайденнаяОбласть.Имя = Лев(Область.Имя, СтрНайти(Область.Имя, "_") - 1) + "_" + Формат(КолвоСтрокВПечатнойФорме + Ном, "ЧЦ=3");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ЗаполнитьПечатнуюФорму(Парам1, МакетПечатнойФормы, ОбщиеРеквизитыРазделов);
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(МакетПечатнойФормы);
ЗаполнитьЗначенияСвойств(ТабличныйДокумент, МакетПечатнойФормы, СтрПоля, "Макет");
РегламентированнаяОтчетность.ВывестиНаПечатьЛистОбщая(ЭтаФорма.Заголовок, Парам1, ТабличныйДокумент, СтруктураРеквизитовФормы.мПечатныеФормы);
КонецПроцедуры
&НаСервере
Функция ВыводитьНаПечатьПоПисьмуОт_28_12_2011(ВыбраннаяСтраница)
ПрименятьПоложенияПисьма = (КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) >= КонецГода('20111231'));
Если ПрименятьПоложенияПисьма Тогда
ИмяСтраницы = ВыбраннаяСтраница.ИмяСтраницы;
Если ИмяСтраницы = "Раздел1_2" Тогда
Возврат ЗаполненРаздел1Таблица2();
ИначеЕсли ИмяСтраницы = "Раздел1_4" Тогда
Возврат ЗаполненРаздел1Таблица3_1();
ИначеЕсли ИмяСтраницы = "Раздел1_5" Тогда
Возврат ЗаполненРаздел1Таблица4();
ИначеЕсли ИмяСтраницы = "Раздел1_6" Тогда
Возврат ЗаполненРаздел1Таблица4_1();
ИначеЕсли ИмяСтраницы = "Раздел1_7" Тогда
Возврат ЗаполненРаздел1Таблица5();
ИначеЕсли ИмяСтраницы = "Раздел2_2" Тогда
Возврат ЗаполненРаздел2Таблица8_9();
Иначе
Возврат ВыбраннаяСтраница.ВыводНаПечать;
КонецЕсли;
Иначе
Возврат ВыбраннаяСтраница.ВыводНаПечать;
КонецЕсли;
КонецФункции
&НаСервере
Функция ЗаполненРаздел1Таблица2()
ПрефиксПоказателейРаздела = "П" + "00002";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ЗаполненРаздел1Таблица3_1()
ПрефиксПоказателейРаздела = "П" + "00031";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ЗаполненРаздел1Таблица4()
ПрефиксПоказателейРаздела = "П" + "00004";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ЗаполненРаздел1Таблица4_1()
ПрефиксПоказателейРаздела = "П" + "00041";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ЗаполненРаздел1Таблица5()
ПрефиксПоказателейРаздела = "П" + "00005";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ЗаполненРаздел2Таблица8_9()
ПрефиксПоказателейРаздела = "П" + "00008";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПрефиксПоказателейРаздела = "П" + "00009";
Для Каждого Область Из ТабличныйДокумент.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
ЭтоПоказатель = (СтрНайти(Область.Имя, ПрефиксПоказателейРаздела) = 1);
Если ЭтоПоказатель И ПоказательЗаполнен(Область) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ПоказательЗаполнен(ОбластьПоказателя)
Если ОбластьПоказателя.СодержитЗначение Тогда
ЗначениеОбласти = ОбластьПоказателя.Значение;
ТипЗначенияОбласти = ТипЗнч(ЗначениеОбласти);
Если ТипЗначенияОбласти = Тип("Число") Тогда
Возврат (ЗначениеОбласти <> 0);
ИначеЕсли ТипЗначенияОбласти = Тип("Строка") Тогда
Возврат (НЕ ПустаяСтрока(ЗначениеОбласти));
Иначе
Возврат ЗначениеЗаполнено(ЗначениеОбласти);
КонецЕсли;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьОбщиеРеквизитыСТитульногоЛиста()
МассивОргФССКод = Новый Массив(10);
МассивДополнительныйКод = Новый Массив(10);
МассивКодПодчиненности = Новый Массив(5);
МассивНомСтр = Новый Массив(3);
МассивДатаПодписи = Новый Массив(8);
ИсходныйМакет = ТабличныйДокумент;
Область = ИсходныйМакет.Области.Найти("ОргФССКод");
Если НЕ Область = Неопределено Тогда
ОргФССКод = Область.Значение;
Для Ном = 1 По СтрДлина(ОргФССКод) Цикл
МассивОргФССКод[Ном - 1] = Сред(ОргФССКод, Ном, 1);
КонецЦикла;
КонецЕсли;
Область = ИсходныйМакет.Области.Найти("ДополнительныйКод");
Если НЕ Область = Неопределено Тогда
ДополнительныйКод = Область.Значение;
Для Ном = 1 По СтрДлина(ДополнительныйКод) Цикл
МассивДополнительныйКод[Ном - 1] = Сред(ДополнительныйКод, Ном, 1);
КонецЦикла;
КонецЕсли;
Область = ИсходныйМакет.Области.Найти("КодПодчиненности");
Если НЕ Область = Неопределено Тогда
КодПодчиненности = Область.Значение;
Для Ном = 1 По СтрДлина(КодПодчиненности) Цикл
МассивКодПодчиненности[Ном - 1] = Сред(КодПодчиненности, Ном, 1);
КонецЦикла;
КонецЕсли;
Область = ИсходныйМакет.Области.Найти("НомСтр");
Если НЕ Область = Неопределено Тогда
Для Ном = 1 По СтрДлина(Область.Значение) Цикл
МассивНомСтр[Ном - 1] = Сред(Область.Значение, Ном, 1);
КонецЦикла;
КонецЕсли;
Область = ИсходныйМакет.Области.Найти("ДатаПодписи");
Если НЕ Область = Неопределено Тогда
Если ТипЗнч(Область.Значение) = Тип("Строка") Тогда
СтрДатаПодписи = Лев(СтрЗаменить(Область.Значение, ".", ""), 8);
ИначеЕсли ТипЗнч(Область.Значение) = Тип("Дата") Тогда
Если ЗначениеЗаполнено(Область.Значение) Тогда
СтрДатаПодписи = Лев(СтрЗаменить(Формат(Область.Значение, "ДФ = ""дд.ММ.гггг 'г.'"""), ".", ""), 8);
Иначе
СтрДатаПодписи = " ";
КонецЕсли;
КонецЕсли;
Для Ном = 1 По СтрДлина(СтрДатаПодписи) Цикл
Если ЗначениеЗаполнено(ИсходныйМакет.Области.ДатаПодписи.Значение) Тогда
МассивДатаПодписи[Ном - 1] = Сред(СтрДатаПодписи, Ном, 1);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбщиеРеквизитыРазделов = Новый Структура;
ОбщиеРеквизитыРазделов.Вставить("ОргФССКод", МассивОргФССКод);
ОбщиеРеквизитыРазделов.Вставить("ДополнительныйКод", МассивДополнительныйКод);
ОбщиеРеквизитыРазделов.Вставить("КодПодчиненности", МассивКодПодчиненности);
ОбщиеРеквизитыРазделов.Вставить("НомСтр", МассивНомСтр);
ОбщиеРеквизитыРазделов.Вставить("ДатаПодписи", МассивДатаПодписи);
Возврат ОбщиеРеквизитыРазделов;
КонецФункции
&НаСервере
Процедура ВывестиНаПечатьДополнительныеСтраницы(СтруктураПараметровСтраницы, ОбщиеРеквизитыРазделов, СтрокаУровня1)
Перем ИмяСтраницы;
Перем ТаблицаСтраницРаздела;
СтруктураПараметровСтраницы.Свойство("ИмяСтраницыПанели", ИмяСтраницы);
Если Не мСтруктураМногостраничныхРазделов.Свойство(ИмяСтраницы, ТаблицаСтраницРаздела) Тогда
Возврат;
КонецЕсли;
ТаблицаСтраницРаздела = ЭтаФорма[ТаблицаСтраницРаздела];
Для Каждого Страница Из ТаблицаСтраницРаздела Цикл
ТекущийИндекс = ТаблицаСтраницРаздела.Индекс(Страница);
СохрАктивнаяСтраница = ТаблицаСтраницРаздела[ТекущийИндекс].АктивнаяСтраница;
ВывестиМакетВТаблДокНаСервере(ИмяСтраницы, ТекущийИндекс + 1);
ТаблицаСтраницРаздела[ТекущийИндекс].АктивнаяСтраница = СохрАктивнаяСтраница;
Пометка = ?(ВыводитьНаПечатьПоПисьмуОт_28_12_2011(СтрокаУровня1), 1, 0);
Если Пометка = 0 Тогда
Продолжить;
КонецЕсли;
ВывестиНаПечатьЛист(СтруктураПараметровСтраницы, ОбщиеРеквизитыРазделов);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПечатнуюФорму(ПараметрыПечати, МакетПечатнойФормы, ОбщиеРеквизитыРазделов)
ИсходныйМакет = ТабличныйДокумент;
Для Каждого Область Из ИсходныйМакет.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник И Область.СодержитЗначение Тогда
Если ПараметрыПечати.ИмяСтраницы = "Титульный" Тогда
Если СтрЧислоВхождений(Область.Имя, "ОргФССКод") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ДополнительныйКод") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "КодПодчиненности") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "НомСтр") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ДатаПодписи") > 0 Тогда
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "КодОрганаФСС") > 0 Тогда
СтрКодОрганаФСС = Область.Значение;
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "ИНН") > 0 Тогда
СтрИНН = Область.Значение;
Если СтрДлина(СтрИНН) = 10 Тогда
СтрИНН = "00" + СтрИНН;
КонецЕсли;
Для Ном = 1 По СтрДлина(СтрИНН) Цикл
МакетПечатнойФормы.Области[Область.Имя + Ном].Значение = Сред(СтрИНН, Ном, 1);
КонецЦикла;
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "Период") > 0 Тогда
СтрПериод = Область.Значение;
Для Ном = 1 По СтрДлина(СтрПериод) Цикл
МакетПечатнойФормы.Области[Область.Имя + "_" + Ном].Значение = Сред(СтрПериод, Ном, 1);
КонецЦикла;
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "НомДопРасчета") > 0 Тогда
СтрНомДопРасчета = Область.Значение;
Если ЗначениеЗаполнено(СтрНомДопРасчета) Тогда
СтрНомДопРасчета = Прав("00" + СтрНомДопРасчета, 2);
КонецЕсли;
Для Ном = 1 По СтрДлина(СтрНомДопРасчета) Цикл
МакетПечатнойФормы.Области[Область.Имя + "_" + Ном].Значение = Сред(СтрНомДопРасчета, Ном, 1);
КонецЦикла;
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "ШифрСтрах1Часть") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ШифрСтрах2Часть") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ШифрСтрах3Часть") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ЧислРаботников") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ЧислЖенщин") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ЧислИнвалидов") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ЧислВред") > 0 Тогда
Для Ном = 1 По СтрДлина(Область.Значение) Цикл
МакетПечатнойФормы.Области[Область.Имя + "_" + Ном].Значение = Сред(Область.Значение, Ном, 1);
КонецЦикла;
Продолжить;
ИначеЕсли СтрЧислоВхождений(Область.Имя, "НомерКорректировки") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОтчетГод") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "КПП") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОГРН") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОКАТО") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОКВЭД") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОКОПФ") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОКПО") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ОКФС") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "ТелОрганизации") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "СоставленаНа") > 0
ИЛИ СтрЧислоВхождений(Область.Имя, "Прил") > 0 Тогда
Для Ном = 1 По СтрДлина(Область.Значение) Цикл
МакетПечатнойФормы.Области[Область.Имя + Ном].Значение = Сред(Область.Значение, Ном, 1);
КонецЦикла;
Продолжить;
КонецЕсли;
ИначеЕсли ПараметрыПечати.ИмяСтраницы = "Раздел1_4" Тогда
Если СтрЧислоВхождений(Область.Имя, "ИтоговыеПоказатели") > 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
МакетПечатнойФормы.Области[Область.Имя].Значение = Область.Значение;
КонецЕсли;
КонецЦикла;
Для Каждого Реквизит Из ОбщиеРеквизитыРазделов Цикл
Постфикс = 1;
Разделитель = Истина;
Если Реквизит.Ключ = "ОргФССКод" Тогда
НаименованиеОбласти = "ОргФССКод";
ИначеЕсли Реквизит.Ключ = "ДополнительныйКод" Тогда
НаименованиеОбласти = "ДополнительныйКод";
ИначеЕсли Реквизит.Ключ = "КодПодчиненности" Тогда
НаименованиеОбласти = "КодПодчиненности";
ИначеЕсли Реквизит.Ключ = "НомСтр" Тогда
НаименованиеОбласти = "НомСтр";
Разделитель = Ложь;
ИначеЕсли Реквизит.Ключ = "ДатаПодписи" Тогда
НаименованиеОбласти = "ДатаПодписи";
Разделитель = Ложь;
Иначе
НаименованиеОбласти = Реквизит.Ключ;
КонецЕсли;
Если НЕ МакетПечатнойФормы.Области.Найти(НаименованиеОбласти + ?(Разделитель, "_", "") + Постфикс) = Неопределено Тогда
Для Ном = 1 По Реквизит.Значение.Количество() Цикл
МакетПечатнойФормы.Области[НаименованиеОбласти + ?(Разделитель, "_", "") + Ном].Значение = Реквизит.Значение[Ном - 1];
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Заголовок = ЗаголовокРегламентированногоОтчета(СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета, СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
ОргСтр = " (" + СтруктураРеквизитовФормы.Организация + ")";
Если СтрНайти(Заголовок, ОргСтр) = 0 Тогда
Заголовок = Заголовок + ОргСтр;
КонецЕсли;
Заголовок = Заголовок + ?(СтрНайти(ЭтаФорма.ИмяФормы, "Внешний") > 0, " - внешний отчет", "");
ПодключитьОбработчикОжидания("ВыполнитьПроверкуПередОткрытием", 0.1, Истина);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("РегламентированнаяОтчетность.Интерфейс85") Тогда
Если РазделыОтчета.ПолучитьЭлементы().Количество() > 0 Тогда
Элементы.РазделыОтчета.ТекущаяСтрока = РазделыОтчета.ПолучитьЭлементы()[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкуПередОткрытием()
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередОткрытиемФормыРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Модифицированность = Ложь;
Закрыть();
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.ПередЗакрытиемРегламентированногоОтчета(ЭтаФорма, Отказ, СтандартнаяОбработка, ЗавершениеРаботы, ТекстПредупреждения);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ПриЗакрытииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриЗакрытииНаСервере()
РегламентированнаяОтчетность.ПриЗакрытииРегламентированногоОтчета(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередЗагрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Выгрузить(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ЗагрузитьИзФайлаОтчет();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаОтчет() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаОтчетЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
СохранитьНаКлиенте(,ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаОтчетЗавершение(Результат, ДополнительныеПараметры) Экспорт
РегламентированнаяОтчетностьЗагрузкаКлиент.ЗагрузитьИзФайлаОтчет(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Функция ЗагрузкаОтчетаИзФайла(ДанныеДляЗагрузки) Экспорт
Если Модифицированность Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон(НСтр("ru='Отчет ""%1"" не сохранен.'"), ЭтотОбъект.Заголовок);
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Если НЕ ЗагрузкаОтчетаИзФайлаНаСервере(ДанныеДляЗагрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция ЗагрузкаОтчетаИзФайлаНаСервере(ДанныеДляЗагрузки)
СформироватьСтруктуруПоказателей();
ПараметрыОтчета = СформироватьСтруктуруПараметров();
ДеревоДляЗагрузки = ИзвлечьСтруктуруXML();
Если НЕ РегламентированнаяОтчетностьЗагрузка.ЗагрузкаОтчетаИзФайла(
ЭтотОбъект, ПараметрыОтчета, ДанныеДляЗагрузки, ДеревоДляЗагрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ВыгрузитьЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ВыгрузитьОтчет();
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтчет() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьОтчетЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
СохранитьНаКлиенте(,ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтчетЗавершение(Результат, ДополнительныеПараметры) Экспорт
ФормаВыгрузкиРеглОтчета = ПолучитьФорму("Документ.ВыгрузкаРегламентированныхОтчетов.Форма.ФормаДокумента", , ЭтаФорма);
СпДокОсн = Новый СписокЗначений;
СпДокОсн.Добавить(СтруктураРеквизитовФормы.мСохраненныйДок);
ФормаВыгрузкиРеглОтчета.СформироватьИЗаписать(СпДокОсн);
КонецПроцедуры
&НаКлиенте
Функция УниверсальнаяВыгрузка(ТекстВыгрузки = Неопределено, ПроверятьБлокировки = Истина) Экспорт
Перем ПараметрыВыгрузки;
Если Модифицированность Тогда
ТекстЗаголовка = ЗаголовокРегламентированногоОтчета(СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета, СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
ОргСтр = " (" + СтруктураРеквизитовФормы.Организация + ")";
Если СтрНайти(ТекстЗаголовка, ОргСтр) = 0 Тогда
ТекстЗаголовка = ТекстЗаголовка + ОргСтр;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Отчет """ + ТекстЗаголовка + """ не сохранен.";
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Если Открыта() Тогда
Если СтруктураРеквизитовФормы.ЕдиницаИзмерения <> ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Перед выгрузкой необходимо установить единицу измерения ""в рублях"".'");
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Если СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения <> 2 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Перед выгрузкой необходимо установить точность ""2"".'");
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Если НЕ УниверсальнаяВыгрузкаНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция УниверсальнаяВыгрузкаНаСервере(ТекстВыгрузки, ПараметрыВыгрузки)
СформироватьСтруктуруПоказателей();
ПараметрыВыгрузки = СформироватьСтруктуруПараметров();
ДеревоВыгрузки = ИзвлечьСтруктуруXML();
Если НЕ ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки);
Если НЕ РегламентированнаяОтчетность.ПроверитьДанные(ЭтаФорма, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
ТекстВыгрузки = ВыгрузитьДеревоВXML(ДеревоВыгрузки, ПараметрыВыгрузки);
Возврат Истина;
КонецФункции
&НаСервере
Функция СформироватьСтруктуруПоказателей()
мДанныеОтчета = Новый Структура;
СохрСтруктура = СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета.Получить();
ПоказателиОтчета = СохрСтруктура.ПоказателиОтчета;
Для Каждого Раздел Из ПоказателиОтчета Цикл
мДанныеОтчета.Вставить(Раздел.Ключ, РегламентированнаяОтчетность.СвернутьДанныеТабличногоПоля(Раздел.Значение));
КонецЦикла;
Для Каждого ЭлементСтруктуры Из СохрСтруктура.ДанныеМногостраничныхРазделов Цикл
НайденноеЗначение = Неопределено;
мСтруктураМногостраничныхРазделов.Свойство(ЭлементСтруктуры.Ключ, НайденноеЗначение);
Если НЕ НайденноеЗначение = Неопределено Тогда
НайденноеЗначение = ЭтаФорма[НайденноеЗначение];
ЗначениеВДанныеФормы(ЭлементСтруктуры.Значение, НайденноеЗначение);
Если НайденноеЗначение[0].Свойство("Данные") Тогда
Для Каждого СтрокаТаблЗнач Из НайденноеЗначение Цикл
Если ТипЗнч(СтрокаТаблЗнач.Данные) = Тип("СписокЗначений") Тогда
СтрокаТаблЗнач.Данные.Очистить();
СтрокаТаблЗнач.Данные.Добавить(ЭлементСтруктуры.Значение[НайденноеЗначение.Индекс(СтрокаТаблЗнач)].Данные);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НайденноеЗначение[0].Свойство("ДанныеДопСтрок") Тогда
Ном = 0;
Для Каждого СтрокаТаблЗнач Из ЭлементСтруктуры.Значение Цикл
Если ТипЗнч(СтрокаТаблЗнач.ДанныеДопСтрок) = Тип("Структура") Тогда
Для Каждого ЭлСтруктуры Из СтрокаТаблЗнач.ДанныеДопСтрок Цикл
ТаблЗнач = ЭлСтруктуры.Значение;
ЭлСтруктуры.Значение = ЭтаФорма["Хранилище" + ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ЭлементСтруктуры.Ключ)].Добавить().Таблица;
ЗначениеВДанныеФормы(ТаблЗнач, ЭлСтруктуры.Значение);
НайденноеЗначение[Ном].ДанныеДопСтрок.Добавить(ЭлСтруктуры.Значение);
КонецЦикла;
ИначеЕсли ТипЗнч(СтрокаТаблЗнач.ДанныеДопСтрок) = Тип("ТаблицаЗначений") Тогда
СтрокаТаблЗначДанныеДопСтрок = ЭтаФорма["Хранилище" + ОпределитьИдМногострочногоРазделаПоАктивнойСтраницеНаСервере(ЭлементСтруктуры.Ключ)].Добавить().Таблица;
ЗначениеВДанныеФормы(СтрокаТаблЗнач.ДанныеДопСтрок, СтрокаТаблЗначДанныеДопСтрок);
НайденноеЗначение[Ном].ДанныеДопСтрок.Добавить(СтрокаТаблЗначДанныеДопСтрок, "ДанныеФормыКоллекцияТаблицаДопСтрокРаздела");
КонецЕсли;
Ном = Ном + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого Раздел Из мСтруктураМногостраничныхРазделов Цикл
ТаблицаЛистовРаздела = ЭтаФорма[Раздел.Значение];
Для Каждого Лист Из ТаблицаЛистовРаздела Цикл
Лист.Данные[0].Значение = РегламентированнаяОтчетность.СвернутьДанныеТабличногоПоля(Лист.Данные[0].Значение);
КонецЦикла;
мДанныеОтчета.Вставить(Раздел.Ключ, ЭтаФорма[Раздел.Значение]);
КонецЦикла;
КодОрганаФСС = "";
Если НЕ СохрСтруктура.Свойство("КодОрганаФСС", КодОрганаФСС) Тогда
КодОрганаФСС = "";
КонецЕсли;
мДанныеОтчета.ПолеТабличногоДокументаТитульный.Вставить("КодОрганаФСС", КодОрганаФСС);
СохрСтруктура.Свойство("ДокументУпПред", мСтруктураДокУпПред);
КонецФункции
&НаСервере
Функция СформироватьСтруктуруПараметров()
Титульный = мДанныеОтчета.ПолеТабличногоДокументаТитульный;
ПоследнийЛист = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_2;
ПараметрыВыгрузки = Новый Структура;
ПараметрыВыгрузки.Вставить("НомерСтрахователя", СокрЛП(Титульный.ОргФССКод));
ПараметрыВыгрузки.Вставить("КодПодчиненности", СокрЛП(Титульный.КодПодчиненности));
ПараметрыВыгрузки.Вставить("ДополнительныйКод", СокрЛП(Титульный.ДополнительныйКод));
ПараметрыВыгрузки.Вставить("ИНН", СокрЛП(Титульный.ИНН));
ПараметрыВыгрузки.Вставить("КПП", СтрокаВЧисло(Титульный.КПП));
ПараметрыВыгрузки.Вставить("ОГРН", СокрЛП(Титульный.ОГРН));
ПараметрыВыгрузки.Вставить("ОКОПФ", СтрокаВЧисло(Титульный.ОКОПФ));
ПараметрыВыгрузки.Вставить("ОКАТО", СокрЛП(Титульный.ОКАТО));
ПараметрыВыгрузки.Вставить("ОКПО", СокрЛП(Титульный.ОКПО));
ПараметрыВыгрузки.Вставить("ОКФС", СтрокаВЧисло(Титульный.ОКФС));
ПараметрыВыгрузки.Вставить("ОКВЭД", СтрЗаменить(СокрЛП(СтрЗаменить(СтрЗаменить(Титульный.ОКВЭД, " ", ""), ".", " ")), " ", "."));
ПараметрыВыгрузки.Вставить("ОтчПериод", СокрЛП(Титульный.Период));
Если ПустаяСтрока(ПараметрыВыгрузки.ОтчПериод) Тогда
КодПериода = Формат(КонецКвартала(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета), "ДФ=ММ");
ПараметрыВыгрузки.ОтчПериод = КодПериода;
КонецЕсли;
ПараметрыВыгрузки.Вставить("РасчПериод", СокрЛП(Титульный.ОтчетГод));
ПараметрыВыгрузки.Вставить("ОргНазв", СокрЛП(Титульный.ОргНазв));
ПараметрыВыгрузки.Вставить("ДатаПредставления", ТекущаяДатаСеанса());
ПараметрыВыгрузки.Вставить("КодФонда", СтрокаВЧисло(Титульный.КодОрганаФСС));
Если Титульный.ПрПодп = "1" Тогда
ФИОРук = СокрЛП(Титульный.ОргПодписантФамилия);
Иначе
СведенияОбОрганизации = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(СтруктураРеквизитовФормы.Организация, ДатаПодписи, "ФИОРук, ФИО");
ФИОРук = СокрЛП(?(ЗначениеЗаполнено(СведенияОбОрганизации.ФИОРук), СведенияОбОрганизации.ФИОРук, СведенияОбОрганизации.ФИО));
КонецЕсли;
ПараметрыВыгрузки.Вставить("ОргДиректор", ФИОРук);
ПараметрыВыгрузки.Вставить("НомерКорректировки", СтрокаВЧисло(Титульный.НомерКорректировки));
ПараметрыВыгрузки.Вставить("НомДопРасчета", СтрокаВЧисло(Титульный.НомДопРасчета));
ПараметрыВыгрузки.Вставить("ШифрСтрах1Часть", СокрЛП(Титульный.ШифрСтрах1Часть));
ПараметрыВыгрузки.Вставить("ШифрСтрах2Часть", СокрЛП(Титульный.ШифрСтрах2Часть));
ПараметрыВыгрузки.Вставить("ШифрСтрах3Часть", СокрЛП(Титульный.ШифрСтрах3Часть));
ПараметрыВыгрузки.Вставить("ЧислРаботников", СтрокаВЧисло(Титульный.ЧислРаботников));
ПараметрыВыгрузки.Вставить("ЧислЖенщин", СтрокаВЧисло(Титульный.ЧислЖенщин));
ПараметрыВыгрузки.Вставить("ЧислИнвалидов", СтрокаВЧисло(Титульный.ЧислИнвалидов));
ПараметрыВыгрузки.Вставить("ЧислВред", СтрокаВЧисло(Титульный.ЧислВред));
ПараметрыВыгрузки.Вставить("ИмяФайла", СформироватьИмяФайла(ПараметрыВыгрузки));
Возврат ПараметрыВыгрузки;
КонецФункции
&НаСервере
Функция СформироватьИмяФайла(ПараметрыВыгрузки)
КодСтрахователя = ?(ЗначениеЗаполнено(ПараметрыВыгрузки.ДополнительныйКод), ПараметрыВыгрузки.ДополнительныйКод, ПараметрыВыгрузки.НомерСтрахователя);
РасчетныйГод = ПараметрыВыгрузки.РасчПериод;
ОтчетныйКвартал = ПараметрыВыгрузки.ОтчПериод;
Возврат КодСтрахователя + "_" + РасчетныйГод + "_" + ОтчетныйКвартал + ".xml";
КонецФункции
&НаСервере
Функция СтрокаВЧисло(Знач Стр)
Стр = СокрЛП(Стр);
Возврат ?(ЗначениеЗаполнено(Стр) И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Стр, , Ложь), Число(Стр), 0);
КонецФункции
&НаСервере
Функция ИзвлечьСтруктуруXML()
ДеревоСтруктуры = Новый ДеревоЗначений;
ДеревоСтруктуры.Колонки.Добавить("Код");
ДеревоСтруктуры.Колонки.Добавить("Тип");
ДеревоСтруктуры.Колонки.Добавить("Формат");
ДеревоСтруктуры.Колонки.Добавить("МинРазмерность");
ДеревоСтруктуры.Колонки.Добавить("МаксРазмерность");
ДеревоСтруктуры.Колонки.Добавить("Обязательность");
ДеревоСтруктуры.Колонки.Добавить("Многостраничность");
ДеревоСтруктуры.Колонки.Добавить("Многострочность");
ДеревоСтруктуры.Колонки.Добавить("Раздел");
ДеревоСтруктуры.Колонки.Добавить("Ключ");
ДеревоСтруктуры.Колонки.Добавить("Условие");
ДеревоСтруктуры.Колонки.Добавить("ЗначениеПоУмолчанию");
ДеревоСтруктуры.Колонки.Добавить("Значение");
ДеревоСтруктуры.Колонки.Добавить("Представление");
ДеревоСтруктуры.Колонки.Добавить("Показатели");
Макет = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("СхемаВыгрузкиXML03");
ВысотаТаблицы = Макет.ВысотаТаблицы;
УчтенныеГруппы = Новый Соответствие;
Для НомерСтроки = 2 По ВысотаТаблицы Цикл
НомСтр = ВысотаТаблицы - НомерСтроки + 2;
Если Макет.Область(НомерСтроки, 0, НомерСтроки, 0).Видимость = Неопределено Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), НомерСтроки);
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
Для Уровень = 0 По Макет.КоличествоУровнейГруппировокСтрок() - 1 Цикл
Макет.ПоказатьУровеньГруппировокСтрок(Уровень);
Для НомерСтроки = 2 По ВысотаТаблицы Цикл
НомСтр = ВысотаТаблицы - НомерСтроки + 2;
Если Макет.Область(НомСтр, 0, НомСтр, 0).Видимость И УчтенныеГруппы.Получить(НомСтр) = Неопределено Тогда
РодительскийУзел = ДеревоСтруктуры;
Если Уровень <> 0 Тогда
Для Инд = 1 По НомСтр - 2 Цикл
Узел = УчтенныеГруппы.Получить(НомСтр - Инд);
Если Узел <> Неопределено Тогда
РодительскийУзел = Узел;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
НовСтр = РодительскийУзел.Строки.Вставить(0);
НовСтр.Код = СокрЛП(Макет.Область(НомСтр, 1, НомСтр, 1).Текст);
НовСтр.Раздел = СокрЛП(Макет.Область(НомСтр, 2, НомСтр, 2).Текст);
НовСтр.Ключ = СокрЛП(Макет.Область(НомСтр, 3, НомСтр, 3).Текст);
НовСтр.Тип = СокрЛП(Макет.Область(НомСтр, 4, НомСтр, 4).Текст);
НовСтр.Формат = СокрЛП(Макет.Область(НомСтр, 5, НомСтр, 5).Текст);
МинРазмерность = СокрЛП(Макет.Область(НомСтр, 6, НомСтр, 6).Текст);
НовСтр.МинРазмерность = ?(ПустаяСтрока(МинРазмерность), ?(НовСтр.Формат = "N", 99999, 0), Число(МинРазмерность));
МаксРазмерность = СокрЛП(Макет.Область(НомСтр, 7, НомСтр, 7).Текст);
НовСтр.МаксРазмерность = ?(ПустаяСтрока(МаксРазмерность), 99999, Число(МаксРазмерность));
НовСтр.Обязательность = СокрЛП(Макет.Область(НомСтр, 8, НомСтр, 8).Текст);
НовСтр.Многостраничность = НЕ ПустаяСтрока(Макет.Область(НомСтр, 9, НомСтр, 9).Текст);
НовСтр.Многострочность = НЕ ПустаяСтрока(Макет.Область(НомСтр, 10, НомСтр, 10).Текст);
НовСтр.Условие = СокрЛП(Макет.Область(НомСтр, 11, НомСтр, 11).Текст);
НовСтр.ЗначениеПоУмолчанию = СокрЛП(Макет.Область(НомСтр, 12, НомСтр, 12).Текст);
НовСтр.Представление = СокрЛП(Макет.Область(НомСтр, 13, НомСтр, 13).Текст);
УчтенныеГруппы.Вставить(НомСтр, НовСтр);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат ДеревоСтруктуры;
КонецФункции
&НаСервере
Функция ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки)
СтатусПроверки = Истина;
Если ПустаяСтрока(ПараметрыВыгрузки.ИНН) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан ИНН организации!", "Титульный", "ИНН1");
СтатусПроверки = Ложь;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.НомерСтрахователя) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан номер страхователя!", "Титульный", "ОргФССКод");
СтатусПроверки = Ложь;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПараметрыВыгрузки.КодФонда) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "На титульном листе не задано значение кода органа ФСС, в который представляется отчет!", "Титульный");
СтатусПроверки = Ложь;
КонецЕсли;
Если НЕ ПустаяСтрока(СокрЛП(СтрЗаменить(ПараметрыВыгрузки.ОКВЭД, ".", ""))) И НЕ РегламентированнаяОтчетностьКлиентСервер.ОКВЭДСоответствуетТребованиям(ПараметрыВыгрузки.ОКВЭД) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Некорректное значение кода вида деятельности по ОКВЭД!", "Титульный", "ОКВЭД");
СтатусПроверки = Ложь;
КонецЕсли;
ВозможныеЗначенияШифра1 = Новый Массив;
ВозможныеЗначенияШифра1.Добавить("032");
ВозможныеЗначенияШифра1.Добавить("041");
ВозможныеЗначенияШифра1.Добавить("051");
ВозможныеЗначенияШифра1.Добавить("061");
ВозможныеЗначенияШифра1.Добавить("071");
ВозможныеЗначенияШифра1.Добавить("081");
ВозможныеЗначенияШифра1.Добавить("091");
ВозможныеЗначенияШифра1.Добавить("101");
ВозможныеЗначенияШифра1.Добавить("111");
ВозможныеЗначенияШифра2 = Новый Массив;
ВозможныеЗначенияШифра2.Добавить("00");
ВозможныеЗначенияШифра2.Добавить("01");
ВозможныеЗначенияШифра2.Добавить("02");
ВозможныеЗначенияШифра2.Добавить("03");
ВозможныеЗначенияШифра3 = Новый Массив;
ВозможныеЗначенияШифра3.Добавить("00");
ВозможныеЗначенияШифра3.Добавить("01");
Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах1Часть) Тогда
Если ВозможныеЗначенияШифра1.Найти(ПараметрыВыгрузки.ШифрСтрах1Часть) = Неопределено Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана первая часть шифра страхователя!", "Титульный", "ШифрСтрах1Часть");
СтатусПроверки = Ложь;
КонецЕсли;
Иначе
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано значение первой части шифра страхователя!", "Титульный", "ШифрСтрах1Часть");
СтатусПроверки = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах2Часть) Тогда
Если ВозможныеЗначенияШифра2.Найти(ПараметрыВыгрузки.ШифрСтрах2Часть) = Неопределено Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана вторая часть шифра страхователя!", "Титульный", "ШифрСтрах2Часть");
СтатусПроверки = Ложь;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыВыгрузки.ШифрСтрах3Часть) Тогда
Если ВозможныеЗначенияШифра3.Найти(ПараметрыВыгрузки.ШифрСтрах3Часть) = Неопределено Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Неверно задана третья часть шифра страхователя!", "Титульный", "ШифрСтрах3Часть");
СтатусПроверки = Ложь;
КонецЕсли;
КонецЕсли;
Если ПараметрыВыгрузки.НомерКорректировки <> 0 Тогда
Если ПараметрыВыгрузки.НомДопРасчета <> 0 Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "При номере корректировке, отличном от 000 вторая часть кода ""Отчетный период"" должна быть равной 00!", "Титульный", "НомДопРасчета");
СтатусПроверки = Ложь;
КонецЕсли;
КонецЕсли;
ДанныеРаздела1_4 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_4;
НомСтроки = 1;
ФИОСотрудника = Неопределено;
ДатаВыдачи = Неопределено;
ДатаОкончания = Неопределено;
СуммаВсего = Неопределено;
Сумма1Месяц = Неопределено;
Сумма2Месяц = Неопределено;
Сумма3Месяц = Неопределено;
Пока ДанныеРаздела1_4.Свойство("П000310001002_" + Формат(НомСтроки, "ЧГ="), ФИОСотрудника) Цикл
НомерСтроки = Формат(НомСтроки, "ЧГ=");
СтрокаЗаполнена = Ложь;
ДанныеРаздела1_4.Свойство("П000310001003_" + НомерСтроки, ДатаВыдачи);
ДанныеРаздела1_4.Свойство("П000310001004_" + НомерСтроки, ДатаОкончания);
ДанныеРаздела1_4.Свойство("П000310001005_" + НомерСтроки, СуммаВсего);
ДанныеРаздела1_4.Свойство("П000310001006_" + НомерСтроки, Сумма1Месяц);
ДанныеРаздела1_4.Свойство("П000310001007_" + НомерСтроки, Сумма2Месяц);
ДанныеРаздела1_4.Свойство("П000310001008_" + НомерСтроки, Сумма3Месяц);
Если ЗначениеЗаполнено(ФИОСотрудника) ИЛИ ЗначениеЗаполнено(ДатаВыдачи) ИЛИ ЗначениеЗаполнено(ДатаОкончания) ИЛИ ЗначениеЗаполнено(СуммаВсего)
ИЛИ ЗначениеЗаполнено(Сумма1Месяц) ИЛИ ЗначениеЗаполнено(Сумма2Месяц) ИЛИ ЗначениеЗаполнено(Сумма3Месяц) Тогда
СтрокаЗаполнена = Истина;
КонецЕсли;
Если СтрокаЗаполнена Тогда
ФИО = РегламентированнаяОтчетность.РазложитьФИО(ФИОСотрудника);
Если НЕ ЗначениеЗаполнено(ФИО.Фамилия) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, в строке " + НомерСтроки + " не указана фамилия сотрудника!", "Раздел1_4", "П000310001002_" + НомерСтроки);
СтатусПроверки = Ложь;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ФИО.Имя) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, в строке " + НомерСтроки + " не указано имя сотрудника!", "Раздел1_4", "П000310001002_" + НомерСтроки);
СтатусПроверки = Ложь;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаВыдачи) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "В таблице 3.1, строке " + НомерСтроки + " не указана дата выдачи справки!", "Раздел1_4", "П000310001003_" + НомерСтроки);
СтатусПроверки = Ложь;
КонецЕсли;
КонецЕсли;
НомСтроки = НомСтроки +1;
КонецЦикла;
Возврат СтатусПроверки;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки)
ЗаполнитьСодержательнуюЧасть(ПараметрыВыгрузки, ДеревоВыгрузки);
ОтсечьНезаполненныеНеобязательныеУзлы(ДеревоВыгрузки);
КонецПроцедуры
&НаСервере
Процедура ЗадатьЗначениеЭлемента(Узел, КодЭлемента, Значение)
ВывестиПоказательВXML(ПолучитьПодчиненныйЭлемент(Узел, КодЭлемента), Значение);
КонецПроцедуры
&НаСервере
Функция ВыгрузитьДеревоВXML(ДеревоВыгрузки, ПараметрыВыгрузки)
ПотокXML = СоздатьНовыйПотокXML();
ЗаписатьУзелДереваВXML(ДеревоВыгрузки, ПотокXML, ПараметрыВыгрузки);
ТекстДляЗаписи = ПотокXML.Закрыть();
Возврат ТекстДляЗаписи;
КонецФункции
&НаСервере
Функция СоздатьНовыйПотокXML() Экспорт
ПотокXML = Новый ЗаписьXML();
ПотокXML.УстановитьСтроку("windows-1251");
ПотокXML.ЗаписатьОбъявлениеXML();
ПотокXML.Отступ = Истина;
ПотокXML.ЗаписатьБезОбработки(Символы.ПС + "<?F4FORM version=""0.3""?>");
Возврат ПотокXML;
КонецФункции
&НаСервере
Функция ЗаписатьУзелДереваВXML(СтрокаДерева, ПотокXML, ПараметрыВыгрузки) Экспорт
Если ТипЗнч(СтрокаДерева) = Тип("ДеревоЗначений") Тогда
ПотокXML.ЗаписатьНачалоЭлемента("F4REPORT");
Для каждого Стр Из СтрокаДерева.Строки Цикл
ЗаписатьУзелДереваВXML(Стр, ПотокXML, ПараметрыВыгрузки);
КонецЦикла;
ПотокXML.ЗаписатьКонецЭлемента();
Иначе
Если СтрокаДерева.Тип = "А" ИЛИ СтрокаДерева.Тип = "A" Тогда
ПотокXML.ЗаписатьАтрибут(СтрокаДерева.Код, Строка(СтрокаДерева.Значение));
Иначе
ПотокXML.ЗаписатьНачалоЭлемента(СтрокаДерева.Код);
Для каждого Лист из СтрокаДерева.Строки Цикл
ЗаписатьУзелДереваВXML(Лист, ПотокXML, ПараметрыВыгрузки);
КонецЦикла;
ПотокXML.ЗаписатьТекст(Строка(СтрокаДерева.Значение));
ПотокXML.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ЗаполнитьСодержательнуюЧасть(ПараметрыВыгрузки, УзелРодитель)
УзелTITLE = ПолучитьПодчиненныйЭлемент(УзелРодитель, "TITLE");
ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, УзелTITLE);
Раздел1_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_1;
Раздел1_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_2;
Раздел1_3 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_3;
Раздел1_4 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_4;
Раздел1_5 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_5;
Раздел1_6 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_6;
Раздел1_7 = мДанныеОтчета.ПолеТабличногоДокументаРаздел1_7;
Раздел2_1 = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_1;
Раздел2_2 = мДанныеОтчета.ПолеТабличногоДокументаРаздел2_2;
УзелF4INF1 = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INF1");
ЗаполнитьДаннымиУзел(Раздел1_1, УзелF4INF1);
ЗаполнитьДаннымиУзел(Раздел1_2, УзелF4INF1);
ЗаполнитьДаннымиУзел(Раздел1_3, УзелF4INF1);
ЗаполнитьДаннымиУзел(Раздел1_5, УзелF4INF1);
ЗаполнитьДаннымиУзел(Раздел1_6, УзелF4INF1);
УзелF4INVALШаблон = ПолучитьПодчиненныйЭлемент(УзелF4INF1, "F4INVAL");
НомСтр = 1;
Пока РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(Раздел1_4, "П000310001001_" + Формат(НомСтр, "ЧГ=")) Цикл
Если ЗначениеЗаполнено(Раздел1_4["П000310001002_" + Формат(НомСтр, "ЧГ=")]) Тогда
УзелF4INVAL = СкопироватьУзел(УзелF4INF1, УзелF4INVALШаблон);
ВыгрузитьСтрокуМногострочнойЧасти(Раздел1_4, УзелF4INVAL, НомСтр);
ФИО = РегламентированнаяОтчетность.РазложитьФИО(ВРЕГ(Раздел1_4["П000310001002_" + Формат(НомСтр, "ЧГ=")]));
ЗадатьЗначениеЭлемента(УзелF4INVAL, "LNAME", ФИО.Фамилия);
ЗадатьЗначениеЭлемента(УзелF4INVAL, "FNAME", ФИО.Имя);
ЗадатьЗначениеЭлемента(УзелF4INVAL, "MNAME", ФИО.Отчество);
КонецЕсли;
НомСтр = НомСтр + 1;
КонецЦикла;
УзелF4INFO = ПолучитьПодчиненныйЭлемент(УзелРодитель, "F4INFO");
ЗаполнитьДаннымиУзел(Раздел1_7, УзелF4INFO);
ЗаполнитьДаннымиУзел(Раздел2_1, УзелF4INFO);
ЗаполнитьДаннымиУзел(Раздел2_2, УзелF4INFO);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, Узел)
Для Каждого Стр из Узел.Строки Цикл
Если Стр.Тип = "С" ИЛИ Стр.Тип = "C" Тогда
ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, Стр);
Иначе
Если ПустаяСтрока(Стр.ЗначениеПоУмолчанию) Тогда
Если НЕ ПустаяСтрока(Стр.Ключ) И РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(ПараметрыВыгрузки, Стр.Ключ) Тогда
ВывестиПоказательВXML(Стр, ПараметрыВыгрузки[Стр.Ключ]);
КонецЕсли;
ИначеЕсли Лев(Стр.ЗначениеПоУмолчанию, 1) = "&" Тогда
Ключ = Сред(Стр.ЗначениеПоУмолчанию, 2);
Если РегламентированнаяОтчетностьКлиентСервер.СвойствоОпределено(ПараметрыВыгрузки, Ключ) Тогда
ВывестиПоказательВXML(Стр, ПараметрыВыгрузки[Ключ]);
КонецЕсли;
Иначе
Стр.Значение = Стр.ЗначениеПоУмолчанию;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПолучитьПодчиненныйЭлемент(Узел, КодЭлемента)
Для Каждого Стр Из Узел.Строки Цикл
Если Стр.Код = КодЭлемента Тогда
Возврат Стр;
КонецЕсли;
КонецЦикла;
КонецФункции
&НаСервере
Функция СкопироватьУзел(Родитель, Узел)
РодительСтрока = ?(Родитель = Неопределено, Узел.Владелец(), Родитель);
СтрокиСТемЖеКодом = РодительСтрока.Строки.НайтиСтроки(Новый Структура("Код", Узел.Код), Ложь);
МаксИндекс = -1;
Для Каждого СтрокаСТемЖеКодом Из СтрокиСТемЖеКодом Цикл
ТекИндекс = РодительСтрока.Строки.Индекс(СтрокаСТемЖеКодом);
Если ТекИндекс > МаксИндекс Тогда
МаксИндекс = ТекИндекс;
КонецЕсли;
КонецЦикла;
ИндексСоздаваемогоУзла = МаксИндекс + 1;
Если ИндексСоздаваемогоУзла >= РодительСтрока.Строки.Количество() ИЛИ ИндексСоздаваемогоУзла = 0 Тогда
НовыйУзел = РодительСтрока.Строки.Добавить();
Иначе
НовыйУзел = РодительСтрока.Строки.Вставить(ИндексСоздаваемогоУзла);
КонецЕсли;
ЗаполнитьЗначенияСвойств(НовыйУзел, Узел, , "Родитель, Строки");
Для Каждого Стр из Узел.Строки Цикл
СкопироватьУзел(НовыйУзел, Стр);
КонецЦикла;
Возврат НовыйУзел;
КонецФункции
&НаСервере
Процедура ОтсечьНезаполненныеНеобязательныеУзлы(Узел)
КоличествоСтрок = Узел.Строки.Количество();
Для Инд = 1 По КоличествоСтрок Цикл
Стр = Узел.Строки.Получить(КоличествоСтрок - Инд);
ОтсечьНезаполненныеНеобязательныеУзлы(Стр);
КонецЦикла;
Если ТипЗнч(Узел) <> Тип("ДеревоЗначений") Тогда
Если (СтрНайти(Узел.Обязательность, "Н") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "H") <> 0) И УзелПуст(Узел) Тогда
РегламентированнаяОтчетность.УдалитьУзел(Узел);
ИначеЕсли (СтрНайти(Узел.Обязательность, "М") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "M") <> 0)
И УзелПуст(Узел)
И ?(СтрНайти(Узел.Обязательность, "О") <> 0 ИЛИ СтрНайти(Узел.Обязательность, "O") <> 0, ИмеютсяАналогичныеСоседниеУзлы(Узел), Истина) Тогда
РегламентированнаяОтчетность.УдалитьУзел(Узел);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция УзелПуст(Узел)
Для Каждого Стр из Узел.Строки Цикл
Если НЕ УзелПуст(Стр) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(Узел.Значение) Тогда
Возврат Истина;
КонецЕсли;
Если Узел.Формат = "N" Тогда
Возврат Узел.Значение = "0";
ИначеЕсли Узел.Формат = "D" Тогда
Возврат Узел.Значение = "0001-01-01";
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ИмеютсяАналогичныеСоседниеУзлы(Стр)
РодительСтроки = ?(Стр.Родитель = Неопределено, Стр.Владелец(), Стр.Родитель);
Возврат (РодительСтроки.Строки.НайтиСтроки(Новый Структура("Ключ", Стр.Ключ), Ложь).Количество() > 1);
КонецФункции
&НаСервере
Процедура ВыгрузитьСтрокуМногострочнойЧасти(Данные, Узел, НомерСтроки, ПоказателиИсключения = Неопределено, ВыгружатьПустую = Ложь)
Если ПоказателиИсключения = Неопределено Тогда
СтрИсключения = Новый Структура;
Иначе
СтрИсключения = Новый Структура(ПоказателиИсключения);
КонецЕсли;
СуффиксТекущейСтроки = "_" + Формат(НомерСтроки, "ЧГ=");
СтрокаПустая = Истина;
Для Каждого Стр Из Узел.Строки Цикл
Если НЕ ЗначениеЗаполнено(Стр.Ключ) Тогда
Продолжить;
КонецЕсли;
Если НЕ СтрИсключения.Свойство(Стр.Ключ) И ЗначениеПоказателяЗаполнено(Данные[Стр.Ключ + СуффиксТекущейСтроки], Стр) Тогда
СтрокаПустая = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ СтрокаПустая ИЛИ ВыгружатьПустую Тогда
Для Каждого Стр Из Узел.Строки Цикл
Если ЗначениеЗаполнено(Стр.Ключ) Тогда
ВывестиПоказательВXML(Стр, Данные[Стр.Ключ + СуффиксТекущейСтроки]);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗначениеСуммыЗаполнено(ЗначениеСуммы)
Возврат (Окр(ЗначениеСуммы) <> 0)
КонецФункции
&НаСервере
Функция ЗначениеПоказателяЗаполнено(ЗначениеПоказателя, ЯвляетсяСуммой)
Если ТипЗнч(ЯвляетсяСуммой) = Тип("Булево") Тогда
ПоказательЯвляетсяСуммой = ЯвляетсяСуммой;
Иначе
ПоказательЯвляетсяСуммой = (ЯвляетсяСуммой.Формат = "N" И ЯвляетсяСуммой.МаксРазмерность >= 10 И ЯвляетсяСуммой.МинРазмерность = 99999);
КонецЕсли;
Возврат ?(ПоказательЯвляетсяСуммой, ЗначениеСуммыЗаполнено(ЗначениеПоказателя), ЗначениеЗаполнено(ЗначениеПоказателя));
КонецФункции
&НаСервере
Функция ВывестиПоказательВXML(Узел, ЗначениеПоказателя)
МинШирина = Узел.МинРазмерность;
МаксШирина = Узел.МаксРазмерность;
Если Узел.Формат = "T" ИЛИ Узел.Формат = "Т" Тогда
Если ТипЗнч(ЗначениеПоказателя) = Тип("Дата") Тогда
ЗначениеПоказателяСтр = Формат(ЗначениеПоказателя, "ДФ=yyyy-MM-dd");
Иначе
ЗначениеПоказателяСтр = СокрЛП(ЗначениеПоказателя);
КонецЕсли;
Узел.Значение = ?(МаксШирина < СтрДлина(ЗначениеПоказателяСтр), СокрЛП(Лев(ЗначениеПоказателяСтр, МаксШирина)), ЗначениеПоказателяСтр);
ИначеЕсли Узел.Формат = "N" Тогда
СтрокаФормата = "ЧРД=.;ЧН=0;ЧГ=;";
Если Узел.МаксРазмерность <> 0 И Узел.МаксРазмерность <> 99999 Тогда
СтрокаФормата = СтрокаФормата + "ЧЦ=" + Формат(Узел.МаксРазмерность, "ЧГ=") + ";";
КонецЕсли;
Если Узел.МинРазмерность <> 99999 Тогда
СтрокаФормата = СтрокаФормата + "ЧДЦ=" + Формат(Узел.МинРазмерность, "ЧГ=") + ";";
КонецЕсли;
Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, СтрокаФормата));
ИначеЕсли Узел.Формат = "D" Тогда
Если ЗначениеЗаполнено(ЗначениеПоказателя) Тогда
Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, "ДФ=yyyy-MM-dd"));
Иначе
Узел.Значение = "0001-01-01";
КонецЕсли;
ИначеЕсли Узел.Формат = "gYear" Тогда
Если ТипЗнч(ЗначениеПоказателя) = Тип("Дата") Тогда
Узел.Значение = СокрЛП(Формат(ЗначениеПоказателя, "ДФ=гггг"));
Иначе
Узел.Значение = Прав(СокрЛП(ЗначениеПоказателя), 4);
КонецЕсли;
КонецЕсли;
КонецФункции
&НаСервере
Функция ПроверитьПоказатели() Экспорт
СформироватьСтруктуруПоказателей();
ПараметрыВыгрузки = СформироватьСтруктуруПараметров();
ДеревоВыгрузки = ИзвлечьСтруктуруXML();
Если НЕ ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки);
Если НЕ РегламентированнаяОтчетность.ПроверитьДанные(ЭтаФорма, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ПроверитьВыгрузку(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ПроверитьВыгрузкуОтчета();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуОтчета()
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуОтчетаЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
СохранитьНаКлиенте(,ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуОтчетаЗавершение(Результат, ДополнительныеПараметры) Экспорт
ФормаВыгрузкиРеглОтчета = ПолучитьФорму("Документ.ВыгрузкаРегламентированныхОтчетов.Форма.ФормаДокумента", , ЭтаФорма);
СпДокОсн = Новый СписокЗначений;
СпДокОсн.Добавить(СтруктураРеквизитовФормы.мСохраненныйДок);
ФормаВыгрузкиРеглОтчета.Проверить(СпДокОсн);
КонецПроцедуры
&НаКлиенте
Функция ДобавитьРеквизит(Текст, ДобСтрока, Префикс)
Если ЗначениеЗаполнено(ДобСтрока) Тогда
Текст = Текст + Префикс + ДобСтрока;
КонецЕсли;
Возврат Текст;
КонецФункции
&НаКлиенте
Процедура ТабличныйДокументВыбор(Элемент, Область, СтандартнаяОбработка)
Если Элементы.ТабличныйДокумент.Защита Тогда
Возврат;
КонецЕсли;
Если СтрЧислоВхождений(Область.Имя, "ДобавитьСтроку") > 0 Тогда
СтандартнаяОбработка = Ложь;
ДобавитьСтроку("");
ИначеЕсли СтрЧислоВхождений(Область.Имя, "УдалитьСтроку") > 0 И Область.Гиперссылка И Область.Текст <> "" Тогда
СтандартнаяОбработка = Ложь;
УдалитьСтроку("");
КонецЕсли;
Если РегламентированнаяОтчетностьКлиент.ВыбраннаяОбластьРегламентированногоОтчетаНеВерна(ЭтаФорма, Область, СтандартнаяОбработка) Тогда
Возврат;
КонецЕсли;
ОбластьИмя = Область.Имя;
Если СтрНайти(ОбластьИмя, "ДокУпПред") > 0 Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураДокумента", мСтруктураДокУпПред);
ФормаВводаДокументПредставителя = ПолучитьФорму("Отчет.РегламентированныйОтчет4ФСС.Форма.ФормаВводаДокументПредставителя", ПараметрыФормы);
ФормаВводаДокументПредставителя.ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ОткрытьФормуВводаДокументаПредставителяЗавершение", ЭтотОбъект);
ФормаВводаДокументПредставителя.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаВводаДокументПредставителя.Открыть();
Иначе
ПараметрВводаПоля = СвойстваПоказателей.НайтиСтроки(Новый Структура("Показатель", ОбластьИмя));
Если ПараметрВводаПоля.Количество() = 0 Тогда
ПараметрВводаПоля = Неопределено;
Для Каждого Стр из СвойстваПоказателей Цикл
Если Лев(Область.Имя, СтрДлина(Стр.Показатель)) = Стр.Показатель Тогда
ПараметрВводаПоля = Стр;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
ПараметрВводаПоля = ПараметрВводаПоля[0];
КонецЕсли;
Если ПараметрВводаПоля <> Неопределено И ПараметрВводаПоля.ТаблицаЗначений.Количество() > 0 Тогда
ВвестиПоказатель(Элемент, Область, ПараметрВводаПоля.Показатель, Ложь, ПараметрВводаПоля.ТекстПриВыборе, ПараметрВводаПоля.ТаблицаЗначений, СтандартнаяОбработка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВводаДокументаПредставителяЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
мСтруктураДокУпПред = Результат;
Текст = "";
Текст = ДобавитьРеквизит(Текст, мСтруктураДокУпПред.НаименованиеУдостоверяющего, "");
Текст = ДобавитьРеквизит(Текст, мСтруктураДокУпПред.СерияРимскиеЦифры, " ");
Текст = ДобавитьРеквизит(Текст, мСтруктураДокУпПред.СерияРусскиеБуквы, " ");
Текст = ДобавитьРеквизит(Текст, мСтруктураДокУпПред.НомерУдостоверяющего, " № ");
Текст = ДобавитьРеквизит(Текст, Формат(мСтруктураДокУпПред.ДатаВыдачи,"ДФ=dd.MM.yyyy"), " от ");
Текст = ДобавитьРеквизит(Текст, мСтруктураДокУпПред.КемВыдан, " выдан: ");
ТабличныйДокумент.Области.ДокУпПред.Значение = Текст;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТабличныйДокументПриИзмененииСодержимогоОбласти(Элемент, Область)
Если Элементы.ТабличныйДокумент.Защита Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ИмяРаздела = Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим;
ИмяОбласти = Область.Имя;;
ПозицияПодстроки = СтрНайти(ИмяОбласти, "_");
Если ПозицияПодстроки > 0 Тогда
ИмяОбласти = Лев(ИмяОбласти, ПозицияПодстроки - 1);
КонецЕсли;
Если СтрНайти(ИмяОбласти, "НомДопРасчета") > 0 Тогда
ЭтоОбластьПериода = (ИмяОбласти = "НомДопРасчета");
ЗаполнениеПериодаОтчетаПоПриказу1385н = (КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета) >= КонецГода('20111231'));
Если ЭтоОбластьПериода И ЗаполнениеПериодаОтчетаПоПриказу1385н Тогда
КодПериода = Формат(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета, "ДФ=ММ");
Если КодПериода = "03" ИЛИ КодПериода = "06" ИЛИ КодПериода = "09" ИЛИ КодПериода = "12" Тогда
Если ПустаяСтрока(ТабличныйДокумент.Области.НомДопРасчета.Значение) Тогда
ТабличныйДокумент.Области.Период.Значение = КодПериода;
Иначе
ТабличныйДокумент.Области.Период.Значение = "";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ИмяОбласти = "НомерКорректировки" Тогда
ОписаниеТипа = Новый ОписаниеТипов("Число");
НомерКорректировки = ОписаниеТипа.ПривестиЗначение(Область.Значение);
СтруктураРеквизитовФормы.ВидДокумента = ?(НомерКорректировки = 0, 0, 1);
ОтобразитьНомерКорректировки(ЭтаФорма);
РегламентированнаяОтчетностьКлиентСервер.УстановитьЗначениеОКВЭД(ДатаПодписи,
СтруктураРеквизитовФормы,
ТабличныйДокумент.Области.ОКВЭД.Значение);
Модифицированность = Истина;
ИначеЕсли ИмяОбласти = "ДатаПодписи" Тогда
ДатаПодписи = ТабличныйДокумент.Области.ДатаПодписи.Значение;
#Если ВебКлиент Тогда
ДатаПодписиПриИзмененииНаСервере();
#Иначе
ДатаПодписиПриИзмененииНаКлиенте();
#КонецЕсли
Модифицированность = Истина;
КонецЕсли;
РасчетНаКлиенте(ИмяРаздела, ИмяОбласти);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьАвто(Команда)
Отказ = Ложь;
РегламентированнаяОтчетностьКлиентПереопределяемый.ПроверитьВозможностьАвтоЗаполненияРеглОтчета(ИмяФормы, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Команда", Команда);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьАвтоЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередЗаполнениемРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьАвтоЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Команда = ДополнительныеПараметры.Команда;
ЗаполнитьАвтоНаСервере();
СтруктураРеквизитовФормы.ВыводитьСтраницуВТаблДокНаСервере = Ложь;
РегламентированнаяОтчетностьКлиент.ОбновитьДеревоРазделовВФормеОтчета(ЭтаФорма);
Если НЕ Элементы.РазделыОтчета.ТекущиеДанные.ПолучитьРодителя() = Неопределено Тогда
Элементы.РазделыОтчета.ТекущаяСтрока = Элементы.РазделыОтчета.ТекущиеДанные.ПолучитьРодителя().ПолучитьЭлементы()[0].ПолучитьИдентификатор();
КонецЕсли;
Если Элементы.Расшифровать.Видимость Тогда
Элементы.Расшифровать.Доступность = Истина;
Элементы.ТабличныйДокументКонтекстноеМенюРасшифровать.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьАвтоНаСервере()
СохранитьДанныеРаздела(СтруктураРеквизитовФормы.НаимТекущегоРаздела, Ложь);
ЗаполнитьПустыеСтруктурыДанных();
ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
Контейнер = Новый Структура();
Контейнер.Вставить("Титульный", СтруктураДанныхТитульный);
Контейнер.Вставить("Раздел1_1", СтруктураДанныхРаздел1_1);
Контейнер.Вставить("Раздел1_2", СтруктураДанныхРаздел1_2);
Контейнер.Вставить("Раздел1_3", СтруктураДанныхРаздел1_3);
Контейнер.Вставить("Раздел1_4", СтруктураДанныхРаздел1_4);
Контейнер.Вставить("Раздел1_4_ДанныеДопСтрок", П0003100010);
Контейнер.Вставить("Раздел1_5", СтруктураДанныхРаздел1_5);
Контейнер.Вставить("Раздел1_6", СтруктураДанныхРаздел1_6);
Контейнер.Вставить("Раздел1_7", СтруктураДанныхРаздел1_7);
Контейнер.Вставить("Раздел2_1", СтруктураДанныхРаздел2_1);
Контейнер.Вставить("Раздел2_2", СтруктураДанныхРаздел2_2);
ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
КонецЕсли;
ЭтаФормаИмя = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет(ЭтаФормаИмя, ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ПараметрыОтчета, Контейнер);
ЗаполнитьПустыеСтруктурыДанных();
Если П0003100010.Количество() = 0 Тогда
П0003100010.Добавить();
КонецЕсли;
РегламентированнаяОтчетность.ЗаполнитьСтруктуруДанныхРазделаЗначениямиИзДопСтрок(
СтруктураДанныхРаздел1_4, П0003100010);
ВывестиМакетВТаблДокНаСервере(СтруктураРеквизитовФормы.НаимТекущегоРаздела, 1);
РасчетНаСервере();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура Расшифровать(Команда)
ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("мДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("мДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
ИДИменПоказателей = Новый Массив();
ИДИменПоказателей.Добавить(Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя);
РегламентированнаяОтчетностьКлиент.ОткрытьРасшифровкуОтчета(ИмяОтчета(ЭтаФорма.ИмяФормы), ИмяФормыОтчета(ЭтаФорма.ИмяФормы), ИДИменПоказателей, ПараметрыОтчета)
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВИнтернете(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВИнтернетеЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВИнтернетеЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПроверитьВИнтернете(ЭтаФорма, "ФСС");
КонецПроцедуры
#Область ПанельОтправкиВКонтролирующиеОрганы
&НаКлиенте
Процедура ОбновитьОтправку(Команда)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОбновитьОтправкуИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПротоколНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьПротоколИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьНеотправленноеИзвещение(Команда)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтправитьНеотправленноеИзвещениеИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыОтправкиНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьСостояниеОтправкиИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаКлиенте
Процедура КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьКритическиеОшибкиИзПанелиОтправки(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаНаименованиеЭтапаНажатие(Элемент)
ПараметрыИзменения = Новый Структура;
ПараметрыИзменения.Вставить("Форма", ЭтаФорма);
ПараметрыИзменения.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыИзменения.Вставить("КонтролирующийОрган",
ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС"));
РегламентированнаяОтчетностьКлиент.ИзменитьСтатусОтправки(ПараметрыИзменения);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОтправитьВКонтролирующийОрган(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередОтправкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьВКонтролирующийОрганЗавершение", ЭтотОбъект);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьВКонтролирующийОрганЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиВКонтролирующийОрган(ЭтаФорма, "ФСС");
КонецПроцедуры
&НаСервере
Функция ОбъектОтчета(ЭтаФормаИмя)
Если мОбъектОтчета = Неопределено Тогда
мОбъектОтчета = РегламентированнаяОтчетностьВызовСервера.ОбъектОтчета(ЭтаФормаИмя);
КонецЕсли;
Возврат мОбъектОтчета;
КонецФункции
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", ЭтаФорма);
Оповещение = Новый ОписаниеОповещения("ПослеСохраненияФормыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
СохранитьНаКлиенте(, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеСохраненияФормыЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДополнительныеПараметры.Форма.Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ТабличныйДокументПриАктивизации(Элемент)
Если Элементы.ТабличныйДокумент.Защита Тогда
Возврат;
КонецЕсли;
Элементы.ТабличныйДокументКонтекстноеМенюУдалитьСтроку.Доступность = Ложь;
Элементы.ТабличныйДокументКонтекстноеМенюДобавитьСтроку.Доступность = Ложь;
ИмяГруппы = РазделТекущейОбласти(ЭтаФорма, ТабличныйДокумент.ТекущаяОбласть);
Если ЗначениеЗаполнено(ИмяГруппы) Тогда
ТестовоеИмя = ИмяГруппы + "01_" + Строка(мСтруктураИсхКолвоСтрокРазделов[ИмяГруппы] + 1);
Элементы.ТабличныйДокументКонтекстноеМенюДобавитьСтроку.Доступность = Истина;
Если СтрЧислоВхождений(ТабличныйДокумент.ТекущаяОбласть.Имя, "ДобавитьСтроку") = 0 И
ТабличныйДокумент.Области.Найти(ТестовоеИмя) <> Неопределено Тогда
Элементы.ТабличныйДокументКонтекстноеМенюУдалитьСтроку.Доступность = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РазделТекущейОбласти(Форма, ТекущаяОбласть, ДлИмениОбласти = 13) Экспорт
Если ТекущаяОбласть = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ИмяТекущейОбласти = СтрЗаменить(ТекущаяОбласть.Имя, "ДобавитьСтрокуЗначок", "ДобавитьСтроку");
Если ИмяТекущейОбласти = "ДобавитьСтроку" Тогда
Возврат Форма.СтруктураРеквизитовФормы.мИдГруппы1;
ИначеЕсли СтрНайти(ИмяТекущейОбласти, "УдалитьСтроку") > 0 Тогда
ИмяТекущейОбласти = СтрЗаменить(ИмяТекущейОбласти, "УдалитьСтроку", "");
КонецЕсли;
ИмяАктивногоРаздела = Лев(ИмяТекущейОбласти, ДлИмениОбласти);
Для Каждого ЭлементСтруктуры Из Форма.мСтруктураМногострочныхРазделов Цикл
ИмяГруппы = ЭлементСтруктуры.Ключ;
СтруктураГруппы = Форма[ЭлементСтруктуры.Значение];
Если СтруктураГруппы[0].Свойство(ИмяАктивногоРаздела) Тогда
Возврат ИмяГруппы;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаСервере
Процедура РазрешитьРедактированиеРеквизитовОбъекта() Экспорт
РегламентированнаяОтчетность.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
РегламентированнаяОтчетностьКлиент.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПрисоединенныеФайлы(Команда)
РегламентированнаяОтчетностьКлиент.СохранитьОтчетИОткрытьФормуПрисоединенныеФайлы(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КомментарийПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИмяОтчета(ЭтаФормаИмя)
Форма_Имя = СтрЗаменить(ЭтаФормаИмя, "Внешний", "");
Возврат Сред(Лев(Форма_Имя, СтрНайти(Форма_Имя, ".Форма.") - 1), 7);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяФормыОтчета(ЭтаФормаИмя)
Возврат Сред(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") + 7);
КонецФункции
#Область ОбработчикиСобытийФормы
#Область ОбработчикиСобытийПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
РегламентированнаяОтчетностьКлиент.ВыполнитьЗадачу(
ЭтотОбъект,
Команда,
?(ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСохраненныйДок),
СтруктураРеквизитовФормы.мСохраненныйДок,
СтруктураРеквизитовФормы.ПустаяСсылкаНаРегламентированныйОтчет));
КонецПроцедуры
#КонецОбласти
#Область ПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.КомментарийСледующемуНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если РегламентированнаяОтчетностьКлиент.ЭтоСобытиеЗавершениеОтправки(ИмяСобытия) Тогда
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроцессыОбработкиДокументов
&НаКлиенте
Процедура Записать(ПараметрыЗаписи) Экспорт
СохранитьНаКлиенте();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
РегламентированнаяОтчетность.ВыполнитьЗадачу(ЭтотОбъект, Контекст, СтруктураРеквизитовФормы.мСохраненныйДок);
КонецПроцедуры
&НаСервере
Процедура УправлениеДоступностьюРеквизитов(БлокируемыеЭлементы, ТолькоПросмотр) Экспорт
РегламентированнаяОтчетность.УправлениеДоступностьюРеквизитов(ЭтотОбъект, БлокируемыеЭлементы, ТолькоПросмотр);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ИнициализироватьВыводСтатусовИВажныхСообщений_85()
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.УстановитьРазмещениеНаименованияЭтапаБРО_85(ЭтотОбъект);
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере() Экспорт
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДетальноеОписаниеСтатусаПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат = "ОбновитьОтправку" Тогда
ОбновитьОтправку(Неопределено);
ИначеЕсли Результат = "ГиперссылкаПротокол" Тогда
ГиперссылкаПротоколНажатие(Неопределено);
ИначеЕсли Результат = "ЭтапыОтправки" Тогда
ЭтапыОтправкиНажатие(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВывестиСтатусыИВыжныеСообщенияНаФорму() Экспорт
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНажатияКнопкиВВажномСообщении(Команда)
Если Команда.Имя = "ОтправитьНеотправленноеИзвещение" Тогда
ОтправитьНеотправленноеИзвещение(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиВВажномСообщении(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НРег(НавигационнаяСсылкаФорматированнойСтроки) = "критическиеошибки" Тогда
КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаЗакрытияВажногоСообщения(Команда)
МодульКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер");
МодульКлиентСервер.ЗакрытьВажноеСообщение(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьДействиеИнформационногоСообщения(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
МодульОбщегоНазначенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбщегоНазначенияКлиент");
МодульОбщегоНазначенияКлиент.ОбработатьДействиеИнформационногоСообщения(ЭтотОбъект, ЭлементИлиКоманда, НавигационнаяСсылка, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти