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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	
	ИнициализацияСостоянияПФР();
	ИзменитьОформлениеФормы();

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

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

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

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

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

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

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

&НаКлиенте
Процедура СоздатьЗаявление(Команда)
	
	ЗакрытьФорму(ИзначальныйВидЗаявленияПФР);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура УстановитьЗаголовокСсылки(Элемент, Название)
	
	Номер  = НомерСсылки(Элемент);
	Часть1 = Новый ФорматированнаяСтрока(НСтр("ru = 'Создать'"),,,,"Создать");
	
	Элемент.Заголовок = Новый ФорматированнаяСтрока(
		Номер,
		Часть1,
		" ",
		Название,
		".");
		
КонецПроцедуры

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

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

	Параметры.Свойство("Организация", Организация);
	Параметры.Свойство("Основание", ТекущееЗаявлениеПо1Сотчетности);
	
	ИспользуетсяОднаОрганизация = РегламентированнаяОтчетностьВызовСервера.ИспользуетсяОднаОрганизация();

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

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

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

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

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