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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ОтправитьЗаявлениеНаИзменение() Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

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

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