&НаСервере
Перем мОбъектОтчета;
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПолеТабличногоДокументаФормаОтчета.Очистить();
СформироватьСтруктуруРеквизитовФормы();
СтруктураРеквизитовФормы.СписокПечатаемыхЛистов = Новый СписокЗначений;
СтруктураРеквизитовФормы.мВерсияФормы = "16/10/2017";
СтруктураРеквизитовФормы.мКодОтчета = "0606010";
СтруктураРеквизитовФормы.мСоставПоказателей = "СоставПоказателей2018Кв1";
СтруктураРеквизитовФормы.мПечатныеФормы = Новый СписокЗначений;
РегламентированнаяОтчетность.СформироватьСтруктуруЦветовРаскраски(ЭтаФорма);
мСтруктураВариантыЗаполнения = Новый Структура;
ПорядкиОкругленияОтчетности = Новый Структура;
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1", Перечисления.ПорядкиОкругленияОтчетности.Окр1);
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1000", Перечисления.ПорядкиОкругленияОтчетности.Окр1000);
ПорядкиОкругленияОтчетности.Вставить("ПеречислениеПорядкиОкругленияОтчетностиОкр1000000", Перечисления.ПорядкиОкругленияОтчетности.Окр1000000);
СоответствиеЕдиницыИзмеренияДелителю = Новый Структура;
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1", 1);
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000", 1000);
СоответствиеЕдиницыИзмеренияДелителю.Вставить("Окр1000000", 1000000);
СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17, 2));
ПолеТабличногоДокументаФормаОтчета.Вывести(ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("ФормаОтчета2018Кв1_ФормаОтчета"));
СтруктураРеквизитовФормы.мВыбраннаяФорма = Параметры.мВыбраннаяФорма;
СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета = Параметры.мДатаКонцаПериодаОтчета;
СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета = Параметры.мДатаНачалаПериодаОтчета;
СтруктураРеквизитовФормы.мПериодичность = Параметры.мПериодичность;
СтруктураРеквизитовФормы.мСкопированаФорма = Параметры.мСкопированаФорма;
СтруктураРеквизитовФормы.мСохраненныйДок = Параметры.мСохраненныйДок;
СтруктураРеквизитовФормы.Организация = Параметры.Организация;
ДатаПодписи = ТекущаяДатаСеанса();
Если ЗначениеЗаполнено(Параметры.мСохраненныйДок) И Параметры.мСкопированаФорма = Неопределено Тогда
СтруктураРеквизитовФормы.мПериодичность = Параметры.мСохраненныйДок.Периодичность;
КонецЕсли;
СтруктураРеквизитовФормы.СправочникиВидыКонтактнойИнформацииПочтовыйАдресОрганизации = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресОрганизации;
Инициализация(Параметры.БезОткрытияФормы);
ИнициализироватьВыводСтатусовИВажныхСообщений_85();
КонецПроцедуры
&НаСервере
Процедура СформироватьСтруктуруРеквизитовФормы()
СтруктураРеквизитовФормы = РегламентированнаяОтчетность.СформироватьСтруктуруОбязательныхРеквизитовСтатистическогоОтчета();
СтруктураРеквизитовФормы.Вставить("НаимОрганизацииСокр");
КонецПроцедуры
&НаСервере
Процедура Инициализация(БезОткрытияФормы = Ложь) Экспорт
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
СтруктураРеквизитовФормы.мБезОткрытияФормы = БезОткрытияФормы;
СтруктураРеквизитовФормы.мРежимПечати = Ложь;
СтруктураРеквизитовФормы.мАвтоВыборКодов = Ложь;
РегламентированнаяОтчетность.ЗаполнитьНачальныеНастройки(ЭтаФорма);
РегламентированнаяОтчетность.ЗапомнитьИменаСправочниковОбособленныхПодразделений(ЭтаФорма);
СформироватьСпискиВыбора();
ТекТабличноеПоле = ПолеТабличногоДокументаФормаОтчета;
СтруктураРеквизитовФормы.ВидДокумента = 0;
НомерКорректировки = 1;
ФормироватьСтруктуруСвойствСтраниц();
СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = "";
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
Если СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено Тогда
ВосстановитьСохраненныеДанные();
КонецЕсли;
Модифицированность = Истина;
Иначе
ВосстановитьСохраненныеДанные();
Если ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСкопированаФорма) Тогда
СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено;
КонецЕсли;
Если НЕ БезОткрытияФормы
И НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
РегламентированнаяОтчетность.БлокировкаИлиЗапретРедактированияОтчета(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
НомерКорректировки = 0;
Иначе
НомерКорректировки = СтруктураРеквизитовФормы.мСохраненныйДок.Вид;
КонецЕсли;
ПолеТабличногоДокументаФормаОтчета.Области.НомерКорректировки.Значение = НомерКорректировки;
ПолеТабличногоДокументаФормаОтчета.Области.ДатаСоставленияОтчета.Значение = ДатаПодписи;
ПолеТабличногоДокументаФормаОтчета.Области.П0001001В1.Значение = "00";
УстановитьДоступностьЭУВыбораОбособленныхПодразделений(ЭтаФорма);
РегламентированнаяОтчетность.ПолучитьСведенияОПоказателяхОтчета(ЭтаФорма);
Если НЕ СтруктураРеквизитовФормы.ОтображатьКнопкуЗаполнить Тогда
Элементы.Заполнить.Видимость = Ложь;
КонецЕсли;
Если НЕ СтруктураРеквизитовФормы.ОтображатьКнопкуРасшифровать Тогда
Элементы.Расшифровать.Видимость = Ложь;
КонецЕсли;
ПоказатьПериод();
СтруктураРеквизитовФормы.НаимОрганизации = СтруктураРеквизитовФормы.Организация.Наименование;
Попытка
СтруктураРеквизитовФормы.НаимОрганизацииСокр = СокрЛП(СтруктураРеквизитовФормы.Организация.НаименованиеСокращенное);
Исключение
СтруктураРеквизитовФормы.НаимОрганизацииСокр = "";
КонецПопытки;
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено
Или СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация Тогда
ЗаполнитьСведенияОбОрганизацииНаСервере();
КонецЕсли;
ТекущийЭлемент = Элементы["ПолеТабличногоДокументаФормаОтчета"];
РегламентированнаяОтчетность.УстановитьЦветФорматДоступностьЯчеек(ЭтаФорма);
РегламентированнаяОтчетность.ДобавитьКнопкуПрисоединенныеФайлы(ЭтаФорма);
РегламентированнаяОтчетностьКлиентСервер.ПриИнициализацииФормыРегламентированногоОтчета(ЭтаФорма, "ФСГС");
ИмяАтрибутов = ?(СтруктураРеквизитовФормы.мПериодичность = Перечисления.Периодичность.Месяц, "АтрибВыгрузкиXML2018Кв1_месяц", "АтрибВыгрузкиXML2018Кв1_квартал");
РегламентированнаяОтчетность.ОбновитьШаблоныЧерезВебСервисНаСервере(ЭтотОбъект, ИмяАтрибутов);
РегламентированнаяОтчетность.ПриИнициализации(ЭтотОбъект,
?(ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСохраненныйДок),
СтруктураРеквизитовФормы.мСохраненныйДок,
СтруктураРеквизитовФормы.ПустаяСсылкаНаРегламентированныйОтчет));
КонецПроцедуры
&НаСервере
Процедура ФормироватьСтруктуруСвойствСтраниц() Экспорт
мСвойстваРазделовДекларации.ПолучитьЭлементы().Очистить();
СтрокаУровня1 = мСвойстваРазделовДекларации.ПолучитьЭлементы().Добавить();
СтрокаУровня1.ИмяСтраницы = "ФормаОтчета";
СтрокаУровня1.МногострочностьВРазделе = 0;
СтрокаУровня1.МногостраничностьВРазделе = Ложь;
СтрокаУровня1.ОчищатьРаздел = Ложь;
СтрокаУровня1.ИмяПредставления = "";
СтрокаУровня1.ПредставлениеДанных = Ложь;
СтрокаУровня1.РазделОбязателенДляВыгрузки = Неопределено;
СтрокаУровня1.НазваниеПанелиТабличногоПоляРаздела = "ОсновнаяПанель";
СтрокаУровня1.СохранятьМногострКакТЗ = Неопределено;
СтрокаУровня1.РазделЯвляетсяАвтозаполняемым = Ложь;
КонецПроцедуры
&НаСервере
Процедура ВосстановитьСохраненныеДанные()
Перем ДанныеМногострочныхРазделов;
Перем ДанныеВариановАвтоЗаполнения;
Перем ПоказателиОтчета;
Перем ВерсияФормы;
Перем ОбособПодразделение;
Если СтруктураРеквизитовФормы.Организация <> СтруктураРеквизитовФормы.мСохраненныйДок.Организация
И СтруктураРеквизитовФормы.Организация <> РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа("СправочникСсылка.Организации")
И СтруктураРеквизитовФормы.Организация <> Неопределено Тогда
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
Иначе
СтруктураРеквизитовФормы.Организация = СтруктураРеквизитовФормы.мСохраненныйДок.Организация;
КонецЕсли;
ДатаПодписи = СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи;
СтруктураРеквизитовФормы.ЕдиницаИзмерения = СтруктураРеквизитовФормы.мСохраненныйДок.ЕдиницаИзмерения;
СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения = СтруктураРеквизитовФормы.мСохраненныйДок.ТочностьЕдиницыИзмерения;
Комментарий = СтруктураРеквизитовФормы.мСохраненныйДок.Комментарий;
СписокСохранения = СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета.Получить();
Если СписокСохранения.Свойство("ДанныеВариантовАвтоЗаполнения", ДанныеВариановАвтоЗаполнения) Тогда
Если НЕ ДанныеВариановАвтоЗаполнения = Неопределено Тогда
мСтруктураВариантыЗаполнения.Очистить();
Для Каждого ЭлементСтруктуры Из ДанныеВариановАвтоЗаполнения Цикл
мСтруктураВариантыЗаполнения.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Ключ);
ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ].Очистить();
Для Каждого ЭлементМассива Из ЭлементСтруктуры.Значение Цикл
ТаблВарЗаполнения = ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ].Добавить().ТаблицаВариантовЗаполнения;
ЗначениеВДанныеФормы(ЭлементМассива, ТаблВарЗаполнения);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
СписокСохранения.Свойство("ВерсияФормы", ВерсияФормы);
СписокСохранения.Свойство("ИсключитьДанныеОбособленныхПодразделений", ИсключитьДанныеОбособленныхПодразделений);
Если Не СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация Тогда
Если СписокСохранения.Свойство("ОбособленноеПодразделение", ОбособПодразделение) Тогда
ОбособленноеПодразделение = ОбособПодразделение;
КонецЕсли;
КонецЕсли;
СписокСохранения.Свойство( "ПоказателиОтчета", ПоказателиОтчета );
ВывестиПоказателиОтчетаВТабличныйДокумент(ПоказателиОтчета);
СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение;
ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение = РегламентированнаяОтчетностьКлиентСервер.ПредставлениеАдресаВФормате9Запятых(СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки);
РегламентированнаяОтчетность.ОперацииПриВосстановленииРегламентированногоОтчета(ЭтаФорма);
РегламентированнаяОтчетность.ЗаполнитьДанныеВШапкеОбособленныхПодразделений(ЭтаФорма);
Модифицированность = Ложь;
КонецПроцедуры
&НаСервере
Процедура ВывестиПоказателиОтчетаВТабличныйДокумент(ПоказателиОтчета)
Для Каждого ПоказателиСтраницы Из ПоказателиОтчета Цикл
ИмяТекТабличноеПоле = ПоказателиСтраницы.Ключ;
ТекТабличноеПоле = ЭтаФорма[ИмяТекТабличноеПоле];
ПоказателиТаблПоле = ПоказателиСтраницы.Значение;
Для Каждого Показатель Из ПоказателиТаблПоле Цикл
ИмяПоказателя = Показатель.Ключ;
ЗначениеПоказателя = Показатель.Значение;
РегламентированнаяОтчетность.УстановитьЗначениеИФорматВПоле(ТекТабличноеПоле, ИмяПоказателя, ЗначениеПоказателя);
КонецЦикла;
КонецЦикла;
СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение;
ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение =
РегламентированнаяОтчетностьКлиентСервер.ПредставлениеАдресаВФормате9Запятых(СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСведенияОбОрганизацииНаСервере(ВПрограммеИзмененаДатаПодписи = Ложь)
ЗаполнитьСведенияОбОрганизации(ЭтаФорма, ВПрограммеИзмененаДатаПодписи);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСведенияОбОрганизацииНаКлиенте(ВПрограммеИзмененаДатаПодписи = Ложь)
ЗаполнитьСведенияОбОрганизации(ЭтаФорма, ВПрограммеИзмененаДатаПодписи);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСведенияОбОрганизации(Форма, ВПрограммеИзмененаДатаПодписи = Ложь)
Если (Форма.СтруктураРеквизитовФормы.Организация = Неопределено) Или (Форма.СтруктураРеквизитовФормы.Организация = РегламентированнаяОтчетностьКлиентСервер.ПустоеЗначениеТипа("СправочникСсылка.Организации")) Тогда
Возврат;
КонецЕсли;
Сведения = Новый СписокЗначений;
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
Сведения.Добавить("", "ИННЮЛ");
Сведения.Добавить("", "ОКПО");
Сведения.Добавить("", "АдрПочт");
Сведения.Добавить("", "НаимЮЛПол");
Сведения.Добавить("", "ОснВидДеят");
Сведения.Добавить("", "ОКВЭД");
КонецЕсли;
РегламентированнаяОтчетностьВызовСервера.ДополнитьЗаправшиваемыеСведенияОбОрганизации(Форма.СтруктураРеквизитовФормы.Организация, Сведения);
ОргСведения = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Форма.СтруктураРеквизитовФормы.Организация, Форма.ДатаПодписи, Сведения);
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
ИННЮЛ = "";
ОКПО = "";
АдрПочт = "";
НаимЮЛПол = "";
ОснВидДеят = "";
ОКВЭД = "";
КонецЕсли;
ДолжнИсп = "";
ФИОИсп = "";
ТелИсп = "";
АдресЭлПочтыИсп = "";
Если НЕ ВПрограммеИзмененаДатаПодписи Тогда
ОргСведения.Свойство("ИННЮЛ", ИННЮЛ);
ОргСведения.Свойство("ОКПО", ОКПО);
ОргСведения.Свойство("АдрПочт", АдрПочт);
ОргСведения.Свойство("НаимЮЛПол", НаимЮЛПол);
#Если НаСервере Тогда
ОКПО = РегламентированнаяОтчетностьВызовСервера.ПолучитьОКПОФормыСтатистикиСПодразделением(Форма);
#Иначе
Попытка
ОбособленноеПодразделение = Форма.ОбособленноеПодразделение;
Организация = Форма.СтруктураРеквизитовФормы.Организация;
ОКПО = РегламентированнаяОтчетностьВызовСервера.ПолучитьОКПОПодразделения(ОбособленноеПодразделение, Организация);
Исключение
КонецПопытки;
#КонецЕсли
КонецЕсли;
РегламентированнаяОтчетностьВызовСервера.ДополнитьПодписантаСтатистическогоОтчета(ФИОИсп, ДолжнИсп, ТелИсп, АдресЭлПочтыИсп, ОргСведения, Форма.СтруктураРеквизитовФормы.Организация);
Если ВПрограммеИзмененаДатаПодписи Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргИсполнитель.Значение = ФИОИсп;
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргДолжностьИсп.Значение = ДолжнИсп;
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргТелефонИсп.Значение = ТелИсп;
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдресЭлектроннойПочты.Значение = АдресЭлПочтыИсп;
Возврат;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргНазв.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Если ЗначениеЗаполнено(Форма.ОбособленноеПодразделение) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргНазв.Значение = СокрЛП(Форма.ОбособленноеПодразделение) + ?(ПустаяСтрока(НаимЮЛПол), "", " (" + НаимЮЛПол + ")");
Иначе
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргНазв.Значение = НаимЮЛПол + ?(ПустаяСтрока(Форма.СтруктураРеквизитовФормы.НаимОрганизацииСокр)
, "", " (" + Форма.СтруктураРеквизитовФормы.НаимОрганизацииСокр + ")");
КонецЕсли;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргКодОКПО.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргКодОКПО.Значение = ОКПО;
КонецЕсли;
Если (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Или (ПустаяСтрока(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение)) Тогда
Если (ЗначениеЗаполнено(СтрЗаменить(АдрПочт, ",", ""))) И (Не ЗначениеЗаполнено(Форма.ОбособленноеПодразделение)) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение = РегламентированнаяОтчетностьКлиентСервер.ПредставлениеАдресаВФормате9Запятых(АдрПочт);
Форма.СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = АдрПочт;
Иначе
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение = "";
Форма.СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = "";
КонецЕсли;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргИсполнитель.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргИсполнитель.Значение = ФИОИсп;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргДолжностьИсп.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргДолжностьИсп.Значение = ДолжнИсп;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргТелефонИсп.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргТелефонИсп.Значение = ТелИсп;
КонецЕсли;
Если (НЕ ЗначениеЗаполнено(Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдресЭлектроннойПочты.Значение)) ИЛИ (Форма.СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация) Тогда
Форма.ПолеТабличногоДокументаФормаОтчета.Области.ОргАдресЭлектроннойПочты.Значение = АдресЭлПочтыИсп;
КонецЕсли;
Форма.Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ПоказатьПериод()
СтруктураРеквизитовФормы.СтрПериодОтчета = ПредставлениеПериода(НачалоДня(СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета), КонецДня(СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета), "ФП = Истина");
ПериодОтчета = " за " + СтруктураРеквизитовФормы.СтрПериодОтчета;
ПолеТабличногоДокументаФормаОтчета.Области.ПериодОтчета.Значение = ПериодОтчета;
КонецПроцедуры
&НаКлиенте
Процедура ИсключитьДанныеОбособленныхПодразделенийПриИзменении(Элемент) Экспорт
НачЗначениеОбособленногоПодразделения = ОбособленноеПодразделение;
УстановитьДоступностьЭУВыбораОбособленныхПодразделений(ЭтаФорма);
Если ИсключитьДанныеОбособленныхПодразделений Тогда
Если НачЗначениеОбособленногоПодразделения <> ОбособленноеПодразделение Тогда
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ЗаполнитьСведенияОбОрганизацииНаСервере();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбособленноеПодразделениеПриИзменении(Элемент) Экспорт
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ЗаполнитьСведенияОбОрганизацииНаСервере();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если СтрНайти(Заголовок, СтруктураРеквизитовФормы.СтрПериодОтчета) = 0 Тогда
Заголовок = Заголовок + " за " + СтруктураРеквизитовФормы.СтрПериодОтчета;
КонецЕсли;
ОргСтр = " (" + СтруктураРеквизитовФормы.НаимОрганизации + ")";
Если СтрНайти(Заголовок, ОргСтр) = 0 Тогда
Заголовок = Заголовок + ОргСтр;
КонецЕсли;
Заголовок = Заголовок + ?(СтрНайти(ЭтаФорма.ИмяФормы, "Внешний") > 0, " - внешний отчет", "");
ПодключитьОбработчикОжидания("ВыполнитьПроверкуПередОткрытием", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкуПередОткрытием()
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередОткрытиемФормыРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Модифицированность = Ложь;
Закрыть();
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.ПередЗакрытиемРегламентированногоОтчета(ЭтаФорма, Отказ, СтандартнаяОбработка, ЗавершениеРаботы, ТекстПредупреждения);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ПриЗакрытииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриЗакрытииНаСервере()
РегламентированнаяОтчетность.ПриЗакрытииРегламентированногоОтчета(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПолеТабличногоДокументаФормаОтчетаВыбор(Элемент, Область, СтандартнаяОбработка)
Если Элементы.ПолеТабличногоДокументаФормаОтчета.Защита Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ОбработкаВыбораПоляОбособленныхПодразделений(ЭтаФорма, Область, СтандартнаяОбработка);
Если Область.Имя = "ОргАдрес" Тогда
РегламентированнаяОтчетностьКлиент.ОбработкаАдресаВСтатистическомОтчете(ЭтаФорма, Область, СтандартнаяОбработка);
ИначеЕсли Не СтруктураРеквизитовФормы.мАвтоВыборКодов Тогда
ПравОбластьИмя = Прав(Область.Имя, 2);
Если ПравОбластьИмя = "А1" Или ПравОбластьИмя = "В1" Тогда
ПараметрВводаПоля = РегламентированнаяОтчетностьКлиентСервер.НайтиСвойстваПоказателя(ЭтаФорма, "OKVED2");
Если ПараметрВводаПоля <> Неопределено И ПараметрВводаПоля.ТаблицаЗначений <> Неопределено Тогда
СмежнаяОбласть = ПолеТабличногоДокументаФормаОтчета.Области.Найти(СтрЗаменить(Область.Имя, "В1", "А1"));
ОбластьДляВвода = ПолеТабличногоДокументаФормаОтчета.Области.Найти(СтрЗаменить(Область.Имя, "А1", "В1"));
Если СмежнаяОбласть <> Неопределено Тогда
КодПоказателя = ПараметрВводаПоля.Показатель;
ВвестиПоказатель(Элемент, ОбластьДляВвода, СмежнаяОбласть, КодПоказателя, Ложь, ПараметрВводаПоля.ТекстПриВыборе, ПараметрВводаПоля.ТаблицаЗначений, СтандартнаяОбработка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВвестиПоказатель(Элемент, Область, СмежнаяОбласть = Неопределено, КодПоказателя, Знач ЭтоСумма, Знач ТекстВыбора, ТаблицаВыбора, СтандартнаяОбработка, КолонкаПоиска = "Код", ПоляДляОчистки = Неопределено) Экспорт
Если ТаблицаВыбора = Неопределено ИЛИ СтруктураРеквизитовФормы.мАвтоВыборКодов Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ИсходноеЗначение = Область.Значение;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Заголовок", ТекстВыбора);
ПараметрыФормы.Вставить("ТаблицаЗначений", ТаблицаВыбора);
ПараметрыФормы.Вставить("СтруктураДляПоиска", Новый Структура(КолонкаПоиска, ИсходноеЗначение));
ДополнительныеПараметры = Новый Структура("Область, СмежнаяОбласть", Область, СмежнаяОбласть);
ОписаниеОповещения = Новый ОписаниеОповещения("ВвестиПоказательЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаВыбораЗначенияИзТаблицы", ПараметрыФормы, ЭтаФорма,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиПоказательЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Область = ДополнительныеПараметры.Область;
СмежнаяОбласть = ДополнительныеПараметры.СмежнаяОбласть;
Если РезультатВыбора = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(РезультатВыбора["Код"]) Тогда
РезультатВыбора["Название"] = "";
КонецЕсли;
Область.Значение = РезультатВыбора["Код"];
СмежнаяОбласть.Значение = РезультатВыбора["Название"];
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуКонтактнойИнформацииЗавершение(Результат, Параметры) Экспорт
РегламентированнаяОтчетностьКлиент.ОбновитьАдресВТабличномДокументеСтатистическойОтчетности(Результат, Параметры.Область, СтруктураРеквизитовФормы);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПолеТабличногоДокументаФормаОтчетаПриИзмененииСодержимогоОбласти(Элемент, Область)
Если Элементы.ПолеТабличногоДокументаФормаОтчета.Защита Тогда
Возврат;
КонецЕсли;
Если Область.Имя = "ДатаСоставленияОтчета" Тогда
ДатаПодписи = Область.Значение;
ЗаполнитьСведенияОбОрганизацииНаКлиенте(Истина);
Модифицированность = Истина;
Возврат;
ИначеЕсли Область.Имя = "НомерКорректировки" Тогда
Если Область.Значение = 0 Тогда
СтруктураРеквизитовФормы.ВидДокумента = 0;
НомерКорректировки = 0;
Иначе
СтруктураРеквизитовФормы.ВидДокумента = 1;
НомерКорректировки = Область.Значение;
КонецЕсли;
Модифицированность = Истина;
Возврат;
КонецЕсли;
Если Область.СодержитЗначение И Область.ТипЗначения.СодержитТип(Тип("Число")) Тогда
Если Область.Значение = 0 И Область.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти <= 1 Тогда
ФорматПредставленияНуля = РегламентированнаяОтчетностьКлиентСервер.ПолучитьПредставлениеНуляИзСтрокиФормата(Область.Формат);
ОтображениеНуля = СокрЛП(Формат(0, РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Область.Формат, "ЧН=")));
Если ПустаяСтрока(ОтображениеНуля) Тогда
ОтображениеНуля = "0";
КонецЕсли;
ТипСтрокиЗаполнения = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(СтрДлина(ОтображениеНуля), ДопустимаяДлина.Фиксированная));
СтрокаЗаполнения = ТипСтрокиЗаполнения.ПривестиЗначение();
Список = Новый СписокЗначений;
Список.Добавить("ЧН=' '", " <Пустое значение> " + СтрокаЗаполнения);
Список.Добавить("ЧН=" + ОтображениеНуля, " Отображать как """ + ОтображениеНуля + """ ");
НайденнаяСтрока = Список.НайтиПоЗначению(ФорматПредставленияНуля);
ДополнительныеПараметры = Новый Структура("Область", Область);
ОписаниеОповещения = Новый ОписаниеОповещения("ПолеТабличногоДокументаФормаОтчетаПриИзмененииСодержимогоОбластиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
# Если ВебКлиент Тогда
Если НайденнаяСтрока = Неопределено Тогда
ПоказатьВыборИзСписка(ОписаниеОповещения, Список, Элемент);
Иначе
ПоказатьВыборИзСписка(ОписаниеОповещения, Список, Элемент, НайденнаяСтрока);
КонецЕсли;
#Иначе
Список.ПоказатьВыборЭлемента(ОписаниеОповещения, "Выберите значение", Элемент);
#КонецЕсли
Возврат;
КонецЕсли;
КонецЕсли;
РасчетНаКлиенте();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПолеТабличногоДокументаФормаОтчетаПриИзмененииСодержимогоОбластиЗавершение(СписокЭлемент, ДополнительныеПараметры) Экспорт
Область = ДополнительныеПараметры.Область;
Если СписокЭлемент <> Неопределено Тогда
Область.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Область.Формат, СписокЭлемент.Значение);
КонецЕсли;
РасчетНаКлиенте();
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуВЯчейкахНаСервере() Экспорт
ЗаполнитьДатуВЯчейках(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуВЯчейкахНаКлиенте() Экспорт
ЗаполнитьДатуВЯчейках(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьДатуВЯчейках(Форма)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Истина;
ЗаполнитьСведенияОбОрганизацииНаКлиенте();
СтруктураРеквизитовФормы.мВПрограммеИзмененаОрганизация = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьОтчет(Команда)
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Внимание! Будут очищены все показатели отчета.%1Продолжить операцию?'"), Символы.ПС);
ОписаниеОповещения = Новый ОписаниеОповещения("ОчиститьОтчетЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьОтчетЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
Очистить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Очистить() Экспорт
ОчиститьТабличноеПолеНаСервере();
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ОчиститьТабличноеПолеНаСервере()
ОчиститьТабличноеПоле(ЭтаФорма);
РасчетНаСервере();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьТабличноеПоле(Форма)
Перем СписокПоказателейНеПодлежащихОчистке;
ВыбТабличноеПоле = Форма.ПолеТабличногоДокументаФормаОтчета;
СписокПоказателейНеПодлежащихОчистке = Новый СписокЗначений;
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргКодОКПО");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргНазв");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргАдрес");
СписокПоказателейНеПодлежащихОчистке.Добавить("КодЗнач1");
СписокПоказателейНеПодлежащихОчистке.Добавить("КодЗнач2");
СписокПоказателейНеПодлежащихОчистке.Добавить("КодЗнач3");
СписокПоказателейНеПодлежащихОчистке.Добавить("КодЗнач4");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргИсполнитель");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргДолжностьИсп");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргТелефонИсп");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОргАдресЭлектроннойПочты");
СписокПоказателейНеПодлежащихОчистке.Добавить("ДатаСоставленияОтчета");
СписокПоказателейНеПодлежащихОчистке.Добавить("НомерКорректировки");
СписокПоказателейНеПодлежащихОчистке.Добавить("ОбособленноеПодразделение");
СписокПоказателейНеПодлежащихОчистке.Добавить("ИсключитьДанныеОбособленныхПодразделений");
Для Инд = 0 По ВыбТабличноеПоле.Области.Количество() - 1 Цикл
ТекущаяОбласть = ВыбТабличноеПоле.Области[Инд];
Если СписокПоказателейНеПодлежащихОчистке.НайтиПоЗначению(ТекущаяОбласть.Имя) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда
Продолжить;
КонецЕсли;
Если Не ТекущаяОбласть.СодержитЗначение Тогда
Продолжить;
КонецЕсли;
Если ТекущаяОбласть.Защита Тогда
Продолжить;
КонецЕсли;
ТекущаяОбласть.Очистить();
ТекущаяОбласть.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(ТекущаяОбласть.Формат, "ЧН=' '");
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура РасчетНаКлиенте(ИмяСтраницыПанели = "") Экспорт
Расчет(ЭтаФорма, ИмяСтраницыПанели);
КонецПроцедуры
&НаСервере
Процедура РасчетНаСервере(ИмяСтраницыПанели = "") Экспорт
Расчет(ЭтаФорма, ИмяСтраницыПанели);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура Расчет(Форма, ИмяСтраницыПанели = "") Экспорт
Области = Форма.ПолеТабличногоДокументаФормаОтчета.Области;
Области.П010000102.Значение = Области.П010000202.Значение + Области.П010000302.Значение + Области.П010000402.Значение + Области.П010000502.Значение + Области.П010000602.Значение
+ Области.П010000702.Значение + Области.П010000802.Значение + Области.П010000902.Значение + Области.П010001002.Значение + Области.П010001102.Значение;
Если Области.П010000102.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000202.Текст + Области.П010000302.Текст + Области.П010000402.Текст + Области.П010000502.Текст + Области.П010000602.Текст
+ Области.П010000702.Текст + Области.П010000802.Текст + Области.П010000902.Текст + Области.П010001002.Текст + Области.П010001102.Текст), "ЧН=' '", "ЧН=");
Области.П010000102.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000102.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000103.Значение = Области.П010000203.Значение + Области.П010000303.Значение + Области.П010000403.Значение + Области.П010000503.Значение + Области.П010000603.Значение
+ Области.П010000703.Значение + Области.П010000803.Значение + Области.П010000903.Значение + Области.П010001003.Значение + Области.П010001103.Значение;
Если Области.П010000103.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000203.Текст + Области.П010000303.Текст + Области.П010000403.Текст + Области.П010000503.Текст + Области.П010000603.Текст
+ Области.П010000703.Текст + Области.П010000803.Текст + Области.П010000903.Текст + Области.П010001003.Текст + Области.П010001103.Текст), "ЧН=' '", "ЧН=");
Области.П010000103.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000103.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000104.Значение = Области.П010000204.Значение + Области.П010000304.Значение + Области.П010000404.Значение + Области.П010000504.Значение + Области.П010000604.Значение
+ Области.П010000704.Значение + Области.П010000804.Значение + Области.П010000904.Значение + Области.П010001004.Значение + Области.П010001104.Значение;
Если Области.П010000104.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000204.Текст + Области.П010000304.Текст + Области.П010000404.Текст + Области.П010000504.Текст + Области.П010000604.Текст
+ Области.П010000704.Текст + Области.П010000804.Текст + Области.П010000904.Текст + Области.П010001004.Текст + Области.П010001104.Текст), "ЧН=' '", "ЧН=");
Области.П010000104.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000104.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000101.Значение = Области.П010000102.Значение + Области.П010000103.Значение + Области.П010000104.Значение;
Если Области.П010000101.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000102.Текст + Области.П010000103.Текст + Области.П010000104.Текст), "ЧН=' '", "ЧН=");
Области.П010000101.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000101.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000201.Значение = Области.П010000202.Значение + Области.П010000203.Значение + Области.П010000204.Значение;
Если Области.П010000201.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000202.Текст + Области.П010000203.Текст + Области.П010000204.Текст), "ЧН=' '", "ЧН=");
Области.П010000201.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000201.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000301.Значение = Области.П010000302.Значение + Области.П010000303.Значение + Области.П010000304.Значение;
Если Области.П010000301.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000302.Текст + Области.П010000303.Текст + Области.П010000304.Текст), "ЧН=' '", "ЧН=");
Области.П010000301.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000301.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000401.Значение = Области.П010000402.Значение + Области.П010000403.Значение + Области.П010000404.Значение;
Если Области.П010000401.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000402.Текст + Области.П010000403.Текст + Области.П010000404.Текст), "ЧН=' '", "ЧН=");
Области.П010000401.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000401.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000501.Значение = Области.П010000502.Значение + Области.П010000503.Значение + Области.П010000504.Значение;
Если Области.П010000501.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000502.Текст + Области.П010000503.Текст + Области.П010000504.Текст), "ЧН=' '", "ЧН=");
Области.П010000501.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000501.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000601.Значение = Области.П010000602.Значение + Области.П010000603.Значение + Области.П010000604.Значение;
Если Области.П010000601.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000602.Текст + Области.П010000603.Текст + Области.П010000604.Текст), "ЧН=' '", "ЧН=");
Области.П010000601.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000601.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000701.Значение = Области.П010000702.Значение + Области.П010000703.Значение + Области.П010000704.Значение;
Если Области.П010000701.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000702.Текст + Области.П010000703.Текст + Области.П010000704.Текст), "ЧН=' '", "ЧН=");
Области.П010000701.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000701.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000801.Значение = Области.П010000802.Значение + Области.П010000803.Значение + Области.П010000804.Значение;
Если Области.П010000801.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000802.Текст + Области.П010000803.Текст + Области.П010000804.Текст), "ЧН=' '", "ЧН=");
Области.П010000801.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000801.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000901.Значение = Области.П010000902.Значение + Области.П010000903.Значение + Области.П010000904.Значение;
Если Области.П010000901.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000902.Текст + Области.П010000903.Текст + Области.П010000904.Текст), "ЧН=' '", "ЧН=");
Области.П010000901.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000901.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010001001.Значение = Области.П010001002.Значение + Области.П010001003.Значение + Области.П010001004.Значение;
Если Области.П010001001.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010001002.Текст + Области.П010001003.Текст + Области.П010001004.Текст), "ЧН=' '", "ЧН=");
Области.П010001001.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010001001.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010001101.Значение = Области.П010001102.Значение + Области.П010001103.Значение + Области.П010001104.Значение;
Если Области.П010001101.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010001102.Текст + Области.П010001103.Текст + Области.П010001104.Текст), "ЧН=' '", "ЧН=");
Области.П010001101.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010001101.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000105.Значение = Области.П010000205.Значение
+ Области.П010000305.Значение
+ Области.П010000405.Значение
+ Области.П010000505.Значение
+ Области.П010000605.Значение
+ Области.П010000705.Значение
+ Области.П010000805.Значение
+ Области.П010000905.Значение
+ Области.П010001005.Значение
+ Области.П010001105.Значение;
Если Области.П010000105.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000205.Текст
+ Области.П010000305.Текст
+ Области.П010000405.Текст
+ Области.П010000505.Текст
+ Области.П010000605.Текст
+ Области.П010000705.Текст
+ Области.П010000805.Текст
+ Области.П010000905.Текст
+ Области.П010001005.Текст
+ Области.П010001105.Текст), "ЧН=' '", "ЧН=");
Области.П010000105.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000105.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000106.Значение = Области.П010000206.Значение
+ Области.П010000306.Значение
+ Области.П010000406.Значение
+ Области.П010000506.Значение
+ Области.П010000606.Значение
+ Области.П010000706.Значение
+ Области.П010000806.Значение
+ Области.П010000906.Значение
+ Области.П010001006.Значение
+ Области.П010001106.Значение;
Если Области.П010000106.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000206.Текст
+ Области.П010000306.Текст
+ Области.П010000406.Текст
+ Области.П010000506.Текст
+ Области.П010000606.Текст
+ Области.П010000706.Текст
+ Области.П010000806.Текст
+ Области.П010000906.Текст
+ Области.П010001006.Текст
+ Области.П010001106.Текст), "ЧН=' '", "ЧН=");
Области.П010000106.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000106.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000107.Значение = Области.П010000207.Значение
+ Области.П010000307.Значение
+ Области.П010000407.Значение
+ Области.П010000507.Значение
+ Области.П010000607.Значение
+ Области.П010000707.Значение
+ Области.П010000807.Значение
+ Области.П010000907.Значение
+ Области.П010001007.Значение
+ Области.П010001107.Значение;
Если Области.П010000107.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000207.Текст
+ Области.П010000307.Текст
+ Области.П010000407.Текст
+ Области.П010000507.Текст
+ Области.П010000607.Текст
+ Области.П010000707.Текст
+ Области.П010000807.Текст
+ Области.П010000907.Текст
+ Области.П010001007.Текст
+ Области.П010001107.Текст), "ЧН=' '", "ЧН=");
Области.П010000107.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000107.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000108.Значение = Области.П010000208.Значение
+ Области.П010000308.Значение
+ Области.П010000408.Значение
+ Области.П010000508.Значение
+ Области.П010000608.Значение
+ Области.П010000708.Значение
+ Области.П010000808.Значение
+ Области.П010000908.Значение
+ Области.П010001008.Значение
+ Области.П010001108.Значение;
Если Области.П010000108.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000208.Текст
+ Области.П010000308.Текст
+ Области.П010000408.Текст
+ Области.П010000508.Текст
+ Области.П010000608.Текст
+ Области.П010000708.Текст
+ Области.П010000808.Текст
+ Области.П010000908.Текст
+ Области.П010001008.Текст
+ Области.П010001108.Текст), "ЧН=' '", "ЧН=");
Области.П010000108.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000108.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000109.Значение = Области.П010000209.Значение
+ Области.П010000309.Значение
+ Области.П010000409.Значение
+ Области.П010000509.Значение
+ Области.П010000609.Значение
+ Области.П010000709.Значение
+ Области.П010000809.Значение
+ Области.П010000909.Значение
+ Области.П010001009.Значение
+ Области.П010001109.Значение;
Если Области.П010000109.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000209.Текст
+ Области.П010000309.Текст
+ Области.П010000409.Текст
+ Области.П010000509.Текст
+ Области.П010000609.Текст
+ Области.П010000709.Текст
+ Области.П010000809.Текст
+ Области.П010000909.Текст
+ Области.П010001009.Текст
+ Области.П010001109.Текст), "ЧН=' '", "ЧН=");
Области.П010000109.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000109.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000110.Значение = Области.П010000210.Значение
+ Области.П010000310.Значение
+ Области.П010000410.Значение
+ Области.П010000510.Значение
+ Области.П010000610.Значение
+ Области.П010000710.Значение
+ Области.П010000810.Значение
+ Области.П010000910.Значение
+ Области.П010001010.Значение
+ Области.П010001110.Значение;
Если Области.П010000110.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000210.Текст
+ Области.П010000310.Текст
+ Области.П010000410.Текст
+ Области.П010000510.Текст
+ Области.П010000610.Текст
+ Области.П010000710.Текст
+ Области.П010000810.Текст
+ Области.П010000910.Текст
+ Области.П010001010.Текст
+ Области.П010001110.Текст), "ЧН=' '", "ЧН=");
Области.П010000110.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000110.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000111.Значение = Области.П010000211.Значение
+ Области.П010000311.Значение
+ Области.П010000411.Значение
+ Области.П010000511.Значение
+ Области.П010000611.Значение
+ Области.П010000711.Значение
+ Области.П010000811.Значение
+ Области.П010000911.Значение
+ Области.П010001011.Значение
+ Области.П010001111.Значение;
Если Области.П010000111.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000211.Текст
+ Области.П010000311.Текст
+ Области.П010000411.Текст
+ Области.П010000511.Текст
+ Области.П010000611.Текст
+ Области.П010000711.Текст
+ Области.П010000811.Текст
+ Области.П010000911.Текст
+ Области.П010001011.Текст
+ Области.П010001111.Текст), "ЧН=' '", "ЧН=");
Области.П010000111.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000111.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000107.Значение = Области.П010000108.Значение + Области.П010000109.Значение + Области.П010000110.Значение;
Если Области.П010000107.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000108.Текст + Области.П010000109.Текст + Области.П010000110.Текст), "ЧН=' '", "ЧН=");
Области.П010000107.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000107.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000207.Значение = Области.П010000208.Значение + Области.П010000209.Значение + Области.П010000210.Значение;
Если Области.П010000207.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000208.Текст + Области.П010000209.Текст + Области.П010000210.Текст), "ЧН=' '", "ЧН=");
Области.П010000207.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000207.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000307.Значение = Области.П010000308.Значение + Области.П010000309.Значение + Области.П010000310.Значение;
Если Области.П010000307.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000308.Текст + Области.П010000309.Текст + Области.П010000310.Текст), "ЧН=' '", "ЧН=");
Области.П010000307.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000307.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000407.Значение = Области.П010000408.Значение + Области.П010000409.Значение + Области.П010000410.Значение;
Если Области.П010000407.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000408.Текст + Области.П010000409.Текст + Области.П010000410.Текст), "ЧН=' '", "ЧН=");
Области.П010000407.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000407.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000507.Значение = Области.П010000508.Значение + Области.П010000509.Значение + Области.П010000510.Значение;
Если Области.П010000507.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000508.Текст + Области.П010000509.Текст + Области.П010000510.Текст), "ЧН=' '", "ЧН=");
Области.П010000507.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000507.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000607.Значение = Области.П010000608.Значение + Области.П010000609.Значение + Области.П010000610.Значение;
Если Области.П010000607.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000608.Текст + Области.П010000609.Текст + Области.П010000610.Текст), "ЧН=' '", "ЧН=");
Области.П010000607.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000607.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000707.Значение = Области.П010000708.Значение + Области.П010000709.Значение + Области.П010000710.Значение;
Если Области.П010000707.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000708.Текст + Области.П010000709.Текст + Области.П010000710.Текст), "ЧН=' '", "ЧН=");
Области.П010000707.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000707.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000807.Значение = Области.П010000808.Значение + Области.П010000809.Значение + Области.П010000810.Значение;
Если Области.П010000807.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000808.Текст + Области.П010000809.Текст + Области.П010000810.Текст), "ЧН=' '", "ЧН=");
Области.П010000807.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000807.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010000907.Значение = Области.П010000908.Значение + Области.П010000909.Значение + Области.П010000910.Значение;
Если Области.П010000907.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010000908.Текст + Области.П010000909.Текст + Области.П010000910.Текст), "ЧН=' '", "ЧН=");
Области.П010000907.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010000907.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010001007.Значение = Области.П010001008.Значение + Области.П010001009.Значение + Области.П010001010.Значение;
Если Области.П010001007.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010001008.Текст + Области.П010001009.Текст + Области.П010001010.Текст), "ЧН=' '", "ЧН=");
Области.П010001007.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010001007.Формат, ФорматПредставленияНуля);
КонецЕсли;
Области.П010001107.Значение = Области.П010001108.Значение + Области.П010001109.Значение + Области.П010001110.Значение;
Если Области.П010001107.Значение = 0 Тогда
ФорматПредставленияНуля = ?(ПустаяСтрока(Области.П010001108.Текст + Области.П010001109.Текст + Области.П010001110.Текст), "ЧН=' '", "ЧН=");
Области.П010001107.Формат = РегламентированнаяОтчетностьКлиентСервер.ЗаменитьПредставлениеНуляВСтрокеФормата(Области.П010001107.Формат, ФорматПредставленияНуля);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьОтчет(Команда)
СохранитьНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиенте(Автосохранение = Ложь, ВыполняемоеОповещение = Неопределено) Экспорт
Вариант = СтруктураРеквизитовФормы.ВидДокумента * НомерКорректировки;
Если НЕ РегламентированнаяОтчетностьКлиент.ПриЗаписиРегламентированногоОтчетаНаКлиенте(ЭтаФорма, , Автосохранение, Вариант) Тогда
Возврат;
КонецЕсли;
ПодобныйОтчетСуществует = Ложь;
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = Ложь;
ПоказателиОтчета = Новый Структура();
#Если ВебКлиент Тогда
ЗаполнитьПоказателиОтчетаНаСервере(ПоказателиОтчета);
#Иначе
ЗаполнитьПоказателиОтчетаНаКлиенте(ПоказателиОтчета);
#КонецЕсли
РезультатСохранения = ПередСохранением(, ПодобныйОтчетСуществует, Вариант, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, Автосохранение, ПоказателиОтчета);
ВидДокументаНомерКорректировкиИзменен = Неопределено;
Если ПодобныйОтчетСуществует И Автосохранение Тогда
Возврат;
КонецЕсли;
НуженВопросПередСохранением = (ПодобныйОтчетСуществует ИЛИ ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки);
Если НуженВопросПередСохранением Тогда
СохранитьНаКлиентеСВопросом(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПодобныйОтчетСуществует, ПоказателиОтчета);
Иначе
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиентеСВопросом(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПодобныйОтчетСуществует, ПоказателиОтчета)
Если ПодобныйОтчетСуществует Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, "Сохранить");
Кнопки.Добавить(КодВозвратаДиалога.Нет, "Отмена");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Отчет с видом %1 уже существует.
|Сохранить отчет с таким же видом?'"), ?(Вариант = 0, """Первичный""", """Корректирующий/" + Вариант + """"));
ДополнительныеПараметры = Новый Структура("Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПоказателиОтчета", Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПоказателиОтчета);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСохранитьОтчетСТакимЖеВидомЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , Кнопки.Получить(1).Значение);
Иначе
СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПоказателиОтчета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросСохранитьОтчетСТакимЖеВидомЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Автосохранение = ДополнительныеПараметры.Автосохранение;
Вариант = ДополнительныеПараметры.Вариант;
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = ДополнительныеПараметры.ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки;
ПоказателиОтчета = ДополнительныеПараметры.ПоказателиОтчета;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПоказателиОтчета);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНаКлиентеСВопросомПродолжение(Автосохранение, Вариант, ВыполняемоеОповещение, ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки, ПоказателиОтчета)
Если ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки Тогда
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ВидОтчета", Вариант);
ФормаВопроса = РегламентированнаяОтчетностьКлиент.ПолучитьОбщуюФормуПоИмени("ВопросПриИзмененииВидаДокументаНомераКорректировки", ПараметрыФормы);
ДополнительныеПараметры = Новый Структура("Автосохранение, Вариант, ВыполняемоеОповещение, ПоказателиОтчета", Автосохранение, Вариант, ВыполняемоеОповещение, ПоказателиОтчета);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросПриИзмененииВидаДокументаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ФормаВопроса.ОписаниеОповещенияОЗакрытии = ОписаниеОповещения;
ФормаВопроса.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаВопроса.Открыть();
Иначе
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Сохраняется %1...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Записать);
РезультатСохранения = Сохранить(Автосохранение, , Вариант, Ложь, ПоказателиОтчета);
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросПриИзмененииВидаДокументаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Автосохранение = ДополнительныеПараметры.Автосохранение;
Вариант = ДополнительныеПараметры.Вариант;
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
ПоказателиОтчета = ДополнительныеПараметры.ПоказателиОтчета;
КодВозврата = Результат;
Если КодВозврата = КодВозвратаДиалога.Да
ИЛИ КодВозврата = КодВозвратаДиалога.Нет Тогда
ВидДокументаНомерКорректировкиИзменен = ?(КодВозврата = КодВозвратаДиалога.Да, Истина, Ложь);
Иначе
Возврат;
КонецЕсли;
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Сохраняется %1...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Записать);
РезультатСохранения = Сохранить(Автосохранение, , Вариант, ВидДокументаНомерКорректировкиИзменен, ПоказателиОтчета);
ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеСохраненияНаКлиенте(ВыполняемоеОповещение, РезультатСохранения)
КлючУникальности = СтруктураРеквизитовФормы.мСохраненныйДок;
Если РезультатСохранения Тогда
РегламентированнаяОтчетностьКлиент.ПослеЗаписиРегламентированногоОтчета(ЭтаФорма);
Если ВыполняемоеОповещение <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПередСохранением(КодИФНС = "не применимо", ПодобныйОтчетСуществует="", Вариант="", ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки="", Автосохранение="", ПоказателиОтчета="")
Если РегламентированнаяОтчетность.БылиИзмененыКлючевыеРеквизитыОтчета(ЭтаФорма, КодИФНС)
И РегламентированнаяОтчетность.СуществуетДокументСАналогичнымиРеквизитами(ЭтаФорма, КодИФНС) Тогда
ПодобныйОтчетСуществует = Истина;
КонецЕсли;
СтруктураРеквизитовФормы.мЗаписываетсяНовыйДокумент = (СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено ИЛИ СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено);
Если Вариант <> Неопределено И ((СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено) ИЛИ (СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено) ИЛИ (Вариант <> СтруктураРеквизитовФормы.мВариант)) Тогда
Если СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено ИЛИ СтруктураРеквизитовФормы.мСкопированаФорма <> Неопределено Тогда
ИначеЕсли Вариант <> СтруктураРеквизитовФормы.мВариант Тогда
ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки = Истина;
КонецЕсли;
КонецЕсли;
Если ПодобныйОтчетСуществует
ИЛИ ОткрытьФормуВопросаПриИзмененииВидаДокументаНомераКорректировки Тогда
Возврат Ложь;
КонецЕсли;
Возврат Сохранить(Автосохранение, КодИФНС, Вариант, , ПоказателиОтчета);
КонецФункции
&НаСервере
Функция Сохранить(Автосохранение = Ложь, КодИФНС = "не применимо", Вариант = Неопределено, ВидДокументаНомерКорректировкиИзменен = Неопределено, ПоказателиОтчета = Неопределено) Экспорт
ДанныеДляРазблокирования = Неопределено;
Если НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
Если НЕ СтруктураРеквизитовФормы.мБезОткрытияФормы Тогда
ДанныеДляРазблокирования = Новый Структура("Ключ,ИдФормы",
СтруктураРеквизитовФормы.мСохраненныйДок, ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.ПолучитьОбъект();
КонецЕсли;
Если НЕ РегламентированнаяОтчетность.ПриЗаписиРегламентированногоОтчетаНаСервере(ЭтаФорма, КодИФНС, Автосохранение, Вариант, ВидДокументаНомерКорректировкиИзменен, СтруктураРеквизитовФормы.мСохраненныйДок) Тогда
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Возврат Ложь;
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок.ФорматВыгрузки = "Автоматически";
СтруктураРеквизитовФормы.мСохраненныйДок.ИсточникОтчета = Метаданные.Отчеты[ИмяОтчета(ЭтаФорма.ИмяФормы)].Имя;
СтруктураРеквизитовФормы.мСохраненныйДок.НаименованиеОтчета = Метаданные.Отчеты[ИмяОтчета(ЭтаФорма.ИмяФормы)].ОсновнаяФорма.Синоним;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаНачала = СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания = СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета;
СтруктураРеквизитовФормы.мСохраненныйДок.Периодичность = СтруктураРеквизитовФормы.мПериодичность;
СтруктураРеквизитовФормы.мСохраненныйДок.ВыбраннаяФорма = СтруктураРеквизитовФормы.мВыбраннаяФорма;
СтруктураРеквизитовФормы.мСохраненныйДок.Организация = СтруктураРеквизитовФормы.Организация;
СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи = ДатаПодписи;
СтруктураРеквизитовФормы.мСохраненныйДок.ЕдиницаИзмерения = Неопределено;
СтруктураРеквизитовФормы.мСохраненныйДок.ТочностьЕдиницыИзмерения = СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения;
СтруктураРеквизитовФормы.мСохраненныйДок.ВидОтчетности = Перечисления.ВидыОтчетности.РегламентированнаяОтчетность;
СтруктураРеквизитовФормы.мСохраненныйДок.Вид = Вариант;
СтруктураРеквизитовФормы.мСохраненныйДок.ПредставлениеВида = РегламентированнаяОтчетность.ПредставлениеВидаДокумента(СтруктураРеквизитовФормы.мСохраненныйДок.Вид);
СтруктураРеквизитовФормы.мСохраненныйДок.Комментарий = Комментарий;
СтруктураРеквизитовФормы.мВариант = Вариант;
СписокСохранения = Новый Структура();
ДанныеВариантовАвтоЗаполнения = Новый Структура;
Для Каждого ЭлементСтруктуры Из мСтруктураВариантыЗаполнения Цикл
МассивТаблЗнач = Новый Массив;
ДанныеВариантовАвтоЗаполнения.Вставить(ЭлементСтруктуры.Ключ, МассивТаблЗнач);
Для Каждого ЭлементМассива Из ЭтаФорма["ТаблицаВариантыЗаполнения" + ЭлементСтруктуры.Ключ] Цикл
МассивТаблЗнач.Добавить(ДанныеФормыВЗначение(ЭлементМассива.ТаблицаВариантовЗаполнения, Тип("ТаблицаЗначений")));
КонецЦикла;
КонецЦикла;
СписокСохранения.Вставить("ПоказателиОтчета", ПоказателиОтчета);
СписокСохранения.Вставить("ДанныеМногострочныхРазделов", Неопределено);
СписокСохранения.Вставить("ДанныеВариантовАвтоЗаполнения", Неопределено);
СписокСохранения.Вставить("ВерсияФормы", СтруктураРеквизитовФормы.мВерсияФормы);
СписокСохранения.Вставить("ИсключитьДанныеОбособленныхПодразделений", ИсключитьДанныеОбособленныхПодразделений);
СписокСохранения.Вставить("ОбособленноеПодразделение", ОбособленноеПодразделение);
СписокСохранения.Вставить("КодПодразделенияФСГС_8_14", ПоказателиОтчета.ПолеТабличногоДокументаФормаОтчета.ОргКодОКПО);
ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения);
СтруктураРеквизитовФормы.мСохраненныйДок.ДанныеОтчета = ХранилищеДанных;
РегламентированнаяОтчетность.ПередЗаписьюНаСервере(ЭтотОбъект,
СтруктураРеквизитовФормы.мСохраненныйДок, Новый Структура);
Попытка
СтруктураРеквизитовФормы.мСохраненныйДок.Записать();
РегламентированнаяОтчетность.СохранитьСтатусОтправкиРеглОтчета(ЭтаФорма);
Исключение
Если НЕ Автосохранение Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1'"), РегламентированнаяОтчетностьКлиентСервер.СформироватьТекстСообщения(ОписаниеОшибки()));
Сообщение.Сообщить();
КонецЕсли;
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Возврат Ложь;
КонецПопытки;
РегламентированнаяОтчетность.ПослеЗаписиНаСервере(ЭтотОбъект,
СтруктураРеквизитовФормы.мСохраненныйДок, Новый Структура);
Модифицированность = Ложь;
СтруктураРеквизитовФормы.мСохраненныйДок = СтруктураРеквизитовФормы.мСохраненныйДок.Ссылка;
Если НЕ СтруктураРеквизитовФормы.мБезОткрытияФормы
И НЕ СтруктураРеквизитовФормы.мСохраненныйДок = Неопределено Тогда
ЗаблокироватьДанныеДляРедактирования(СтруктураРеквизитовФормы.мСохраненныйДок, , ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
Если ДанныеДляРазблокирования <> Неопределено Тогда
РазблокироватьДанныеДляРедактирования(ДанныеДляРазблокирования.Ключ, ДанныеДляРазблокирования.ИдФормы);
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура ЗаполнитьПоказателиОтчетаНаСервере(ПоказателиОтчета)
РегламентированнаяОтчетностьКлиентСервер.ЗаполнитьПоказателиОтчета(ЭтаФорма, ПоказателиОтчета);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоказателиОтчетаНаКлиенте(ПоказателиОтчета)
РегламентированнаяОтчетностьКлиентСервер.ЗаполнитьПоказателиОтчета(ЭтаФорма, ПоказателиОтчета);
КонецПроцедуры
&НаКлиенте
Функция СобратьДанныеТекущегоТаблПоляНаКлиенте(ИмяТабличногоПоля) Экспорт
Возврат РегламентированнаяОтчетностьКлиентСервер.СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);
КонецФункции
&НаСервере
Функция СобратьДанныеТекущегоТаблПоляНаСервере(ИмяТабличногоПоля) Экспорт
Возврат РегламентированнаяОтчетностьКлиентСервер.СобратьДанныеТекущегоТаблПоля(ЭтаФорма, ИмяТабличногоПоля);
КонецФункции
&НаКлиенте
Процедура АктивизироватьЯчейку(Ячейка) Экспорт
ИмяПоляТабличногоДокумента = "ПолеТабличногоДокументаФормаОтчета";
НайденнаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Области.Найти(Ячейка.ИмяЯчейки);
Если НЕ НайденнаяОбласть = Неопределено Тогда
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = НайденнаяОбласть;
ИначеЕсли Ячейка.СтрокаПП <> Неопределено И ЗначениеЗаполнено(Ячейка.СтрокаПП) Тогда
НайденнаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Области.Найти(Ячейка.ИмяЯчейки + Ячейка.СтрокаПП);
Если НЕ НайденнаяОбласть = Неопределено Тогда
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = НайденнаяОбласть;
Иначе
НайденнаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Области.Найти(Ячейка.ИмяЯчейки + "_" + Ячейка.СтрокаПП);
Если НЕ НайденнаяОбласть = Неопределено Тогда
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = НайденнаяОбласть;
КонецЕсли;
КонецЕсли;
Иначе
НайденнаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Области.Найти(Ячейка.ИмяЯчейки + "1");
Если НЕ НайденнаяОбласть = Неопределено Тогда
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = НайденнаяОбласть;
Иначе
НайденнаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Области.Найти(Ячейка.ИмяЯчейки + "_1");
Если НЕ НайденнаяОбласть = Неопределено Тогда
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = НайденнаяОбласть;
Иначе
Элементы[ИмяПоляТабличногоДокумента].ТекущаяОбласть = ЭтаФорма[ИмяПоляТабличногоДокумента].Область(Ячейка.ИмяЯчейки);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьБланк(Команда)
Отказ = Ложь;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Команда", Команда);
ОписаниеОповещения = Новый ОписаниеОповещения("ПоказатьБланкЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередПечатьюРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьБланкЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Команда = ДополнительныеПараметры.Команда;
Если Команда <> Неопределено Тогда
Печать(Команда.Имя);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Печать(ВидПечати, НеИзФормыОтчета = Ложь) Экспорт
Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1. Формируется печатная форма...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Печать);
Если НЕ ПечатьНаСервере(ВидПечати) Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ОткрытьФормуПредварительногоПросмотра(ЭтаФорма, ВидПечати, Неопределено, СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
КонецПроцедуры
&НаСервере
Функция ПечатьНаСервере(ВидПечати)
Если НЕ РегламентированнаяОтчетность.ПринтерДоступен() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Перед формированием печатных форм необходимо определить в системе принтер и задать его в качестве используемого по умолчанию!'");
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
СтруктураРеквизитовФормы.мПечатныеФормы.Очистить();
ОбластиСтроки = Новый Структура;
Для Каждого Обл Из ПолеТабличногоДокументаФормаОтчета.Области Цикл
Если Обл.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки
И (Обл.Имя <> "ПолеНомерКорректировки" И Обл.Имя <> "ШапкаОбособленныеПодразделения") Тогда
ОбластиСтроки.Вставить(Обл.Имя, ПолеТабличногоДокументаФормаОтчета.ПолучитьОбласть(Обл.Имя));
КонецЕсли;
КонецЦикла;
Для Каждого Обл Из ОбластиСтроки Цикл
ПечатнаяФорма = Новый ТабличныйДокумент();
ПечатнаяФорма.ОтображатьЗаголовки = Ложь;
ПечатнаяФорма.ОтображатьСетку = Ложь;
ПечатнаяФорма.ЧерноБелыйПросмотр = Истина;
ПечатнаяФорма.ЧерноБелаяПечать = Истина;
ПечатнаяФорма.Автомасштаб = Истина;
ПечатнаяФорма.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ПечатнаяФорма.Вывести(Обл.Значение);
СтруктураРеквизитовФормы.мПечатныеФормы.Добавить(ПечатнаяФорма, "Форма П-4");
КонецЦикла;
РегламентированнаяОтчетность.УдалитьНомерКорректировки(СтруктураРеквизитовФормы.мПечатныеФормы[0].Значение);
РегламентированнаяОтчетностьКлиентСервер.ПроставлениеНомеровЛистов(ЭтаФорма, , СтруктураРеквизитовФормы.СписокПечатаемыхЛистов);
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередЗагрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Выгрузить(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ЗагрузитьИзФайлаОтчет();
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаОтчет() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаОтчетЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
СохранитьНаКлиенте(,ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаОтчетЗавершение(Результат, ДополнительныеПараметры) Экспорт
РегламентированнаяОтчетностьЗагрузкаКлиент.ЗагрузитьИзФайлаОтчет(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Функция ЗагрузкаОтчетаИзФайла(ДанныеДляЗагрузки) Экспорт
Если Модифицированность Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон(НСтр("ru='Отчет ""%1"" не сохранен.'"), ЭтотОбъект.Заголовок);
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Если НЕ ЗагрузкаОтчетаИзФайлаНаСервере(ДанныеДляЗагрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция ЗагрузкаОтчетаИзФайлаНаСервере(ДанныеДляЗагрузки)
ПараметрыОтчета = СформироватьСтруктуруПараметров();
ДеревоДляЗагрузки = РегламентированнаяОтчетность.ПолучитьДеревоВыгрузки(ЭтаФорма, "СхемаВыгрузкиXML2018Кв1");
Если НЕ РегламентированнаяОтчетностьЗагрузка.ЗагрузкаОтчетаИзФайла(
ЭтотОбъект, ПараметрыОтчета, ДанныеДляЗагрузки, ДеревоДляЗагрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ВыгрузитьЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьИзФормыПослеСохраненияЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
СохранитьНаКлиенте(, ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьИзФормыПослеСохраненияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыВыгрузки = Неопределено;
ТекстВыгрузки = Неопределено;
Если НЕ УниверсальнаяВыгрузкаXMLПроверкаВозможностиВыгрузкиНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Тогда
ТекстВопроса = НСтр("ru='В ходе выгрузки были найдены ошибки.'");
КнопкиВопроса = Новый СписокЗначений;
КнопкиВопроса.Добавить(КодВозвратаДиалога.Да, "Продолжить выгрузку");
КнопкиВопроса.Добавить(КодВозвратаДиалога.Нет, "Показать ошибки");
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьИзФормыЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, КнопкиВопроса, , КодВозвратаДиалога.Нет);
Иначе
ВыгрузитьОтчет();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьИзФормыЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ВыгрузитьОтчет(Истина);
Иначе
СпДокОсн = Новый СписокЗначений;
СпДокОсн.Добавить(СтруктураРеквизитовФормы.мСохраненныйДок);
ОшибкиОтчета = Новый Массив;
РегламентированнаяОтчетностьКлиент.ПроверитьРегламентированныеОтчеты(СпДокОсн, ОшибкиОтчета);
РегламентированнаяОтчетностьКлиент.ОткрытьФормуНавигацииПоОшибкамВыгрузки(ОшибкиОтчета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузку(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ПроверитьВыгрузкуОтчета();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуОтчета()
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВыгрузкуОтчетаЗавершение", ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(СтруктураРеквизитовФормы.Организация) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Организация не выбрана! Выгрузка невозможна.'");
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Если Модифицированность Тогда
СохранитьНаКлиенте(,ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыгрузкуОтчетаЗавершение(Результат, ДополнительныеПараметры) Экспорт
ФормаВыгрузкиРеглОтчета = ПолучитьФорму("Документ.ВыгрузкаРегламентированныхОтчетов.Форма.ФормаДокумента", , ЭтаФорма);
СпДокОсн = Новый СписокЗначений;
СпДокОсн.Добавить(СтруктураРеквизитовФормы.мСохраненныйДок);
ФормаВыгрузкиРеглОтчета.Проверить(СпДокОсн);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтчет(ВыгружатьСОшибками = Ложь) Экспорт
ДополнительныеПараметры = Новый Структура("ВыгружатьСОшибками", ВыгружатьСОшибками);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыгрузитьОтчетЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Если НЕ ЗначениеЗаполнено(СтруктураРеквизитовФормы.Организация) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru='Организация не выбрана! Выгрузка невозможна.'");
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Если Модифицированность Тогда
СохранитьНаКлиенте(, ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтчетЗавершение(Результат, ДополнительныеПараметры) Экспорт
ФормаВыгрузкиРеглОтчета = ПолучитьФорму("Документ.ВыгрузкаРегламентированныхОтчетов.Форма.ФормаДокумента", , ЭтаФорма);
СпДокОсн = Новый СписокЗначений;
СпДокОсн.Добавить(СтруктураРеквизитовФормы.мСохраненныйДок);
ФормаВыгрузкиРеглОтчета.СформироватьИЗаписать(СпДокОсн,,,,,,,,,ДополнительныеПараметры.ВыгружатьСОшибками);
КонецПроцедуры
&НаСервере
Функция ПроверитьПоказатели() Экспорт
ДеревоВыгрузки = РегламентированнаяОтчетность.ПолучитьДеревоВыгрузки(ЭтаФорма, "СхемаВыгрузкиXML2018Кв1");
ПараметрыВыгрузки = СформироватьСтруктуруПараметров();
Если НЕ ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки);
Если НЕ РегламентированнаяОтчетность.ПроверитьДанные(ЭтаФорма, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция ТекущийФорматВыгрузки(Организация)
Возврат РегламентированнаяОтчетность.ФорматВыгрузкиСтатистическойОтчетностиВЭлектронномВиде(Организация);
КонецФункции
&НаКлиенте
Функция УниверсальнаяВыгрузка(ТекстВыгрузки = Неопределено, ПроверятьБлокировки = Истина, ИмяФайлаВыгрузки = "", ВыгружатьСОшибками = Ложь) Экспорт
Перем ПараметрыВыгрузки;
Если ТекущийФорматВыгрузки(СтруктураРеквизитовФормы.Организация) = Неопределено Тогда
РегламентированнаяОтчетностьКлиент.ПоказатьФормуНастроекФорматаВыгрузкиСтатистическойОтчетностиВЭлектронномВиде(
СтруктураРеквизитовФормы.Организация, Ложь, Истина);
Возврат "НеВыбранФормат";
КонецЕсли;
Если Модифицированность Тогда
Если СтрНайти(Заголовок, СтруктураРеквизитовФормы.СтрПериодОтчета) = 0 Тогда
ТекстЗаголовка = Заголовок + " за " + СтруктураРеквизитовФормы.СтрПериодОтчета;
Иначе
ТекстЗаголовка = Заголовок;
КонецЕсли;
ОргСтр = " (" + СтруктураРеквизитовФормы.НаимОрганизации + ")";
Если СтрНайти(Заголовок, ОргСтр) = 0 Тогда
ТекстЗаголовка = ТекстЗаголовка + ОргСтр;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Отчет """ + ТекстЗаголовка + """ не сохранен.";
Сообщение.Сообщить();
Возврат Ложь;
КонецЕсли;
Возврат УниверсальнаяВыгрузкаНаСервере(ВыгружатьСОшибками, ТекстВыгрузки, ПараметрыВыгрузки, ИмяФайлаВыгрузки);
КонецФункции
&НаСервере
Функция УниверсальнаяВыгрузкаНаСервере(ВыгружатьСОшибками, ТекстВыгрузки, ПараметрыВыгрузки, ИмяФайлаВыгрузки)
Если НЕ ВыгружатьСОшибками И НЕ УниверсальнаяВыгрузкаXMLПроверкаВозможностиВыгрузкиНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
Если НЕ УниверсальнаяВыгрузкаXMLПроверкаДанныхНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
ИмяФайлаВыгрузки = ПараметрыВыгрузки.ИмяФайла;
Возврат Истина;
КонецФункции
&НаСервере
Функция УниверсальнаяВыгрузкаXMLПроверкаВозможностиВыгрузкиНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Экспорт
ПараметрыВыгрузки = СформироватьСтруктуруПараметров();
ДеревоВыгрузки = РегламентированнаяОтчетность.ПолучитьДеревоВыгрузки(ЭтаФорма, "СхемаВыгрузкиXML2018Кв1");
Если НЕ ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция УниверсальнаяВыгрузкаXMLПроверкаДанныхНаСервере(ТекстВыгрузки, ПараметрыВыгрузки) Экспорт
Если ПараметрыВыгрузки = Неопределено Тогда
ПараметрыВыгрузки = СформироватьСтруктуруПараметров();
КонецЕсли;
ДеревоВыгрузки = РегламентированнаяОтчетность.ПолучитьДеревоВыгрузки(ЭтаФорма, "СхемаВыгрузкиXML2018Кв1");
ИмяАтрибутов = ?(СтруктураРеквизитовФормы.мПериодичность = Перечисления.Периодичность.Месяц, "АтрибВыгрузкиXML2018Кв1_месяц", "АтрибВыгрузкиXML2018Кв1_квартал");
ИмяШаблона = ?(СтруктураРеквизитовФормы.мПериодичность = Перечисления.Периодичность.Месяц, "ШаблонРосстата2018Кв1_месяц", "ШаблонРосстата2018Кв1_квартал");
РегламентированнаяОтчетность.ИзменитьВерсиюФорматаСПроверкойСовместимостиШаблонов(ЭтотОбъект, ИмяАтрибутов, ИмяШаблона, ПараметрыВыгрузки);
ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки);
Если НЕ РегламентированнаяОтчетность.ПроверитьДанные(ЭтаФорма, ДеревоВыгрузки) Тогда
КоллекцияСписковВыбора = "";
Возврат Ложь;
КонецЕсли;
ТекстВыгрузки = РегламентированнаяОтчетность.ВыгрузитьДеревоВXML(ДеревоВыгрузки, ПараметрыВыгрузки);
КоллекцияСписковВыбора = "";
Возврат Истина;
КонецФункции
&НаСервере
Функция ПроверитьВозможностьВыгрузки(ПараметрыВыгрузки, ДеревоВыгрузки)
СтатусПроверки = Истина;
ИмяПоляТаблДокумента = "ПолеТабличногоДокументаФормаОтчета";
Если ПустаяСтрока(ПараметрыВыгрузки.ОКПО) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задан код ОКПО организации!", ИмяПоляТаблДокумента, "ОргКодОКПО");
СтатусПроверки = Ложь;
КонецЕсли;
Если ПустаяСтрока(ПараметрыВыгрузки.ОргНазв) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не задано наименование организации!", ИмяПоляТаблДокумента, "ОргНазв");
СтатусПроверки = Ложь;
КонецЕсли;
Если ПустаяСтрока(ПараметрыВыгрузки.ОргИсполнитель) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не указаны Ф.И.О. должностного лица, ответственного за предоставление статистической информации!", ИмяПоляТаблДокумента, "ОргИсполнитель");
СтатусПроверки = Ложь;
КонецЕсли;
Если ПустаяСтрока(ПараметрыВыгрузки.ОргДолжностьИсп) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не указана должность лица, ответственного за предоставление статистической информации!", ИмяПоляТаблДокумента, "ОргДолжностьИсп");
СтатусПроверки = Ложь;
КонецЕсли;
Если ПустаяСтрока(ПараметрыВыгрузки.ОргТелефонИсп) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не указан телефон должностного лица, ответственного за предоставление статистической информации!", ИмяПоляТаблДокумента, "ОргТелефонИсп");
СтатусПроверки = Ложь;
КонецЕсли;
Если ПустаяСтрока(ПараметрыВыгрузки.ОргЭлектроннаяПочта) Тогда
РегламентированнаяОтчетность.СообщитьВТаблицуСообщений(ЭтаФорма, "Не указан адрес электронной почты!", ИмяПоляТаблДокумента, "ОргАдресЭлектроннойПочты");
СтатусПроверки = Ложь;
КонецЕсли;
Возврат СтатусПроверки;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанными(ДеревоВыгрузки, ПараметрыВыгрузки) Экспорт
РегламентированнаяОтчетность.ОбработатьУсловныеЭлементы(ЭтаФорма, ПараметрыВыгрузки, ДеревоВыгрузки);
ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, ДеревоВыгрузки);
РегламентированнаяОтчетность.ОтсечьНезаполненныеНеобязательныеУзлыСтатистики(ДеревоВыгрузки);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, Узел, НомерСтроки = Неопределено)
СтрокиУзла = Новый Массив;
Для Каждого Стр Из Узел.Строки Цикл
СтрокиУзла.Добавить(Стр);
КонецЦикла;
Для Каждого Стр из СтрокиУзла Цикл
Если ПустаяСтрока(Стр.ЗначениеПоУмолчанию) Тогда
Если НЕ ПустаяСтрока(Стр.Ключ) Тогда
ПолныйКодПоказателя = Стр.Ключ + ?(ЗначениеЗаполнено(НомерСтроки), "_" + Формат(НомерСтроки, "ЧГ="), "");
ЗначениеПоказателя = Неопределено;
Если ПараметрыВыгрузки.Свойство(ПолныйКодПоказателя, ЗначениеПоказателя) Тогда
ФорматПредставленияНуля = Неопределено;
Если ПараметрыВыгрузки.Свойство("ЧН" + ПолныйКодПоказателя, ФорматПредставленияНуля) Тогда
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, ЗначениеПоказателя, ФорматПредставленияНуля);
Иначе
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, ЗначениеПоказателя);
КонецЕсли;
Иначе
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, "");
КонецЕсли;
Иначе
Стр.Значение = "";
КонецЕсли;
ИначеЕсли Лев(Стр.ЗначениеПоУмолчанию, 1) = "&" Тогда
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, ПараметрыВыгрузки[Сред(Стр.ЗначениеПоУмолчанию, 2)]);
Иначе
Стр.Значение = Стр.ЗначениеПоУмолчанию;
Если НЕ ПустаяСтрока(Стр.Ключ) Тогда
ПолныйКодПоказателя = Стр.Ключ + ?(ЗначениеЗаполнено(НомерСтроки), "_" + Формат(НомерСтроки, "ЧГ="), "");
ЗначениеПоказателя = Неопределено;
Если ПараметрыВыгрузки.Свойство(ПолныйКодПоказателя, ЗначениеПоказателя) Тогда
ФорматПредставленияНуля = Неопределено;
Если ПараметрыВыгрузки.Свойство("ЧН" + ПолныйКодПоказателя, ФорматПредставленияНуля) Тогда
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, ЗначениеПоказателя, ФорматПредставленияНуля);
Иначе
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, ЗначениеПоказателя);
КонецЕсли;
Иначе
РегламентированнаяОтчетность.ВывестиПоказательСтатистикиВXML(Стр, "");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Стр.Тип = "С" ИЛИ Стр.Тип = "C" Тогда
ЗаполнитьДаннымиУзел(ПараметрыВыгрузки, Стр, НомерСтроки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция СформироватьИмяФайла(ПараметрыВыгрузки, ДопАтрибуты)
Перем ПолученноеЗначение;
КодОКУД = ДопАтрибуты.OKUD;
КодФормы = ДопАтрибуты.idf;
Периодичность = ДопАтрибуты.idp;
КодОКПО = ПараметрыВыгрузки.ОКПО;
РасчетныйГод = ПараметрыВыгрузки.РасчПериод;
ОтчетныйПериод = ПараметрыВыгрузки.ОтчПериод;
ПараметрыВыгрузки.Свойство("ОКФС", ПолученноеЗначение);
КодОКФС = ПолученноеЗначение;
ПараметрыВыгрузки.Свойство("ОКВЭД", ПолученноеЗначение);
КодОКВЭД = СтрЗаменить(ПолученноеЗначение, ".", "-");
КодыИФ = Новый Структура;
КодыИФ.Вставить("Документ", СтруктураРеквизитовФормы.мСохраненныйДок);
КодыИФ.Вставить("КодФормы", КодФормы);
КодыИФ.Вставить("Периодичность", Периодичность);
КодыИФ.Вставить("ОтчетныйПериод", ОтчетныйПериод);
КодыИФ.Вставить("ДатаВыгрузки", "");
РегламентированнаяОтчетность.КодыДляИмениФайлаВФорматеВыгрузки(КодыИФ);
Если ПустаяСтрока(КодыИФ.ДатаВыгрузки) Тогда
ИмяФайлаXML = КодОКУД + "_"
+ КодФормы + "_"
+ Периодичность + "_"
+ КодОКПО + "_"
+ РасчетныйГод + "_"
+ ОтчетныйПериод
+ ?(ПустаяСтрока(КодОКФС), "", "_" + КодОКФС)
+ ?(ПустаяСтрока(КодОКВЭД), "", "_" + КодОКВЭД) + ".xml";
Иначе
ИмяФайлаXML = КодОКУД + "_"
+ КодыИФ.КодФормы + "_"
+ КодыИФ.Периодичность + "_"
+ КодОКПО + "_"
+ РасчетныйГод + "_"
+ КодыИФ.ОтчетныйПериод + "__"
+ КодыИФ.ДатаВыгрузки + ".xml";
КонецЕсли;
Возврат ИмяФайлаXML;
КонецФункции
&НаСервере
Функция СформироватьСтруктуруПараметров() Экспорт
Перем ПолученноеЗначение;
РегламентированнаяОтчетность.СформироватьСтруктуруПоказателей(ЭтаФорма);
ТабДокумент = мДанныеОтчета.ПолеТабличногоДокументаФормаОтчета;
ИмяАтрибутов = ?(СтруктураРеквизитовФормы.мПериодичность = Перечисления.Периодичность.Месяц, "АтрибВыгрузкиXML2018Кв1_месяц", "АтрибВыгрузкиXML2018Кв1_квартал");
ДопАтрибуты = РегламентированнаяОтчетность.СформироватьСтруктуруДопАтрибутов(ЭтаФорма.ИмяФормы, ИмяАтрибутов);
СтрокаСведений = "ФИОРук, ОКВЭД2, ОКФС";
СведенияОбОрганизации = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
СтруктураРеквизитовФормы.Организация, СтруктураРеквизитовФормы.мСохраненныйДок.ДатаПодписи, СтрокаСведений);
ПараметрыВыгрузки = Новый Структура;
ДопАтрибуты.Свойство("code", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("КодШаблона", ПолученноеЗначение);
ДопАтрибуты.Свойство("idf", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("КодФормы", ПолученноеЗначение);
ДопАтрибуты.Свойство("shifr", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("ШифрФормы", ПолученноеЗначение);
ДопАтрибуты.Свойство("version", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("ВерсияШаблона", ПолученноеЗначение);
ДопАтрибуты.Свойство("format_version", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("ВерсияФормата", ПолученноеЗначение);
ОтчПериод = Месяц(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания);
РасчПериод = Формат(Год(СтруктураРеквизитовФормы.мСохраненныйДок.ДатаОкончания),"ЧГ=0");
ПараметрыВыгрузки.Вставить("ОКПО", СокрЛП(ТабДокумент.ОргКодОКПО));
ПараметрыВыгрузки.Вставить("ОтчПериод", СокрЛП(ОтчПериод));
ПараметрыВыгрузки.Вставить("РасчПериод", СокрЛП(РасчПериод));
ПараметрыВыгрузки.Вставить("ОргНазв", СокрЛП(ТабДокумент.ОргНазв));
ПараметрыВыгрузки.Вставить("ОргДиректор", СокрЛП(СведенияОбОрганизации.ФИОРук));
ПараметрыВыгрузки.Вставить("ОргДолжностьИсп", СокрЛП(ТабДокумент.ОргДолжностьИсп));
ПараметрыВыгрузки.Вставить("ОргИсполнитель", СокрЛП(ТабДокумент.ОргИсполнитель));
ПараметрыВыгрузки.Вставить("ОргТелефонИсп", СокрЛП(ТабДокумент.ОргТелефонИсп));
ПараметрыВыгрузки.Вставить("ОргЭлектроннаяПочта", СокрЛП(ТабДокумент.ОргАдресЭлектроннойПочты));
ДопАтрибуты.Свойство("idp", ПолученноеЗначение);
ПараметрыВыгрузки.Вставить("КодПериодичности", Число(СокрЛП(ПолученноеЗначение)));
ПараметрыВыгрузки.Вставить("Документ", СтруктураРеквизитовФормы.мСохраненныйДок);
РегламентированнаяОтчетность.АтрибутыВФорматеВыгрузки(ПараметрыВыгрузки);
ПараметрыВыгрузки.Вставить("ИмяФайла", СформироватьИмяФайла(ПараметрыВыгрузки, ДопАтрибуты));
ПараметрыВыгрузки.Вставить("ИмяКлючевогоУзлаСодержательнойЧасти", "row");
Возврат ПараметрыВыгрузки;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьАвто(Команда)
Отказ = Ложь;
РегламентированнаяОтчетностьКлиентПереопределяемый.ПроверитьВозможностьАвтоЗаполненияРеглОтчета(ИмяФормы, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Команда", Команда);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьАвтоЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередЗаполнениемРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьАвтоЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Команда = ДополнительныеПараметры.Команда;
РезультатВыполнения = ЗаполнитьАвтоНаСервере();
Если НЕ РезультатВыполнения.ЗаданиеВыполнено Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаполнитьАвтоЗавершениеПослеЗаполнения", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется заполнение по данным информационной базы'");
ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполнения, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
Если Элементы.Расшифровать.Видимость Тогда
Элементы.Расшифровать.Доступность = Истина;
Элементы.ТабличныйДокументКонтекстноеМенюРасшифровать.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьАвтоЗавершениеПослеЗаполнения(РезультатЗагрузки, ДополнительныеПараметры) Экспорт
ЭтотОбъект.Доступность = Истина;
Если РезультатЗагрузки = Неопределено
ИЛИ РезультатЗагрузки.Статус <> "Выполнено" Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не удалось выполнить автозаполнение...'"));
Возврат;
КонецЕсли;
ЗагрузитьПодготовленныеДанные();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьАвтоНаСервере()
ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("Организации", Неопределено);
ПараметрыОтчета.Вставить("ЗаполняетсяВЦеломПоОрганизации", Ложь);
ПараметрыОтчета.Вставить("ЗаполняетсяПоКаждомуОП", Истина);
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
ПараметрыОтчета.Вставить("ОбособленноеПодразделение", ОбособленноеПодразделение);
ПараметрыОтчета.Вставить("ИсключитьДанныеОбособленныхПодразделений", ИсключитьДанныеОбособленныхПодразделений);
Контейнер = Новый Структура;
ЗаполнитьПоказателиОтчетаНаСервере(Контейнер);
ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
КонецЕсли;
ИДОтчета = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
ИДРедакцииОтчета = ИмяФормыОтчета(ЭтаФорма.ИмяФормы);
ПараметрыВыполненияВФоне = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполненияВФоне.ЗапуститьВФоне = Истина;
РезультатВыполнения = ДлительныеОперации.ВыполнитьВФоне("РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчетВФоне",
Новый Структура("ИДОтчета, ИДРедакцииОтчета, ПараметрыОтчета, Контейнер", ИДОтчета, ИДРедакцииОтчета, ПараметрыОтчета, Контейнер),
ПараметрыВыполненияВФоне);
РезультатВыполнения.Вставить("ЗаданиеВыполнено", НРег(РезультатВыполнения.Статус) = "выполнено");
АдресХранилища = РезультатВыполнения.АдресРезультата;
ИдентификаторЗадания = РезультатВыполнения.ИдентификаторЗадания;
Если РезультатВыполнения.ЗаданиеВыполнено Тогда
ЗагрузитьПодготовленныеДанные();
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
&НаСервере
Процедура ЗагрузитьПодготовленныеДанные()
Перем ТаблицаГруппы;
Контейнер = РегламентированнаяОтчетность.ПолучитьДанныеАвтозаполненияСтатистическогоОтчета(ЭтаФорма);
Если Контейнер = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторЗадания = Неопределено;
ТекТабличноеПоле = ЭтаФорма["ПолеТабличногоДокументаФормаОтчета"];
ТекТабличноеПоле.Очистить();
ТекТабличноеПоле.Вывести(
ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("ФормаОтчета2018Кв1_ФормаОтчета"));
Для Каждого ПоказателиСтраницы Из Контейнер Цикл
Если ТипЗнч(ПоказателиСтраницы.Значение) <> Тип("Структура") Тогда
Продолжить;
КонецЕсли;
ПоказателиТаблПоле = РегламентированнаяОтчетность.КонвертированныеЗначенияПоказателейСтатистическойОтчетности(ЭтаФорма, ПоказателиСтраницы.Значение);
Для Каждого Показатель Из ПоказателиТаблПоле Цикл
ИмяПоказателя = Показатель.Ключ;
ЗначениеПоказателя = Показатель.Значение;
РегламентированнаяОтчетность.УстановитьЗначениеИФорматВПоле(ТекТабличноеПоле, ИмяПоказателя, ЗначениеПоказателя);
КонецЦикла;
КонецЦикла;
СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки = ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение;
ПолеТабличногоДокументаФормаОтчета.Области.ОргАдрес.Значение =
РегламентированнаяОтчетностьКлиентСервер.ПредставлениеАдресаВФормате9Запятых(СтруктураРеквизитовФормы.мАдресвФорматеДляВыгрузки);
РасчетНаСервере();
ПолеТабличногоДокументаФормаОтчета.Области.П0001001В1.Значение = "00";
РегламентированнаяОтчетность.УстановитьЦветФорматДоступностьЯчеек(ЭтаФорма);
Модифицированность = Истина;
Доступность = Истина;
Если Элементы.Расшифровать.Видимость Тогда
Элементы.Расшифровать.Доступность = Истина;
Элементы.ТабличныйДокументКонтекстноеМенюРасшифровать.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭУВыбораОбособленныхПодразделений(Форма)
Форма.ОбособленноеПодразделение = ?(НЕ Форма.ИсключитьДанныеОбособленныхПодразделений, Форма.ОбособленноеПодразделение, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура Расшифровать(Команда)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыОтчета.Вставить("ДатаНачалаПериодаОтчета", СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета);
ПараметрыОтчета.Вставить("ДатаКонцаПериодаОтчета", СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
ПараметрыОтчета.Вставить("ЗначениеТекущегоПоказателя", Элементы.ПолеТабличногоДокументаФормаОтчета.ТекущаяОбласть.Текст);
ПараметрыОтчета.Вставить("ИсключитьДанныеОбособленныхПодразделений", ИсключитьДанныеОбособленныхПодразделений);
ПараметрыОтчета.Вставить("ОбособленноеПодразделение", ОбособленноеПодразделение);
Если СтрЧислоВхождений(Элементы.ПолеТабличногоДокументаФормаОтчета.ТекущаяОбласть.Имя, "П0001") > 0
ИЛИ СтрЧислоВхождений(Элементы.ПолеТабличногоДокументаФормаОтчета.ТекущаяОбласть.Имя, "П01") > 0 Тогда
ПараметрыОтчета.Вставить("КодПоОКВЭД", ПолеТабличногоДокументаФормаОтчета.Области["П0001" + Лев(Прав(Элементы.ПолеТабличногоДокументаФормаОтчета.ТекущаяОбласть.Имя, 5), 3) + "В1"].Значение);
КонецЕсли;
ИДИменПоказателей = Новый Массив;
ИДИменПоказателей.Добавить(Элементы.ПолеТабличногоДокументаФормаОтчета.ТекущаяОбласть.Имя);
ЭтаФормаИмя = ЭтаФорма.ИмяФормы;
Если СтрЧислоВхождений(ЭтаФормаИмя, "ВнешнийОтчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "ВнешнийОтчет.", "");
ИначеЕсли СтрЧислоВхождений(ЭтаФормаИмя, "Отчет.") > 0 Тогда
ЭтаФормаИмя = СтрЗаменить(ЭтаФормаИмя, "Отчет.", "");
КонецЕсли;
ИДОтчета = Лев(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") - 1);
ИДРедакцииОтчета = ИмяФормыОтчета(ЭтаФорма.ИмяФормы);
РегламентированнаяОтчетностьКлиент.ОткрытьРасшифровкуОтчета(ИДОтчета, ИДРедакцииОтчета, ИДИменПоказателей, ПараметрыОтчета);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЧерезПредставителя(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьЧерезПредставителяЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЧерезПредставителяЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиЧерезПредставителяВРегламентированномОтчете(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВИнтернете(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВИнтернетеЗавершение", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВИнтернетеЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПроверитьВИнтернете(ЭтаФорма, "ФСГС");
КонецПроцедуры
#Область ПанельОтправкиВКонтролирующиеОрганы
&НаКлиенте
Процедура ОбновитьОтправку(Команда)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОбновитьОтправкуИзПанелиОтправки(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПротоколНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьПротоколИзПанелиОтправки(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьНеотправленноеИзвещение(Команда)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтправитьНеотправленноеИзвещениеИзПанелиОтправки(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыОтправкиНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьСостояниеОтправкиИзПанелиОтправки(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьКритическиеОшибкиИзПанелиОтправки(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаНаименованиеЭтапаНажатие(Элемент)
ПараметрыИзменения = Новый Структура;
ПараметрыИзменения.Вставить("Форма", ЭтаФорма);
ПараметрыИзменения.Вставить("Организация", СтруктураРеквизитовФормы.Организация);
ПараметрыИзменения.Вставить("КонтролирующийОрган",
ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСГС"));
РегламентированнаяОтчетностьКлиент.ИзменитьСтатусОтправки(ПараметрыИзменения);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОтправитьВКонтролирующийОрган(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой", ЭтотОбъект);
Отказ = Ложь;
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередОтправкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаВозможностиВыгрузкиРегламентированногоОтчетаПередОтправкой(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьВКонтролирующийОрганЗавершение", ЭтотОбъект);
ОнлайнСервисыРегламентированнойОтчетностиКлиент.ПередВыгрузкойРегламентированногоОтчета(ОписаниеОповещения, ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьВКонтролирующийОрганЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиВКонтролирующийОрган(ЭтаФорма, "ФСГС");
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", ЭтаФорма);
Оповещение = Новый ОписаниеОповещения("ПослеСохраненияФормыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
СохранитьНаКлиенте(, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеСохраненияФормыЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДополнительныеПараметры.Форма.Закрыть();
КонецПроцедуры
&НаСервере
Процедура РазрешитьРедактированиеРеквизитовОбъекта() Экспорт
РегламентированнаяОтчетность.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
РегламентированнаяОтчетностьКлиент.РазрешитьРедактированиеРеквизитовОтчета(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПрисоединенныеФайлы(Команда)
РегламентированнаяОтчетностьКлиент.СохранитьОтчетИОткрытьФормуПрисоединенныеФайлы(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КомментарийПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура УстановитьФорматВыводаВПоляхВвода(Форма, НаимРаздела = "") Экспорт
Перем СтруктураГруппы;
Если Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 0";
ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 3";
ИначеЕсли Форма.СтруктураРеквизитовФормы.ЕдиницаИзмерения = Форма.ПорядкиОкругленияОтчетности.ПеречислениеПорядкиОкругленияОтчетностиОкр1000000 Тогда
Форма.СтруктураРеквизитовФормы.мСтрокаФормата = "; ЧДЦ = " + Форма.СтруктураРеквизитовФормы.ТочностьЕдиницыИзмерения + "; ЧРД=,; ЧН=-; ЧС = 6";
КонецЕсли;
Для Каждого СтрПоказатели Из Форма.мТаблицаСоставПоказателей Цикл
Если НЕ ПустаяСтрока(НаимРаздела) И НаимРаздела <> СтрПоказатели.ИмяПоляТаблДокумента Тогда
Продолжить;
КонецЕсли;
КодПоказателя = СокрП(СтрПоказатели.КодПоказателяПоСоставу);
ПризнМногострочность = СокрП(СтрПоказатели.ПризнМногострочности);
КодПоказателяПоСтруктуре = СокрП(СтрПоказатели.КодПоказателяПоСтруктуре);
КодПоказателяПоФорме = СокрП(СтрПоказатели.КодПоказателяПоФорме);
ТипДанныхПоказателя = СокрП(СтрПоказатели.ТипДанныхПоказателя);
ИмяПоказателя = ?(ПустаяСтрока(СтрПоказатели.КодПоказателяПоФорме), КодПоказателя, КодПоказателяПоФорме);
Если ПустаяСтрока(КодПоказателя) ИЛИ КодПоказателя = "===" ИЛИ КодПоказателя = "###" ИЛИ Лев(КодПоказателя, 2) = "//" Тогда
Продолжить;
КонецЕсли;
Если ТипДанныхПоказателя = "Е" И ПустаяСтрока(КодПоказателяПоСтруктуре) Тогда
ТекТабличноеПоле = Форма.ПолеТабличногоДокументаФормаОтчета;
Если ПризнМногострочность <> "/" Тогда
ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя];
ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
ЧислоЕЗнак = Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность, ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
КонецЕсли;
ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
ФорматируемаяОбласть.Формат = "ЧЦ = " + ЧислоЕЗнак.КвалификаторыЧисла.Разрядность + Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
Иначе
НСтр = 1;
Пока ТекТабличноеПоле.Области.Найти(ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")) <> Неопределено Цикл
ФорматируемаяОбласть = ТекТабличноеПоле.Области[ИмяПоказателя + "_" + Формат(НСтр, "ЧГ=0")];
ДопустимыйЗнакПоказателя = ФорматируемаяОбласть.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
ЧислоЕЗнак = Форма.СтруктураРеквизитовФормы.мОписаниеТиповЧислоЕ;
Если ДопустимыйЗнакПоказателя = ДопустимыйЗнак.Неотрицательный Тогда
ЧислоЕЗнак = Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(ЧислоЕЗнак.КвалификаторыЧисла.Разрядность, ЧислоЕЗнак.КвалификаторыЧисла.РазрядностьДробнойЧасти, ДопустимыйЗнакПоказателя));
КонецЕсли;
ФорматируемаяОбласть.ТипЗначения = ЧислоЕЗнак;
ФорматируемаяОбласть.Формат = "ЧЦ = " + ЧислоЕЗнак.КвалификаторыЧисла.Разрядность + Форма.СтруктураРеквизитовФормы.мСтрокаФормата;
НСтр = НСтр + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьЦветФонаЯчейкиНаКлиенте(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = Неопределено) Экспорт
УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
КонецПроцедуры
&НаСервере
Процедура УстановитьЦветФонаЯчейкиНаСервере(ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = Неопределено) Экспорт
УстановитьЦветФонаЯчейки(ЭтаФорма, ИмяЯчейки, ВариантЗаполнения, ИмяТекущейСтраницыПанели);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьЦветФонаЯчейки(Форма, ИмяЯчейки = Неопределено, ВариантЗаполнения = Неопределено, ИмяТекущейСтраницыПанели = Неопределено) Экспорт
Перем ЦветФона;
Перем Комментарий;
Если Форма.СтруктураРеквизитовФормы.мБезОткрытияФормы ИЛИ Форма.СтруктураРеквизитовФормы.мРежимПечати Тогда
Возврат;
КонецЕсли;
Если ИмяЯчейки <> Неопределено Тогда
ИмяПоляТаблДокумента = "ПолеТабличногоДокументаФормаОтчета";
Ключ = "_" + ВариантЗаполнения;
Форма.мСтруктураЦветовРаскраски.Свойство(Ключ, ЦветФона);
Если ИмяЯчейки = "ПотребЭнерг" Тогда
ЗначениеВКвадратах = Ложь;
Иначе
ЗначениеВКвадратах = РегламентированнаяОтчетностьКлиентСервер.ОбластьЯвляетсяЯчейкойСоставногоПоля(Форма, ИмяЯчейки);
КонецЕсли;
Если ВариантЗаполнения = 4 ИЛИ ВариантЗаполнения = 5 Тогда
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяЯчейки, "УстановитьЗащиту");
Иначе
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Истина;
КонецЕсли;
Иначе
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяЯчейки, "СнятьЗащиту");
Иначе
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].Защита = Ложь;
КонецЕсли;
КонецЕсли;
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяЯчейки, "ПроставитьЦветРаскраски", ЦветФона);
Иначе
Форма[ИмяПоляТаблДокумента].Области[ИмяЯчейки].ЦветФона = ЦветФона;
КонецЕсли;
Иначе
ТаблицаВариантыЗаполнения = РегламентированнаяОтчетностьВызовСервера.ПолучитьТаблицуВариантовЗаполненияНаСервере(Форма, ИмяТекущейСтраницыПанели);
Если ТаблицаВариантыЗаполнения = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого Строка Из ТаблицаВариантыЗаполнения Цикл
ИмяПоказателя = Строка.КодПоказателя;
ВариантЗаполнения = Строка.ВариантЗаполнения;
Комментарий = Строка.Комментарий;
КодПоказателяПоСтруктуре = Строка.КодПоказателяПоСтруктуре;
КолвоСтрокВМногострочнойЧасти = РегламентированнаяОтчетностьКлиентСервер.ПоказательВходитВМногострочнуюЧасть(Форма, ИмяПоказателя);
Если КолвоСтрокВМногострочнойЧасти > 0 Тогда
Многострочность = Истина;
БазоваяЧасть = ИмяПоказателя;
ОписанияБлоков = 0;
Если ТипЗнч(ОписанияБлоков) = Тип("Число") Тогда
ВБлокеВсеПоказателиЗаполняются = Истина;
ИначеЕсли ТипЗнч(ОписанияБлоков) = Тип("ДанныеФормыКоллекция") Тогда
ИмяГруппы = Сред(ИмяПоказателя, 1, 8);
ВБлокеВсеПоказателиЗаполняются = НЕ ОписанияБлоков.НайтиСтроки(Новый Структура("ИдГруппы", ИмяГруппы))[0].НезаполняемыеПоказателиЕсть;
КонецЕсли;
Иначе
Многострочность = Ложь;
ВБлокеВсеПоказателиЗаполняются = Истина;
КолвоСтрокВМногострочнойЧасти = 1;
КонецЕсли;
Для Инд = 1 по КолвоСтрокВМногострочнойЧасти Цикл
Если Многострочность Тогда
ИмяПоказателя = БазоваяЧасть + "_" + Формат(Инд, "ЧГ=0");
КонецЕсли;
ТекОбластьЯчеек = Форма.ПолеТабличногоДокументаФормаОтчета.Области[ИмяПоказателя];
Если (Не ПустаяСтрока(Комментарий)) ИЛИ (Не ПустаяСтрока(ТекОбластьЯчеек.Примечание.Текст)) Тогда
ТекОбластьЯчеек.Примечание.Текст = Комментарий;
КонецЕсли;
Ключ = "_" + ВариантЗаполнения;
Форма.мСтруктураЦветовРаскраски.Свойство(Ключ, ЦветФона);
ЗначениеВКвадратах = ?(ПустаяСтрока(КодПоказателяПоСтруктуре), Ложь, Истина);
Если ВариантЗаполнения = 4 ИЛИ ВариантЗаполнения = 5 Тогда
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяПоказателя, "УстановитьЗащиту");
Иначе
Форма.ПолеТабличногоДокументаФормаОтчета.Области[ИмяПоказателя].Защита = Истина;
КонецЕсли;
Иначе
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяПоказателя, "СнятьЗащиту");
Иначе
Форма.ПолеТабличногоДокументаФормаОтчета.Области[ИмяПоказателя].Защита = Ложь;
КонецЕсли;
КонецЕсли;
Если ЗначениеВКвадратах Тогда
РегламентированнаяОтчетностьКлиентСервер.СвойстваГрупповыхЗначений(Форма, ИмяПоказателя, "ПроставитьЦветРаскраски", ЦветФона);
Иначе
Форма.ПолеТабличногоДокументаФормаОтчета.Области[ИмяПоказателя].ЦветФона = ЦветФона;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьСпискиВыбора()
МакетСоставаПоказателей = ОбъектОтчета(ЭтаФорма.ИмяФормы).ПолучитьМакет("Списки2018Кв1");
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
Строка8 = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(20, ДопустимаяДлина.Переменная));
Строка512 = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(512, ДопустимаяДлина.Переменная));
КоллекцияСписковВыбора = Новый Соответствие;
Для Каждого Область Из МакетСоставаПоказателей.Области Цикл
Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
ВерхОбласти = Область.Верх;
НизОбласти = Область.Низ;
ТаблСписка = Новый ТаблицаЗначений;
ТаблСписка.Колонки.Добавить("Код",Строка8,, МакетСоставаПоказателей.Область(ВерхОбласти, 1, ВерхОбласти, 1).ШиринаКолонки);
ТаблСписка.Колонки.Добавить("Название",Строка512,, МакетСоставаПоказателей.Область(ВерхОбласти, 2, ВерхОбласти, 2).ШиринаКолонки);
Для НомСтр = ВерхОбласти По НизОбласти Цикл
КодПоказателя = СокрП(МакетСоставаПоказателей.Область(НомСтр, 1).Текст);
Если КодПоказателя <> "###" Тогда
НовСтрока = ТаблСписка.Добавить();
НовСтрока.Код = КодПоказателя;
НовСтрока.Название = СокрП(МакетСоставаПоказателей.Область(НомСтр, 2).Текст);
КонецЕсли;
КонецЦикла;
КоллекцияСписковВыбора.Вставить(Область.Имя, ТаблСписка);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("S_OKVED2", КоллекцияСписковВыбора["S_OKVED2"]);
Запрос.УстановитьПараметр("pril_okved_51", КоллекцияСписковВыбора["pril_okved_51"]);
Запрос.Текст = "ВЫБРАТЬ
| S_OKVED2.Код КАК Код,
| S_OKVED2.Название КАК Название
|ПОМЕСТИТЬ ВТ_S_OKVED2
|ИЗ
| &S_OKVED2 КАК S_OKVED2
|ИНДЕКСИРОВАТЬ ПО
| S_OKVED2.Код
|;
|
|ВЫБРАТЬ
| pril_okved_51.Код КАК Код,
| pril_okved_51.Название КАК Название
|ПОМЕСТИТЬ ВТ_pril_okved_51
|ИЗ
| &pril_okved_51 КАК pril_okved_51
|ИНДЕКСИРОВАТЬ ПО
| pril_okved_51.Код
|;
|
|ВЫБРАТЬ
| S_OKVED2.Код КАК Код,
| S_OKVED2.Название КАК Название
|ИЗ
| ВТ_S_OKVED2 КАК S_OKVED2
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_pril_okved_51 КАК pril_okved_51
| ПО pril_okved_51.Код = S_OKVED2.Код";
ТаблСписка = Новый ТаблицаЗначений;
ТаблСписка.Колонки.Добавить("Код",Строка8,, МакетСоставаПоказателей.Область(ВерхОбласти, 1, ВерхОбласти, 1).ШиринаКолонки);
ТаблСписка.Колонки.Добавить("Название",Строка512,, МакетСоставаПоказателей.Область(ВерхОбласти, 2, ВерхОбласти, 2).ШиринаКолонки);
НовСтр = ТаблСписка.Добавить();
НовСтр.Код = "";
НовСтр.Название = "Пустая строка";
РезультатВыборки = Запрос.Выполнить().Выбрать();
Пока РезультатВыборки.Следующий() Цикл
НовСтр = ТаблСписка.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, РезультатВыборки);
КонецЦикла;
РегламентированнаяОтчетность.ДобавитьСтрокуОписанияВвода(СвойстваПоказателей, "OKVED2", 512, , "Выбор кода ОКВЭД", ТаблСписка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНастроек(Команда)
мПараметры = Новый Структура;
мПараметры.Вставить("ЗначенияИзСписка", Истина);
мПараметры.Вставить("Автосохранение", Ложь);
мПараметры.Вставить("СчетчикСтраниц", Ложь);
мПараметры.Вставить("ОтключитьАвтоРасчет", Ложь);
мПараметры.Вставить("ИмеетсяРеквизитДеревоВыбранныхСтраниц", Ложь);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("мПараметры", мПараметры);
ПараметрыФормы.Вставить("мАвтоВыборКодов", СтруктураРеквизитовФормы.мАвтоВыборКодов);
ФормаНастройкиОтчета = РегламентированнаяОтчетностьКлиент.ПолучитьОбщуюФормуПоИмени("НастройкиОтчета", ПараметрыФормы, ЭтаФорма);
ФормаНастройкиОтчета.Элементы.СвойстваРазделов.Видимость = Ложь;
ЗначениеАвторасчета = СтруктураРеквизитовФормы.ФлажокОтклАвтоРасчет;
Если ФормаНастройкиОтчета.Открыта() Тогда
ФормаНастройкиОтчета.Активизировать();
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Предыдущая операция выбора листов не завершена.%1Завершить?'"), Символы.ПС);
ДополнительныеПараметры = Новый Структура("ФормаНастройкиОтчета, ЗначениеАвторасчета", ФормаНастройкиОтчета, ЗначениеАвторасчета);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросЗавершитьПредыдущуюОперациюЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет,30,КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
ФормаНастройкиОтчета.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаНастройкиОтчета.Открыть();
КонецПроцедуры
&НаСервере
Функция ОбъектОтчета(ЭтаФормаИмя) Экспорт
Если мОбъектОтчета = Неопределено Тогда
мОбъектОтчета = РегламентированнаяОтчетностьВызовСервера.ОбъектОтчета(ЭтаФормаИмя);
КонецЕсли;
Возврат мОбъектОтчета;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяОтчета(ЭтаФормаИмя)
Форма_Имя = СтрЗаменить(ЭтаФормаИмя, "Внешний", "");
Возврат Сред(Лев(Форма_Имя, СтрНайти(Форма_Имя, ".Форма.") - 1), 7);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяФормыОтчета(ЭтаФормаИмя)
Возврат Сред(ЭтаФормаИмя, СтрНайти(ЭтаФормаИмя, ".Форма.") + 7);
КонецФункции
#Область ОбработчикиСобытийФормы
#Область ОбработчикиСобытийПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
РегламентированнаяОтчетностьКлиент.ВыполнитьЗадачу(
ЭтотОбъект,
Команда,
?(ЗначениеЗаполнено(СтруктураРеквизитовФормы.мСохраненныйДок),
СтруктураРеквизитовФормы.мСохраненныйДок,
СтруктураРеквизитовФормы.ПустаяСсылкаНаРегламентированныйОтчет));
КонецПроцедуры
#КонецОбласти
#Область ПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
РегламентированнаяОтчетностьКлиент.КомментарийСледующемуНачалоВыбора(
ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если РегламентированнаяОтчетностьКлиент.ЭтоСобытиеЗавершениеОтправки(ИмяСобытия) Тогда
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроцессыОбработкиДокументов
&НаКлиенте
Процедура Записать(ПараметрыЗаписи) Экспорт
СохранитьНаКлиенте();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
РегламентированнаяОтчетность.ВыполнитьЗадачу(ЭтотОбъект, Контекст, СтруктураРеквизитовФормы.мСохраненныйДок);
КонецПроцедуры
&НаСервере
Процедура УправлениеДоступностьюРеквизитов(БлокируемыеЭлементы, ТолькоПросмотр) Экспорт
РегламентированнаяОтчетность.УправлениеДоступностьюРеквизитов(ЭтотОбъект, БлокируемыеЭлементы, ТолькоПросмотр);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ИнициализироватьВыводСтатусовИВажныхСообщений_85()
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.УстановитьРазмещениеНаименованияЭтапаБРО_85(ЭтотОбъект);
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере() Экспорт
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДетальноеОписаниеСтатусаПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат = "ОбновитьОтправку" Тогда
ОбновитьОтправку(Неопределено);
ИначеЕсли Результат = "ГиперссылкаПротокол" Тогда
ГиперссылкаПротоколНажатие(Неопределено);
ИначеЕсли Результат = "ЭтапыОтправки" Тогда
ЭтапыОтправкиНажатие(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВывестиСтатусыИВыжныеСообщенияНаФорму() Экспорт
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНажатияКнопкиВВажномСообщении(Команда)
Если Команда.Имя = "ОтправитьНеотправленноеИзвещение" Тогда
ОтправитьНеотправленноеИзвещение(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиВВажномСообщении(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НРег(НавигационнаяСсылкаФорматированнойСтроки) = "критическиеошибки" Тогда
КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаЗакрытияВажногоСообщения(Команда)
МодульКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер");
МодульКлиентСервер.ЗакрытьВажноеСообщение(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьДействиеИнформационногоСообщения(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
МодульОбщегоНазначенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбщегоНазначенияКлиент");
МодульОбщегоНазначенияКлиент.ОбработатьДействиеИнформационногоСообщения(ЭтотОбъект, ЭлементИлиКоманда, НавигационнаяСсылка, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти