&НаКлиенте
Перем КонтекстЭДОКлиент;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Параметры.Свойство("АдресСведенийПоОшибкам", АдресСведенийПоОшибкам);
Элементы.ОшибкиОбновления.Видимость = ЭтоАдресВременногоХранилища(АдресСведенийПоОшибкам);
ОткрыватьВЛюбомСлучае = Параметры.Свойство("АдресДереваНовых") И ЗначениеЗаполнено(Параметры.АдресДереваНовых);
АдресДереваНовых = Неопределено;
Параметры.Свойство("АдресДереваНовых", АдресДереваНовых);
ЗаполнитьДеревоНовое(АдресДереваНовых);
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обмен с контролирующими органами %1'"), Формат(ДатаПоследнегоОбновления, "ДФ='dd.MM.yyyy H:mm'"));
Если Не КоличествоНовых И НЕ ОткрыватьВЛюбомСлучае Тогда
Отказ = Истина;
КонецЕсли;
Попытка
МодульСверкаСФНС = ОбщегоНазначения.ОбщийМодуль("СверкаСФНС");
Исключение
МодульСверкаСФНС = Неопределено;
КонецПопытки;
Если МодульСверкаСФНС <> Неопределено Тогда
МодульСверкаСФНС.ФормаНовыхСобытий_ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Пометка прочтенным" Тогда
СтрокиДерева = Новое.ПолучитьЭлементы();
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
Если СтрокаДерева.Ссылка = Источник Тогда
СтрокаДерева.НеПрочитано = Ложь;
СписокСсылок = Новый Массив;
СписокСсылок.Добавить(Источник);
ОбновитьКоличествоНовых(ЭтаФорма);
Прервать;
КонецЕсли;
КонецЦикла;
ИначеЕсли ИмяСобытия = "Закрыть форму новых сообщений 1С-Отчетности" И Источник <> ЭтаФорма Тогда
ОтключитьОбработчикОжидания("ИнициализацияКонтекстЭДО");
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Оповестить("Получены новые сообщения 1С-Отчетности", АдресСведенийПоОшибкам, ЭтаФорма);
Если ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ФормаОткрыта("ОбщаяФорма.РегламентированнаяОтчетность") Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ИнициализацияКонтекстЭДОЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ИнициализацияКонтекстЭДОЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
ТекстОшибкиИнициализацииКонтекстаЭДО = Результат.ТекстОшибки;
ОтметитьДеревоПросмотренным();
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ФормаНовыхСобытий_ПослеОткрытия();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыНовое
&НаКлиенте
Процедура ТаблицаНовоеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Ссылка = Элемент.ТекущиеДанные.Ссылка;
Если Поле.Имя = "ТаблицаНовоеОбъектНаименованиеСсылка" Тогда
Если Элемент.ТекущиеДанные.ЕстьОтвет Тогда
Если КонтекстЭДОКлиент <> Неопределено И НЕ ПереопределитьОткрытие(Элемент) Тогда
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОН(Ссылка);
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
КонтекстЭДОКлиент.ПоказатьОтветНаЗапросИОС(Ссылка);
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаВыпискуИзЕГРЮЛ_ЕГРИП") Тогда
КонтекстЭДОКлиент.ПоказатьОтветНаЗапросВыпискиЕГРЮЛ_ЕГРИП(Ссылка);
КонецЕсли;
КонецЕсли;
ИначеЕсли НЕ ПереопределитьОткрытие(Элемент) Тогда
РедактироватьОбъект(Элемент);
КонецЕсли;
ИначеЕсли Поле.Имя = "ТаблицаНовоеСтатус" Тогда
ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
ИначеЕсли Поле.Имя = "ТаблицаНовоеЕстьКритическиеОшибкиОтправки" И Элемент.ТекущиеДанные.ЕстьКритическиеОшибкиОтправки Тогда
ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
ИначеЕсли НЕ ПереопределитьОткрытие(Элемент) Тогда
РедактироватьОбъект(Элемент);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СообщениеПроОшибкиОбменаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВходящийКонтекст = ПолучитьИзВременногоХранилища(АдресСведенийПоОшибкам);
ДлительнаяОтправкаКлиент.ПоказатьОшибки(КонтекстЭДОКлиент.ПутьКОбъекту, ВходящийКонтекст);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОтметитьДеревоПросмотренным()
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтметитьДеревоПросмотренным(Новое);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьОбъект(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Ссылка = ТекущиеДанные.Ссылка;
Если ЗначениеЗаполнено(Ссылка) Тогда
ПоказатьЗначение(,Ссылка);
Оповестить("Пометка прочтенным", , Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьКритическиеОшибкиПоСсылке(Ссылка)
Если КонтекстЭДОКлиент = Неопределено Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
Возврат;
КонецЕсли;
КонтекстЭДОКлиент.ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуСтатусовОтправкиИзСписка(Элемент)
Если КонтекстЭДОКлиент = Неопределено Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибкиИнициализацииКонтекстаЭДО);
КонецЕсли;
КонтекстЭДОКлиент.ПоказатьФормуСтатусовОтправкиИзСписка(Элемент);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьКоличествоНовых(Форма)
Форма.КоличествоНовых = ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ОбновитьКоличествоНовых(Форма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДеревоНовое(АдресДереваНовых = Неопределено)
Если АдресДереваНовых = Неопределено Тогда
ИнициаторСеанса = Перечисления.ИнициаторыСеансовСвязиСКонтролирующимиОрганами.Автообмен;
ДеревоНовое = РеквизитФормыВЗначение("Новое");
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЗаполнитьДеревоНовое(ДеревоНовое, ИнициаторСеанса);
ЗначениеВРеквизитФормы(ДеревоНовое, "Новое");
Иначе
ЗначениеВРеквизитФормы(ПолучитьИзВременногоХранилища(АдресДереваНовых), "Новое");
КонецЕсли;
ДатаПоследнегоОбновления = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ДатаПоследнегоОбновленияСобытий(ИнициаторСеанса);
Если Не ЗначениеЗаполнено(ДатаПоследнегоОбновления) Тогда
ДатаПоследнегоОбновления = ТекущаяУниверсальнаяДата();
КонецЕсли;
ДатаПоследнегоОбновления = МестноеВремя(ДатаПоследнегоОбновления);
ОбновитьКоличествоНовых(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Функция ПереопределитьОткрытие(Элемент)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Ссылка = ТекущиеДанные.Ссылка;
Переопределить = Ложь;
Попытка
МодульСверкаСФНС = ОбщегоНазначенияКлиент.ОбщийМодуль("СверкаСФНСКлиент");
Исключение
МодульСверкаСФНС = Неопределено;
КонецПопытки;
Если МодульСверкаСФНС <> Неопределено Тогда
СтандартнаяОбработка = Истина;
МодульСверкаСФНС.ФормаНовыхСобытий_ТаблицаНовоеПриОткрытии(ЭтотОбъект, Ссылка, СтандартнаяОбработка);
Если НЕ СтандартнаяОбработка Тогда
Переопределить = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Переопределить;
КонецФункции
#КонецОбласти