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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СформироватьДеревоОшибокПоОрганизациям(ДеревоОшибок, Организации, Ошибки)

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

	Элементы.ОшибкиПоОрганизациям.Отображение = ОтображениеТаблицы.Дерево;
	
КонецПроцедуры

&НаСервере
Процедура СформироватьДеревоОшибокПлоско(ДеревоОшибок, Ошибки)

	Корень = ДеревоОшибок.Строки;
	Для каждого Ошибка Из Ошибки Цикл
		УровеньОшибки = Корень.Добавить();
		УровеньОшибки.ОписаниеОшибки = Ошибка.ОписаниеОшибки;
		УровеньОшибки.Организация = Ошибка.Организация;
	КонецЦикла; 

	Элементы.ОшибкиПоОрганизациям.Отображение = ОтображениеТаблицы.Список;
	
КонецПроцедуры


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

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

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