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

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

&НаКлиенте
Перем МассивСообщенийКлиент Экспорт;

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

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

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

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

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

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

&НаКлиенте
Процедура КомандаРасшифровать(Команда)
	
	ПродолжитьАвтообмен = Истина;
	ЗакрытьФормуИНачатьРасшифровку();
	
КонецПроцедуры

&НаКлиенте
Процедура БольшеНеПоказывать(Команда)
	
	ПараметрыПриложения["БРО.БольшеНеПоказыватьСообщенияТребующиеРасшифровки"] = Истина;
	ПродолжитьАвтообмен = Ложь;
	Закрыть(ПродолжитьАвтообмен);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьПозже(Команда)
	
	Закрыть();
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Процедура ОпределитьКоличествоСообщенийКРасшифровке()

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

&НаСервере
Процедура ДополнитьИнформациейПроТребованийИУведомлений()

	Требований  = ТаблицаРасшифровкиПоОрганизациям.Итог("Требований");
	Уведомлений = ТаблицаРасшифровкиПоОрганизациям.Итог("Уведомлений");
	
	Элементы.ГруппаТребований.Видимость = Требований > 0 ИЛИ Уведомлений > 0;
	Если Требований = 0 И Уведомлений = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ШаблонТребований  = ";%1 требование;;%1 требования;%1 требований;%1 требований";
	ШаблонУведомлений = ";%1 уведомление;;%1 уведомления;%1 уведомлений;%1 уведомлений";

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

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

&НаКлиенте
Процедура СрокиНажатие(Элемент)
	ТребованияФНСКлиент.ПоказатьИнформациюоСроках();
КонецПроцедуры

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

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