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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ЧтоДелать()
	
	Возврат Новый ФорматированнаяСтрока(
		Предложение1(), 
		Предложение2(),
		ТекстПроТариф())
		
КонецФункции

&НаСервере
Функция Предложение1()
	
	Если ЭтоМягкоеПредупреждение Тогда
		
		Если ТарифОператораЭДО = Перечисления.ТарифыОператораЭДО.КадровыеРешения Тогда
			Предложение1 = НСтр("ru = 'Чтобы продолжить использование обмена с ФСС и ПФР, необходимо продлить лицензию.'") + Символы.ПС;
		Иначе
			Предложение1 = НСтр("ru = 'Чтобы продолжить использование обмена с ФНС, необходимо продлить лицензию.'") + Символы.ПС;
		КонецЕсли;
		
	Иначе
	
		Параметр1 = ДлительнаяОтправкаКлиентСервер.НазваниеОбъектаВРодительномПадеже(СсылкаНаОбъект);
		
		СертификатНедействителенНетПросроченности = СертификатНедействителен И НЕ СертификатПросрочен
			И НЕ СрокДействияКлючаПросрочен;
		
		Если СертификатНедействителенНетПросроченности Тогда
			СертификатНедействителенПодробнее = Новый ФорматированнаяСтрока(
				НСтр("ru = 'Подробнее'"),,,,
				"https://1c.ru/news/info.jsp?id=31971");
			
			ЭтоЮрЛицо = НЕ ЗначениеЗаполнено(Организация)
				ИЛИ ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоЮрЛицо(Организация);
			
			Предложение1 = Новый ФорматированнаяСтрока(
				НСтр("ru = 'Ваш сертификат 1С-Отчетности издан удостоверяющим центром АО ""Калуга Астрал"".
						   |К сожалению, в связи с истечением срока аккредитации удостоверяющего центра сертификат больше нельзя использовать для подписания документов. '"),
				СертификатНедействителенПодробнее,
				НСтр("ru = '.
						   |
						   |Чтобы продолжить использование 1С-Отчетности, отправьте из программы заявление на бесплатный выпуск сертификата, заявление будет обработано удостоверяющим центром АО ""Аналитический центр"".
						   |'"),
				?(ЭтоЮрЛицо,
				НСтр("ru = 'Также вы можете воспользоваться существующим сертификатом руководителя организации, предварительно зарегистрировав его в 1С-Отчетности.'"),
				НСтр("ru = 'Также вы можете воспользоваться существующим сертификатом ИП, предварительно зарегистрировав его в 1С-Отчетности.'")),
				НСтр("ru = '
						   |После выпуска сертификата повторите отправку '"),
				Параметр1,
						   ".");
			
		Иначе
			МассивКонтроля = Новый Массив;
			Если ЛицензияПросрочена Тогда
				Если ЗначениеЗаполнено(ТарифОператораЭДО) Тогда
					
					Представление = НСтр("ru = '""%1""'");
					Представление = СтрШаблон(Представление, Строка(ТарифОператораЭДО));
					
					Если ТарифОператораЭДО = Перечисления.ТарифыОператораЭДО.КадровыеРешения Тогда
						СсылкаНаТариф = Новый ФорматированнаяСтрока(Представление,,,,"https://astral.ru/lp/1%D1%81-kadrovye-resheniya/");
					ИначеЕсли ТарифОператораЭДО = Перечисления.ТарифыОператораЭДО.ПромоЕНС Тогда
						СсылкаНаТариф = Новый ФорматированнаяСтрока(Представление,,,,"https://astral.ru/lp/1c-promo-ens/");
					КонецЕсли;
					
					Строка = Новый ФорматированнаяСтрока(НСтр("ru = 'лицензию на тариф '"), СсылкаНаТариф);
					МассивКонтроля.Добавить(Строка);
				Иначе
					МассивКонтроля.Добавить(НСтр("ru = 'лицензию'"));
				КонецЕсли;
			КонецЕсли;
			
			Если СертификатПросрочен Тогда
				МассивКонтроля.Добавить(НСтр("ru = 'сертификат'"));
			КонецЕсли;
			
			Если СрокДействияКлючаПросрочен Тогда
				Строка = Новый ФорматированнаяСтрока(НСтр("ru = 'ключ myDSS'"),,,,"https://help.astral.ru/v/147062851");
				МассивКонтроля.Добавить(Строка);
			КонецЕсли;
			
			Параметр2 = "";
			Всего = МассивКонтроля.Количество() - 1;
			Для Счетчик = 0 По Всего Цикл
				Если Счетчик <> 0 И Счетчик = Всего Тогда
					Параметр2 = Новый ФорматированнаяСтрока(Параметр2, НСтр("ru = ' и '"));
				ИначеЕсли Счетчик > 0 Тогда
					Параметр2 = Новый ФорматированнаяСтрока(Параметр2, ", ");
				КонецЕсли;	
				Параметр2 = Новый ФорматированнаяСтрока(Параметр2, МассивКонтроля[Счетчик]);
			КонецЦикла;
			
			Предложение1 = Новый ФорматированнаяСтрока(
				НСтр("ru = 'Для отправки '"), 
				Параметр1, 
				НСтр("ru = ' необходимо продлить '"), 
				Параметр2,
				".",
				Символы.ПС);
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат Предложение1;
	
КонецФункции

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

&НаСервере
Функция ТекстПроТариф()
	
	Если ЭтоМягкоеПредупреждение Тогда
		
		Строка = Новый ФорматированнаяСтрока(
			НСтр("ru = 'Подробнее о тарифе читайте '"),
			Новый ФорматированнаяСтрока(НСтр("ru = 'здесь'"),,,,"https://astral.ru/lp/1%D1%81-kadrovye-resheniya/"),
			".",
			Символы.ПС,
			Символы.ПС);

	Иначе
		Строка = "";
	КонецЕсли;
	
	Возврат Строка;
	
КонецФункции

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

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