&НаКлиенте
Перем КонтекстЭДОКлиент;
&НаКлиенте
Перем ВыполняемоеОповещение;
&НаКлиенте
Перем ОповещениеОЗавершении;
&НаКлиенте
Перем ФормаВладелец;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("ОтчетСсылка") И ТипЗнч(Параметры.ОтчетСсылка) =
Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр")
И Параметры.Свойство("ТипОперации") И Параметры.ТипОперации <> "Отзыв"
И Параметры.ТипОперации <> "ОтправкаВФТС" Тогда
КлючСохраненияПоложенияОкна = "МашиночитаемыеДоверенностиРаспределенныйРеестр";
УстановкаЭтапаОтправки(ЭтотОбъект, "Подготовка");
КонецЕсли;
АвтозапросНачальноеЧислоПопыток = 1;
ЗаменитьБубликНаДинамичный();
Ошибки = Новый ФиксированныйМассив(Новый Массив);
ИспользуетсяОднаОрганизация = РегламентированнаяОтчетностьВызовСервера.ИспользуетсяОднаОрганизация();
ОбработатьВходныеПараметры(Параметры);
Элементы.ФормаЗакрыть.Видимость = Ложь;
Элементы.Показать.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ДлительнаяОтправкаКлиент.ИзменитьПараметрыДлительнойОтправкиКлиентСервер("ИдентификаторПолучателя", ИдентификаторПолучателя);
Если ЗначениеЗаполнено(ТекущаяОрганизация) Тогда
УстановитьТекущуюОрганизацию(ТекущаяОрганизация);
КонецЕсли;
ОчиститьСообщения();
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Изменить состояние длительного действия" Тогда
ВывестиУниверсальноеСостояние(Параметр);
Возврат;
КонецЕсли;
РазборОбщихПараметровОповещения(ИмяСобытия, Параметр, Источник);
Если ЭтоОбмен Тогда
ОбработкаОповещенийОбновления(ИмяСобытия, Параметр, Источник);
ИначеЕсли ЭтоОбновлениеМодуля Тогда
ОбработкаОповещенийОбновленияМодуля(ИмяСобытия, Параметр, Источник);
ИначеЕсли ЭтоОтправкаЗаявления Тогда
ОбработкаОповещенийОтправкиЗаявления(ИмяСобытия, Параметр, Источник);
Иначе
ОбработкаОповещенийОтправки(ИмяСобытия, Параметр, Источник);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиУниверсальноеСостояние(Параметр)
Элементы.ПоясняющийТекст.Заголовок = Параметр.Надпись;
Элементы.ФормаЗакрыть.Видимость = Параметр.ПоказатьКнопкуЗакрыть;
Элементы.ДекорацияДлительнаяОперация.Картинка = Параметр.Картинка;
Если ЗначениеЗаполнено(Параметр.Заголовок) Тогда
Заголовок = Параметр.Заголовок;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если РазрешитьЗакрытиеФормы Тогда
Если НЕ СбросПараметровВыполнен Тогда
Отказ = Истина;
ОпределитьНеобходимостьЗакрытияБезДальнейшихДействий();
ПодключитьОбработчикОжидания("Подключаемый_ЗакрытьФорму", 0.1, Истина);
КонецЕсли;
Если ЭтоОтправкаЗаявления И НЕ ЕстьОшибки Тогда
Оповестить("Успешная отправка заявления. Закрыть форму владельца", , Заявление);
КонецЕсли;
Иначе
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_ПолучитьОшибкиИЗакрытьФорму", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПоясняющийТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = НСтр("ru = 'Уведомления'") Тогда
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.НайтиЗаявлениеПФРВФорме1СОтчетность(ОтчетСсылка, ТекущаяОрганизация);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
ОпределитьНеобходимостьЗакрытияБезДальнейшихДействий();
Если ЗначениеЗаполнено(ПротоколНесданогоОтчета) Тогда
ПротоколНесданогоОтчета = Неопределено;
КонецЕсли;
Подключаемый_ЗакрытьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ПовторитьПопытку(Команда)
Если ЭтоЗагрузкаДоверенности Тогда
АвтозапросНачальноеЧислоПопыток = 1;
РеквизитыДоверенности = Новый Структура;
РеквизитыДоверенности.Вставить("НомерДоверенности", РеквизитыАвтообмена.НомерДоверенности);
РеквизитыДоверенности.Вставить("ИННДоверителя", РеквизитыАвтообмена.ИННДоверителя);
РеквизитыДоверенности.Вставить("ИННПредставителя", РеквизитыАвтообмена.ИННПредставителя);
ОписаниеОповещения = Новый ОписаниеОповещения("ПовторитьПопыткуПослеПолученияДанныхМЧДРР", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьДанныеМЧДРР(
ОписаниеОповещения,
РеквизитыДоверенности,
ФормаВладелец,
Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Показать(Команда)
Подключаемый_ЗакрытьФорму();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура Подключаемый_ПолучитьОшибкиИЗакрытьФорму()
ПолучитьВсеОшибки();
РазрешитьЗакрытиеФормы = Истина;
ЗакрытьБезДальнейшихДействий = Истина;
Подключаемый_ЗакрытьФорму();
КонецПроцедуры
#Область ВыводНадписей
&НаКлиенте
Функция ТекстПроНовыеИОшибкиПриРасшифровке(Параметр) Экспорт
КоличествоНеРасшифрованных = Параметр.КоличествоНеРасшифрованных;
КоличествоРасшифрованных = Параметр.КоличествоРасшифрованных;
ВсегоСообщений = Параметр.ВсегоСообщений;
РасшифрованыВсе = КоличествоРасшифрованных = ВсегоСообщений;
РасшифрованаЧасть = КоличествоРасшифрованных <> ВсегоСообщений И КоличествоРасшифрованных > 0;
НиОдноНеРасшифровано = КоличествоРасшифрованных = 0;
ТекстПроНовыеСообщения = НСтр("ru = 'Получены новые сообщения от контролирующих органов.'");
ТекстСообщенияГотовыКПросмотру = НСтр("ru = 'Сообщения готовы к просмотру.'");
Если ЕстьНовые И ЕстьОшибки Тогда
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.РасшифрованныеСообщения;
Если ЭтоАвторасшифровка Тогда
ОсновнойТекст = ТекстПроНовыеСообщения;
Иначе
ОсновнойТекст = ТекстСообщенияГотовыКПросмотру;
КонецЕсли;
Если РасшифрованыВсе Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ОсновнойТекст,
Символы.ПС,
Символы.ПС,
СтрокаКрасным(НСтр("ru = 'Обратите внимание, при расшифровке и формировании квитанций возникли ошибки.'")));
Иначе
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ОсновнойТекст,
Символы.ПС,
Символы.ПС,
СтрокаКрасным(НСтр("ru = 'Обратите внимание, часть сообщений расшифровать не удалось.'")));
КонецЕсли;
ИначеЕсли ЕстьНовые И НЕ ЕстьОшибки Тогда
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.РасшифрованныеСообщения;
Если ЭтоАвторасшифровка Тогда
ОсновнойТекст = ТекстПроНовыеСообщения;
Иначе
ОсновнойТекст = ТекстСообщенияГотовыКПросмотру;
КонецЕсли;
ПоясняющийТекст = Новый ФорматированнаяСтрока(ОсновнойТекст);
ИначеЕсли НЕ ЕстьНовые И ЕстьОшибки Тогда
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ОшибкаОтправки;
Если РасшифрованыВсе Тогда
Если ЭтоАвторасшифровка Тогда
ОсновнойТекст = ТекстПроНовыеСообщения;
Иначе
ОсновнойТекст = НСтр("ru = 'Все сообщения расшифрованы.'");
КонецЕсли;
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ОсновнойТекст,
Символы.ПС,
Символы.ПС,
СтрокаКрасным(НСтр("ru = 'Обратите внимание, при расшифровке и формировании квитанций возникли ошибки.'")));
ИначеЕсли РасшифрованаЧасть Тогда
КрасныйТекстНекоторыеСообщенияРасшифроватьНеУдалось = СтрокаКрасным(НСтр("ru = 'Некоторые сообщения расшифровать не удалось.'"));
Если ЭтоАвторасшифровка Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроНовыеСообщения,
Символы.ПС,
Символы.ПС,
КрасныйТекстНекоторыеСообщенияРасшифроватьНеУдалось);
Иначе
ПоясняющийТекст = КрасныйТекстНекоторыеСообщенияРасшифроватьНеУдалось;
КонецЕсли;
ИначеЕсли НиОдноНеРасшифровано Тогда
КрасныйТекстНиОдноНеРасшифровано = СтрокаКрасным(НСтр("ru = 'Обратите внимание, при расшифровке и формировании квитанций возникли ошибки.'"));
Если ЭтоАвторасшифровка Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроНовыеСообщения,
Символы.ПС,
Символы.ПС,
КрасныйТекстНиОдноНеРасшифровано);
Иначе
ПоясняющийТекст = КрасныйТекстНиОдноНеРасшифровано;
КонецЕсли;
КонецЕсли;
ИначеЕсли НЕ ЕстьНовые И НЕ ЕстьОшибки Тогда
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
Если РасшифрованыВсе Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(НСтр("ru = 'Все сообщения расшифрованы.'"));
Иначе
ПоясняющийТекст = Новый ФорматированнаяСтрока(НСтр("ru = 'Некоторые сообщения не расшифрованы.'"));
КонецЕсли;
Если ЭтоАвторасшифровка Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроНовыеСообщения,
Символы.ПС,
Символы.ПС,
ПоясняющийТекст);
КонецЕсли;
КонецЕсли;
Возврат ПоясняющийТекст;
КонецФункции
&НаКлиенте
Функция ТекстПроНовыеИОшибкиПриОбновлении() Экспорт
ТекстПроНовыеСообщения = НСтр("ru = 'Получены новые сообщения от контролирующих органов.'");
ТекстПроОтсуствиеНовыхСообщений = НСтр("ru = 'Новых сообщений от контролирующих органов нет.'");
ТекстПроОшибки = НСтр("ru = 'Обратите внимание, возникли ошибки при обновлении.'");
ТекстПроОшибки = СтрокаКрасным(ТекстПроОшибки);
Если НетДоступаВИнтернет Тогда
ТекстПроОтсуствиеИнтернета = НСтр("ru = 'Обновление выполнить не удалось в связи с ошибкой доступа в Интернет'");
Если ЕстьОшибки Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроОтсуствиеИнтернета,
Символы.ПС,
Символы.ПС,
ТекстПроОшибки);
Иначе
ПоясняющийТекст = Новый ФорматированнаяСтрока(ТекстПроОтсуствиеИнтернета);
КонецЕсли;
ИначеЕсли ЕстьНовые И ЕстьОшибки Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроНовыеСообщения,
Символы.ПС,
Символы.ПС,
ТекстПроОшибки);
ИначеЕсли ЕстьНовые И НЕ ЕстьОшибки Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(ТекстПроНовыеСообщения);
ИначеЕсли НЕ ЕстьНовые И ЕстьОшибки Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПроОтсуствиеНовыхСообщений,
Символы.ПС,
Символы.ПС,
ТекстПроОшибки);
Иначе
ПоясняющийТекст = Новый ФорматированнаяСтрока(ТекстПроОтсуствиеНовыхСообщений);
КонецЕсли;
Возврат ПоясняющийТекст;
КонецФункции
&НаСервере
Процедура СформироватьТекстОРезультатеОбменаПоОтчету()
ВидОбъекта = ДлительнаяОтправкаКлиентСервер.ВидОбъекта(ОтчетСсылка);
НовоеСостояниеСдачиОтчетности = Неопределено;
СостояниеОтчета = ДлительнаяОтправкаВызовСервера.ТекущийЭтапОтправки(ОтчетСсылка, НаименованиеКонтролирующегоОргана);
Если СостояниеОтчета <> Неопределено Тогда
НовоеСостояниеОтчета = СостояниеОтчета.ТекстНадписи;
НовоеСостояниеСдачиОтчетности = СостояниеОтчета.СостояниеСдачиОтчетности;
ПротоколНесданогоОтчета = СостояниеОтчета.Протокол;
КонецЕсли;
Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
ПоясняющийТекст = "";
СостояниеОтчетаИзменилось = ПредыдущееСостояниеОтчета <> НовоеСостояниеОтчета И ЗначениеЗаполнено(НовоеСостояниеОтчета);
Если СостояниеОтчетаИзменилось Тогда
Если ЗначениеЗаполнено(ОтчетСсылка) И (ЭтоОбменИзОтчета ИЛИ ЭтоОбменИзЭтаповОтправки) Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ОтметитьСсылкуПоказаннойПользователю(ОтчетСсылка);
КонецЕсли;
Если ВидОбъекта.ЭтоОтчет И НовоеСостояниеОтчета = НСтр("ru = 'Сдан частично'") Тогда
Картинка = БиблиотекаКартинок.СданоЧастично;
ПоясняющийТекст = СтрШаблон(НСтр("ru = 'Отчет ""%1"" сдан частично.'"), НаименованиеОтчета);
ПоказатьКнопкуОткрытияПротокола();
ИначеЕсли НовоеСостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ОтрицательныйРезультатДокументооборота Тогда
Картинка = БиблиотекаКартинок.ОшибкаОтправки;
Если НовоеСостояниеОтчета = НСтр("ru = 'Не сдано'") Тогда
ПоясняющийТекст = СтрШаблон(НСтр("ru = 'Отчет ""%1"" не сдан.'"), НаименованиеОтчета);
Иначе
ПоясняющийТекст = НадписьПриИзменившемсяСостоянии(НовоеСостояниеОтчета, СостояниеОтчетаИзменилось);
КонецЕсли;
ПоказатьКнопкуОткрытияПротокола();
ИначеЕсли НовоеСостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ПоложительныйРезультатДокументооборота Тогда
Картинка = БиблиотекаКартинок.УспешнаяОтправка;
Если НовоеСостояниеОтчета = НСтр("ru = 'Сдано'") Тогда
ПоясняющийТекст = СтрШаблон(НСтр("ru = 'Отчет ""%1"" сдан.'"), НаименованиеОтчета);
Иначе
ПоясняющийТекст = НадписьПриИзменившемсяСостоянии(НовоеСостояниеОтчета, СостояниеОтчетаИзменилось);
КонецЕсли;
Иначе
Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
ПоясняющийТекст = НадписьПриИзменившемсяСостоянии(НовоеСостояниеОтчета);
КонецЕсли;
Иначе
ПротоколНесданогоОтчета = Неопределено;
Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
ПоясняющийТекст = НадписьПриИзменившемсяСостоянии(НовоеСостояниеОтчета, СостояниеОтчетаИзменилось, НеУдалосьОбновитьСтатусОтчета);
КонецЕсли;
Элементы.ДекорацияДлительнаяОперация.Картинка = Картинка;
Элементы.ПоясняющийТекст.Заголовок = ПоясняющийТекст;
КонецПроцедуры
&НаСервере
Функция НадписьПриИзменившемсяСостоянии(НовоеСостояние, СостояниеИзменилось = Истина, НеУдалосьОбновить = Ложь)
ВидОбъекта = ДлительнаяОтправкаКлиентСервер.ВидОбъекта(ОтчетСсылка);
ВидСтрокой = ДлительнаяОтправкаКлиентСервер.НазваниеОбъектаВРодительномПадеже(ОтчетСсылка);
Если ВидОбъекта.ЭтоПисьмо
ИЛИ ВидОбъекта.ЭтоСверка Тогда
Представление = НСтр("ru = 'Состояние %Вид ""%Наименование""'");
ИначеЕсли ВидОбъекта.ЭтоОтветНаТребование
ИЛИ ВидОбъекта.ЭтоПакетСДопДокументами
ИЛИ ВидОбъекта.ЭтоЕГРЮЛ
ИЛИ ВидОбъекта.ЭтоМакетПФР
ИЛИ ВидОбъекта.ЭтоЗаявлениеОПенсии
ИЛИ ВидОбъекта.ЭтоЗаявлениеВПФР Тогда
Представление = НСтр("ru = 'Состояние %Вид'");
ИначеЕсли ТипЗнч(ОтчетСсылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
Представление = НСтр("ru = 'Состояние документа ""%Наименование""'");
Иначе
Представление = НСтр("ru = 'Состояние отчета ""%Наименование""'");
КонецЕсли;
Если СостояниеИзменилось Тогда
РезультатОбновления = НСтр("ru = 'изменилось на ""%Состояние"".'");
ИначеЕсли НеУдалосьОбновить Тогда
РезультатОбновления = НСтр("ru = 'обновить не удалось.'");
Иначе
РезультатОбновления = НСтр("ru = 'не изменилось.'");
КонецЕсли;
ПоясняющийТекст = Представление + " " + РезультатОбновления;
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Наименование", НаименованиеОтчета);
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Состояние", НовоеСостояние);
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Вид", ВидСтрокой);
Возврат ПоясняющийТекст;
КонецФункции
&НаКлиенте
Процедура ВывестиПоясняющийТекстИЗаголовокПриЗавершеннойОтправке(ЗавершенУспешно = Ложь, ДополнительноеСообщение = "")
ВидОбъекта = ДлительнаяОтправкаКлиентСервер.ВидОбъекта(ОтчетСсылка);
Если ВидОбъекта.ЭтоПисьмо
ИЛИ ВидОбъекта.ЭтоЗаявлениеОПенсии
ИЛИ ВидОбъекта.ЭтоЗаявлениеВПФР
ИЛИ ВидОбъекта.ЭтоУведомление Тогда
Действие = НСтр("ru = 'отправлено'");
Иначе
Действие = НСтр("ru = 'отправлен'");
КонецЕсли;
Если НЕ ЗавершенУспешно Тогда
Действие = " не " + Действие;
КонецЕсли;
Вид = ДлительнаяОтправкаКлиентСервер.НазваниеОбъектаВИменительномПадеже(ОтчетСсылка, Истина);
Если ЗавершенУспешно И ВидОбъекта.ЭтоЗаявлениеВПФР Тогда
Заголовок = НСтр("ru = 'Заявление отправлено в СФР (бывш. ПФР)'");
ИначеЕсли ЗавершенУспешно Тогда
Заголовок = НСтр("ru = 'Успешно!'");
Иначе
Заголовок = Вид + " " + Действие;
Заголовок = ЗаменитьДвойнойПробел(Заголовок);
КонецЕсли;
Если ВидОбъекта.ЭтоЗаявлениеВПФР И ЗавершенУспешно Тогда
Вид = ДокументооборотСКОВызовСервера.ВидЗаявленияВПФР(ОтчетСсылка);
ЭтоНаПодключение = Вид = ПредопределенноеЗначение("Перечисление.ВидыЗаявленийНаЭДОВПФР.НаПодключение");
Если ЭтоНаПодключение Тогда
ТекстПредупреждения = НСтр("ru = 'Отправка документов в СФР станет возможна после получения положительного результата рассмотрения заявления.'") + Символы.ПС + Символы.ПС;
Иначе
ТекстПредупреждения = "";
КонецЕсли;
ГдеНайти1 = НСтр("ru = 'Отслеживайте состояние отправленного заявления в разделе '");
ГдеНайти2 = Новый ФорматированнаяСтрока(НСтр("ru = 'Уведомления'"),,,,НСтр("ru = 'Уведомления'"));
ГдеНайти3 = НСтр("ru = ' формы 1С-Отчетность.'");
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ТекстПредупреждения,
ГдеНайти1,
ГдеНайти2,
ГдеНайти3);
Иначе
Если ВидОбъекта.ЭтоПакетСДопДокументами
ИЛИ ВидОбъекта.ЭтоМакетПФР
ИЛИ ВидОбъекта.ЭтоЗаявлениеОПенсии Тогда
ПоясняющийТекст = НСтр("ru = '%Наименование %Действие %Орган'");
ИначеЕсли ВидОбъекта.ЭтоЕГРЮЛ Тогда
ПоясняющийТекст = НСтр("ru = '%Вид %Действие'");
Иначе
ПоясняющийТекст = НСтр("ru = '%Вид ""%Наименование"" %Действие %Орган'");
КонецЕсли;
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Вид", Вид);
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Наименование", НаименованиеОтчета);
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Действие", Действие);
Если ЭтоОтправкаВСФР = Неопределено Тогда
ЭтоОтправкаВСФР = ДокументооборотСКОКлиентСервер.ЭтоОтправкаВСФР(
ОтчетСсылка,,,
НаименованиеКонтролирующегоОргана);
КонецЕсли;
Орган = ПредставлениеНаименованияКонтролирующегоОргана(
НаименованиеКонтролирующегоОргана,
ЭтоОтправкаВСФР = Ложь);
ПоясняющийТекст = СтрЗаменить(ПоясняющийТекст, "%Орган", " в " + Орган);
ПоясняющийТекст = ЗаменитьДвойнойПробел(ПоясняющийТекст);
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительноеСообщение) Тогда
ПоясняющийТекст = Новый ФорматированнаяСтрока(
ПоясняющийТекст + ".",
Символы.ПС,
Символы.ПС,
СтрокаКрасным(ДополнительноеСообщение));
КонецЕсли;
Элементы.ПоясняющийТекст.Заголовок = ПоясняющийТекст;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВывестиПоясняющийТекстПриВыполняющейсяОперации(Форма)
Если Форма.ЭтоОбновлениеМодуля ИЛИ Форма.ЭтоУниверсальноеОжидание Тогда
Возврат;
КонецЕсли;
БезПроцентов = Форма.ОбщееКоличествоЭтапов = 0 ИЛИ НЕ Форма.ВыводитьПроценты;
Если БезПроцентов Тогда
Проценты = 0;
Иначе
Проценты = Мин(Макс(Цел(100*(Форма.КоличествоПройденныхЭтапов/Форма.ОбщееКоличествоЭтапов)), 1), 99);
КонецЕсли;
Если Форма.ЭтоОбмен Тогда
ТекстНадписи = ПоясняющийТекстПриВыполняющемсяОбновлении(Форма, БезПроцентов, Проценты);
ИначеЕсли Форма.ЭтоОтправкаЗаявления Тогда
ТекстНадписи = ПоясняющийТекстПриОтправкеЗаявления(Форма);
Иначе
ТекстНадписи = ПоясняющийТекстПриВыполняющейсяОтправке(Форма, БезПроцентов, Проценты);
КонецЕсли;
Форма.Элементы.ПоясняющийТекст.Заголовок = ТекстНадписи;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПоясняющийТекстПриОтправкеЗаявления(Форма)
СоздаватьКлюч = Форма.СоздаватьКлюч;
Если СоздаватьКлюч Тогда
ТекстНадписи = НСтр("ru = 'Выполняется создание закрытого ключа и отправка заявления
|по организации %1 ...'");
Иначе
ТекстНадписи = НСтр("ru = 'Выполняется отправка заявления по организации
|%1 ...'");
КонецЕсли;
ТекстНадписи = СтрШаблон(ТекстНадписи, Форма.ТекущаяОрганизация);
Возврат ТекстНадписи;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПоясняющийТекстПриВыполняющейсяОтправке(Форма, БезПроцентов, Проценты)
ТекстНадписи = "";
ВидОбъекта = ДлительнаяОтправкаКлиентСервер.ВидОбъекта(Форма.ОтчетСсылка);
Вид = ДлительнаяОтправкаКлиентСервер.НазваниеОбъектаВИменительномПадеже(Форма.ОтчетСсылка, Истина);
#Если НаКлиенте Тогда
Характеристика = Строка(ПараметрыПриложения["БРО.ХарактеристикаОтправляемогоОтчета"]);
#Иначе
Характеристика = "";
#КонецЕсли
Если ВидОбъекта.ЭтоПакетСДопДокументами
ИЛИ ВидОбъекта.ЭтоМакетПФР
ИЛИ ВидОбъекта.ЭтоЗаявлениеОПенсии
ИЛИ ВидОбъекта.ЭтоЗаявлениеВПФР
ИЛИ ВидОбъекта.ЭтоМашиночитаемаяДоверенностьФНС
ИЛИ ВидОбъекта.ЭтоМашиночитаемаяДоверенностьРаспределенныйРеестр Тогда
ТекстНадписи = НСтр("ru = '%Наименование отправляется в %Орган %Проценты'");
ИначеЕсли ВидОбъекта.ЭтоЕГРЮЛ Тогда
ТекстНадписи = НСтр("ru = '%Вид отправляется %Проценты'");
ИначеЕсли ЗначениеЗаполнено(Форма.НаименованиеОтчета) И ЗначениеЗаполнено(Форма.НаименованиеКонтролирующегоОргана) Тогда
ТекстНадписи = НСтр("ru = '%Вид ""%Наименование"" отправляется в %Орган %Проценты'");
Иначе
ТекстНадписи = НСтр("ru = 'Выполняется отправка %Проценты'");
КонецЕсли;
ТекстНадписи = СтрЗаменить(ТекстНадписи, "%Наименование", Форма.НаименованиеОтчета);
ТекстНадписи = СтрЗаменить(ТекстНадписи, "%Вид", Вид + ?(Характеристика = "", "", " " + Характеристика));
Если Форма.ЭтоОтправкаВСФР = Неопределено Тогда
Форма.ЭтоОтправкаВСФР = ДокументооборотСКОКлиентСервер.ЭтоОтправкаВСФР(
Форма.ОтчетСсылка,,,
Форма.НаименованиеКонтролирующегоОргана);
КонецЕсли;
Орган = ПредставлениеНаименованияКонтролирующегоОргана(
Форма.НаименованиеКонтролирующегоОргана,
Форма.ЭтоОтправкаВСФР = Ложь,
Истина);
ТекстНадписи = СтрЗаменить(ТекстНадписи, "%Орган", Орган);
Если БезПроцентов Тогда
ТекстНадписи = СтрЗаменить(ТекстНадписи, "%Проценты", "");
Иначе
ТекстНадписи = СтрЗаменить(ТекстНадписи, "%Проценты", "("+ Строка(Проценты) + "%)");
КонецЕсли;
Возврат ТекстНадписи;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеНаименованияКонтролирующегоОргана(
НаименованиеКонтролирующегоОргана,
БезЗаменыПФРиФССнаСФР = Ложь,
БезСкобокПриЗаменеПФРиФССнаСФР = Ложь)
Результат = ДокументооборотСКОКлиентСервер.ЗаменитьПФРиФССнаСФР(
НаименованиеКонтролирующегоОргана,
Истина,
БезСкобокПриЗаменеПФРиФССнаСФР,
БезЗаменыПФРиФССнаСФР);
Результат = ?(Результат = "ЦБ", НСтр("ru = 'Банк России'"), Результат);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПоясняющийТекстПриВыполняющемсяОбновлении(Форма, БезПроцентов, Проценты)
ТекстНадписи = "";
Если БезПроцентов Тогда
ТекстНадписи = НСтр("ru = 'Выполняется обновление по организации %1 ...'");
ТекстНадписи = СтрШаблон(ТекстНадписи, Форма.ТекущаяОрганизация);
Иначе
Если Форма.ВыводитьОрганизациюВНадпись И ЗначениеЗаполнено(Форма.ТекущаяОрганизация) Тогда
Если Форма.ЭтоРасшифровка Тогда
ТекущаяОперация = НСтр("ru = 'расшифровка'");
ИначеЕсли Форма.ЭтоОбмен Тогда
ТекущаяОперация = НСтр("ru = 'обновление'");
КонецЕсли;
Подстрока1 = НСтр("ru = 'Завершено: %1%%'");
Подстрока1 = СтрШаблон(Подстрока1, Проценты);
Подстрока2 = НСтр("ru = 'Текущая операция: %1 по организации %2'");
Подстрока2 = СтрШаблон(Подстрока2, ТекущаяОперация, Форма.ТекущаяОрганизация);
Подстрока2 = СтрокаСерым(Подстрока2);
ТекстНадписи = Новый ФорматированнаяСтрока(
Подстрока1,
Символы.ПС,
Подстрока2);
Иначе
ТекстНадписи = НСтр("ru = 'Завершено: %1%%'");
ТекстНадписи = СтрШаблон(ТекстНадписи, Проценты);
КонецЕсли;
КонецЕсли;
Возврат ТекстНадписи;
КонецФункции
#КонецОбласти
#Область ПрочиеПроцедурыИФункции
&НаКлиенте
Процедура ОбработкаОповещенийОтправкиЗаявления(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Успешная отправка заявления на переход" Тогда
Заявление = Источник;
ЗакрытьБезДальнейшихДействий = Истина;
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.УспешнаяОтправка;
Заголовок = НСтр("ru = 'Успешно!'");
Если ЗначениеЗаполнено(Заявление) Тогда
СсылкаНаЗаявление = Новый ФорматированнаяСтрока(
НСтр("ru = 'Заявление'"),
,
Новый Цвет(51, 51, 51),
,
ПолучитьНавигационнуюСсылку(Заявление));
Иначе
СсылкаНаЗаявление = НСтр("ru = 'Заявление'");
КонецЕсли;
Если ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("ТекстПояснения")
И ЗначениеЗаполнено(Параметр.ТекстПояснения) Тогда
ТекстПояснения = Параметр.ТекстПояснения;
Иначе
ТекстПояснения = НСтр("ru = 'Мы уведомим вас о результате обработки заявления.
|Обычно это занимает 1-2 дня.'");
КонецЕсли;
Подстрока2 = СтрокаСерым(ТекстПояснения);
Элементы.ПоясняющийТекст.Заголовок = Новый ФорматированнаяСтрока(
СсылкаНаЗаявление,
НСтр("ru = ' по '"),
Строка(ТекущаяОрганизация),
НСтр("ru = ' отправлено.'"),
Символы.ПС,
Символы.ПС,
Подстрока2);
ПолучитьВсеОшибки();
РазрешитьЗакрыватьФорму();
ИначеЕсли ИмяСобытия = "Неудачная отправка заявления на переход" Тогда
ВыполняемоеОповещение = Неопределено;
РезультатОтправки = Ложь;
ПолучитьВсеОшибки();
РазрешитьЗакрыватьФорму();
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ОшибкаОтправки;
Заголовок = НСтр("ru = 'Заявление не отправлено'");
ТекстНадписи = НСтр("ru = 'Заявление по %1 не отправлено.'");
ТекстНадписи = СтрШаблон(ТекстНадписи, ТекущаяОрганизация);
Элементы.ПоясняющийТекст.Заголовок = Новый ФорматированнаяСтрока(ТекстНадписи);
Если ЕстьОшибки Тогда
Подключаемый_ЗакрытьФорму();
КонецЕсли;
ИначеЕсли ИмяСобытия = "Завершить отправку без дальнейших действий" Тогда
ЗавершитьБезДальнейшихДействий();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенийОбновленияМодуля(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Закрыть форму ожидания загрузки модуля" Тогда
ЗавершитьБезДальнейшихДействий();
ИначеЕсли ИмяСобытия = НСтр("ru = 'Длительное действие. Обновить надпись и заголовок'") Тогда
Если ЗначениеЗаполнено(Параметр.Заголовок) Тогда
Заголовок = Параметр.Заголовок;
КонецЕсли;
Если ЗначениеЗаполнено(Параметр.ОсновнойТекст) Тогда
Если ЗначениеЗаполнено(Параметр.ДополнительныйТекст) Тогда
Подстрока1 = Параметр.ОсновнойТекст;
Подстрока2 = СтрокаСерым(Параметр.ДополнительныйТекст);
Элементы.ПоясняющийТекст.Заголовок = Новый ФорматированнаяСтрока(
Подстрока1,
Символы.ПС,
Символы.ПС,
Подстрока2);
Иначе
Элементы.ПоясняющийТекст.Заголовок = Новый ФорматированнаяСтрока(Параметр.ОсновнойТекст);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПанельОтправкиОтчета()
ИсходныйВладелецФормы = ИсходныйВладелецФормы();
Если ИсходныйВладелецФормы <> Неопределено
И ЗначениеЗаполнено(ОтчетСсылка)
И ИсходныйВладелецФормы.Элементы.Найти("ГруппаПанельОтправки") <> Неопределено Тогда
Если ЗначениеЗаполнено(НаименованиеКонтролирующегоОргана) Тогда
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ОбновитьПанельСостоянияОтправкиВРегламентированномОтчете(
ИсходныйВладелецФормы,
НаименованиеКонтролирующегоОргана);
Иначе
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ОбновитьПанельСостоянияОтправкиВРегламентированномОтчете(
ИсходныйВладелецФормы,
Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ИсходныйВладелецФормы()
Результат = ВладелецФормы;
Если ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения")
И СтрНайти(ВладелецФормы.ИмяФормы, "ДлительнаяОперация") <> 0
И ТипЗнч(ВладелецФормы.ВладелецФормы) = Тип("ФормаКлиентскогоПриложения") Тогда
Результат = ВладелецФормы.ВладелецФормы;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ЗаменитьБубликНаДинамичный()
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ДлительнаяОперация48;
КонецПроцедуры
&НаКлиенте
Процедура ДоопределитьПредыдущееСостояние()
ИсходныйВладелецФормы = ИсходныйВладелецФормы();
Если ЭтоОбменИзОтчета
И ИсходныйВладелецФормы <> Неопределено
И ИсходныйВладелецФормы.Элементы.Найти("НаименованиеЭтапа") <> Неопределено
И ЗначениеЗаполнено(ИсходныйВладелецФормы.Элементы.НаименованиеЭтапа.Заголовок) Тогда
ПредыдущееСостояниеОтчета = ИсходныйВладелецФормы.Элементы.НаименованиеЭтапа.Заголовок;
КонецЕсли;
Если ЭтоОбменИзЭтаповОтправки
И ИсходныйВладелецФормы <> Неопределено Тогда
ПредыдущееСостояниеОтчета = ИсходныйВладелецФормы.ТекущееСостояние;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьНеобходимостьЗакрытияБезДальнейшихДействий()
Если ЭтоОбменИзЖурналаОбмена ИЛИ ЭтоОбменИзФормы1СОтчетность ИЛИ ЭтоРасшифровка
ИЛИ РассматриваетсяСотрудникомКонтролирующегоОргана Тогда
ЗакрытьБезДальнейшихДействий = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПоказатьКнопкуОткрытияПротокола()
Если ЗначениеЗаполнено(ПротоколНесданогоОтчета) Тогда
Элементы.Показать.Видимость = Истина;
Элементы.Показать.КнопкаПоУмолчанию = Истина;
Элементы.Показать.Ширина = 16;
Элементы.Показать.Заголовок = НСтр("ru = 'Показать протокол'");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаКрасным(ИсходнаяСтрока)
Возврат Новый ФорматированнаяСтрока(ИсходнаяСтрока, ,Новый Цвет(255,0,0));
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаСерым(ИсходнаяСтрока)
Возврат Новый ФорматированнаяСтрока(ИсходнаяСтрока, ,Новый Цвет(128,128,128));
КонецФункции
&НаКлиенте
Процедура УстановитьТекущуюОрганизацию(НовоеЗначениеТекущейОрганизаци)
ТекущаяОрганизация = НовоеЗначениеТекущейОрганизаци;
ДлительнаяОтправкаКлиент.ИзменитьПараметрыДлительнойОтправкиКлиентСервер("ТекущаяОрганизация", ТекущаяОрганизация);
КонецПроцедуры
&НаСервере
Функция АдресДереваНовых()
Если ЭтоРасшифровка Тогда
ДеревоНовое = РеквизитФормыВЗначение("Новое");
Иначе
ДеревоНовое = РеквизитФормыВЗначение("Новое");
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЗаполнитьДеревоНовое(ДеревоНовое,,);
УдалитьИзДереваТекущуюСсылку(ДеревоНовое);
КонецЕсли;
Возврат ПоместитьВоВременноеХранилище(ДеревоНовое, Новый УникальныйИдентификатор);
КонецФункции
&НаКлиенте
Процедура РазборОбщихПараметровОповещения(ИмяСобытия, Параметр, Источник)
Если ТипЗнч(Параметр) = Тип("Структура") Тогда
Если Параметр.Свойство("ВыполняемоеОповещение") Тогда
ВыполняемоеОповещение = Параметр.ВыполняемоеОповещение;
КонецЕсли;
Если Параметр.Свойство("РезультатОтправки") Тогда
РезультатОтправки = Параметр.РезультатОтправки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыОперации()
ДополнительныеПараметры = ДлительнаяОтправкаКлиентСервер.НовыеПараметрыСохранения(ЭтоАвтозапрос);
ДополнительныеПараметры.Ошибки = Ошибки;
ДополнительныеПараметры.ОтчетСсылка = ОтчетСсылка;
ДополнительныеПараметры.ЕстьОшибки = ЕстьОшибки;
ДополнительныеПараметры.ЭтоОбмен = ЭтоОбмен;
ДополнительныеПараметры.ЭтоОтправка = ЭтоОтправка;
ДополнительныеПараметры.ЭтоРасшифровка = ЭтоРасшифровка;
ДополнительныеПараметры.ЭтоОбменИзОтчета = ЭтоОбменИзОтчета;
ДополнительныеПараметры.ЭтоОбменИзЭтаповОтправки = ЭтоОбменИзЭтаповОтправки;
ДополнительныеПараметры.ЭтоАвтозапрос = ЭтоАвтозапрос;
ДополнительныеПараметры.ЭтоОбменИзФормы1СОтчетность = ЭтоОбменИзФормы1СОтчетность;
ДополнительныеПараметры.ЭтоОбновлениеМодуля = ЭтоОбновлениеМодуля;
ДополнительныеПараметры.ЭтоОтправкаЗаявления = ЭтоОтправкаЗаявления;
ДополнительныеПараметры.ВидКонтролирующегоОргана = ВидКонтролирующегоОргана;
ДополнительныеПараметры.НаименованиеКонтролирующегоОргана = НаименованиеКонтролирующегоОргана;
ДополнительныеПараметры.Заголовок = Заголовок;
ДополнительныеПараметры.ЗакрытьБезДальнейшихДействий = ЗакрытьБезДальнейшихДействий;
ДополнительныеПараметры.ПутьКОбъекту = КонтекстЭДОКлиент.ПутьКОбъекту;
ДополнительныеПараметры.ТекстРезультатаОбменаПоОрганизации = ТекстРезультатаОбменаПоОрганизации;
ДополнительныеПараметры.КартинкаРезультатаОбменаПоОрганизации = КартинкаРезультатаОбменаПоОрганизации;
Если ЭтоАвтозапрос Тогда
ДополнительныеПараметры.ОтправкаСсылка =
?(АвтозапросПараметры = Неопределено, Неопределено, АвтозапросПараметры.Ключ);
ДополнительныеПараметры.ПротоколЗаполнен =
?(АвтозапросПараметры = Неопределено, Ложь, АвтозапросПараметры.ПротоколЗаполнен);
Иначе
ДополнительныеПараметры.ВыполняемоеОповещение = ВыполняемоеОповещение;
ДополнительныеПараметры.РезультатОтправки = РезультатОтправки;
ДополнительныеПараметры.ИгнорироватьФорму1СОтчетности = НЕ ЭтоОбменИзФормы1СОтчетность;
ДополнительныеПараметры.АдресДереваНовых = АдресДереваНовых();
ДополнительныеПараметры.ЕстьНовые = ЕстьНовые;
ДополнительныеПараметры.ПротоколНесданогоОтчета = ПротоколНесданогоОтчета;
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
&НаКлиенте
Процедура ОбработкаОповещенийОбновления(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Завершение обновления"
ИЛИ ИмяСобытия = "Завершение расшифровки" Тогда
ОбработатьЗавершениеДлительногоОбмена(Параметр);
ИначеЕсли ИмяСобытия = "Смена этапа обмена" Тогда
ОтработатьСменуЭтапаОбмена(Параметр);
ИначеЕсли ИмяСобытия = "Смена этапа расшифровки" Тогда
ОтработатьСменуЭтапаРасшифровки(Параметр);
ИначеЕсли (ЭтоОбменИзОтчета ИЛИ ЭтоОбменИзЭтаповОтправки) И ИмяСобытия = "Невозможно обновить состояние отчета"
ИЛИ (ЭтоОбменИзОтчета ИЛИ ЭтоОбменИзЭтаповОтправки) И ИмяСобытия = "Неудачная отправка" Тогда
НеУдалосьОбновитьСтатусОтчета = Истина;
ИначеЕсли ЭтоОбмен И ИмяСобытия = "Неудачная отправка"
И ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("НетДоступаВИнтернет") Тогда
НетДоступаВИнтернет = Истина;
ОбработатьЗавершениеДлительногоОбмена(Параметр);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьЗавершениеДлительногоОбмена(Параметр)
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
ПолучитьВсеОшибки();
РазрешитьЗакрыватьФорму();
ЕстьНовые = ЕстьИзмененияВДеревеНовыхПослеОбмена();
Если ЭтоОбменИзОтчета
ИЛИ ЭтоОбменИзЭтаповОтправки Тогда
Заголовок = НСтр("ru = 'Обновление завершено'");
Если НаименованиеКонтролирующегоОргана = "РЭЦ" Тогда
ПредыдущееСостояниеОтчетаВРЭЦ = ПредыдущееСостояниеОтчетаВРЭЦ();
СформироватьТекстОРезультатеОбменаСРЭЦ(ПредыдущееСостояниеОтчетаВРЭЦ);
Возврат;
КонецЕсли;
СформироватьТекстОРезультатеОбменаПоОтчету();
ТекстРезультатаОбменаПоОрганизации = ТекстПроНовыеИОшибкиПриОбновлении();
КартинкаРезультатаОбменаПоОрганизации = КартинкаПриЗавершенииОбновления();
ИначеЕсли ЭтоРасшифровка Тогда
Если ЭтоАвторасшифровка Тогда
Заголовок = НСтр("ru = '1С-Отчетность'");
Иначе
Заголовок = НСтр("ru = 'Расшифровка завершена'");
КонецЕсли;
Элементы.ПоясняющийТекст.Заголовок = ТекстПроНовыеИОшибкиПриРасшифровке(Параметр);
Если ЕстьНовые ИЛИ ЕстьОшибки Тогда
Элементы.Показать.Видимость = Истина;
Элементы.Показать.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Если ЕстьОшибки И НЕ ЕстьНовые Тогда
Элементы.Показать.Ширина = 15;
Элементы.Показать.Заголовок = НСтр("ru = 'Показать ошибки'");
КонецЕсли;
Иначе
Заголовок = НСтр("ru = 'Обновление завершено'");
Элементы.ПоясняющийТекст.Заголовок = ТекстПроНовыеИОшибкиПриОбновлении();
Элементы.ДекорацияДлительнаяОперация.Картинка = КартинкаПриЗавершенииОбновления();
Если (ЕстьНовые ИЛИ ЕстьОшибки) И НЕ НетДоступаВИнтернет
ИЛИ ЕстьОшибки И НетДоступаВИнтернет Тогда
Элементы.Показать.Видимость = Истина;
Элементы.Показать.КнопкаПоУмолчанию = Истина;
КонецЕсли;
КонецЕсли;
Если ЕстьОшибки И НЕ ЕстьНовые Тогда
РезультатОбновления = ДополнительныеПараметрыОперации();
АдресСведенийПоОшибкам = ПоместитьВоВременноеХранилище(РезультатОбновления, Новый УникальныйИдентификатор);
Оповестить("Обновить ошибки обмена", АдресСведенийПоОшибкам);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПредыдущееСостояниеОтчетаВРЭЦ()
ИсходныйВладелецФормы = ИсходныйВладелецФормы();
ПредыдущееСостояниеОтчетаВРЭЦ = Неопределено;
Если ЭтоОбменИзОтчета
И ИсходныйВладелецФормы <> Неопределено
И ИсходныйВладелецФормы.Элементы.Найти("НаименованиеЭтапаРЭЦ") <> Неопределено
И ЗначениеЗаполнено(ИсходныйВладелецФормы.Элементы.НаименованиеЭтапаРЭЦ.Заголовок) Тогда
ПредыдущееСостояниеОтчетаВРЭЦ = ИсходныйВладелецФормы.Элементы.НаименованиеЭтапаРЭЦ.Заголовок;
КонецЕсли;
Возврат ПредыдущееСостояниеОтчетаВРЭЦ;
КонецФункции
&НаСервере
Процедура СформироватьТекстОРезультатеОбменаСРЭЦ(ПредыдущееСостояниеОтчетаВРЭЦ)
Если ПредыдущееСостояниеОтчетаВРЭЦ <> Неопределено Тогда
ТекущийЭтапОтправкиРЭЦ = ДлительнаяОтправкаВызовСервера.ТекущийЭтапОтправки(ОтчетСсылка, "РЭЦ");
НовоеСостояниеОтчетаВРЭЦ = ТекущийЭтапОтправкиРЭЦ.ТекстНадписи;
НеУдалосьОбновить = НЕ ЗначениеЗаполнено(НовоеСостояниеОтчетаВРЭЦ);
СостояниеИзменилось = ПредыдущееСостояниеОтчетаВРЭЦ <> НовоеСостояниеОтчетаВРЭЦ И НЕ НеУдалосьОбновить;
Представление = НСтр("ru = 'Статус проверки в сервисе РЭЦ'");
Если СостояниеИзменилось Тогда
РезультатОбновления = НСтр("ru = 'изменился на ""%Статус"".'");
РезультатОбновления = СтрЗаменить(РезультатОбновления, "%Статус", НовоеСостояниеОтчетаВРЭЦ);
ИначеЕсли НеУдалосьОбновить Тогда
РезультатОбновления = НСтр("ru = 'обновить не удалось.'");
Иначе
РезультатОбновления = НСтр("ru = 'не изменился.'");
КонецЕсли;
ПоясняющийТекстРЭЦ = Представление + " " + РезультатОбновления;
Элементы.ПоясняющийТекст.Заголовок = ПоясняющийТекстРЭЦ;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция КартинкаПриЗавершенииОбновления() Экспорт
Если НетДоступаВИнтернет Тогда
Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
ИначеЕсли ЕстьНовые Тогда
Картинка = БиблиотекаКартинок.РасшифрованныеСообщения;
ИначеЕсли НЕ ЕстьНовые И ЕстьОшибки Тогда
Картинка = БиблиотекаКартинок.ОшибкаОтправки;
Иначе
Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
КонецЕсли;
Возврат Картинка;
КонецФункции
&НаКлиенте
Процедура ОбработкаОповещенийОтправки(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Пересчитать процент отправки" Тогда
КоличествоПройденныхЭтапов = КоличествоПройденныхЭтапов + 1;
ВывестиПоясняющийТекстПриВыполняющейсяОперации(ЭтотОбъект);
ИначеЕсли ИмяСобытия = "Успешная отправка" Тогда
Если ДлительнаяОтправкаКлиент.КонтекстДлительнойОперации("БРО.ПодтверждатьЗавершениеОтправки") = Ложь Тогда
ЗавершитьБезДальнейшихДействий();
Возврат;
КонецЕсли;
ЭтоУспешнаяОтправка = Истина;
Если ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ПараметрыАвтозапроса") Тогда
ЭтоАвтозапрос = Истина;
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ДлительнаяОперация48;
ЭтоПромежуточныйПротокол = Параметр.Свойство("ЭтоПромежуточныйПротокол") И Параметр.ЭтоПромежуточныйПротокол;
ЭтоДоверенностьПромежуточныйРезультат = Параметр.Свойство("ЭтоДоверенностьПромежуточныйРезультат")
И Параметр.ЭтоДоверенностьПромежуточныйРезультат;
ЭтоОтзыв = Параметр.Свойство("ЭтоОтзыв") И Параметр.ЭтоОтзыв;
ЭтоЗапросРезультатаОперации = Параметр.Свойство("ЭтоЗапросРезультатаОперации")
И Параметр.ЭтоЗапросРезультатаОперации;
ЭтоЗагрузкаДоверенности = Параметр.Свойство("ЭтоЗагрузкаДоверенности") И Параметр.ЭтоЗагрузкаДоверенности;
РеквизитыАвтообмена = ?(Параметр.Свойство("РеквизитыАвтообмена"), Параметр.РеквизитыАвтообмена, Неопределено);
АвтозапросНачальноеЧислоПопыток = ?(ТипЗнч(Параметр.ПараметрыАвтозапроса.Ключ) = Тип("Структура")
И Параметр.ПараметрыАвтозапроса.Ключ.Свойство("АвтозапросНачальноеЧислоПопыток"),
Параметр.ПараметрыАвтозапроса.Ключ.АвтозапросНачальноеЧислоПопыток, 1);
Если ТипЗнч(Параметр.ПараметрыАвтозапроса.Ключ) = Тип("Структура")
И Параметр.ПараметрыАвтозапроса.Ключ.Свойство("ОповещениеОЗавершении") Тогда
ОповещениеОЗавершении = Параметр.ПараметрыАвтозапроса.Ключ.ОповещениеОЗавершении;
Параметр.ПараметрыАвтозапроса.Ключ.ОповещениеОЗавершении = Неопределено;
КонецЕсли;
Если ТипЗнч(Параметр.ПараметрыАвтозапроса.Ключ) = Тип("Структура")
И Параметр.ПараметрыАвтозапроса.Ключ.Свойство("ФормаВладелец") Тогда
ФормаВладелец = Параметр.ПараметрыАвтозапроса.Ключ.ФормаВладелец;
Параметр.ПараметрыАвтозапроса.Ключ.ФормаВладелец = Неопределено;
КонецЕсли;
Если ЭтоЗагрузкаДоверенности И АвтозапросНачальноеЧислоПопыток = 1 Тогда
Элементы.ПовторитьПопытку.Видимость = Ложь;
Элементы.ФормаЗакрыть.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ВидКонтролирующегоОргана) И Параметр.Свойство("ВидКонтролирующегоОргана") Тогда
ВидКонтролирующегоОргана = Параметр.ВидКонтролирующегоОргана;
НаименованиеКонтролирующегоОргана = Строка(ВидКонтролирующегоОргана);
КонецЕсли;
ПолучитьВсеОшибки();
Если ЕстьОшибки Тогда
Подключаемый_ЗакрытьФорму();
Иначе
НачалоАвтообмена(Параметр.ПараметрыАвтозапроса);
КонецЕсли;
Иначе
ДополнительноеСообщение = ?(ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДополнительноеСообщение"), Параметр.ДополнительноеСообщение, "");
ДополнительныеРеквизитыДляОтправки = ?(ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДополнительныеРеквизитыДляОтправки"), Параметр.ДополнительныеРеквизитыДляОтправки, Неопределено);
ДополнительныеВложенияДляОтправки = ?(ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДополнительныеВложенияДляОтправки"), Параметр.ДополнительныеВложенияДляОтправки, Неопределено);
ОбновитьПанельОтправкиОтчета();
ЗакрытьБезДальнейшихДействий = Истина;
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.УспешнаяОтправка;
ПолучитьВсеОшибки();
РазрешитьЗакрыватьФорму();
ВывестиПоясняющийТекстИЗаголовокПриЗавершеннойОтправке(Истина, ДополнительноеСообщение);
КонецЕсли;
ИначеЕсли ИмяСобытия = "Неудачная отправка" Тогда
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ОшибкаОтправки;
ПолучитьВсеОшибки();
Если КоличествоОшибокОтменыДействия = КоличествоОшибок Тогда
ЗавершитьБезДальнейшихДействий();
Иначе
РазрешитьЗакрыватьФорму();
ВывестиПоясняющийТекстИЗаголовокПриЗавершеннойОтправке(Ложь);
Если ЕстьОшибки Тогда
Подключаемый_ЗакрытьФорму();
КонецЕсли;
КонецЕсли;
ИначеЕсли ИмяСобытия = "Завершить отправку без дальнейших действий" Тогда
ЗавершитьБезДальнейшихДействий();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьБезДальнейшихДействий()
РазрешитьЗакрыватьФорму();
ЗакрытьБезДальнейшихДействий = Истина;
Подключаемый_ЗакрытьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Активизировать();
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
ВывестиПоясняющийТекстПриВыполняющейсяОперации(ЭтотОбъект);
ДоопределитьПредыдущееСостояние();
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВсеОшибки()
Ошибки = ДлительнаяОтправкаКлиент.ОшибкиКлиентСервер();
КоличествоОшибок = Ошибки.Количество();
ЕстьОшибки = КоличествоОшибок > 0;
Если ЭтоОтправка Тогда
КоличествоОшибокОтменыДействия = ДлительнаяОтправкаКлиентСервер.КоличествоОшибокОтменыДействия(Ошибки);
КонецЕсли;
Если ЕстьОшибки И ЭтоОбмен Тогда
СведенияПоОшибкам = ДополнительныеПараметрыОперации();
ДлительнаяОтправкаВызовСервера.СохранитьОшибкиПоследнегоОбмена(СведенияПоОшибкам);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
ДлительнаяОтправкаКлиент.ОчиститьПараметрыДлительнойОтправкиКлиентСервер();
СбросПараметровВыполнен = Истина;
Если ЭтоАвтозапрос Тогда
РазрешитьЗакрыватьФорму();
КонецЕсли;
Оповестить("ДлительноеДействиеЗакрыта",,ОтчетСсылка);
Если Открыта() Тогда
ДополнительныеПараметры = ДополнительныеПараметрыОперации();
Закрыть(ДополнительныеПараметры);
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительныеВложенияДляОтправки) И ДополнительныеВложенияДляОтправки.Количество() > 0 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначенияЗаполнения", Новый Структура("Отправитель", ТекущаяОрганизация));
ПараметрыФормы.Вставить("ДополнительныеРеквизиты", ДополнительныеРеквизитыДляОтправки);
ПараметрыФормы.Вставить("ДополнительныеВложения", ДополнительныеВложенияДляОтправки);
ДополнительныеВложенияДляОтправки = Неопределено;
ОткрытьФорму("Справочник.ПерепискаСКонтролирующимиОрганами.ФормаОбъекта", ПараметрыФормы, ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазрешитьЗакрыватьФорму()
РазрешитьЗакрытиеФормы = Истина;
Элементы.ФормаЗакрыть.Видимость = Истина;
КонецПроцедуры
&НаКлиенте
Функция ЗаменитьДвойнойПробел(Знач Строка)
Пока СтрНайти(Строка, " ") <> 0 Цикл
Строка = СокрЛП(СтрЗаменить(Строка, " ", " "));
КонецЦикла;
Возврат Строка;
КонецФункции
&НаСервере
Процедура ОбработатьВходныеПараметры(Параметры)
Параметры.Свойство("ИдентификаторПолучателя", ИдентификаторПолучателя);
Параметры.Свойство("АдресДереваНовыхСобытий", АдресДереваНовыхСобытий);
Если Параметры.Свойство("ЭтоОбмен") Тогда
ОбработатьВходныеПараметрыОбновления(Параметры);
ИначеЕсли Параметры.Свойство("ЭтоОбновлениеМодуля") Тогда
ЭтоОбновлениеМодуля = Истина;
ИначеЕсли Параметры.Свойство("ЭтоОтправкаЗаявления") Тогда
ОбработатьВходныеПараметрыОтправкиЗаявления(Параметры);
ИначеЕсли Параметры.Свойство("ЭтоУниверсальноеОжидание") Тогда
ЭтоОтправка = Истина;
ВыводитьПроценты = Параметры.ВыводитьПроценты;
ЭтоУниверсальноеОжидание = Истина;
Заголовок = Параметры.Заголовок;
Элементы.ПоясняющийТекст.Заголовок = Параметры.Надпись;
ИначеЕсли Параметры.Свойство("ЭтоЗагрузкаДоверенности") Тогда
ЭтоЗагрузкаДоверенности = Истина;
Иначе
ОбработатьВходныеПараметрыОтправки(Параметры);
КонецЕсли;
Если ОбщегоНазначения.ЭтоВебКлиент()
И НЕ ЭтоРасшифровка Тогда
ВыводитьПроценты = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьВходныеПараметрыОтправкиЗаявления(Параметры)
ЭтоОтправкаЗаявления = Истина;
ТекущаяОрганизация = Параметры.Организация;
СоздаватьКлюч = Параметры.СоздаватьКлюч;
КонецПроцедуры
&НаСервере
Процедура ОбработатьВходныеПараметрыОбновления(Параметры)
ЭтоОбмен = Истина;
ВыводитьПроценты = Параметры.ВыводитьПроценты;
Организации = Параметры.Организации;
ОбщееКоличествоЭтапов = Параметры.ОбщееКоличествоЭтапов;
ЭтоРасшифровка = Параметры.ЭтоРасшифровка;
ЭтоАвторасшифровка = Параметры.ЭтоАвторасшифровка;
ЭтоОбменИзФормы1СОтчетность = Параметры.ЭтоОбменИзФормы1СОтчетность;
ЭтоОбменИзОтчета = Параметры.ЭтоОбменИзОтчета;
ЭтоОбменИзЭтаповОтправки = Параметры.ЭтоОбменИзЭтаповОтправки;
ЭтоОбменИзЖурналаОбмена = Параметры.ЭтоОбменИзЖурналаОбмена;
Если Параметры.Свойство("НаименованиеКонтролирующегоОргана") Тогда
НаименованиеКонтролирующегоОргана = Параметры.НаименованиеКонтролирующегоОргана;
КонецЕсли;
ВыводитьОрганизациюВНадпись = НЕ ИспользуетсяОднаОрганизация;
ОтчетСсылка = Параметры.ОтчетСсылка;
ПолучитьСведенияОбОтчете(ОтчетСсылка);
Если ЭтоРасшифровка Тогда
ТекущаяОрганизация = Организации;
Иначе
Если Организации <> Неопределено Тогда
ЗаполнитьТаблицуОповещений(Организации);
ОбщееКоличествоЭтапов = ОповещенияОбмена.Количество();
Если ОповещенияОбмена.Количество() >= 1 Тогда
ТекущаяОрганизация = ОповещенияОбмена[0].Организация;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЭтоОбмен И НЕ ЭтоРасшифровка Тогда
ВывестиПоясняющийТекстПриВыполняющейсяОперации(ЭтотОбъект);
КонецЕсли;
Если ЭтоОбмен Тогда
ДлительнаяОтправкаВызовСервера.СохранитьОшибкиПоследнегоОбмена(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьВходныеПараметрыОтправки(Параметры)
ЭтоОтправка = Истина;
ВыводитьПроценты = Истина;
ОтчетСсылка = Параметры.ОтчетСсылка;
СведенияОбОтчете = ?(Параметры.Свойство("СведенияОбОтчете"), Параметры.СведенияОбОтчете, Неопределено);
ПолучитьСведенияОбОтчете(ОтчетСсылка, СведенияОбОтчете);
ОбщееКоличествоЭтапов = Параметры.ОбщееКоличествоЭтапов;
Если Параметры.Свойство("НаименованиеКонтролирующегоОргана") Тогда
НаименованиеКонтролирующегоОргана = Параметры.НаименованиеКонтролирующегоОргана;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьСведенияОбОтчете(ОтчетСсылка, СведенияОбОтчете = Неопределено)
Если ОтчетСсылка = Неопределено И СведенияОбОтчете = Неопределено Тогда
Возврат;
КонецЕсли;
Если СведенияОбОтчете = Неопределено Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СведенияОбОтчете = КонтекстЭДОСервер.СведенияПоОтправляемымОбъектам(ОтчетСсылка);
КонецЕсли;
НаименованиеКонтролирующегоОргана = XMLСтрока(СведенияОбОтчете.ВидКонтролирующегоОргана);
ВидКонтролирующегоОргана = СведенияОбОтчете.ВидКонтролирующегоОргана;
НаименованиеОтчета = Строка(СведенияОбОтчете.Наименование);
НаименованиеОтчета = СтрЗаменить(НаименованиеОтчета, Символы.ПС, " ");
ТекущаяОрганизация = СведенияОбОтчете.Организация;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПолучатьДаты", Ложь);
ДополнительныеПараметры.Вставить("ПолучатьОшибкиОтправки", Истина);
Если ОтчетСсылка <> Неопределено Тогда
СостояниеОтчета = ДлительнаяОтправкаВызовСервера.ТекущийЭтапОтправки(ОтчетСсылка);
Если СостояниеОтчета <> Неопределено Тогда
ПредыдущееСостояниеОтчета = СостояниеОтчета.ТекстНадписи;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТаблицуОповещений(Организации)
Если НЕ ВыводитьПроценты Тогда
Возврат;
КонецЕсли;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Для каждого Организация Из Организации Цикл
УчетнаяЗапись = КонтекстЭДОСервер.УчетнаяЗаписьОрганизации(Организация);
ОбменРазрешен = ЗначениеЗаполнено(УчетнаяЗапись)
И КонтекстЭДОСервер.ПользователюРазрешеноВыполнятьОбменПоУчетнойЗаписи(УчетнаяЗапись);
Если ОбменРазрешен Тогда
ДобавитьНовоеОповещение("АвтоматическаяНастройкаУчетнойЗаписи", Организация,,,УчетнаяЗапись);
ДобавитьНовоеОповещение("ПолучитьИРасшифроватьСообщенияПоУчетнойЗаписи",Организация,,,УчетнаяЗапись);
ДобавитьНовоеОповещение("ПолучитьСообщенияПоУчетнойЗаписи", Организация,,,УчетнаяЗапись);
ДобавитьНовоеОповещение("РасшифроватьСообщенияПоУчетнойЗаписи", Организация,,,УчетнаяЗапись);
ДобавитьНовоеОповещение("ЗашифроватьСообщенияПоУчетнойЗаписи", Организация,,,УчетнаяЗапись);
ДобавитьНовоеОповещение("ОтправитьСообщенияПоУчетнойЗаписи", Организация,,,УчетнаяЗапись);
КонецЕсли;
Если НЕ ЭтоОбменИзЖурналаОбмена Тогда
Отправки = КонтекстЭДОСервер.НезавершенныеПоследниеОтправкиФССПоОрганизации(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.ФСС;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииФСС", Организация, Отправка, Орган);
КонецЦикла;
Если Отправки.Количество() = 0 Тогда
ТекущиеУчетныеЗаписиСтрахователяФСС = ПолучитьТекущиеУчетныеЗаписиСтрахователяФСС();
ОрганизацияПодключенаКФСС = ТекущиеУчетныеЗаписиСтрахователяФСС.Найти(Организация);
Если НЕ ОрганизацияПодключенаКФСС = Неопределено Тогда
ДатыЗагрузкиСообщений = КонтекстЭДОСервер.ПолучитьДатыПолученияСообщений(Организация, Неопределено);
МассивОрганизаций = Новый Массив;
МассивОрганизаций.Добавить(Организация);
КоличествоЗапросовИсторическихСообщений = КонтекстЭДОСервер.ПолучитьКоличествоЗапросовИсторическихСообщений(МассивОрганизаций);
ПолучениеАктуальныхСообщений = ?(
ДатыЗагрузкиСообщений.МассивДат.Количество() > 0 И НЕ ЗначениеЗаполнено(ДатыЗагрузкиСообщений.МассивДат[0].Дата),
Истина,
Ложь);
Если КоличествоЗапросовИсторическихСообщений = 0 И НЕ ПолучениеАктуальныхСообщений Тогда
ДобавитьНовоеОповещение("ПолучениеМетаданныхСообщенийЗапросИсторическихДанных", Организация, , Орган);
Иначе
Для каждого ДатаЗагрузки из ДатыЗагрузкиСообщений.МассивДат Цикл
ДатаЭтапа = ?(ЗначениеЗаполнено(ДатаЗагрузки.Дата), Формат(ДатаЗагрузки.Дата, "ДФ=ddMMyyyy"), "Актуальные");
ДобавитьНовоеОповещение("ПолучениеМетаданныхСообщенийЗаПериод" + ДатаЭтапа, Организация, , Орган);
КонецЦикла;
КонецЕсли;
ДобавитьНовоеОповещение("ЗагрузкаИРасшифровкаСообщений", Организация, , Орган);
КонецЕсли;
КонецЕсли;
Отправки = КонтекстЭДОСервер.НезавершенныеПоследниеОтправкиФСРАРПоОрганизации(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.ФСРАР;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииФСРАР", Организация, Отправка, Орган);
КонецЦикла;
Отправки = КонтекстЭДОСервер.НезавершенныеПоследниеОтправкиРПНПоОрганизации(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.РПН;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииРПН", Организация, Отправка, Орган);
КонецЦикла;
Отправки = КонтекстЭДОСервер.НезавершенныеПоследниеОтправкиФТСПоОрганизации(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.ФТС;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииФТС", Организация, Отправка, Орган);
КонецЦикла;
Если ДокументооборотСКОКлиентСервер.ПодсистемаУдалитьЦБСуществует() Тогда
МодульУдалитьДокументооборотСБанкомРоссииВызовСервера = ОбщегоНазначения.ОбщийМодуль("УдалитьДокументооборотСБанкомРоссииВызовСервера");
Отправки = МодульУдалитьДокументооборотСБанкомРоссииВызовСервера.ПолучитьНеЗавершенныеОтправки(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.УдалитьБанкРоссии;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииБанкРоссии", Организация, Отправка, Орган);
КонецЦикла;
КонецЕсли;
ИмяПодсистемыДокументооборотРегистрацияВФНС = "РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.ГосударственнаяРегистрацияВФНС";
Если ОбщегоНазначения.ПодсистемаСуществует(ИмяПодсистемыДокументооборотРегистрацияВФНС) Тогда
МодульДокументооборотРегистрацияВФНС = ОбщегоНазначения.ОбщийМодуль("ДокументооборотРегистрацияВФНС");
Отправки = МодульДокументооборотРегистрацияВФНС.ПолучитьОтправкиПоОрганизации(Организация);
Орган = Перечисления.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС;
Для каждого Отправка Из Отправки Цикл
ДобавитьНовоеОповещение("ОсуществитьОбменПоОрганизацииРегистрацияЮЛ", Организация, Отправка, Орган);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ДобавитьНовоеОповещение(
ИмяСобытия,
Организация,
Отправка = Неопределено,
Орган = Неопределено,
УчетнаяЗапись = Неопределено)
НоваяСтрока = ОповещенияОбмена.Добавить();
НоваяСтрока.ИмяСобытия = ИмяСобытия;
НоваяСтрока.Организация = Организация;
НоваяСтрока.Отправка = Отправка;
НоваяСтрока.Орган = Орган;
НоваяСтрока.УчетнаяЗапись = УчетнаяЗапись;
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьСменуЭтапаОбмена(Параметр)
ПометитьЭтапыПройденными(Параметр);
ОпределитьКоличествоПройденныхЭтаповОбмена();
ВывестиПоясняющийТекстПриВыполняющейсяОперации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьСменуЭтапаРасшифровки(Параметр)
Если Параметр.Свойство("ТекстСообщения") Тогда
Элементы.ПоясняющийТекст.Заголовок = Параметр.ТекстСообщения;
Иначе
КоличествоПройденныхЭтапов = Параметр.КоличествоПройденныхЭтапов;
ОбщееКоличествоЭтапов = Параметр.ОбщееКоличествоЭтапов;
УстановитьТекущуюОрганизацию(Параметр.ТекущаяОрганизация);
ВывестиПоясняющийТекстПриВыполняющейсяОперации(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПометитьЭтапыПройденными(Параметр)
Отбор = Новый Структура();
ДобавитьУсловиеОтбора(Отбор, "ИмяСобытия", Параметр.ИмяСобытия);
ДобавитьУсловиеОтбора(Отбор, "Орган", Параметр.Орган);
ДобавитьУсловиеОтбора(Отбор, "Отправка", Параметр.Отправка);
Если ТипЗнч(Параметр.УчетнаяЗапись) = Тип("СправочникСсылка.Организации") Тогда
ДобавитьУсловиеОтбора(Отбор, "Организация", Параметр.УчетнаяЗапись);
Иначе
ДобавитьУсловиеОтбора(Отбор, "УчетнаяЗапись", Параметр.УчетнаяЗапись);
КонецЕсли;
Этапы = ОповещенияОбмена.НайтиСтроки(Отбор);
Для каждого Этап Из Этапы Цикл
Этап.ЭтапПройден = Истина;
УстановитьТекущуюОрганизацию(Этап.Организация);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьУсловиеОтбора(Отбор, Ключ, Значение)
Если ЗначениеЗаполнено(Значение) Тогда
Отбор.Вставить(Ключ, Значение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьКоличествоПройденныхЭтаповОбмена()
ОтборПройденныхЭтапов = Новый Структура("ЭтапПройден", Истина);
ПройденныеЭтапы = ОповещенияОбмена.НайтиСтроки(ОтборПройденныхЭтапов);
КоличествоПройденныхЭтапов = ПройденныеЭтапы.Количество();
КонецПроцедуры
#КонецОбласти
#Область Автозапрос
&НаКлиенте
Процедура НачалоАвтообмена(Параметр)
АвтозапросПараметры = Параметр;
АвтозапросПараметры.Вставить("СтатусОтправки", ПредопределенноеЗначение("Перечисление.СтатусыОтправки.Отправлен"));
АвтозапросПараметры.Вставить("ПротоколЗаполнен", Ложь);
ПараметрыОповещения = Новый Структура();
ПараметрыОповещения.Вставить("Ссылка", ОтчетСсылка);
ПараметрыОповещения.Вставить("Организация", ТекущаяОрганизация);
Если ЭтоЗагрузкаДоверенности И АвтозапросНачальноеЧислоПопыток > 3 Тогда
Заголовок = НСтр("ru = 'Ответ не получен'");
Элементы.ПоясняющийТекст.Заголовок =
НСтр("ru = 'Запрос данных доверенности отправлен успешно,
|но пока находится в обработке.
|Повторите попытку загрузки через несколько минут.'");
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ВыполненоНужноПодождать;
Элементы.ПовторитьПопытку.Видимость = Истина;
Элементы.ФормаЗакрыть.КнопкаПоУмолчанию = Ложь;
Элементы.ФормаЗакрыть.Видимость = Истина;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(АвтозапросПараметры.Ключ) И НЕ ЭтоЗагрузкаДоверенности Тогда
Оповестить("Запись_Отправки" + НаименованиеКонтролирующегоОргана, ПараметрыОповещения, АвтозапросПараметры.Ключ);
КонецЕсли;
ОбновитьПанельОтправкиОтчета();
АвтозапросВнутриОбработчикаЗавершения = Ложь;
АвтозапросМаксПопыток = 3;
АвтозапросЧислоПопыток = АвтозапросНачальноеЧислоПопыток;
АвтозапросМаксСекунд = 50;
АвтозапросЧислоСекунд = АвтозапросМаксСекунд;
АвтозапросШагСекунд = 0.5;
Заголовок = НСтр("ru = 'Пожалуйста, подождите...'");
УстановкаЭтапаОтправки(ЭтотОбъект, "Отправка");
УстановитьНадписьПриАвтозапросе(0);
РазрешитьЗакрыватьФорму();
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьСостояниеАвтозапроса", АвтозапросШагСекунд, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьСостояниеАвтозапроса() Экспорт
Если АвтозапросВнутриОбработчикаЗавершения Тогда
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьСостояниеАвтозапроса", АвтозапросШагСекунд, Истина);
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьСостояниеАвтозапроса", АвтозапросШагСекунд, Истина);
АвтозапросВнутриОбработчикаЗавершения = Истина;
Если АвтозапросЧислоСекунд < АвтозапросШагСекунд Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"Подключаемый_ОбновитьСостояниеАвтозапросаЗавершение",
ЭтотОбъект);
Если ТипЗнч(АвтозапросПараметры.Ключ) = Тип("Структура")
И АвтозапросПараметры.Ключ.Свойство("АвтозапросНачальноеЧислоПопыток") Тогда
АвтозапросПараметры.Ключ.АвтозапросНачальноеЧислоПопыток = АвтозапросНачальноеЧислоПопыток + 1;
КонецЕсли;
Если ТипЗнч(АвтозапросПараметры.Ключ) = Тип("Структура")
И АвтозапросПараметры.Ключ.Свойство("ОповещениеОЗавершении") Тогда
АвтозапросПараметры.Ключ.ОповещениеОЗавершении = ОповещениеОЗавершении;
КонецЕсли;
Если ТипЗнч(АвтозапросПараметры.Ключ) = Тип("Структура")
И АвтозапросПараметры.Ключ.Свойство("ФормаВладелец") Тогда
АвтозапросПараметры.Ключ.ФормаВладелец = ФормаВладелец;
КонецЕсли;
КонтекстЭДОКлиент.ОбновитьРезультатКонкретнойОтправки(
ЭтаФорма,
АвтозапросПараметры.Ключ,
ОписаниеОповещения,
АвтозапросПараметры);
Возврат;
Иначе
АвтозапросЧислоСекунд = АвтозапросЧислоСекунд - АвтозапросШагСекунд;
ПрошлоСекунд = АвтозапросМаксСекунд - АвтозапросЧислоСекунд;
ПроцентВыполнения = Цел(100 * ПрошлоСекунд / АвтозапросМаксСекунд);
УстановитьНадписьПриАвтозапросе(ПроцентВыполнения);
КонецЕсли;
АвтозапросВнутриОбработчикаЗавершения = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНадписьПриАвтозапросе(ПроцентВыполнения)
Если АвтозапросЧислоПопыток = 1 Тогда
Если ЭтоЗапросРезультатаОперации Тогда
ТекстНадписи = НСтр("ru = 'Запрос отправлен. Ожидание получения ответа (%1%%)'");
ИначеЕсли ЭтоПромежуточныйПротокол Тогда
ТекстНадписи = НСтр("ru = 'Отчет отправлен. Ожидание получения промежуточного
|протокола (%1%%)'");
ИначеЕсли ЭтоДоверенностьПромежуточныйРезультат Тогда
ТекстНадписи = НСтр("ru = 'Доверенность отправлена. Ожидание получения результата
|регистрации (%1%%)'");
ИначеЕсли ЭтоОтзыв Тогда
ТекстНадписи = НСтр("ru = 'Отзыв отправлен. Ожидание получения результата (%1%%)'");
Иначе
ТекстНадписи = НСтр("ru = 'Отчет отправлен. Ожидание получения протокола (%1%%)'");
КонецЕсли;
ИначеЕсли АвтозапросЧислоПопыток = 2 Тогда
Если ЭтоЗапросРезультатаОперации Тогда
ТекстНадписи = НСтр("ru = 'Вторая попытка получения ответа (%1%%)'");
ИначеЕсли ЭтоПромежуточныйПротокол Тогда
ТекстНадписи = НСтр("ru = 'Вторая попытка получения промежуточного протокола (%1%%)'");
ИначеЕсли ЭтоДоверенностьПромежуточныйРезультат Тогда
ТекстНадписи = НСтр("ru = 'Вторая попытка получения результата регистрации (%1%%)'");
ИначеЕсли ЭтоОтзыв Тогда
ТекстНадписи = НСтр("ru = 'Вторая попытка получения результата отзыва (%1%%)'");
Иначе
ТекстНадписи = НСтр("ru = 'Вторая попытка получения протокола (%1%%)'");
КонецЕсли;
Иначе
Если ЭтоЗапросРезультатаОперации Тогда
ТекстНадписи = НСтр("ru = 'Третья попытка получения ответа (%1%%)'");
ИначеЕсли ЭтоПромежуточныйПротокол Тогда
ТекстНадписи = НСтр("ru = 'Третья попытка получения промежуточного протокола (%1%%)'");
ИначеЕсли ЭтоДоверенностьПромежуточныйРезультат Тогда
ТекстНадписи = НСтр("ru = 'Третья попытка получения результата регистрации (%1%%)'");
ИначеЕсли ЭтоОтзыв Тогда
ТекстНадписи = НСтр("ru = 'Третья попытка получения результата отзыва (%1%%)'");
Иначе
ТекстНадписи = НСтр("ru = 'Третья попытка получения протокола (%1%%)'");
КонецЕсли;
КонецЕсли;
Элементы.ПоясняющийТекст.Заголовок = СтрШаблон(
ТекстНадписи,
ПроцентВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьСостояниеАвтозапросаЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПолучитьВсеОшибки();
СведенияОбОтправке = СведенияОбОтправкеНаСервере(АвтозапросПараметры.Ключ, АвтозапросПараметры, ЭтоОтзыв);
АвтозапросПараметры.СтатусОтправки = СведенияОбОтправке.СтатусОтправки;
АвтозапросПараметры.ПротоколЗаполнен = СведенияОбОтправке.ПротоколЗаполнен;
РассматриваетсяСотрудникомКонтролирующегоОргана = (ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("Рассматривается") И Результат.Рассматривается);
Если АвтозапросПараметры.Свойство("ОтправкаСсылка") И ЗначениеЗаполнено(АвтозапросПараметры.ОтправкаСсылка) Тогда
АвтозапросПараметры.Ключ = АвтозапросПараметры.ОтправкаСсылка;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АвтозапросПараметры.Ключ) И СведенияОбОтправке.Свойство("ОтправкаСсылка") Тогда
АвтозапросПараметры.Ключ = СведенияОбОтправке.ОтправкаСсылка;
КонецЕсли;
ОтчетСсылкаОтправки = ?(ЗначениеЗаполнено(ОтчетСсылка) ИЛИ НЕ СведенияОбОтправке.Свойство("ОтчетСсылка"),
ОтчетСсылка, СведенияОбОтправке.ОтчетСсылка);
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("Ссылка", ОтчетСсылкаОтправки);
ПараметрыОповещения.Вставить("Организация", ТекущаяОрганизация);
Если ЗначениеЗаполнено(АвтозапросПараметры.Ключ) Тогда
Оповестить("Редактирование_Отправки" + НаименованиеКонтролирующегоОргана, ПараметрыОповещения,
АвтозапросПараметры.Ключ);
КонецЕсли;
ОбновитьПанельОтправкиОтчета();
АвтозапросЧислоПопыток = АвтозапросЧислоПопыток + 1;
АвтозапросЧислоСекунд = АвтозапросМаксСекунд;
Если Ошибки.Количество() <> 0
ИЛИ АвтозапросЧислоПопыток > АвтозапросМаксПопыток
ИЛИ АвтозапросПараметры.СтатусОтправки <> ПредопределенноеЗначение("Перечисление.СтатусыОтправки.Отправлен")
ИЛИ (РассматриваетсяСотрудникомКонтролирующегоОргана И НЕ ЭтоДоверенностьПромежуточныйРезультат И НЕ ЭтоОтзыв) Тогда
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьСостояниеАвтозапроса");
Если АвтозапросПараметры.ПротоколЗаполнен ИЛИ ЕстьОшибки ИЛИ ЭтоДоверенностьПромежуточныйРезультат ИЛИ ЭтоОтзыв
И (АвтозапросПараметры.СтатусОтправки <> ПредопределенноеЗначение("Перечисление.СтатусыОтправки.Отправлен")
ИЛИ РассматриваетсяСотрудникомКонтролирующегоОргана) Тогда
Если РассматриваетсяСотрудникомКонтролирующегоОргана Тогда
УстановкаЭтапаОтправки(ЭтотОбъект, "РезультатРегистрации");
Если ЭтоДоверенностьПромежуточныйРезультат ИЛИ ЭтоОтзыв Тогда
Если ЭтоОтзыв Тогда
Заголовок = НСтр("ru = 'Промежуточный результат обработки получен'");
Элементы.ПоясняющийТекст.Заголовок =
НСтр("ru = 'Окончательный результат обработки отзыва должен быть получен
|от ФНС в течение периода от нескольких минут до часа. В
|исключительных случаях результат может быть получен в течение
|нескольких дней.
|Для обновления статуса обработки используйте кнопку ""Обновить"".'");
Иначе
Заголовок = НСтр("ru = 'Промежуточный результат регистрации получен'");
Элементы.ПоясняющийТекст.Заголовок =
НСтр("ru = 'Окончательный результат регистрации должен быть получен
|от ФНС в течение 1-4 часов. В исключительных случаях
|результат может быть получен в течение нескольких дней.
|Для обновления статуса регистрации используйте кнопку ""Обновить"".'");
КонецЕсли;
Иначе
Заголовок = НСтр("ru = 'Промежуточный протокол получен'");
Элементы.ПоясняющийТекст.Заголовок = СтрШаблон(
НСтр("ru = 'Окончательный протокол должен быть сформирован по результатам рассмотрения сотрудником %1"
+ " в срок от 1 дня до 2-х недель.'"),
НаименованиеКонтролирующегоОргана);
Элементы.Показать.КнопкаПоУмолчанию = Истина;
Элементы.Показать.Ширина = 30;
Элементы.Показать.Заголовок = НСтр("ru = 'Показать промежуточный протокол'");
Элементы.Показать.Видимость = Истина;
КонецЕсли;
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ВыполненоНужноПодождать;
Иначе
Если НЕ ЕстьОшибки Тогда
УстановкаЭтапаОтправки(ЭтотОбъект, "РегультатГосОргана");
КонецЕсли;
Если СведенияОбОтправке.Свойство("ОтчетСсылка") И ЗначениеЗаполнено(СведенияОбОтправке.ОтчетСсылка)
И НЕ ЭтоДоверенностьПромежуточныйРезультат И НЕ ЭтоОтзыв Тогда
ПоказатьЗначение(, СведенияОбОтправке.ОтчетСсылка);
КонецЕсли;
Подключаемый_ЗакрытьФорму();
КонецЕсли;
Иначе
Если ЭтоЗагрузкаДоверенности Тогда
Заголовок = НСтр("ru = 'Ответ не получен'");
Элементы.ПоясняющийТекст.Заголовок = НСтр("ru = 'Запрос в обработке, повторите попытку загрузки через несколько минут'");
ИначеЕсли ЭтоЗапросРезультатаОперации Тогда
Заголовок = НСтр("ru = 'Ответ не получен'");
Элементы.ПоясняющийТекст.Заголовок = НСтр("ru = 'Попробуйте выполнить обновление и найти ответ позже'");
ИначеЕсли ЭтоДоверенностьПромежуточныйРезультат Тогда
Заголовок = НСтр("ru = 'Результат регистрации не получен'");
Элементы.ПоясняющийТекст.Заголовок = НСтр("ru = 'Попробуйте обновить состояние отчета позже'");
ИначеЕсли ЭтоОтзыв Тогда
Заголовок = НСтр("ru = 'Результат обработки не получен'");
Элементы.ПоясняющийТекст.Заголовок = НСтр("ru = 'Попробуйте обновить состояние отчета позже'");
Иначе
Заголовок = НСтр("ru = 'Протокол не получен'");
Элементы.ПоясняющийТекст.Заголовок = НСтр("ru = 'Попробуйте обновить состояние отчета позже'");
КонецЕсли;
Элементы.ДекорацияДлительнаяОперация.Картинка = БиблиотекаКартинок.ИнформацияПоДлительнойОтправке;
КонецЕсли;
КонецЕсли;
АвтозапросВнутриОбработчикаЗавершения = Ложь;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СведенияОбОтправкеНаСервере(
ОтправкаСсылка,
АвтозапросПараметры = Неопределено,
ЭтоОтзыв = Ложь)
Если ТипЗнч(АвтозапросПараметры) = Тип("Структура")
И АвтозапросПараметры.Свойство("ЭтоСЭДО") И АвтозапросПараметры.ЭтоСЭДО
И АвтозапросПараметры.Свойство("Организация") И ЗначениеЗаполнено(АвтозапросПараметры.Организация)
И АвтозапросПараметры.Свойство("ВидОтчета") И ЗначениеЗаполнено(АвтозапросПараметры.ВидОтчета)
И (АвтозапросПараметры.Свойство("СсылкаНаОтчет") И ЗначениеЗаполнено(АвтозапросПараметры.СсылкаНаОтчет)
ИЛИ АвтозапросПараметры.Свойство("НомерОтчета") И ЗначениеЗаполнено(АвтозапросПараметры.НомерОтчета))
И АвтозапросПараметры.Свойство("ДатаНачалаОтправки")
И ЗначениеЗаполнено(АвтозапросПараметры.ДатаНачалаОтправки) Тогда
СведенияОбОтправке = ДокументооборотСКОВызовСервера.СведенияОбОтправкеСЭДО(АвтозапросПараметры);
ОтчетСсылка = СведенияОбОтправке.ОтчетСсылка;
ОтправкаСсылка = СведенияОбОтправке.ОтправкаСсылка;
СтатусОтправки = СведенияОбОтправке.СтатусОтправки;
Если СведенияОбОтправке.ЭтоСведенияОбОтчетеОперации Тогда
СтатусОтправки = ?(ЗначениеЗаполнено(ОтчетСсылка), Перечисления.СтатусыОтправки.Сдан,
Перечисления.СтатусыОтправки.Отправлен);
КонецЕсли;
Результат = Новый Структура();
Результат.Вставить("СтатусОтправки", СтатусОтправки);
Результат.Вставить("ПротоколЗаполнен", СтатусОтправки <> Перечисления.СтатусыОтправки.Отправлен);
Результат.Вставить("ОтчетСсылка", ОтчетСсылка);
Результат.Вставить("ОтправкаСсылка", ОтправкаСсылка);
Возврат Результат;
КонецЕсли;
Результат = Новый Структура();
Результат.Вставить("СтатусОтправки", Перечисления.СтатусыОтправки.Отправлен);
Результат.Вставить("ПротоколЗаполнен", Истина);
Если ТипЗнч(ОтправкаСсылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
СтатусОтправкиОбъекта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОтправкаСсылка, "Статус");
Результат.ПротоколЗаполнен = Ложь;
Если НЕ ЭтоОтзыв
И (СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ДатаНачалаДействияНеНаступила
ИЛИ СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.Зарегистрировано
ИЛИ СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ИстекСрокДействия)
ИЛИ ЭтоОтзыв И СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.Отозвано Тогда
Результат.СтатусОтправки = Перечисления.СтатусыОтправки.Сдан;
ИначеЕсли НЕ ЭтоОтзыв И (СтатусОтправкиОбъекта <> Перечисления.СтатусыМашиночитаемойДоверенностиКО.Отправлено
И СтатусОтправкиОбъекта <> Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОжиданиеПодтверждения)
ИЛИ ЭтоОтзыв И (СтатусОтправкиОбъекта <> Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОтправленоЗаявлениеНаОтзыв
И СтатусОтправкиОбъекта <> Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОжиданиеПодтвержденияОтзыва) Тогда
Результат.СтатусОтправки = Перечисления.СтатусыОтправки.НеПринят;
ИначеЕсли НЕ ЭтоОтзыв И (СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОжиданиеПодтверждения)
ИЛИ ЭтоОтзыв И (СтатусОтправкиОбъекта = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОжиданиеПодтвержденияОтзыва) Тогда
Результат.СтатусОтправки = Перечисления.СтатусыОтправки.Доставлен;
КонецЕсли;
Возврат Результат;
КонецЕсли;
СвойстваОтправки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОтправкаСсылка,
"СтатусОтправки, Протокол, ВидОтчета, Организация, ДатаОтправки");
Результат.СтатусОтправки = СвойстваОтправки.СтатусОтправки;
Если СвойстваОтправки.СтатусОтправки = Перечисления.СтатусыОтправки.Отправлен Тогда
Протокол = ?(ЗначениеЗаполнено(СвойстваОтправки.Протокол), СвойстваОтправки.Протокол.Получить(), Неопределено);
Результат.ПротоколЗаполнен = ЗначениеЗаполнено(Протокол);
КонецЕсли;
Если СвойстваОтправки.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.ЗапросСправочникаПолномочийМашиночитаемойДоверенностиФСС
И СвойстваОтправки.СтатусОтправки = Перечисления.СтатусыОтправки.Отправлен Тогда
ЗапросОтправок = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ОтправкиФСС.Ссылка КАК Ссылка,
| ОтправкиФСС.СтатусОтправки КАК СтатусОтправки
|ИЗ
| Справочник.ОтправкиФСС КАК ОтправкиФСС
|ГДЕ
| ОтправкиФСС.Организация = &Организация
| И ОтправкиФСС.ВидОтчета = &ВидОтчета
| И ОтправкиФСС.ДатаОтправки >= &ДатаОтправки
| И ОтправкиФСС.СтатусОтправки = &СтатусОтправки
| И ОтправкиФСС.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| ОтправкиФСС.ДатаОтправки УБЫВ");
ЗапросОтправок.Параметры.Вставить("Организация", СвойстваОтправки.Организация);
ЗапросОтправок.Параметры.Вставить("ВидОтчета", СвойстваОтправки.ВидОтчета);
ЗапросОтправок.Параметры.Вставить("ДатаОтправки", СвойстваОтправки.ДатаОтправки);
ЗапросОтправок.Параметры.Вставить("СтатусОтправки", Перечисления.СтатусыОтправки.Сдан);
Выборка = ЗапросОтправок.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОтправкаСсылка = Выборка.Ссылка;
Результат.СтатусОтправки = Выборка.СтатусОтправки;
Результат.ПротоколЗаполнен = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область НовыеСообщения
&НаСервере
Функция ЕстьИзмененияВДеревеНовыхПослеОбмена()
НовоеДеревоНовых = РеквизитФормыВЗначение("Новое");
Если ЭтоАдресВременногоХранилища(АдресДереваНовыхСобытий) Тогда
НовоеДеревоНовых = ПолучитьИзВременногоХранилища(АдресДереваНовыхСобытий);
ИначеЕсли ЭтоРасшифровка Тогда
ИнициаторСеанса = Перечисления.ИнициаторыСеансовСвязиСКонтролирующимиОрганами.Автообмен;
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЗаполнитьДеревоНовое(НовоеДеревоНовых, ИнициаторСеанса, Истина);
Иначе
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЗаполнитьДеревоНовое(НовоеДеревоНовых, , Истина);
КонецЕсли;
УдалитьИзДереваТекущуюСсылку(НовоеДеревоНовых);
ЕстьИзмененияВНовыхСообщениях = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЕстьИзмененияВДеревеНовых(НовоеДеревоНовых);
ЗначениеВРеквизитФормы(НовоеДеревоНовых, "Новое");
Если ЕстьИзмененияВНовыхСообщениях Тогда
ЕстьТолькоНезавершенныеОтправки = ЕстьТолькоНезавершенныеОтправки();
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ОбновитьКоличествоНовых(ЭтотОбъект);
КонецЕсли;
Возврат ЕстьИзмененияВНовыхСообщениях И НЕ ЕстьТолькоНезавершенныеОтправки;
КонецФункции
&НаСервере
Процедура УдалитьИзДереваТекущуюСсылку(НовоеДеревоНовых)
НовоеДеревоНовых.Колонки.Добавить("НужноУдалить");
Если ЗначениеЗаполнено(ОтчетСсылка) Тогда
УдаляемаяСтрока = НовоеДеревоНовых.Строки.Найти(ОтчетСсылка, "Ссылка");
Если УдаляемаяСтрока <> Неопределено Тогда
УдаляемаяСтрока.НужноУдалить = Истина;
КонецЕсли;
КонецЕсли;
Отбор = Новый Структура;
Отбор.Вставить("НужноУдалить", Истина);
Для Каждого Строка1Уровня Из НовоеДеревоНовых.Строки Цикл
СтрокиКоторыеНужноУдалить = Строка1Уровня.Строки.НайтиСтроки(Отбор);
Для Каждого СтрокаКоторуюНужноУдалить Из СтрокиКоторыеНужноУдалить Цикл
Строка1Уровня.Строки.Удалить(СтрокаКоторуюНужноУдалить);
КонецЦикла;
КонецЦикла;
СтрокиКоторыеНужноУдалить = НовоеДеревоНовых.Строки.НайтиСтроки(Отбор);
Для Каждого СтрокаКоторуюНужноУдалить Из СтрокиКоторыеНужноУдалить Цикл
НовоеДеревоНовых.Строки.Удалить(СтрокаКоторуюНужноУдалить);
КонецЦикла;
НовоеДеревоНовых.Колонки.Удалить("НужноУдалить");
КонецПроцедуры
&НаСервере
Функция ЕстьТолькоНезавершенныеОтправки() Экспорт
ЕстьПолученныеСообщения = Ложь;
ЕстьОбработанныеЗапросы = Ложь;
ЕстьЗавершенныеОтправки = Ложь;
ЕстьНезавершенныеОтправки = Ложь;
СтрокиДерева = Новое.ПолучитьЭлементы();
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
Если СтрокаДерева.Группа = Перечисления.ГруппыНовыхСобытийДокументооборотаСКонтролирующимиОрганами.ПолученныеСообщения Тогда
Если СтрокаДерева.НеПрочитано И ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
ЕстьПолученныеСообщения = Истина;
КонецЕсли;
ИначеЕсли СтрокаДерева.Группа = Перечисления.ГруппыНовыхСобытийДокументооборотаСКонтролирующимиОрганами.ОбработанныеЗапросы Тогда
Если СтрокаДерева.НеПрочитано И ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
ЕстьОбработанныеЗапросы = Истина;
КонецЕсли;
ИначеЕсли СтрокаДерева.Группа = Перечисления.ГруппыНовыхСобытийДокументооборотаСКонтролирующимиОрганами.ЗавершенныеОтправки Тогда
Если СтрокаДерева.НеПрочитано И ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
ЕстьЗавершенныеОтправки = Истина;
КонецЕсли;
ИначеЕсли СтрокаДерева.Группа = Перечисления.ГруппыНовыхСобытийДокументооборотаСКонтролирующимиОрганами.НезавершенныеОтправки Тогда
Если ЗначениеЗаполнено(СтрокаДерева.Ссылка) Тогда
ЕстьНезавершенныеОтправки = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВДеревеТолькоНезавершенныеОтправки = НЕ ЕстьПолученныеСообщения
И НЕ ЕстьОбработанныеЗапросы
И НЕ ЕстьЗавершенныеОтправки
И ЕстьНезавершенныеОтправки;
Возврат ВДеревеТолькоНезавершенныеОтправки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановкаЭтапаОтправки(Форма, ЭтапОтправки)
Если ЭтапОтправки = "Подготовка" Тогда
Форма.Элементы.ГруппаЭтапы.Видимость = Истина;
ИначеЕсли ЭтапОтправки = "Отправка" ИЛИ ЭтапОтправки = "РезультатРегистрации"
ИЛИ ЭтапОтправки = "РегультатГосОргана" Тогда
Форма.Элементы.ДекорацияЭтапОтправкиПустая.Видимость = Ложь;
Форма.Элементы.ДекорацияЭтапОтправкиГалка.Видимость = Истина;
Если ЭтапОтправки = "РезультатРегистрации" ИЛИ ЭтапОтправки = "РегультатГосОргана" Тогда
Форма.Элементы.ДекорацияЭтапРезультатаРегистрацииПустая.Видимость = Ложь;
Форма.Элементы.ДекорацияЭтапРезультатаРегистрацииГалка.Видимость = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПовторитьПопыткуПослеПолученияДанныхМЧДРР(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Результат.СсылкаНаДоверенность) Тогда
ОткрытьФорму(
"Справочник.МашиночитаемыеДоверенностиРаспределенныйРеестр.ФормаОбъекта",
Новый Структура("Ключ, ОбновитьСостояниеПриОткрытии", Результат.СсылкаНаДоверенность, Истина),,
Новый УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаСервереБезКонтекста
Функция ПолучитьТекущиеУчетныеЗаписиСтрахователяФСС()
ТекущиеУчетныеЗаписиСтрахователяФСС = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(НастройкиОбменаФСС.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) КАК Организация
|ИЗ
| Справочник.Организации КАК Организации
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиОбменаФСС КАК НастройкиОбменаФСС
| ПО (НастройкиОбменаФСС.Организация = Организации.Ссылка)
| И (НЕ Организации.ПометкаУдаления)
|ГДЕ
| НастройкиОбменаФСС.ИспользоватьОбмен
| И (НастройкиОбменаФСС.Пользователь ЕСТЬ NULL
| ИЛИ НастройкиОбменаФСС.Пользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| ИЛИ НастройкиОбменаФСС.Пользователь = &ТекущийПользователь)
| И &УсловиеПоОрганизации
|
|СГРУППИРОВАТЬ ПО
| ЕСТЬNULL(НастройкиОбменаФСС.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))";
Если ОбщегоНазначенияБРО.ИспользуетсяАрхив() Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоОрганизации", "НЕ Организации.ВАрхиве");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоОрганизации", "Истина");
КонецЕсли;
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ТекущиеУчетныеЗаписиСтрахователяФСС.Добавить(Выборка.Организация);
КонецЦикла;
КонецЕсли;
Возврат ТекущиеУчетныеЗаписиСтрахователяФСС;
КонецФункции
#КонецОбласти