Документооборот с контролирующими органами / Подключение направления 1С-Отчетности / Модуль формы

файл
&НаКлиенте
Перем КонтекстЭДОКлиент;

&НаКлиенте
Перем ДанныеЗаполнения;

&НаКлиенте
Перем ДанныеОрганизации;

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

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

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия = "Успешная отправка заявления. Закрыть форму владельца"
		И Источник = ЗаявлениеАбонента.Ссылка Тогда
		
		Закрыть();
		
	ИначеЕсли ИмяСобытия = "Запись_Организации" Тогда
		ИнициализацияФормы();
		
	КонецЕсли;
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

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

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

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормы

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

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

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

&НаКлиенте
Процедура ПолучателиФСГСВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	РедактироватьВыбранноеНаправлениеФСГС();
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыПодписанты

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

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

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

#Область ОбработчикиКомандФормы

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

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

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

&НаКлиенте
Процедура УдалитьНаправлениеФНС(Команда)
	
	КонтекстЭДОКлиент.УдалитьНаправление(
		ЭтотОбъект,
		ПолучателиФНС,
		"ПолучателиФНС",
		"УдалитьНаправлениеФНС");
	
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьНаправлениеФСГС(Команда)
	
	ДобавитьНовоеНаправлениеФСГС();
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьНаправлениеФСГС(Команда)
	
	КонтекстЭДОКлиент.УдалитьНаправление(
		ЭтотОбъект,
		ПолучателиФСГС,
		"ПолучателиФСГС",
		"УдалитьНаправлениеФСГС");
	
КонецПроцедуры

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

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

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

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

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

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

#Область ДобавлениеУдалениеРедактированиеКодовОрганов

#Область ДобавлениеИРедактированиеФНС

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

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

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

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

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

#Область ВосстановлениеФНСиФСГС

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

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

#Область РедактированиеФСГС

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

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

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

#Область ДобавлениеФСГС

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

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

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

#Область УдалениеФНСиФСГС

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

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

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

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

#Область ОтправкаЗаявления

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция СтрокаПустая(ПроверяемаяСтрока)
	
	ПриведеннаяСтрока = СтрЗаменить(ПроверяемаяСтрока, "-", "");
	Возврат ПустаяСтрока(ПриведеннаяСтрока);
	
КонецФункции

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

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

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

&НаКлиенте
Процедура ПодписантыДоверенностьПриИзмененииПослеПодтверждения(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		ТекущиеДанные = Элементы.Подписанты.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			ТекущиеДанные.Доверенность = ДополнительныеПараметры.Доверенность;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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


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

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