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

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

&НаКлиенте
Перем СсылкаНаДокумент;

&НаКлиенте
Перем МенеджерКриптографии;

&НаКлиенте
Перем СертификатКриптографии;

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

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

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

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

#Область ЗаявленияВПФР

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТребуетсяПомощь2Нажатие(Элемент)
	ОткрытьФормуПомощи();
КонецПроцедуры

&НаКлиенте
Процедура ЧтоДелать2ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ОткрытьФормуПомощи();
	
КонецПроцедуры

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

	КонтекстЭДОКлиент.НапечататьДокумент(Расписка, НСтр("ru = 'Расписка'"));
	
КонецПроцедуры

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

	Если НавигационнаяСсылкаФорматированнойСтроки = "условия" Тогда
		ПерейтиПоНавигационнойСсылке("https://1c-report.ru/perevipusk_kep/");
	ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "сертификат" Тогда
		КриптографияЭДКОКлиент.ПоказатьСертификат(СертификатДляПодписания, ЭтотОбъект);
	КонецЕсли;

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

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

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

&НаКлиенте
Процедура ОтправитьСогласиеЕНСПриИзменении(Элемент)
	ИзменитьОформлениеСтраницыУспешноеЗавершение();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ТаблицаДокументовПометкаПриИзменении(Элемент)
	
	ИзменитьОформлениеСтраницыМЧДиЗПЭД(Ложь);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОК(Команда)

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

Функция СогласиеЕНСОтправлено()
	
	Возврат ДокументооборотСКО.ОтчетОтправленПоСсылке(СогласиеЕНС);
	
КонецФункции

&НаКлиенте
Процедура ОтправитьМЧДПозже(Команда)
	
	ПослеОтправкиМЧД(Неопределено);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПослеОтправкиМЧД(Команда)
	
	ПоказатьЗавершениеНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьОшибку(Команда)
	
	ПрограммноеЗакрытие = Истина;
	Закрыть();
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура КомандаБольшеНеНапоминать_Завершение(ВходящийКонтекст) Экспорт
	
	Закрыть();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура НастроитьАвтоматически(Команда)

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

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

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

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

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

&НаКлиенте
Процедура ПодтверждениеБольшеНеПоказывать_Завершение(Ответ, ВходящийКонтекст) Экспорт
	
	Если Ответ = "Прервать" Тогда
		БольшеНеНапоминать();
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Функция СпроситьПроЭДО()

	ЭтоПоследнийШаг   = Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение;
	ЕстьЭДО           = ПодключитьЭДО ИЛИ ПереиздатьСертификатЭДО;
	
	СпроситьПроЭДО = ЕстьЭДО И ЗаявлениеОдобрено И ЭтоПоследнийШаг;

	Возврат СпроситьПроЭДО;

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

&НаКлиенте
Функция СпроситьПроЗаявлениеПФР()

	ЭтоШагЗаявленияПФР = Элементы.Страницы.ТекущаяСтраница = Элементы.ОтправкаЗаявленияВПФР;
	СпроситьПроЗаявлениеПФР = ФлагЗаявлениеУжеПредоставленоВПФР И ЭтоШагЗаявленияПФР;

	Возврат СпроситьПроЗаявлениеПФР;

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

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

&НаСервере
Процедура ИнициализироватьПараметры(Параметры)

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

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

	// Итоговое значение
	Требуется = 
		ЭтоЭлектронноеПодписание 
		И ЗаявлениеОдобрено
		И СертификатДляПодписания <> Неопределено
		И (ТребуетсяВПервичном ИЛИ ТребуетсяВоВторичном);
		
	Возврат Требуется;
	
КонецФункции

&НаСервере
Функция ИдентификаторФайлаАвтонастройки()

	Если НЕ ЗначениеЗаполнено(ИдентификаторАбонента)
		И ЗначениеЗаполнено(ДокументЗаявление.УчетнаяЗапись)
		И НЕ ЭтоПервичноеЗаявление Тогда
		
		Идентификатор = Сред(ДокументЗаявление.УчетнаяЗапись.ИдентификаторАбонента, 4);
		
	Иначе
		
		Идентификатор = ИдентификаторАбонента;
		
	КонецЕсли;
	
	Возврат Идентификатор;
			
КонецФункции

&НаСервере
Процедура ПолучитьАдресНовогоСертификата()

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

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

&НаКлиенте
Процедура ПередЗакрытием_Завершение(ПродолжитьДействиеПрерванноеПоказомПредупреждения = Неопределено) Экспорт
	
	ПрограммноеЗакрытие = Истина;
	Закрыть();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура Подключаемый_НастроитьАвтоматически()
	
	ВыполнитьЗавершениеПодключения();
	
КонецПроцедуры

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

&НаСервереБезКонтекста
Функция ПолучитьПараметрыДляЗапускаМетодаБЭД(ЗаявлениеСсылка) Экспорт
	
	Если ЗначениеЗаполнено(ЗаявлениеСсылка.НастройкиЭДО) Тогда
		Возврат ЗаявлениеСсылка.НастройкиЭДО;
	Иначе
		Результат = Неопределено;
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
			|	ЗаявлениеАбонентаСпецоператораСвязи.Организация,
			|	ЗаявлениеАбонентаСпецоператораСвязи.АдресЮридический,
			|	ЗаявлениеАбонентаСпецоператораСвязи.ПодключитьЭДО,
			|	ЗаявлениеАбонентаСпецоператораСвязи.ОператорЭДО,
			|	ЗаявлениеАбонентаСпецоператораСвязи.КодНалоговогоОрганаЭДО,
			|	ЗаявлениеАбонентаСпецоператораСвязи.ТипКриптопровайдера
			|ИЗ
			|	Документ.ЗаявлениеАбонентаСпецоператораСвязи КАК ЗаявлениеАбонентаСпецоператораСвязи
			|ГДЕ
			|	ЗаявлениеАбонентаСпецоператораСвязи.УчетнаяЗапись <> ЗНАЧЕНИЕ(Справочник.УчетныеЗаписиДокументооборота.ПустаяСсылка)
			|	И ЗаявлениеАбонентаСпецоператораСвязи.Ссылка = &ЗаявлениеСсылка";
		
		Запрос.УстановитьПараметр("ЗаявлениеСсылка", ЗаявлениеСсылка);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		Выборка = РезультатЗапроса.Выбрать();
		
		Если Выборка.Следующий() Тогда
			
			Если Выборка.ПодключитьЭДО Тогда
				
				Результат = Новый Структура;
				
				Результат.Вставить("Организация", 				Выборка.Организация);
				Результат.Вставить("ОператорЭДО", 				Выборка.ОператорЭДО);
				Результат.Вставить("КодНалоговогоОргана", 		Выборка.КодНалоговогоОрганаЭДО);
				
				//ТипКриптопровайдера
				Если Выборка.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoPro Тогда
					ТипКриптоПровайдера = "CryptoPro";
				ИначеЕсли Выборка.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.VipNet Тогда 
					ТипКриптоПровайдера = "VipNet";
				Иначе
					Возврат Неопределено;
				КонецЕсли;
				Результат.Вставить("ТипКриптопровайдера", ТипКриптоПровайдера);
				
				АдресЮридический = Выборка.АдресЮридический;
				Если ЗначениеЗаполнено(АдресЮридический) Тогда
					
					ЭтоАдресПоФИАСу = УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВXML(АдресЮридический);
					Если ЭтоАдресПоФИАСу Тогда
						
						СведенияОбАдресе = ОбработкаЗаявленийАбонента.СведенияОбАдресе(АдресЮридический);

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

			КонецЕсли;
			
		КонецЕсли;
		
		Возврат Результат;
		
	КонецЕсли;
	
КонецФункции

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

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

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

&НаКлиенте
Функция НужноПодписатьПлатформой()
	
	ПодписатьПлатформой = 
		НЕ НужноПодписатьКомпонентойСАвтонастройкой()
		И НЕ НужноПодписатьМетодомБРО();
		
	Возврат ПодписатьПлатформой;
	
КонецФункции

&НаКлиенте
Процедура ПодписатьРасписку()
	
	Если НужноПодписатьКомпонентойСАвтонастройкой() Тогда
		
		ПодписатьРаспискуКомпонентойСАвтонастройкой();
		
	ИначеЕсли НужноПодписатьМетодомБРО() Тогда
		
		ПодписатьРаспискуКомпонентой();
		
	ИначеЕсли НужноПодписатьПлатформой() Тогда
		
		ПолучитьМенеджерИСертификатКриптографии();
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ПодписатьРасписку_СообщитьОбОшибкеПодписания() Экспорт

	ПередатьРаспискуВБумажномВиде = Истина;
	
	ПоказатьСтраницуОтправкиРаспискиВБумажномВиде();
		
КонецПроцедуры

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

&НаКлиенте
Процедура ВыполнитьЗавершениеПодключения()
	
	// Чтобы отрисовался заголовок
	Заголовок = НСтр("ru = 'Подождите, пожалуйста...'");
	Элементы.Подождите.Заголовок = НСтр("ru = 'Выполняется настройка 1С-Отчетности...'");
	
	ПодключитьОбработчикОжидания("Подключаемый_ВыполнитьЗавершениеПодключения", 0.1, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьЗавершениеПодключения()
	
	ВыполнитьАвтонастройкуУчетки();
		
КонецПроцедуры

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

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

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

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

	Возврат ЕстьСредиВладельцев;
	
КонецФункции

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

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

&НаКлиенте
Процедура ПоказатьОшибкуПолученияСертификата()
	
	Если ЭтоРежимОблачной1СО Тогда
		ТекстОшибки = НСтр("ru = 'Сертификат еще не получен от удостоверяющего центра. Повторите настройку через 1-2 минуты.
                            |Также вы можете повторить настройку позднее: Раздел ""Настройки"" -> ""Настройки обмена с контролирующими органами"" – кнопка ""Обновить"".'");
	Иначе
		ТекстОшибки = НСтр("ru = 'Сертификат еще не получен от удостоверяющего центра. Повторите настройку через 1-2 минуты.
                            |Также вы можете повторить настройку позднее: форма ""1С-Отчетность"" -> раздел ""Настройки"" -> ""Настройки обмена с контролирующими органами"" – кнопка ""Обновить"".'");
	КонецЕсли;
	
	ПоказатьСтраницуСОшибкой();
	ОтключитьОбработчикОжидания("Подключаемый_ПроверитьНаличиеОтпечатка");
				
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПроверитьНаличиеОтпечатка()
	
	ПрошлоВремени = ПрошлоВремени + 5;
	ВыполнитьАвтонастройкуУчетки();
	
КонецПроцедуры

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

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

		ПослеВыполненияОбновления();
		
	Иначе
		ПоказатьОшибкуНастройки(Результат);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Процедура СоздатьСогласиеЕНС()

	МодульЕдиныйНалоговыйСчетЛичныйКабинет = ОбщегоНазначения.ОбщийМодуль("ЕдиныйНалоговыйСчетЛичныйКабинет");
	СогласиеЕНС = МодульЕдиныйНалоговыйСчетЛичныйКабинет.НовоеСогласиеНаРаскрытиеНалоговойТайныЕНС(Организация);
		
КонецПроцедуры

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

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

		Для каждого Приглашение Из Приглашения Цикл
			Приглашение.УчетнаяЗапись = УчетнаяЗапись;
		КонецЦикла;
	КонецЕсли;
	
	Мультирежим.ЗаписатьВРегистрПриглашенияПользователей1СОтчетности(Приглашения);
	
КонецПроцедуры

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

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

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

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

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

&НаСервере
Процедура ПоказатьСтраницуСОшибкой()
	
	АктивизироватьСтраницу(
		ЭтотОбъект, 
		Элементы.ОшибкаНастройки, 
		НСтр("ru = 'Настройка 1С-Отчетности'"));
		
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

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

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

&НаСервере
Процедура ИзменитьОформлениеСтраницыОшибкаНастройки()
	
	СерверОбновленияНедоступен = СтрНайти(ВРЕГ(ТекстОшибки), НСтр("ru = 'СЕРВЕР'"));

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

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

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

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

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

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

&НаСервере
Функция ПоказатьГалку1СЭДО()
	
	ЛокальныйКлюч 	= КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча);
	Показать	 	= (ПодключитьЭДО ИЛИ ПереиздатьСертификатЭДО) И ЛокальныйКлюч И ЗначениеЗаполнено(ПараметрыПодключениеЭДО);
	
	Возврат Показать;
	
КонецФункции

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

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

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

&НаКлиенте
Процедура СоздатьНовоеЗаявление()

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

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

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

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

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

#Область Расписка

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

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

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

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

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

&НаСервере
Функция ОтправитьРаспискуОтУЦ()
	
	Попытка
	
		Результат = Новый Структура("Выполнено, ОписаниеОшибки", Истина, "");
		
		КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
		ФайлыРасписки = КонтекстЭДОСервер.ПолучитьРасписку(ДокументЗаявление);
		
		fileDataДвДанные = ПолучитьИзВременногоХранилища(ФайлыРасписки.Расписка.Адрес);
		fileSignДвДанные = ПолучитьИзВременногоХранилища(ФайлыРасписки.Подпись.Адрес);
		
		fileData = ДокументооборотСКОКлиентСервер.Base64СтрокаБезПереносов(fileDataДвДанные);
		fileSign = ДокументооборотСКОКлиентСервер.Base64СтрокаБезПереносов(fileSignДвДанные);
			
		ТелоЗапроса = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:reg=""http://regservice.keydisk.ru/"">
	     |   <soapenv:Header/>
	     |   <soapenv:Body>
	     |      <reg:SendCertificateForm>
	     |         <reg:workflowGuid>&workflowGuid</reg:workflowGuid>
	     |         <reg:fileData>&fileData</reg:fileData>
	     |         <reg:fileSign>&fileSign</reg:fileSign>
	     |       </reg:SendCertificateForm>
	     |   </soapenv:Body>
	     |</soapenv:Envelope>";
		
		ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&workflowGuid", ДокументЗаявление.ИдентификаторДокументооборота);
		ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&fileData", XMLСтрока(fileData));
		ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&fileSign", XMLСтрока(fileSign));
		
		ЗаписатьЗапросВЖурнал(ТелоЗапроса);
		
		Ответ = Документы.ЗаявлениеАбонентаСпецоператораСвязи.PostЗапросОператору(
			"SendCertificateForm", 
			ТелоЗапроса,
			Результат.ОписаниеОшибки);
			
		Если Ответ = Неопределено Тогда
			
			Результат.Выполнено = Ложь;
			Результат.ОписаниеОшибки = 
				НСтр("ru = 'Не удалось отправить расписку по причине: '") 
				+ Символы.ПС 
				+ Результат.ОписаниеОшибки;
				
			Возврат Результат;
		Иначе
			
			ДОМ = ДокументооборотСКО.ДваждыРазобратьОтветНаPostЗапрос(Ответ, "SendCertificateFormResult", "utf-8");
			code = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьЗначениеУзлаXML(ДОМ, "code");
			
			Если code <> "0" Тогда
				
				ОбработкаЗаявленийАбонентаВызовСервера.СохранитьОшибку(
					НСтр("ru = 'Не удалось отправить расписку по причине: '"),
					Результат, 
					ДОМ);
					
			КонецЕсли;
			
			Возврат Результат;
			
		КонецЕсли;
		
	Исключение
		
		ДанныеОшибки = ИнформацияОбОшибке();
		
		ДокументооборотСКО.ОбработатьИсключение(
			ДанныеОшибки, 
			НСтр("ru = 'Отправка расписки в УЦ Основание (метод SendCertificateForm)'"));
			
		ТекстОшибки  = КраткоеПредставлениеОшибки(ДанныеОшибки);
		
		Результат.Выполнено = Ложь;
		Результат.ОписаниеОшибки = 
			НСтр("ru = 'Не удалось отправить расписку по причине: '") 
			+ Символы.ПС 
			+ ТекстОшибки;
		
		Возврат Результат;
		
	
	КонецПопытки;
	
КонецФункции

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

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

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

&НаСервере
Процедура ОтметитьЗаявлениеКакНастроенное()
	
	ОбработкаЗаявленийАбонентаВызовСервера.ОбновитьРеквизитыЗаявления(
		ДокументЗаявление.Ссылка, 
		Новый Структура("НастройкаЗавершена", Истина));
		
КонецПроцедуры

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

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

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

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

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

#Область ЗаявленияВПФР

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

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

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

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

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

	ЭтоПредупреждениеИзМастера = Истина;
	
	КонтекстЭДОСервер.ИнициализироватьПараметрыЭДОСПФР(ЭтотОбъект, Ложь);

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

&НаСервере
Процедура СохранитьНастройкиСостоянияЭДОСПФР() Экспорт

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

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

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

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

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

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


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

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

&НаКлиенте
Процедура ПоказатьСтраницуОтправкиРаспискиВБумажномВиде() Экспорт

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

&НаСервере
Процедура ИзменитьОформлениеГруппыПустаяРаспискаДЛ()
	
	Элементы.НастроитьАвтоматически.Заголовок = НСтр("ru = 'Закрыть'");
	Элементы.ОшибкаПолученияРаспискиДЛ.Заголовок = 
		НСтр("ru = 'Сервер АО ""Калуга Астрал"" вернул пустую расписку'");
	
КонецПроцедуры

&НаСервере
Процедура ИзменитьОформлениеГруппыОтправитьРаспискуДЛ()
	
	Элементы.ПредупреждениеКРаспискеДЛ.Видимость = ЗначениеЗаполнено(КрайнийСрокДЛ);
	
	Если ЗначениеЗаполнено(КрайнийСрокДЛ) Тогда
	
		Сейчас = ТекущаяДатаСеанса();
		
		Дельта = КрайнийСрокДЛ - Сейчас;
		
		Минута = 60;
		Час    = Минута * 60;
		День   = Час * 24;
		
		РазницаВДнях = Цел(Дельта / День);
		РазницаВЧасах = Цел((КрайнийСрокДЛ - Сейчас - РазницаВДнях*День) / Час);
		РазницаВМинутах = Цел((КрайнийСрокДЛ - Сейчас - РазницаВДнях*День - РазницаВЧасах*Час) / Минута);
			
		Осталось = ОбработкаЗаявленийАбонентаКлиентСервер.ПредставлениеРазницыЧерезСколькоЛетМесяцевНедельДней(
			,,, 
			РазницаВДнях, 
			РазницаВЧасах, 
			РазницаВМинутах,
			,,,
			Истина);
		
		Срок = СтрШаблон(НСтр("ru = '%1 (в течение %2)'"), Строка(КрайнийСрокДЛ), Осталось);
		
		Текст = Новый ФорматированнаяСтрока(
			НСтр("ru = 'Обратите внимание! Расписка должна быть отправлена не позднее '"),
			ДокументооборотСКОКлиентСервер.Жирным(Срок),
			Символы.ПС,
			ДокументооборотСКОКлиентСервер.Жирным(НСтр("ru = 'В противном случае новый и текущий сертификаты будут отозваны УЦ АО ""Аналитический центр"".'")));
		
		Элементы.ПредупреждениеКРаспискеДЛ.Заголовок = Текст;
		
	КонецЕсли;
	
	Если ТребуетсяПолучениеРасписки Тогда
		Элементы.НастроитьАвтоматически.Заголовок = НСтр("ru = 'Подписать и отправить расписку'");
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПоказатьСтраницуОтправкиДокументов()
	
	ПрограммноеЗакрытие = Ложь;
	
	АктивизироватьСтраницу(
		ЭтотОбъект, 
		Элементы.ОтправкаДокументов,
		НСтр("ru = 'Отправьте документы в гос. органы'"));
		
	ИзменитьОформлениеСтраницыМЧДиЗПЭД(Ложь);
		
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ОтправитьМЧДЦикл(ТекущийНомер)

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

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

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

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

&НаКлиенте
Процедура Отмена(Команда)
	ПоказатьОшибкуПолученияСертификата();
КонецПроцедуры

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

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

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

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