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

файл
#Область ГлобальныеПеременные

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

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

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

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

&НаСервере
Функция ЗаполнитьДоверенностьНаСервере(ДоверенностьНалогоплательщика, НаОсновании = Неопределено, КПП, ВладелецФ, ВладелецИ, ВладелецО)
	
	Если НаОсновании <> Неопределено Тогда 
		МетаДН = Метаданные.Справочники.ДоверенностиНалогоплательщика;
		Для Каждого Реквизит из МетаДН.Реквизиты Цикл 
			ДоверенностьНалогоплательщика[Реквизит.Имя] = НаОсновании[Реквизит.Имя];
		КонецЦикла;
		
		ДоверенностьНалогоплательщика.ДатаВыдачи = '00010101';
		ДоверенностьНалогоплательщика.ДатаОкончания = '00010101';
		ДоверенностьНалогоплательщика.НомерДовер = "";
		
		Для Каждого МетаТЧ из МетаДН.ТабличныеЧасти Цикл 
			ДоверенностьНалогоплательщика[МетаТЧ.Имя].Очистить();
			Для Каждого Строка из НаОсновании[МетаТЧ.Имя] Цикл 
				СтрокаНов = ДоверенностьНалогоплательщика[МетаТЧ.Имя].Добавить();
				Для Каждого Реквизит из МетаТЧ.Реквизиты Цикл 
					СтрокаНов[Реквизит.Имя] = Строка[Реквизит.Имя];
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;
		
		Возврат Истина;
	КонецЕсли;
	
	ДоверенностьНалогоплательщика.ПредставительЯвляетсяСотрудником = Истина;
	
	// ПризнакДоверителя
	//1 Представляемое лицо
	//2 Законный представитель
	//3 Уполномоченный представитель
	ДоверенностьНалогоплательщика.ПризнакДоверителя = 1;
	
	ФИО = ДоверенностьНалогоплательщика.ФИО.Добавить();
	ФИО.Владелец = Перечисления.СубъектыДоверенностиНалогоплательщика.ПредставительФЛ;
	ФИО.Фамилия = ВладелецФ;
	ФИО.Имя = ВладелецИ;
	ФИО.Отчество = ВладелецО;
	
	Полномочие = ДоверенностьНалогоплательщика.ПолномочияПредставителя.Добавить();
	Полномочие.ПризнакПолныеПолномочия = Истина;
	Полномочие.КПП = КПП;
	
КонецФункции

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

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

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

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

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

&НаКлиенте
Процедура НачатьУстановкуВнешнейКомпонентыЗавершениеСОшибкой(Параметр) Экспорт
	ВыполнитьОбработкуОповещения(Параметр.ОповещениеЗавершения, 1);  //ХЗ вообще, столько ли там параметров
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбщееДействиеИнформацияОПодписке(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Экспорт
	
	СтандартнаяОбработка = Ложь; 
		
	Если Элемент = "КПНастроить" Тогда 		
		ИнтернетПоддержкаПользователейКлиент.ОткрытьСтраницуИнтегрированногоСайта("http://its.1c.ru/bmk/elreps/subscr");
	ИначеЕсли Элемент = "КПИзменить" Тогда 		
		Если КонтекстЭДОКлиент = Неопределено Тогда 
			ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьКонтекстЭДОИЗапуститьМастер", ЭтотОбъект, Новый Структура);
			ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);				
		Иначе 
			ОткрытьМастерПервичногоПодключения();
		КонецЕсли;
	Иначе //"КПСведения"
		ПерейтиПоНавигационнойСсылке("https://1cfresh.com/articles/ES-key_storage_in_cloud");
	КонецЕсли;
			
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Функция НайтиОписаниеПоКоду(Код, МакетПодсказки)
	
	КолонкаКод = МакетПодсказки.Область("C1");
	Область = МакетПодсказки.НайтиТекст(Код,, КолонкаКод);
	Если Область = Неопределено Тогда 
		Возврат "";
	КонецЕсли;
	НомерСтроки=Область.Низ;
	
	Возврат МакетПодсказки.Область(НомерСтроки, 7, НомерСтроки, 7).Текст;
	
КонецФункции

&НаСервере
Функция ОчиститьТаблицуСкрытьПоказатьКолонки(
				ПоказатьКол1=Неопределено, 
				ПоказатьКол2=Неопределено, 
				ПоказатьКол3=Неопределено, 
				ПоказатьКол4=Неопределено, 
				ПоказатьКол5=Неопределено, 
				ПоказатьКол6=Неопределено, 
				ПоказатьКол7=Неопределено, 
				ПоказатьКол8=Неопределено)
	
	ТабличныеДанные.Очистить();
	Для Каждого Колонка из Элементы.ТабличныеДанные.ПодчиненныеЭлементы Цикл 
		Колонка.Видимость = Ложь;
	КонецЦикла;
	Если ПоказатьКол1<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол1);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол2<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол2);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол3<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол3);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол4<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол4);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол5<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол5);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол6<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол6);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол7<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол7);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	Если ПоказатьКол8<>Неопределено Тогда 
		Кол = Элементы.ТабличныеДанные.ПодчиненныеЭлементы.Найти(ПоказатьКол8);
		Если Кол<>Неопределено Тогда 
			Кол.Видимость = Истина;
		КонецЕсли;
	КонецЕсли;
	
КонецФункции
		
&НаСервере
Процедура ПодробностиУчетнойЗаписи(Знач Проверка, МакетПодсказки, КонтекстМодуля)
		
	ЧастьОтчета = Параметры.Отчет.Проверки.ПроверкаУчетнойЗаписи;
	
	Если Проверка = 0 Тогда 
		Событие = ЧастьОтчета.АктивностьСобытие;
		ЭтаФорма.Заголовок = "информация о лицензии";
		
		Сообщение = "Лицензия ""%1""";
		Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ЧастьОтчета.ЛицензияНаименование);
		ДобавитьНадпись(Сообщение, 0);
		
		Сообщение = "Действительна с %1 по %2";
		Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, 
													Формат(ЧастьОтчета.ЛицензияДатаНачала, "ДЛФ=DD"), 
													Формат(ЧастьОтчета.ЛицензияДатаОкончания, "ДЛФ=DD"));
													
		ДобавитьНадпись(Сообщение, 0);
		
		Подсказка = НайтиОписаниеПоКоду(Событие.Код, МакетПодсказки);
		Если Подсказка<>"" Тогда 
			ДобавитьНадпись(Подсказка);
		КонецЕсли;
		
	ИначеЕсли Проверка = 1 Тогда 

		Событие = ЧастьОтчета.СрокГодностиСобытие;
		ЭтаФорма.Заголовок = "период действия лицензии";
		Элементы.ГруппаТабличныеДанные.Заголовок = "Ошибки";
		
		ПолноеОписание = Событие.Описание + "";
		Если ЧастьОтчета.СрокГодностиЧислом = 3 Тогда 
			ЛицензияДатаНачала = Параметры.УчетнаяЗаписьДокументооборота.ЛицензияДатаНачала;
			ПолноеОписание = ПолноеОписание + ". Лицензия начнет действовать "
								+ КонтекстМодуля.ИнтервалСтрокой(КонтекстМодуля.ТекущаяДатаСеансаКлиент(), ЛицензияДатаНачала);
		КонецЕсли;
		
		НоваяЗапись = ТабличныеДанные.Добавить();
		НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
		НоваяЗапись.Ошибка = ПолноеОписание;			
				
	ИначеЕсли Проверка = 2 Тогда //Реквизиты
		
		ЭтаФорма.Заголовок = "отличия реквизитов подключения";
		Сводка = НайтиОписаниеПоКоду("776_0", МакетПодсказки);
		Элементы.ГруппаТабличныеДанные.Заголовок = "Отличающиеся реквизиты";
	    		
		Если ЧастьОтчета.РазличияРеквизитовСведений.Количество() > 0 Тогда 
			
			Событие = ЧастьОтчета.РазличияРеквизитовСведенийСобытие;
			Элементы.ГруппаТабличныеДанные.Видимость = Истина;
			ОчиститьТаблицуСкрытьПоказатьКолонки("ТабличныеДанныеОтличающийсяРеквизит", "ТабличныеДанныеНовоеЗначение", "ТабличныеДанныеСтароеЗначение");
			
		КонецЕсли;		
		
		Важных = 0;
		Прочих = 0;
		Для Каждого Отличие из ЧастьОтчета.РазличияРеквизитовСведений Цикл
			Если Отличие.Важно Тогда 
				Важных = Важных + 1;
			Иначе
				Прочих = Прочих + 1;
			КонецЕсли;
			
			НоваяЗапись = ТабличныеДанные.Добавить();
			НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
			НоваяЗапись.ОтличающийсяРеквизит = Отличие.АтрибутВнутренний;
			НоваяЗапись.СтароеЗначение = Отличие.СтароеЗначение;
			НоваяЗапись.НовоеЗначение = Отличие.НовоеЗначение;
		КонецЦикла;
		
	ИначеЕсли Проверка = 3 Тогда //Доверенности
		
		Запись = ЧастьОтчета.ИнформацияДоверенности[Параметры.Сводка.ИндексЗаписи];
		
		ВладелецЭП = КонтекстМодуля.НормализованныеФИО(
										Параметры.Автонастройка.ВладелецЭП.Фамилия, 
										Параметры.Автонастройка.ВладелецЭП.Имя, 
										Параметры.Автонастройка.ВладелецЭП.Отчество);
										
		ВладелецЭПРп = СклонениеПредставленийОбъектов.ПросклонятьФИО(ВладелецЭП, 2);
			
		Если Запись.Доверенность = Неопределено Тогда 
			Сводка = НайтиОписаниеПоКоду("777", МакетПодсказки);
			Сводка = СтрЗаменить(Сводка, "%1", Запись.КодПолучателя); //ИФНС
			Сводка = СтрЗаменить(Сводка, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
			
			Сводка = СтрЗаменить(Сводка, "%3", ВладелецЭПРп); //ФИО владельца сертификата
			Сводка = СтрЗаменить(Сводка, "%4", ?(Параметры.Отчет.Абонент.ИП, "индивидуальным предпринимателем", "руководителем (законным представителем) организации")); //Руководитель / ИП
			
			ПроблемаСоСроком = Ложь;
			ПроблемаСПредставителем = Ложь;
			
			Ожидаемый = "";
			Фактический = "";
			ВидПроблемы = 0;			
		Иначе
			ПроблемаСоСроком = Ложь;
			ВидПроблемы = 0;
			ПроблемаСПредставителем = Ложь;
			Для Каждого Проблема из Запись.Проблемы Цикл
				Если Проблема.Код = 779 Тогда //Срок годности истёк
					ПроблемаСоСроком = Истина;
					ВидПроблемы = 1;
				ИначеЕсли Проблема.Код = 780 Тогда //Срок годности ещё не начался
					ПроблемаСоСроком = Истина;
					ВидПроблемы = 2;
				ИначеЕсли Проблема.Код = 781 Тогда //
					ПроблемаСПредставителем = Истина;
					Ожидаемый = Проблема.Представитель.Ожидаемый;
					Фактический = Проблема.Представитель.Фактический;
				КонецЕсли;
			КонецЦикла;
			
			Если ПроблемаСПредставителем Тогда 
				Сводка = НайтиОписаниеПоКоду("777_0", МакетПодсказки);
				Сводка = СтрЗаменить(Сводка, "%1", Запись.КодПолучателя); //ИФНС
				Сводка = СтрЗаменить(Сводка, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
				
				ФактическийРп = СклонениеПредставленийОбъектов.ПросклонятьФИО(Фактический, 2);
				ОжидаемыйРп = СклонениеПредставленийОбъектов.ПросклонятьФИО(Ожидаемый, 2);
				
				Сводка = СтрЗаменить(Сводка, "%3", ФактическийРп); //
				Сводка = СтрЗаменить(Сводка, "%4", ОжидаемыйРп); //
			КонецЕсли;
			
			Если ПроблемаСоСроком Тогда 
				Если ПроблемаСПредставителем Тогда 
					Сводка = Сводка + "Также п" + НайтиОписаниеПоКоду("777_1", МакетПодсказки);
				Иначе
					Сводка = "П" + НайтиОписаниеПоКоду("777_1", МакетПодсказки);
				КонецЕсли;
				Сводка = СтрЗаменить(Сводка, "%1", Запись.КодПолучателя); //ИФНС
				Сводка = СтрЗаменить(Сводка, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
				
				Сводка = СтрЗаменить(Сводка, "%3", ?(ВидПроблемы = 1, "истек " 
							+ КонтекстМодуля.ИнтервалСтрокой( КонтекстМодуля.ТекущаяДатаСеансаКлиент(), Запись.Доверенность.ДатаОкончания), "ещё не начался, начнется " 
							+ КонтекстМодуля.ИнтервалСтрокой(КонтекстМодуля.ТекущаяДатаСеансаКлиент(), Запись.Доверенность.ДатаВыдачи))); //
			КонецЕсли;			
		КонецЕсли;
		
		ДобавитьНадпись(Сводка);
		ДобавитьНадпись(" ");
		
		Если Запись.Доверенность = Неопределено Тогда 
			ЭтаФорма.Заголовок = "нет доверенности по направлению";
						
			Рекомендация = НайтиОписаниеПоКоду("778_1", МакетПодсказки);
			Рекомендация = СтрЗаменить(Рекомендация, "%1", Запись.КодПолучателя); //ИФНС
			Рекомендация = СтрЗаменить(Рекомендация, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
			Рекомендация = СтрЗаменить(Рекомендация, "%3", ВладелецЭПРп);
				
			Ссылка = "Введите информацию";
			Действие = "ОбщееДействиеДобавлениеДоверенности";
			ДобавитьНадпись(Рекомендация,,, Ссылка, Действие, Истина);
						
			ШаблонСообщения = "Нет доверенности для ИФНС %1%2";
			Сообщение = СтрЗаменить(ШаблонСообщения, "%1", Запись.КодПолучателя); //ИФНС
			Сообщение = СтрЗаменить(Сообщение, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
		КонецЕсли;
		
		Если Запись.Доверенность = Неопределено Тогда
			
			Элементы.ГруппаТабличныеДанные.Заголовок = "Ошибки";
			
			НоваяЗапись = ТабличныеДанные.Добавить();
			НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
			НоваяЗапись.Ошибка = Сообщение;
				
		Иначе	
			
			Элементы.ГруппаТабличныеДанные.Видимость = Истина;
			Элементы.ТабличныеДанные.Шапка = Ложь;
			ОчиститьТаблицуСкрытьПоказатьКолонки("ТабличныеДанныеОшибка");
			
			Элементы.ГруппаТабличныеДанные.Заголовок = "Ошибки текущей доверенности";
			
			Если ПроблемаСПредставителем Тогда 
				
				Ссылка = "Введите информацию";
				Действие = "ОбщееДействиеДобавлениеДоверенности";
				Подсказка = НайтиОписаниеПоКоду("781", МакетПодсказки);
				
			ИначеЕсли ПроблемаСоСроком Тогда 
				
				Ссылка = "Введите информацию";
				Действие = "ОбщееДействиеДобавлениеДоверенности";
				Подсказка = НайтиОписаниеПоКоду("780", МакетПодсказки);	
				
			КонецЕсли;
			
			Подсказка = СтрЗаменить(Подсказка, "%1", Запись.КодПолучателя); //ИФНС
			Подсказка = СтрЗаменить(Подсказка, "%2", ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "") ); //КПП для ЮЛ
			Подсказка = СтрЗаменить(Подсказка, "%3", ВладелецЭПРп);
						
			ДобавитьНадпись(Подсказка,,, Ссылка, Действие, Истина);
			
			Для Каждого Проблема из Запись.Проблемы Цикл
				
				НоваяЗапись = ТабличныеДанные.Добавить();
				НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
				НоваяЗапись.Ошибка = Проблема.Описание;
				
			КонецЦикла;
		КонецЕсли;
		
	ИначеЕсли Проверка = 4 Тогда //Отсутствующие доверенности списком
		ОчиститьТаблицуСкрытьПоказатьКолонки("ТабличныеДанныеОшибка", "ТабличныеДанныеРекомендуемоеДействие");
		
		Элементы.ГруппаТабличныеДанные.Видимость = Истина;
		Элементы.ГруппаТабличныеДанные.Заголовок = "отсутствующие доверенности по направлениям";
		ЭтаФорма.Заголовок = "нет доверенностей";
		
		ШаблонСообщения = "Нет доверенности по направлению %1";
				
		Для Каждого Индекс из Параметры.Сводка.Фильтр Цикл 
			Запись = ЧастьОтчета.ИнформацияДоверенности[Индекс];
			ИдИФНС = Запись.Направление + " " + Запись.КодПолучателя + ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "");
			
			Сообщение = СтрЗаменить(ШаблонСообщения, "%1", ИдИФНС);
			
			НоваяЗапись = ТабличныеДанные.Добавить();
			НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
			НоваяЗапись.Ошибка = Сообщение;
			НоваяЗапись.РекомендуемоеДействие = "Добавить новую";
		КонецЦикла;
		
	ИначеЕсли Проверка = 5 Тогда //Ошибочные доверенности списком
		ОчиститьТаблицуСкрытьПоказатьКолонки("ТабличныеДанныеДокумент", "ТабличныеДанныеОшибка", "ТабличныеДанныеРекомендуемоеДействие");
		
		Элементы.ГруппаТабличныеДанные.Видимость = Истина;
		Элементы.ГруппаТабличныеДанные.Заголовок = "Доверенности с ошибками";
		ЭтаФорма.Заголовок = "доверенности с ошибками";
		
		ШаблонСообщения = "%1 %2";
				
		Для Каждого Индекс из Параметры.Сводка.Фильтр Цикл 
			Запись = ЧастьОтчета.ИнформацияДоверенности[Индекс];
			ИдИФНС = Запись.Направление + " " + Запись.КодПолучателя + ?(НЕ Параметры.Отчет.Абонент.ИП, ?(ЗначениеЗаполнено(Запись.КПП), " И КПП " + Запись.КПП, ""), "");
			
			ДоверенностьСтрокой = "от "+СокрЛП(Формат(Запись.Доверенность.ДатаВыдачи, "ДЛФ=DD"));
			
			Сообщение = СтрЗаменить(ШаблонСообщения, "%1", ИдИФНС);
			Сообщение = СтрЗаменить(Сообщение, "%2", ДоверенностьСтрокой);
			
			ТекстОшибки = "";
			Для Каждого Проблема из Запись.Проблемы Цикл 
				ТекстОшибки = ТекстОшибки +?(ТекстОшибки="", "", "; ")+ Проблема.Описание;
			КонецЦикла;
			
			НоваяЗапись = ТабличныеДанные.Добавить();
			НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
			НоваяЗапись.Документ = Сообщение;
			НоваяЗапись.Ошибка = ТекстОшибки;
			НоваяЗапись.РекомендуемоеДействие = "Добавить новую";
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПодробностиПодключений(Знач Проверка, МакетПодсказки, КонтекстМодуля)
	
	ЧастьОтчета = Параметры.Отчет.Проверки.ПроверкаПодключений;
	ВывелЗаголовок = Ложь;
	
	Элементы.ГруппаТабличныеДанные.Видимость = Истина;	
	ТабличныеДанные.Очистить();
	Для Каждого Колонка из Элементы.ТабличныеДанные.ПодчиненныеЭлементы Цикл 
		Колонка.Видимость = Ложь;
	КонецЦикла;
	
	ОчиститьТаблицуСкрытьПоказатьКолонки("ТабличныеДанныеГруппаURL", "ТабличныеДанныеСлужба", "ТабличныеДанныеОшибка", "ТабличныеДанныеСостояние");
	
	Если Проверка = 0 Тогда 
		
		ЭтаФорма.Заголовок = "предупреждения проверки подключений";
		
		//Сводка		
		Сводка = НайтиОписаниеПоКоду("1281_0", МакетПодсказки);
		ДобавитьНадпись(Сводка);
		ДобавитьНадпись(" ");
		
		Для Каждого Проблема из ЧастьОтчета.Предупреждения Цикл
			ДобавитьНадпись(Проблема.Описание,,,,, "•");
		КонецЦикла;
		
	//1153 тестовый режим
	ИначеЕсли Проверка = 1 Тогда 
		
		ЭтаФорма.Заголовок = "ошибки подключений к сервисам";
						
		Элементы.ГруппаТабличныеДанные.Заголовок = "Направления сдачи отчетности И их недоступные сервисы";
		
		ВсегоНедоступных = 0;
		СоСреднимКачеством = 0;
		СПлохимКачеством = 0;
		СХорошимКачеством = 0;
		ДоступныхЧерезШлюз = 0;
		НедоступныхПочты = 0;
		НедоступныхПрочих = 0;
		НедоступнаТолькоПочта = Ложь;
		Для Каждого Ресурс из ЧастьОтчета.Ресурсы Цикл
			Если Ресурс.Результат Тогда 
				Продолжить;
			КонецЕсли;
			
			ВсегоНедоступных = ВсегоНедоступных + 1;
			
			ПП = Ресурс.ПараметрыПодключения;
			
			Если ПП.Свойство("Адрес") Тогда 
				НедоступныхПрочих = НедоступныхПрочих + 1;
			Иначе 
				НедоступныхПочты = НедоступныхПочты + 1;
			КонецЕсли;
			
			Адрес = ПП.ПредставлениеХоста;
			
			ДоступностьЗаЧас = 0;
			ТекстСостояния = "";
			
			Если Ресурс.СервисПроверки.Использовался<>Неопределено И Ресурс.СервисПроверки.Использовался Тогда 
				Если Ресурс.СервисПроверки.Доступен Тогда 
					ДоступныхЧерезШлюз = ДоступныхЧерезШлюз + 1;
				КонецЕсли;
				
				ДоступностьЗаЧас = Ресурс.СервисПроверки.ДоступностьЗаЧас;
				
				Если ДоступностьЗаЧас>95 Тогда 
					ТекстСостояния = "Доступен у всех";
					СХорошимКачеством = СХорошимКачеством + 1;
				ИначеЕсли ДоступностьЗаЧас>40 Тогда 
					СоСреднимКачеством = СоСреднимКачеством + 1;		
					ТекстСостояния = "Недоступен у некоторых";
				ИначеЕсли ДоступностьЗаЧас>0 Тогда 
					СПлохимКачеством = СПлохимКачеством + 1;
					ТекстСостояния = "Недоступен у большинства";
				ИначеЕсли ДоступностьЗаЧас<=0 Тогда 
					СПлохимКачеством = СПлохимКачеством + 1;
					ТекстСостояния = "Недоступен у всех";
				КонецЕсли;
			КонецЕсли;
			
			НоваяЗапись = ТабличныеДанные.Добавить();
			НоваяЗапись.ИндексЗаписи = ТабличныеДанные.Количество() - 1;
			НоваяЗапись.URL = Адрес;
			НоваяЗапись.URL1 = Адрес;
			НоваяЗапись.Служба = ПП.Псевдоним;
			НоваяЗапись.Ошибка = Ресурс.Ошибка.Описание;
			НоваяЗапись.Состояние = ТекстСостояния;
			НоваяЗапись.СостояниеЧислом = ДоступностьЗаЧас;
			
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПодробностиКомпонентов(Знач Проверка, МакетПодсказки, КонтекстМодуля)
	
	ЧастьОтчета = Параметры.Отчет.Проверки.ПроверкаКомпонентов;
	ЧастьОтчета2 = Параметры.Отчет.Проверки.ПроверкаКриптоопераций;
	ТипКлиента = Параметры.Отчет.ДополнительнаяИнформация["ТипКлиентскогоПодключенияЧислом"];
	ЛичныйСертификат = Параметры.Отчет.Проверки.ПроверкаУчетнойЗаписи.ИнформацияЛичногоСертификата;
	
	Если Проверка = 0 Тогда 
		
		ЭтаФорма.Заголовок = "проблемы проверки компонентов";
		Элементы.ГруппаТабличныеДанные.Заголовок = "Ошибки";
		
		Проблем = 0;
		Если НЕ ЧастьОтчета.Криптокомпонент.Подключен Тогда
			Проблем = Проблем + 1;
		КонецЕсли;
		Если НЕ ЧастьОтчета.Криптопровайдеры.Подключен Тогда
			Проблем = Проблем + 1;
		КонецЕсли;
		Если НЕ ЧастьОтчета.РасширениеРаботыСФайлами.Подключен Тогда
			Проблем = Проблем + 1;
		КонецЕсли;
		Если ЛичныйСертификат.СрокГодности>0 Тогда
			Проблем = Проблем + 1;
		КонецЕсли;
		
		Если ЧастьОтчета.Криптокомпонент.Подключен Тогда
			Для Каждого Криптооперация из ЧастьОтчета2 Цикл
				Если Криптооперация.Успешно Тогда 
					Продолжить;
				КонецЕсли;
				Проблем = Проблем + 1;
				
				Операция = Криптооперация.Операция;
				Ошибка = Криптооперация.ОписаниеОшибки;
			КонецЦикла;
		КонецЕсли;
		
		//Сводка		
		Сводка = НайтиОписаниеПоКоду("2304_0", МакетПодсказки);
		Сводка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сводка, 
												КонтекстМодуля.ПростоеСклонение(Проблем, "а", "ы", "ы"), 
												Проблем, 
												КонтекстМодуля.ПростоеСклонение(Проблем, "а", "ы", ""));
		ДобавитьНадпись(Сводка);
		ДобавитьНадпись(" ");
		РекомендацийВсего = 0;
		
		Элементы.ТабличныеДанные.Шапка = Ложь;
		ТабличныеДанные.Очистить();
		Для Каждого Колонка из Элементы.ТабличныеДанные.ПодчиненныеЭлементы Цикл 
			Колонка.Видимость = Ложь;
		КонецЦикла;
		
		СрокГодности = ЛичныйСертификат.СрокГодности;
		
		Если СрокГодности = 1 Тогда //Подходит к концу
			Описание = НайтиОписаниеПоКоду("8448_8", МакетПодсказки);
			ДобавитьНадпись(Описание);
		ИначеЕсли СрокГодности = 2 Тогда //Закончился
			Описание = НайтиОписаниеПоКоду("8448_6", МакетПодсказки);
			ДобавитьНадпись(Описание);
		ИначеЕсли СрокГодности = 3 Тогда //Ещё не начался
			Описание = НайтиОписаниеПоКоду("8448_7", МакетПодсказки);
			ДобавитьНадпись(Описание);
		КонецЕсли;
							
		Если НЕ ЧастьОтчета.Криптопровайдеры.Подключен Тогда
			
			Если ЧастьОтчета.Криптопровайдеры.Состояние = 2 Тогда //Нет КП
				ОписаниеПроблемы = НайтиОписаниеПоКоду("2304_7", МакетПодсказки);
				ДобавитьНадпись(ОписаниеПроблемы);
			ИначеЕсли ЧастьОтчета.Криптопровайдеры.Состояние = 1 Тогда //Несколько конфликтующих КП
				ОписаниеПроблемы = НайтиОписаниеПоКоду("2304_6", МакетПодсказки);
				ДобавитьНадпись(ОписаниеПроблемы);
			КонецЕсли;
		КонецЕсли;
		Если НЕ ЧастьОтчета.РасширениеРаботыСФайлами.Подключен Тогда
			ШаблонСообщения = "Не удалось подключить расширение для работы с файлами из-за ошибки ""%1"".";
			ОписаниеПроблемы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, ЧастьОтчета.РасширениеРаботыСФайлами.ОписаниеОшибки);
			ДобавитьНадпись(ОписаниеПроблемы);
		КонецЕсли;
		Если ЧастьОтчета.Криптокомпонент.Подключен Тогда
			Для Каждого Криптооперация из ЧастьОтчета2 Цикл
				Если Криптооперация.Успешно Тогда 
					Продолжить;
				КонецЕсли;
				
				Операция = Криптооперация.Операция;
				Ошибка = Криптооперация.ОписаниеОшибки;
				ОписаниеПроблемы = "Не выполнена операция " +НРег(Операция)+", из-за ошибки: " + Ошибка;
				ДобавитьНадпись(ОписаниеПроблемы);
				
			КонецЦикла;
		КонецЕсли;
			
		ДобавитьНадпись(" ");
	
		Если СрокГодности = 1 Тогда //Подходит к концу
			Рекомендация = НайтиОписаниеПоКоду("8448_5", МакетПодсказки);
			ИмяСсылки = ДобавитьНадпись(Рекомендация,,, "продлить", "ОбщееДействиеПродлениеСертификата", Истина);
		ИначеЕсли СрокГодности = 2 Тогда //Закончился
			Рекомендация = НайтиОписаниеПоКоду("8448_3", МакетПодсказки);
			ИмяСсылки = ДобавитьНадпись(Рекомендация,,, "продлить", "ОбщееДействиеПродлениеСертификата", Истина);
		ИначеЕсли СрокГодности = 3 Тогда //Ещё не начался
			Рекомендация = НайтиОписаниеПоКоду("8448_4", МакетПодсказки);
			ИмяСсылки = ДобавитьНадпись(Рекомендация,,,,, Истина);
		КонецЕсли;
		
		Если НЕ ЧастьОтчета.Криптокомпонент.Подключен Тогда
			
		КонецЕсли;
		
		Если НЕ ЧастьОтчета.Криптопровайдеры.Подключен Тогда
			Если ЧастьОтчета.Криптопровайдеры.Состояние = 2 Тогда //Нет КП
				КП = ПолучитьКриптопровайдераОтчета(Параметры.Отчет, Параметры.Автонастройка);
				
				Если КП = Неопределено или КП = Перечисления.ТипыКриптоПровайдеров.VipNet Тогда 
					Рекомендация = НайтиОписаниеПоКоду("2304_8", МакетПодсказки);
					ИмяСсылки = ДобавитьНадпись(Рекомендация,,, "Установите", "ОбщееДействиеУстановкаВипнет", Истина);
				КонецЕсли;
				Если КП = Неопределено или КП = Перечисления.ТипыКриптоПровайдеров.CryptoPro Тогда 
					Рекомендация = НайтиОписаниеПоКоду("2304_9", МакетПодсказки);
					ИмяСсылки = ДобавитьНадпись(Рекомендация,,, "Перейти на сайт разработчика", "ОбщееДействиеЗагрузкаКриптопро", Истина);
				КонецЕсли;
			
			ИначеЕсли ЧастьОтчета.Криптопровайдеры.Состояние = 1 Тогда //Несколько конфликтующих КП
				
				ПараметрыКП = Неопределено;
				КП_2 = ПолучитьКриптопровайдераОтчета(Параметры.Отчет, Параметры.Автонастройка, ПараметрыКП);
				
				Рекомендация = НайтиОписаниеПоКоду("2304_a", МакетПодсказки);
				ИмяСсылки = ДобавитьНадпись(Рекомендация,,,,, Истина);
				
				Если КП_2 <> Неопределено Тогда
					ИзвестныеКриптопровайдеры = КриптографияЭДКОКлиентСервер.ИзвестныеКриптопровайдеры();
					ИндексКриптопровайдеров = Неопределено;
					КП_2 = ПараметрыКП.Представление;
					Для каждого Эл из Параметры.Отчет.Криптопровайдеры Цикл
						Если Эл.Представление = ПараметрыКП.Имя Тогда
							Продолжить;
						КонецЕсли;
						СвойстваКриптопровайдера = КриптографияЭДКОКлиентСервер.СвойстваКриптопровайдера(
							Эл.Представление,,
							ИзвестныеКриптопровайдеры,
							ИндексКриптопровайдеров);
						КП_1 = ?(СвойстваКриптопровайдера <> Неопределено, СвойстваКриптопровайдера.Представление, Эл.Представление);
					КонецЦикла;
					Рекомендация = НайтиОписаниеПоКоду("2304_d", МакетПодсказки);
					Рекомендация = СтрЗаменить(Рекомендация, "%1", КП_1);
					Рекомендация = СтрЗаменить(Рекомендация, "%2", КП_2);
										
					ИмяСсылки = ДобавитьНадпись(Рекомендация,,, "отправив заявление", "ОбщееДействиеИнформацияОПодписке", Истина);
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
		Если НЕ ЧастьОтчета.РасширениеРаботыСФайлами.Подключен Тогда
			Рекомендация = "";
			Если ТипКлиента = 3 Тогда //ВебКлиент
				Рекомендация = НайтиОписаниеПоКоду("2304_c", МакетПодсказки);
			Иначе
				Рекомендация = НайтиОписаниеПоКоду("2304_b", МакетПодсказки);
			КонецЕсли;
			Если Рекомендация <> "" Тогда 
				ИмяСсылки = ДобавитьНадпись(Рекомендация,,,,, Истина);
			КонецЕсли;
		КонецЕсли;
		
		Если ЧастьОтчета.Криптокомпонент.Подключен Тогда
			Для Каждого Криптооперация из ЧастьОтчета2 Цикл
				Если Криптооперация.Успешно Тогда 
					Продолжить;
				КонецЕсли;
				
				Операция = Криптооперация.Операция;
				Ошибка = Криптооперация.ОписаниеОшибки;
				
				Если Найти(Криптооперация.ОписаниеОшибки, "отменена пользователем")>0 Тогда 
					Рекомендация = НайтиОписаниеПоКоду("8448_1", МакетПодсказки);
					ДобавитьНадпись(Рекомендация,,, "Повторить операцию", "ОбщееДействиеПроверитьКриптооперацииПовторно", Истина);
				ИначеЕсли Найти(Криптооперация.ОписаниеОшибки, "не найден")>0 Тогда 
					Рекомендация = НайтиОписаниеПоКоду("8448_2", МакетПодсказки);
					ДобавитьНадпись(Рекомендация,,,,, Истина);				
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТабличныеДанныеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле.Имя = "ТабличныеДанныеURL" Тогда 
		СтандартнаяОбработка = Ложь;
		
		URL = Элемент.ТекущиеДанные.URL;
		Если Лев(URL, 4)<>"http" Тогда 
			Возврат;
		КонецЕсли;
		ПерейтиПоНавигационнойСсылке(URL);
		Возврат;
	КонецЕсли;
	
	Если Поле.Имя = "ТабличныеДанныеРекомендуемоеДействие" Тогда
		Индекс = Параметры.Сводка.Фильтр[Элементы.ТабличныеДанные.ТекущиеДанные.ИндексЗаписи];
		Параметры.Сводка.Вставить("ИндексЗаписи", Индекс);
		ОбщееДействиеДобавлениеДоверенности(Элемент, Неопределено, Ложь);
		Возврат;
	КонецЕсли;
	
	Если Поле.Имя = "ТабличныеДанныеОтпечатокСертификата" Тогда 
		Отпечаток = Элементы.ТабличныеДанные.ТекущиеДанные.ОтпечатокСертификата;
		Сертификат = Параметры.Автонастройка.СертификатыCA.Получить(Отпечаток);
		Если Сертификат = Неопределено Тогда 
			Сертификат = Параметры.Автонастройка.СертификатыROOT.Получить(Отпечаток);
		КонецЕсли;		
		Если Сертификат = Неопределено Тогда 
			ПоказатьОповещениеПользователя("Ошибка открытия",, "Сертификат по отпечатку не обнаружен", БиблиотекаКартинок.Ошибка32);
		Иначе
			//СертификатBase64 = "-----BEGIN CERTIFICATE-----" + Символы.ПС + Сертификат + Символы.ПС + "-----END CERTIFICATE-----";
			ЗаписатьВФайлИОткрытьСертификат(Отпечаток, Сертификат);
		КонецЕсли;
		
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

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

#Область ПрограммныйИнтерфейс

&НаКлиенте
Процедура ДействиеНастроитьПрокси(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеНастроитьПрокси(Неопределено, Неопределено, Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура ДействиеАвтонастройка(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеАвтонастройка(Неопределено, Неопределено, Неопределено);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ДействиеПроверитьКриптооперацииПовторно(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеПроверитьКриптооперацииПовторно(Неопределено, Неопределено, Неопределено);
	
КонецПроцедуры

&НаКлиенте
Процедура ДействиеЗагрузкаКриптопро(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеЗагрузкаКриптопро(Неопределено, Неопределено, Неопределено);
			
КонецПроцедуры

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

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

&НаКлиенте
Процедура ДействиеУстановкаВипнет(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеУстановкаВипнет(Неопределено, Неопределено, Неопределено);
			
КонецПроцедуры

&НаКлиенте
Процедура ДействиеУстановкаРасширения(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеУстановкаРасширения(Неопределено, Неопределено, Неопределено);
			
КонецПроцедуры

&НаКлиенте
Процедура ДействиеУстановкаКК(Результат, ВхКонтекст) Экспорт
	
	ОбщееДействиеУстановкаКК(Неопределено, Неопределено, Неопределено);
			
КонецПроцедуры

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

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

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