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