&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Ссылка = Параметры.Ссылка;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ЭтоНужныйВидОтчетаСПАРК = КонтекстЭДОСервер.ЭтоНужныйВидОтчетаСПАРК(Ссылка);
ОтметитьПрочтенным(Ссылка);
ОпределитьСвойстваОтправки();
ЗаполнитьДанныеВШапкеФормы();
УстановитьШиринуТаблицыДляФТС();
УправлениеЭУ(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Расшифровка вложения протокола для открытия" И Отправка = Источник Тогда
УправлениеЭУ();
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует(
"РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВМинобороны") Тогда
Если ИмяСобытия = "Обновлено состояние отчета" Тогда
Если Параметр.Ссылка = Ссылка Тогда
УправлениеЭУ();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НадписьПанелиПриемаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ТребованияФНСКлиент.ПриКликеНаСсылкуВПанелиОтправки(
ЭтотОбъект,
Организация,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПротоколНажатие(Элемент)
Если Элемент.Имя = "ПротоколТребования" Тогда
НомерЭтапа = 1;
Иначе
НомерЭтапа = Число(Прав(Элемент.Имя, 1)) - 1;
КонецЕсли;
Протокол = ЭтапыСостояния[НомерЭтапа].Протокол;
КонтекстЭДОКлиент.ОткрытьПротокол(Ссылка, ВидКонтролирующегоОргана, Протокол);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует(
"РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВМинобороны") Тогда
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.Минобороны") Тогда
МодульДокументооборотСМинобороныКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотСМинобороныКлиент");
Статус = МодульДокументооборотСМинобороныКлиент.ПолучитьРеквизитыПоСсылке(Протокол, "СтатусОтправки").СтатусОтправки;
Если Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтправки.ПринятЕстьОшибки") ИЛИ
Статус = ПредопределенноеЗначение("Перечисление.СтатусыОтправки.НеПринят") Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументыРеализацииПолномочийНОНажатие(Элемент)
Оповещение = Новый ОписаниеОповещения("ДокументыРеализацииПолномочийНОНажатиеПослеВыбора", ЭтотОбъект);
Если ДокументыРеализацииПолномочийНО.Количество() = 1 Тогда
ВыполнитьОбработкуОповещения(Оповещение, ДокументыРеализацииПолномочийНО[0]);
Иначе
ДокументыРеализацииПолномочийНО.ПоказатьВыборЭлемента(Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодробнаяИнформацияНажатие(Элемент)
Если ЗначениеЗаполнено(Отправка) Тогда
ПоказатьЗначение(, Отправка);
Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Подробная информация отсутствует'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьОтветПоказатьНажатие(Элемент)
КонтекстЭДОКлиент.НажатиеНаКнопкуПоказатьОтветыПоТребованию(Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура СПАРКНажатие(Элемент)
ОтправкаОтчетностиВИнтерфакс = "РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтправкаОтчетностиВИнтерфакс";
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует(ОтправкаОтчетностиВИнтерфакс) Тогда
МодульОтправкаРегОтчетовВСПАРККлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОтправкаРегОтчетовВСПАРККлиент");
МодульОтправкаРегОтчетовВСПАРККлиент.ОткрытьРегистрСПАРК(Организация, Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПротоколЭтапаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Элемент.Имя = "ПротоколТребования" Тогда
НомерЭтапа = 1;
Иначе
НомерЭтапа = Число(Прав(Элемент.Имя, 1)) - 1;
КонецЕсли;
Протокол = ЭтапыСостояния[НомерЭтапа].Протокол;
КонтекстЭДОКлиент.ОткрытьПротоколПоСсылке(Ссылка, ВидКонтролирующегоОргана, НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КакУзнать(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"КакУзнать_Завершение",
ЭтотОбъект);
ТребованияФНСКлиент.ОткрытьТестНаОбязательностьЭДО(
Организация,
ОписаниеОповещения,
Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьДокументСверкиСПодписьюФНС(Команда)
ЦиклОбмена = ДокументооборотСКОВызовСервера.ПолучитьПоследнийЦиклОбмена(Ссылка);
КонтекстЭДОКлиент.ВыгрузитьПакетыПоДокументооборотамСдачиОтчетностиВФНС(ЦиклОбмена);
КонецПроцедуры
&НаКлиенте
Процедура ПечатьКвитанций(Команда)
Если НЕ ЗначениеЗаполнено(Отправка) Тогда
Возврат;
КонецЕсли;
ВАрхиве = Ложь;
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС")
ИЛИ ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР")
ИЛИ ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН")
ИЛИ ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС")
ИЛИ ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.УдалитьБанкРоссии") Тогда
ПротоколЕсть = ПротоколЕсть(Отправка, ВАрхиве);
Иначе
Отправка = ДокументооборотСКОВызовСервера.ПолучитьПоследнийЦиклОбмена(Ссылка);
ПротоколЕсть = Истина;
КонецЕсли;
Если ВАрхиве Тогда
КонтекстЭДОКлиент.ПоказатьУведомлениеАрхивныхФайлов(, 16, 5, Истина);
ИначеЕсли НЕ ПротоколЕсть Тогда
ТекстПредупреждения = НСтр("ru = 'Отсутствуют протоколы для печати'");
ПоказатьПредупреждение(,ТекстПредупреждения);
КонецЕсли;
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФСС(Отправка);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР") Тогда
КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФСРАР(Отправка);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН") Тогда
КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляРПН(Отправка);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС") Тогда
КонтекстЭДОКлиент.ПоказатьПротоколОбработкиПоСсылкеИсточникаДляФТС(Отправка);
ИначеЕсли ВидКонтролирующегоОргана =
ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.УдалитьБанкРоссии") Тогда
МодульУдалитьДокументооборотСБанкомРоссииКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УдалитьДокументооборотСБанкомРоссииКлиент");
МодульУдалитьДокументооборотСБанкомРоссииКлиент.ПоказатьПротокол(Отправка);
Иначе
КонтекстЭДОКлиент.ПоказатьДокументыЦикловОбмена(Отправка, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПакетДокументовДляПредставления(Команда)
Если ЗначениеЗаполнено(Отправка) Тогда
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеНалогоплательщика") Тогда
ТекстВопроса = НСтр("ru = 'Выгрузить ответ с подписью?'");
Иначе
ТекстВопроса = НСтр("ru = 'Выгрузить пакет документов для представления по месту требования?'");
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ВыгрузитьПакетыПоДокументооборотамСдачиОтчетностиВФНС",ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоОтправкаПодтвержденияИзПанелиОтправки", Истина);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтправитьЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
КонтекстЭДОКлиент.ОтправитьНеотправленныеИзвещенияОПриеме(Ссылка, Организация, ВидКонтролирующегоОргана, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеАбонентаСпецоператораСвязи") Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьЗавершение", ЭтотОбъект);
КонтекстЭДОКлиент.ОбновитьСтатусЗаявленияАбонента_ИзПанелиОтправки(
ОписаниеОповещения,
ЭтаФорма,
Ссылка);
ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
Если ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(
Ссылка, "РежимыИспользования") = "ФТС" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьЗавершение", ЭтотОбъект);
КонтекстЭДОКлиент.ОбновитьМашиночитаемуюДоверенностьФТС(
ОписаниеОповещения,
Организация,,
Ссылка);
Иначе
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьПослеОбновленияСостоянияМЧДРР", ЭтотОбъект);
ДокументооборотСКОКлиент.ОбновитьСостояниеМЧДРР(ОписаниеОповещения, Ссылка);
КонецЕсли;
Иначе
Если НЕ ДокументооборотСКОКлиент.ОрганизацияПодключенаКНаправлению(Организация, КонтролирующийОрган) Тогда
Возврат;
КонецЕсли;
ВыбранныеОрганизации = Новый Массив;
ВыбранныеОрганизации.Добавить(Организация);
ВыводитьПроценты = КонтролирующийОрган <> "ФСС"
И КонтролирующийОрган <> "ФСРАР"
И КонтролирующийОрган <> "РПН"
И КонтролирующийОрган <> "ФТС"
И КонтролирующийОрган <> "УдалитьБанкРоссии";
ПараметрыДлительногоОбмена = ДлительнаяОтправкаКлиент.ПараметрыДлительногоОбмена();
ПараметрыДлительногоОбмена.Организации = ВыбранныеОрганизации;
ПараметрыДлительногоОбмена.ВыводитьПроценты = ВыводитьПроценты;
ПараметрыДлительногоОбмена.ЭтоОбменИзЭтаповОтправки = Истина;
ПараметрыДлительногоОбмена.ОтчетСсылка = Ссылка;
Если НЕ ДлительнаяОтправкаКлиент.ПоказатьФормуДлительногоОбмена(ПараметрыДлительногоОбмена) Тогда
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ОсуществитьОбменПоОрганизацииИзЭтаповОтправки", 0.1, Истина);
КонецЕСли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьВсеФайлыИПодписи(Команда)
Если ЗначениеЗаполнено(Отправка) Тогда
ВыгрузитьЦиклыОбмена();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтправленныйОтчетСПодписью(Команда)
Если ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
Возврат;
КонецЕсли;
ВАрхиве = Ложь;
ИмяФайлаПодписанногоПакета = "";
Адрес = ПолучитьАдресФайлаПодписанногоПакета(
Отправка,
ИмяФайлаПодписанногоПакета,
ВАрхиве,
УникальныйИдентификатор);
Если ВАрхиве Тогда
ПоказатьПредупреждение(, "Файл перемещен в архив. Продолжение выгрузки невозможно!");
Возврат;
КонецЕсли;
Если Адрес = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Отчет с подписью отсутствует.'"));
Возврат;
КонецЕсли;
СвойстваФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаПодписанногоПакета);
ПозицияРазделителя = СтрНайти(СвойстваФайла.ИмяБезРасширения, "_", НаправлениеПоиска.СКонца);
ЭтоМЧДФСС = Лев(СвойстваФайла.ИмяБезРасширения, 2) = "P_";
ИмяФайлаПодписанногоПакета = ?(ПозицияРазделителя > 1 И НЕ ЭтоМЧДФСС,
Лев(СвойстваФайла.ИмяБезРасширения, ПозицияРазделителя - 1),
СвойстваФайла.ИмяБезРасширения) + СвойстваФайла.Расширение;
ПолучитьФайл(Адрес, ИмяФайлаПодписанногоПакета);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтправленныйПакетДокументов(Команда)
Если ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС")
И ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР")
И ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН")
И ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС")
И ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС")
ИЛИ НЕ ЗначениеЗаполнено(ВидКонтролирующегоОргана) ИЛИ НЕ ЗначениеЗаполнено(Отправка) Тогда
Возврат;
КонецЕсли;
ВАрхиве = Ложь;
ИмяФайлаПакета = "";
Адрес = ПолучитьАдресФайлаПакета(
Отправка,
ИмяФайлаПакета,
ВАрхиве,
УникальныйИдентификатор);
Если ВАрхиве Тогда
ПоказатьПредупреждение(, "Файл перемещен в архив. Продолжение выгрузки невозможно!");
Возврат;
КонецЕсли;
ПолучитьФайл(Адрес, ИмяФайлаПакета);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПолученнуюКвитанцию(Команда)
Если ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС")
И ВидКонтролирующегоОргана <> ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС")
ИЛИ НЕ ЗначениеЗаполнено(ВидКонтролирующегоОргана) Тогда
Возврат;
КонецЕсли;
ВАрхиве = Ложь;
ИмяФайлаКвитанции = "";
Адрес = ПолучитьАдресФайлаКвитанции(
Отправка,
ИмяФайлаКвитанции,
ВАрхиве,
УникальныйИдентификатор);
Если ВАрхиве Тогда
ПоказатьПредупреждение(, "Файл перемещен в архив. Продолжение выгрузки невозможно!");
Возврат;
КонецЕсли;
ПолучитьФайл(Адрес, ИмяФайлаКвитанции);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьОтправленныйОтчет(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Ссылка,
"ИмяФайлаВыгрузки, ФайлВырузки",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.ФайлВырузки = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Файл выгрузки недоступен'"));
Возврат;
КонецЕсли;
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.ФайлВырузки);
СохраняемыйФайл.Вставить("Имя", ЗначенияРеквизитов.ИмяФайлаВыгрузки);
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПодпись(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Ссылка,
"ИмяФайлаВыгрузки, ЭлектроннаяПодпись",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.ЭлектроннаяПодпись = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Файл подписи недоступен'"));
Возврат;
КонецЕсли;
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.ЭлектроннаяПодпись);
СохраняемыйФайл.Вставить("Имя", ЗначенияРеквизитов.ИмяФайлаВыгрузки + ".sig");
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьЗаявлениеНаОтзыв(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Ссылка,
"ИмяФайлаЗаявленияНаОтзыв, ФайлЗаявленияНаОтзыв",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.ФайлЗаявленияНаОтзыв = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Файл заявления на отзыв недоступен'"));
Возврат;
КонецЕсли;
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.ФайлЗаявленияНаОтзыв);
СохраняемыйФайл.Вставить("Имя", ЗначенияРеквизитов.ИмяФайлаЗаявленияНаОтзыв);
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПодписьЗаявленияНаОтзыв(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Ссылка,
"ИмяФайлаЗаявленияНаОтзыв, ЭлектроннаяПодписьЗаявленияНаОтзыв",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.ЭлектроннаяПодписьЗаявленияНаОтзыв = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Файл подписи заявления на отзыв недоступен'"));
Возврат;
КонецЕсли;
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.ЭлектроннаяПодписьЗаявленияНаОтзыв);
СохраняемыйФайл.Вставить("Имя", ЗначенияРеквизитов.ИмяФайлаЗаявленияНаОтзыв + ".sig");
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьПодтверждениеДоставкиВСФР(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Отправка,
"ИдентификаторОтправкиНаСервере, КвитанцияДоставкиВСФР",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.КвитанцияДоставкиВСФР = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Подтверждение доставки оператором в СФР недоступно'"));
Возврат;
КонецЕсли;
ИмяФайлаКвитанции = СтрШаблон(
НСтр("ru = 'Доставлено в СФР %1.xml'"),
ЗначенияРеквизитов.ИдентификаторОтправкиНаСервере);
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.КвитанцияДоставкиВСФР);
СохраняемыйФайл.Вставить("Имя", ИмяФайлаКвитанции);
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьАрхивСОтчетомИКвитанциями(Команда)
ЗначенияРеквизитов = ЗначенияРеквизитовОбъекта(
Ссылка,
"НомерДоверенности, Образ",
УникальныйИдентификатор);
Если ЗначенияРеквизитов.Образ = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Файл архива недоступен. Пометьте МЧД на удаление, затем загрузите МЧД из распределенного реестра'"));
Возврат;
КонецЕсли;
СохраняемыйФайл = Новый Структура;
СохраняемыйФайл.Вставить("Адрес", ЗначенияРеквизитов.Образ);
СохраняемыйФайл.Вставить("Имя", ЗначенияРеквизитов.НомерДоверенности + ".zip");
ОперацииСФайламиЭДКОКлиент.СохранитьФайлы(СохраняемыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура КомандаПодтвердитьПрием(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеПодтвержденияПриемаИлиОтказаВПриеме",
ЭтотОбъект);
КонтекстЭДОКлиент.СоздатьРезультатПриемаВходящейОписиИнтерактивноПоДокументуОписи(Ссылка, Истина, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьЧтоЭДООбязателен(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеПодтвержденияЧтоЭДООбязателен",
ЭтотОбъект);
ТребованияФНСКлиент.ОткрытьФормуПодтвержденияВыбораОбязательностиЭДО(Истина, Ссылка, Организация, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьЧтоЭДОНеОбязателен(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеПодтвержденияЧтоЭДООбязателен",
ЭтотОбъект);
ТребованияФНСКлиент.ОткрытьФормуПодтвержденияВыбораОбязательностиЭДО(Ложь, Ссылка, Организация, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура КомандаОтказатьВПриеме(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеПодтвержденияПриемаИлиОтказаВПриеме",
ЭтотОбъект);
КонтекстЭДОКлиент.СоздатьРезультатПриемаВходящейОписиИнтерактивноПоДокументуОписи(Ссылка, Ложь, ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Функция ПротоколЕсть(Отправка, ВАрхиве = Ложь)
ВАрхиве = Ложь;
Если ЗначениеЗаполнено(Отправка) Тогда
ВАрхиве = ОбъектВАрхиве(Отправка, "Протокол");
Возврат ЗначениеЗаполнено(Отправка.Протокол.Получить());
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОсуществитьОбменПоОрганизацииИзЭтаповОтправки() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеОбновления", ЭтотОбъект);
КонтекстЭДОКлиент.ОсуществитьОбменПоОрганизации(
ЭтаФорма,
Организация,
ОписаниеОповещения,
КонтролирующийОрган,
Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПослеОбновленияСостоянияМЧДРР(Результат, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.НастроитьМЧДФНС(ОписаниеОповещения, Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОбновления(Результат, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбновитьЗавершение",
ЭтотОбъект);
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявленияПоЭлДокументооборотуСПФР") Тогда
КонтекстЭДОКлиент.ОтправитьУПУППослеОбмена(ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗавершение(Результат, ДополнительныеПараметры) Экспорт
УправлениеЭУ();
ОповеститьОбОкончанииОтправки();
ДлительнаяОтправкаКлиент.ОповеститьОЗавершенииОбмена();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОтметитьПрочтенным(Ссылка)
ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтметитьКакПрочтенное(Ссылка);
КонецПроцедуры
&НаСервере
Процедура УстановитьШиринуТаблицыДляФТС()
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС
И ТипЗнч(Ссылка) <> Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
Элементы.СведенияПоРезультатуЭтапа1.Ширина = 50;
Элементы.СведенияПоРезультатуЭтапа2.Ширина = 50;
Элементы.СведенияПоРезультатуЭтапа3.Ширина = 50;
Элементы.СведенияПоРезультатуЭтапа4.Ширина = 50;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОпределитьСвойстваОтправки()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Если Параметры.Свойство("Отправка") Тогда
СведенияПоОбъекту = Параметры;
Иначе
СведенияПоОбъекту = КонтекстЭДОСервер.СведенияПоОтправляемымОбъектам(Ссылка, Истина);
КонецЕсли;
Наименование = СведенияПоОбъекту.Наименование;
Организация = СведенияПоОбъекту.Организация;
ВидКонтролирующегоОргана = КонтекстЭДОСервер.ТипКонтролирующегоОргана(СведенияПоОбъекту.ВидКонтролирующегоОргана);
КодКонтролирующегоОргана = СведенияПоОбъекту.КодКонтролирующегоОргана;
ПредставлениеГосОргана = СведенияПоОбъекту.ПредставлениеКонтролирующегоОргана;
ПредставлениеПериода = СведенияПоОбъекту.ПредставлениеПериода;
СтраницаЖурнала = СведенияПоОбъекту.СтраницаЖурнала;
КонтролирующийОрган = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИмяПеречисления(ВидКонтролирующегоОргана);
Если Параметры.Свойство("Отправка") Тогда
Отправка = Параметры.Отправка;
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")Тогда
Отправка = Ссылка;
Иначе
Отправка = КонтекстЭДОСервер.ПолучитьПоследнююОтправкуОтчета(ВидКонтролирующегоОргана, Ссылка);
КонецЕсли;
Если ЗначениеЗаполнено(Отправка) И ЗначениеЗаполнено(Отправка.Организация) Тогда
Организация = Отправка.Организация;
КонецЕсли;
ИзменитьОформлениеКнопкиПечать();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКнопкиПечать()
ИмяТипаСправочникаМашиночитаемыеДоверенности = "МашиночитаемыеДоверенности";
НеПоказыватьПечать = СтраницаЖурнала = Перечисления.СтраницыЖурналаОтчетность.ЕГРЮЛ
ИЛИ ТипЗнч(Отправка) = Тип("СправочникСсылка.ЦиклыОбмена")
И (Отправка.Тип = Перечисления.ТипыЦикловОбмена.Рассылка
ИЛИ Отправка.Тип = Перечисления.ТипыЦикловОбмена.РассылкаГрупповая
ИЛИ Отправка.Тип = Перечисления.ТипыЦикловОбмена.РассылкаПФР
ИЛИ Отправка.Тип = Перечисления.ТипыЦикловОбмена.РассылкаФСГС
ИЛИ Отправка.Тип = Перечисления.ТипыЦикловОбмена.РассылкаШаблоновФСГС)
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеАбонентаСпецоператораСвязи")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах")
ИЛИ ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр")
ИЛИ ДокументооборотСКОКлиентСервер.ПодсистемаЦПРРМЧДСуществует()
И ТипЗнч(Ссылка) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности);
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.Минобороны") Тогда
Элементы.ГруппаПечать.Видимость = Ложь;
ИначеЕсли ВидКонтролирующегоОргана =
ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС") Тогда
Элементы.ГруппаПечать.Видимость = Ложь;
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН")
И ЗначениеЗаполнено(Отправка) И Отправка.ВидОтчета =
ПредопределенноеЗначение("Справочник.ВидыОтправляемыхДокументов.УведомлениеПриродопользователю") Тогда
Элементы.ГруппаПечать.Видимость = Ложь;
КонецЕсли;
Если СтраницаЖурнала = Перечисления.СтраницыЖурналаОтчетность.Отчеты Тогда
Элементы.ФормаПечатьКвитанций.Заголовок = НСтр("ru = 'Печать протоколов'");
ИначеЕсли НеПоказыватьПечать Тогда
Элементы.ГруппаПечать.Видимость = Ложь;
Иначе
Элементы.ФормаПечатьКвитанций.Заголовок = НСтр("ru = 'Печать квитанций'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияПриемаИлиОтказаВПриеме(Результат, ВходящийКонтекст) Экспорт
УправлениеЭУ();
ОповеститьОбОкончанииОтправки();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКнопкиОбновить(КонтекстЭДОСервер, ТекущееСостояниеОтправки)
ИмяТипаСправочникаМашиночитаемыеДоверенности = "МашиночитаемыеДоверенности";
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеАбонентаСпецоператораСвязи") Тогда
Элементы.ФормаОбновить.Видимость = КонтекстЭДОСервер.КнопкаОбновленияВЗаявленииНаПодключениеДоступна(Ссылка);
Элементы.ПодробнаяИнформация.Видимость = Ложь;
ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
ИЛИ ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
Элементы.ПодробнаяИнформация.Видимость = Ложь;
ИначеЕсли ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
Элементы.ФормаОбновить.Видимость = Истина;
Элементы.ПодробнаяИнформация.Видимость = (ТекущееСостояниеОтправки.КонтролирующийОрган =
Перечисления.ТипыКонтролирующихОрганов.ФТС);
ИначеЕсли ДокументооборотСКОКлиентСервер.ПодсистемаЦПРРМЧДСуществует()
И ТипЗнч(Ссылка) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности) Тогда
Элементы.ФормаОбновить.Видимость = Ложь;
Элементы.ПодробнаяИнформация.Видимость = Ложь;
Иначе
ТекущийЭтап = ТекущееСостояниеОтправки.ТекущийЭтапОтправки;
Если ТекущийЭтап <> Неопределено Тогда
КонтролирующийОрган = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИмяПеречисления(ТекущееСостояниеОтправки.КонтролирующийОрган);
СостояниеСдачи = ТекущийЭтап.СостояниеСдачиОтчетности;
ТипЗнчСсылкаНаОтчет = ТипЗнч(Ссылка);
ОбъектПоУмолчаниюРеестрЭЛНСуществует =
Метаданные.Документы.Найти("РеестрДанныхЭЛНЗаполняемыхРаботодателем") <> Неопределено;
ОбъектПоУмолчаниюРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникамСуществует =
Метаданные.Документы.Найти("РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам") <> Неопределено;
Если ДокументооборотСФССКлиентСервер.ЭтоРеестрДанныхЭЛНЗаполняемыхРаботодателем(Ссылка,
ОбъектПоУмолчаниюРеестрЭЛНСуществует)
ИЛИ ТипЗнчСсылкаНаОтчет = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов")
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ВидОтчета") =
Справочники.ВидыОтправляемыхДокументов.РеестрДанныхЭЛНЗаполняемыхРаботодателем Тогда
ТипОтправляемогоДокумента = Перечисления.ТипыОтправляемыхДокументов.ДанныеЭЛНФСС;
ИначеЕсли ДокументооборотСФССКлиентСервер.ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам(Ссылка,
ОбъектПоУмолчаниюРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникамСуществует)
ИЛИ ТипЗнчСсылкаНаОтчет = Тип("СправочникСсылка.ЭлектронныеПредставленияРегламентированныхОтчетов")
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ВидОтчета") =
Справочники.ВидыОтправляемыхДокументов.РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам Тогда
ТипОтправляемогоДокумента = "РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам";
Иначе
ТипОтправляемогоДокумента = Неопределено;
КонецЕсли;
Элементы.ФормаОбновить.Видимость =
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ВидимостьКнопкиОтправкаПоСостоянию(
СостояниеСдачи,
КонтролирующийОрган,
ТипОтправляемогоДокумента);
КонецЕсли;
Элементы.ПодробнаяИнформация.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВсеОтправкиНажатие(Элемент)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Ссылка", Ссылка);
ДополнительныеПараметры.Вставить("Наименование", Наименование);
ДополнительныеПараметры.Вставить("Организация", Организация);
ДополнительныеПараметры.Вставить("ЗаголовокФормы", ЗаголовокФормы);
ДополнительныеПараметры.Вставить("СтраницаЖурнала", СтраницаЖурнала);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ВсеОтправки",
ДополнительныеПараметры,
ЭтотОбъект,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗавершение(Результат, ДополнительныеПараметры) Экспорт
УправлениеЭУ();
ОповеститьОбОкончанииОтправки();
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ФормаСостоянияОтправки_ПослеОтправкиНеотправленногоИзвещения();
КонецПроцедуры
&НаСервере
Функция ЭлементНаименованиеЭтапа(НомерСтроки)
Возврат Элементы["НаименованиеЭтапа" + Строка(НомерСтроки)];
КонецФункции
&НаСервере
Функция ЭлементДатаСовершенияЭтапа(НомерСтроки)
Возврат Элементы["ДатаСовершенияЭтапа" + Строка(НомерСтроки)];
КонецФункции
&НаСервере
Функция ЭлементКомментарийЭтапа(НомерСтроки)
Возврат Элементы["КомментарийЭтапа" + Строка(НомерСтроки)];
КонецФункции
&НаСервере
Функция ЭлементПротоколЭтапа(НомерСтроки)
Возврат Элементы["ПротоколЭтапа" + Строка(НомерСтроки)];
КонецФункции
&НаКлиенте
Процедура ВыгрузитьПакетыПоДокументооборотамСдачиОтчетностиВФНС(Ответ, Параметры) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
КонтекстЭДОКлиент.ПроверитьПрикрепленныеПодписиИВыгрузитьПакетыПоФНС(Отправка)
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьЦиклыОбмена()
ТекстВопроса = НСтр("ru = 'Выгрузить все файлы и подписи?'");
Оповещение = Новый ОписаниеОповещения("ПродолжитьВыгрузкуЦикловОбмена", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыгрузкуЦикловОбмена(Ответ, Параметры) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС") Тогда
МодульДокументооборотРегистрацияВФНССлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ДокументооборотРегистрацияВФНССлужебныйКлиент");
МодульДокументооборотРегистрацияВФНССлужебныйКлиент.ВыгрузитьВсеФайлыЭтапов(Неопределено, Отправка, УникальныйИдентификатор);
Иначе
КонтекстЭДОКлиент.ВыгрузитьЦиклыОбмена(Отправка, Истина, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭУ(Отказ = Ложь)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ТекущееСостояниеОтправки = ОпределитьТекущееСостояние(КонтекстЭДОСервер);
Если ТекущееСостояниеОтправки = Неопределено Тогда
Сообщить(НСтр("ru = 'В базе отсутствуют файлы, необходимые для отображения состояния отправки. Проверьте, что файлы доступны и не были удалены.'"));
Отказ = Истина;
Возврат;
КонецЕсли;
УстановитьВидимостьКнопкиОбновить(КонтекстЭДОСервер, ТекущееСостояниеОтправки);
ОтпределитьСоставМенюВыгрузка();
ПрорисоватьКритическиеОшибки(ТекущееСостояниеОтправки);
ПрорисоватьНеотправленныеИзвещения(ТекущееСостояниеОтправки);
ПрорисоватьТаблицу(ТекущееСостояниеОтправки);
ПрорисоватьИсториюОтправок();
ПрорисоватьСПАРК();
КонецПроцедуры
&НаСервере
Функция ОпределитьТекущееСостояние(КонтекстЭДОСервер)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВозвращатьТаблицуЭтаповОтправки", Истина);
ДополнительныеПараметры.Вставить("ПолучатьОшибкиОтправки", Истина);
ДополнительныеПараметры.Вставить("ПолучатьДаты", Истина);
ДополнительныеПараметры.Вставить("Отправка", Отправка);
ДополнительныеПараметры.Вставить("ПоказыватьПомеченныеНаУдаление", Истина);
ДополнительныеПараметры.Вставить("ВозвращатьДокументыРеализацииПолномочийНО", Истина);
ТекущееСостояниеОтправки = КонтекстЭДОСервер.ТекущееСостояниеОтправки(Ссылка, ВидКонтролирующегоОргана, ДополнительныеПараметры);
ТекущееСостояние = "<Не удалось определить>";
Если ТекущееСостояниеОтправки <> Неопределено Тогда
Если ТекущееСостояниеОтправки.ТекущийЭтапОтправки <> Неопределено Тогда
ТекущееСостояние = ТекущееСостояниеОтправки.ТекущийЭтапОтправки.ТекстСтатуса;
КонецЕсли;
КонецЕсли;
Возврат ТекущееСостояниеОтправки;
КонецФункции
&НаСервере
Процедура ПрорисоватьНеотправленныеИзвещения(ТекущееСостояниеОтправки)
Элементы.БлокНеотправленныхСообщений.Видимость = ТекущееСостояниеОтправки.НеотправленныеИзвещения.ЕстьНеотправленныеИзвещения;
КонецПроцедуры
&НаСервере
Процедура ПрорисоватьКритическиеОшибки(ТекущееСостояниеОтправки)
ЕстьКритическиеОшибки = ТекущееСостояниеОтправки.ЕстьКритическиеОшибки;
Элементы.БлокКритическихОшибок.Видимость = ЕстьКритическиеОшибки;
Элементы.ЗначокКритическойОшибки.Видимость = ЕстьКритическиеОшибки;
КонецПроцедуры
&НаСервере
Процедура ПрорисоватьТаблицу(ТекущееСостояниеОтправки)
ТаблицаЭтаповОтправки = ТекущееСостояниеОтправки.ТаблицаЭтаповОтправки;
УдалитьСтрокиТаблицыСостоянияСоСтатусомНеОтправлено(ТаблицаЭтаповОтправки);
ЗначениеВРеквизитФормы(ТаблицаЭтаповОтправки, "ЭтапыСостояния");
ТаблицаСостояний = РеквизитФормыВЗначение("ЭтапыСостояния");
ЭтоДокументыРеализации = ТипЗнч(Ссылка) = Тип("СправочникСсылка.ДокументыРеализацииПолномочийНалоговыхОрганов");
Элементы.БлокЭтаповДокументовРеализацииПолномочий.Видимость = ЭтоДокументыРеализации;
Если ЭтоДокументыРеализации Тогда
СкрытьВсеСостоянияНаФормеКромеПервого();
ПрорисоватьБлокЭтаповДокументовРеализацииПолномочий(ТекущееСостояниеОтправки);
Иначе
СкрытьЛишниеИлиПоказатьНовыеСостоянияНаФорме(ТаблицаСостояний);
КонецЕсли;
ПрорисоватьТаблицуСостояний(ТаблицаСостояний);
Если ЭтоДокументыРеализации Тогда
Элементы.ЗаголовокНеотправленныхСообщений.Заголовок =
НСтр("ru = 'Оператору не отправлено извещение о получении документа'");
КонецЕсли;
КоличествоДокументовРеализацииПолномочийНО = ?(ТекущееСостояниеОтправки.Свойство("ДокументыРеализацииПолномочийНО"),
ТекущееСостояниеОтправки.ДокументыРеализацииПолномочийНО.Количество(), 0);
ДокументыРеализацииПолномочийНО.Очистить();
Если КоличествоДокументовРеализацииПолномочийНО > 0 Тогда
Для каждого ДокументРеализацииПолномочийНО Из ТекущееСостояниеОтправки.ДокументыРеализацииПолномочийНО Цикл
ДокументыРеализацииПолномочийНО.Добавить(ДокументРеализацииПолномочийНО.Ссылка,
Строка(ДокументРеализацииПолномочийНО.Ссылка));
КонецЦикла;
КонецЕсли;
Элементы.ДокументыРеализацииПолномочийНО.Заголовок = ?(КоличествоДокументовРеализацииПолномочийНО = 1,
НСтр("ru = 'Квитанция о присвоении РНПТ'"),
СтрШаблон(
НСтр("ru = 'Квитанции о присвоении РНПТ (%1)'"),
Формат(КоличествоДокументовРеализацииПолномочийНО, "ЧДЦ=; ЧН=")));
Элементы.БлокСвязанныеДокументыРеализацииПолномочийНО.Видимость =
ТекущееСостояниеОтправки.Свойство("ДокументыРеализацииПолномочийНО")
И ТекущееСостояниеОтправки.ДокументыРеализацииПолномочийНО.Количество() > 0;
КонецПроцедуры
&НаСервере
Процедура ПрорисоватьИсториюОтправок()
ВсеОтправки = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ВсеОтправки(Ссылка);
Элементы.ВсеОтправки.Видимость = ВсеОтправки.Количество() > 1;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеВШапкеФормы()
Период = ПредставлениеПериода;
Если СтрНайти(Период, "0001") > 0 Тогда
Период = "";
КонецЕсли;
Период = ?(ЗначениеЗаполнено(Период)," (" + Период + ")", "");
ЗаголовокФормы = Наименование + Период;
Элементы.Наименование.Заголовок = ЗаголовокФормы;
Получатель = ПредставлениеГосОргана;
Отправитель = Организация;
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ПерепискаСКонтролирующимиОрганами") Тогда
Если Ссылка.Статус = Перечисления.СтатусыПисем.Полученное Тогда
Получатель = Организация;
Отправитель = ПредставлениеГосОргана;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Отправитель) Тогда
Элементы.ОтКого.Заголовок = Отправитель;
Иначе
Элементы.ЗаголовокОтКого.Видимость = Ложь;
Элементы.ОтКого.Видимость = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Получатель) Тогда
Элементы.Кому.Заголовок = Получатель;
Иначе
Элементы.ЗаголовокКому.Видимость = Ложь;
Элементы.Кому.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УдалитьСтрокиТаблицыСостоянияСоСтатусомНеОтправлено(ТаблицаСостояний)
Если КонтролирующийОрган = "Минобороны" Тогда
СтатусыОбъектов = Новый Массив;
Иначе
СтатусыОбъектов
= РегламентированнаяОтчетностьКлиентСервер.СтатусыОбъектовРеглОтчетностиПриРучномВводе(Ссылка);
КонецЕсли;
Для каждого СтрокаТаблицыСостояний Из ТаблицаСостояний Цикл
ТекстНадписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1'"), СтрокаТаблицыСостояний.ТекстНадписи);
Если СтатусыОбъектов.Найти(ТекстНадписи) <> Неопределено Тогда
ТаблицаСостояний.Удалить(СтрокаТаблицыСостояний);
Прервать;
КонецЕсли;
Если ТекстНадписи = НСтр("ru = 'Не отправлено'") Тогда
ТаблицаСостояний.Удалить(СтрокаТаблицыСостояний);
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СкрытьЛишниеИлиПоказатьНовыеСостоянияНаФорме(ТаблицаСостояний)
ЭлементыТаблицыЭтапов = Элементы.ОбщийБлокЭтапов.ПодчиненныеЭлементы;
Для каждого ЭлементФормы Из ЭлементыТаблицыЭтапов Цикл
ИмяЭлемента = ЭлементФормы.Имя;
Если СтрНайти(ИмяЭлемента, "БлокЭтапаОтправки") > 0 Тогда
НомерБлока = Число(СтрЗаменить(ИмяЭлемента, "БлокЭтапаОтправки",""));
ВидимостьБлока = (НомерБлока <= ТаблицаСостояний.Количество());
Если ВидимостьБлока <> ЭлементФормы.Видимость Тогда
ЭлементФормы.Видимость = ВидимостьБлока;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СкрытьВсеСостоянияНаФормеКромеПервого()
ЭлементыТаблицыЭтапов = Элементы.ОбщийБлокЭтапов.ПодчиненныеЭлементы;
Для каждого ЭлементФормы Из ЭлементыТаблицыЭтапов Цикл
ИмяЭлемента = ЭлементФормы.Имя;
Если СтрНайти(ИмяЭлемента, "БлокЭтапаОтправки") > 0 Тогда
НомерБлока = Число(СтрЗаменить(ИмяЭлемента, "БлокЭтапаОтправки",""));
Если НомерБлока > 1 Тогда
ЭлементФормы.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция НомерТекущегоСостоянияВТаблицеСостояний(ТаблицаСостояний)
НомерТекущегоЭтапа = 0;
Для каждого СтрокаТаблицыСостояний Из ТаблицаСостояний Цикл
НомерСтроки = ТаблицаСостояний.Индекс(СтрокаТаблицыСостояний) + 1;
Если СтрокаТаблицыСостояний.ЭтапПройден Тогда
НомерТекущегоЭтапа = НомерСтроки;
КонецЕсли;
КонецЦикла;
Возврат НомерТекущегоЭтапа;
КонецФункции
&НаСервере
Процедура ПрорисоватьТаблицуСостояний(ТаблицаСостояний)
ИмяТипаСправочникаМашиночитаемыеДоверенности = "МашиночитаемыеДоверенности";
ЭтоМашиночитаемаяДоверенностьЕдиногоФормата = ДокументооборотСКОКлиентСервер.ПодсистемаЦПРРМЧДСуществует()
И ТипЗнч(Ссылка) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенности);
НомерТекущегоЭтапа = НомерТекущегоСостоянияВТаблицеСостояний(ТаблицаСостояний);
Для каждого СтрокаТаблицыСостояний Из ТаблицаСостояний Цикл
НомерСтроки = ТаблицаСостояний.Индекс(СтрокаТаблицыСостояний) + 1;
ЭлементНаименованиеЭтапа(НомерСтроки).Заголовок = СтрокаТаблицыСостояний.ТекстНадписи;
Если ЗначениеЗаполнено(СтрокаТаблицыСостояний.Дата) Тогда
Если ТипЗнч(СтрокаТаблицыСостояний.Дата) = Тип("Дата")
И СтрокаТаблицыСостояний.Дата = НачалоДня(СтрокаТаблицыСостояний.Дата) Тогда
ДатаНаступленияЭтапа = Формат(СтрокаТаблицыСостояний.Дата,"ДЛФ=D");
Иначе
ДатаНаступленияЭтапа = Строка(СтрокаТаблицыСостояний.Дата);
КонецЕсли;
ЭлементДатаСовершенияЭтапа(НомерСтроки).Заголовок = ДатаНаступленияЭтапа;
Иначе
ЭлементДатаСовершенияЭтапа(НомерСтроки).Заголовок = "";
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицыСостояний.КомментарийКСостоянию) И (НомерСтроки = НомерТекущегоЭтапа
ИЛИ ЭтоМашиночитаемаяДоверенностьЕдиногоФормата) Тогда
ЭлементКомментарийЭтапа(НомерСтроки).Заголовок = СокрЛП(СтрокаТаблицыСостояний.КомментарийКСостоянию);
ЭлементКомментарийЭтапа(НомерСтроки).Видимость = Истина;
Иначе
ЭлементКомментарийЭтапа(НомерСтроки).Видимость = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицыСостояний.НаименованиеПротокола) Тогда
ЭлементПротоколЭтапа(НомерСтроки).Видимость = Истина;
Если СтрокаТаблицыСостояний.Протокол = СтрокаТаблицыСостояний.НаименованиеПротокола Тогда
ЭлементПротоколЭтапа(НомерСтроки).Заголовок = СтроковыеФункции.ФорматированнаяСтрока(СтрокаТаблицыСостояний.НаименованиеПротокола);
ЭлементПротоколЭтапа(НомерСтроки).Гиперссылка = Ложь;
Иначе
ЭлементПротоколЭтапа(НомерСтроки).Заголовок = СтрокаТаблицыСостояний.НаименованиеПротокола;
ЭлементПротоколЭтапа(НомерСтроки).Гиперссылка = Истина;
КонецЕсли;
Иначе
Если ЗначениеЗаполнено(СтрокаТаблицыСостояний.КомментарийКСостоянию) И (НомерСтроки = НомерТекущегоЭтапа
ИЛИ ЭтоМашиночитаемаяДоверенностьЕдиногоФормата) Тогда
ЭлементПротоколЭтапа(НомерСтроки).Видимость = Ложь;
ЭлементПротоколЭтапа(НомерСтроки).Гиперссылка = Ложь;
Иначе
ЭлементПротоколЭтапа(НомерСтроки).Заголовок = "";
ЭлементПротоколЭтапа(НомерСтроки).Гиперссылка = Ложь;
ЭлементПротоколЭтапа(НомерСтроки).Видимость = Истина;
КонецЕсли;
КонецЕсли;
СостояниеСдачиОтчетности = СтрокаТаблицыСостояний.СостояниеСдачиОтчетности;
ЭтапПройден = СтрокаТаблицыСостояний.ЭтапПройден;
ЭлементыБлокЭтапа = Элементы["БлокЭтапа" + Строка(НомерСтроки)];
ЭлементыПротоколЭтапа = Элементы["ПротоколЭтапа" + Строка(НомерСтроки)];
ЭлементыНаименованиеЭтапа = Элементы["НаименованиеЭтапа" + Строка(НомерСтроки)];
ПротоколМинобороныЗагрузитьОтветнуюКвитанцию = СтрокаТаблицыСостояний.Протокол = "ЗагрузитьОтветнуюКвитанцию";
Если ЭтапПройден И НомерСтроки = НомерТекущегоЭтапа Тогда
ЦветФона = ЦветаСтиля.ЦветФонаНеначавшейсяОтправки;
Если СостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ДокументооборотНачат Тогда
ЦветФона = ЦветаСтиля.ЦветФонаТекущейОтправки;
ИначеЕсли СостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ОтрицательныйРезультатДокументооборота Тогда
ЦветФона = ЦветаСтиля.ЦветФонаОшибкиОтправки;
ИначеЕсли СостояниеСдачиОтчетности = Перечисления.СостояниеСдачиОтчетности.ПоложительныйРезультатДокументооборота Тогда
Если СтрокаТаблицыСостояний.ТекстНадписи = "Частично отозвано" Тогда
ЦветФона = ЦветаСтиля.ЦветФонаЧастичногоОтзыва;
Иначе
ЦветФона = ЦветаСтиля.ЦветФонаУдачнойОтправки;
КонецЕсли;
Иначе
ЦветФона = ЦветаСтиля.ЦветФонаНеначавшейсяОтправки;
КонецЕсли;
ЭлементыБлокЭтапа.ЦветФона = ЦветФона;
ЭлементыБлокЭтапа.Доступность = Истина;
ЭлементыПротоколЭтапа.ЦветТекста = ЦветаСтиля.ЦветГиперссылкиБРО;
ЭлементыНаименованиеЭтапа.ЦветТекста = ЦветаСтиля.ЦветТекстаФормы;
Если ПротоколМинобороныЗагрузитьОтветнуюКвитанцию Тогда
ЭлементыПротоколЭтапа.Доступность = Ложь;
ЭлементыПротоколЭтапа.Заголовок = "";
КонецЕсли;
ИначеЕсли НЕ ЭтапПройден Тогда
ЭлементыБлокЭтапа.ЦветФона = ЦветаСтиля.БазовыйЦветФонаЭтапаОтправки;
ЭлементыБлокЭтапа.Доступность = Ложь;
ЭлементыПротоколЭтапа.ЦветТекста = ЦветаСтиля.ЦветШрифтаНенаступившегоЭтапа;
ЭлементыНаименованиеЭтапа.ЦветТекста = ЦветаСтиля.ЦветШрифтаНенаступившегоЭтапа;
ИначеЕсли ЭтапПройден Тогда
ЭлементыБлокЭтапа.ЦветФона = ЦветаСтиля.БазовыйЦветФонаЭтапаОтправки;
ЭлементыБлокЭтапа.Доступность = Истина;
ЭлементыПротоколЭтапа.ЦветТекста = ЦветаСтиля.ЦветГиперссылкиБРО;
ЭлементыНаименованиеЭтапа.ЦветТекста = ЦветаСтиля.ЦветТекстаФормы;
Если ПротоколМинобороныЗагрузитьОтветнуюКвитанцию Тогда
ЭлементыПротоколЭтапа.ЦветТекста = ЦветаСтиля.ЦветШрифтаНенаступившегоЭтапа;
ЭлементыПротоколЭтапа.Доступность = Ложь;
ЭлементыПротоколЭтапа.Заголовок = "";
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПрорисоватьБлокЭтаповДокументовРеализацииПолномочий(ТекущееСостояниеОтправки)
Если ТекущееСостояниеОтправки <> Неопределено Тогда
ТекущийЭтапОтправки = ТекущееСостояниеОтправки.ТекущийЭтапОтправки;
Если ТекущийЭтапОтправки <> Неопределено Тогда
Элементы.ДатаСовершенияЭтапа.Заголовок = Формат(ТекущийЭтапОтправки.Дата, "ДЛФ=DT; ДП=' '");
Элементы.НадписьСтатуса.Заголовок = ТекущийЭтапОтправки.ТекстНадписи;
Элементы.ПротоколТребования.Заголовок = ТекущийЭтапОтправки.НаименованиеПротокола;
Элементы.НадписьОтветПоказать.Заголовок = ТекущийЭтапОтправки.КоличествоОтветов;
Элементы.НадписьПанелиПриема.Заголовок = ТекущийЭтапОтправки.КомментарийКСостоянию;
СостояниеСдачиОтчетности = ТекущийЭтапОтправки.СостояниеСдачиОтчетности;
Элементы.БлокЭтапаТребования.ЦветФона = ДокументооборотСКОВызовСервера.ЦветФонаПанелиОтправкиПоСтатусу(СостояниеСдачиОтчетности);
КонецЕсли;
КонецЕсли;
ТребованияФНС.ИзменитьОформлениеПанелиПриема(ЭтотОбъект, Ссылка);
Элементы.СведенияПоЭтапуТребования.Видимость =
НЕ Элементы.НадписьПанелиПриема.Видимость
И НЕ Элементы.КомандаПодтвердитьПрием.Видимость
И НЕ Элементы.ПодтвердитьЧтоЭДООбязателен.Видимость
И НЕ Элементы.ПодтвердитьЧтоЭДОНеОбязателен.Видимость;
КонецПроцедуры
&НаСервере
Процедура ОтпределитьСоставМенюВыгрузка()
Элементы.ВыгрузитьПакетДокументовДляПредставления.Видимость = Ложь;
Элементы.ВыгрузитьВсеФайлыИПодписи.Видимость = Ложь;
Элементы.ВыгрузитьОтправленныйОтчетСПодписью.Видимость = Ложь;
Элементы.ВыгрузитьОтправленныйПакетДокументов.Видимость = Ложь;
Элементы.ВыгрузитьПолученнуюКвитанцию.Видимость = Ложь;
Элементы.ВыгрузитьОтправленныйОтчет.Видимость = Ложь;
Элементы.ВыгрузитьПодпись.Видимость = Ложь;
Элементы.ВыгрузитьЗаявлениеНаОтзыв.Видимость = Ложь;
Элементы.ВыгрузитьПодписьЗаявленияНаОтзыв.Видимость = Ложь;
Элементы.ВыгрузитьПодтверждениеДоставкиВСФР.Видимость = Ложь;
Элементы.ВыгрузитьАрхивСОтчетомИКвитанциями.Видимость = Ложь;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Видимость = КонтекстЭДОСервер.ВидимостьКнопкиВыгрузкиОтветаИОНИПодписи(Ссылка);
Элементы.ВыгрузитьДокументСверкиСПодписьюФНС.Видимость = Видимость;
Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.МашиночитаемыеДоверенностиРаспределенныйРеестр") Тогда
СвойстваДоверенности = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Статус, РежимыИспользования");
СтатусОтправки = СвойстваДоверенности.Статус;
ЭтоДоверенностьФТС = (СвойстваДоверенности.РежимыИспользования = "ФТС");
ОтчетОтправлен = ЗначениеЗаполнено(СтатусОтправки)
И СтатусОтправки <> Перечисления.СтатусыМашиночитаемойДоверенностиКО.ВРаботе;
ОтзывОтчетаОтозван = (СтатусОтправки = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОтправленоЗаявлениеНаОтзыв
ИЛИ СтатусОтправки = Перечисления.СтатусыМашиночитаемойДоверенностиКО.Отозвано
ИЛИ СтатусОтправки = Перечисления.СтатусыМашиночитаемойДоверенностиКО.ОшибкаОтзыва);
Элементы.ВыгрузитьОтправленныйОтчет.Видимость = НЕ ЭтоДоверенностьФТС И ОтчетОтправлен;
Элементы.ВыгрузитьПодпись.Видимость = НЕ ЭтоДоверенностьФТС И ОтчетОтправлен;
Элементы.ВыгрузитьЗаявлениеНаОтзыв.Видимость = НЕ ЭтоДоверенностьФТС И ОтзывОтчетаОтозван;
Элементы.ВыгрузитьПодписьЗаявленияНаОтзыв.Видимость = НЕ ЭтоДоверенностьФТС И ОтзывОтчетаОтозван;
Элементы.ВыгрузитьАрхивСОтчетомИКвитанциями.Видимость = НЕ ЭтоДоверенностьФТС И ОтчетОтправлен;
Возврат;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФНС Тогда
Если ЗначениеЗаполнено(Отправка) Тогда
Если Отправка.Тип = Перечисления.ТипыЦикловОбмена.НалоговаяИлиБухгалтерскаяОтчетность Тогда
Элементы.ВыгрузитьПакетДокументовДляПредставления.Видимость = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФНС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ПФР
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСГС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ЦБ Тогда
Элементы.ВыгрузитьВсеФайлыИПодписи.Видимость = Истина;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
ЭтоДанныеЭЛН = ЗначениеЗаполнено(Отправка) И (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрДанныхЭЛНЗаполняемыхРаботодателем);
ЭтоПодтверждениеВидаДеятельности = ЗначениеЗаполнено(Отправка) И (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.ПодтверждениеВидаДеятельности);
ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам = ЗначениеЗаполнено(Отправка) И (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам);
Если ЭтоДанныеЭЛН ИЛИ ЭтоПодтверждениеВидаДеятельности
ИЛИ ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам Тогда
Элементы.ВыгрузитьОтправленныйОтчетСПодписью.Видимость = Истина;
КонецЕсли;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСРАР
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.РПН
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.РегистрацияЮЛФНС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС Тогда
Элементы.ВыгрузитьОтправленныйПакетДокументов.Видимость = Истина;
КонецЕсли;
Если ТипЗнч(Отправка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
ИЛИ ТипЗнч(Отправка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
ИЛИ ТипЗнч(Отправка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
Элементы.ВыгрузитьОтправленныйПакетДокументов.Видимость = Ложь;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС Тогда
Если ЗначениеЗаполнено(Отправка)
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ВходящийДокументСЭДОФСС")
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ОтветСтрахователяНаТребованиеПроверкиФСС")
И НЕ ТипЗнч(Отправка) = Тип("ДокументСсылка.ЗаявлениеНаФормированиеСправкиОРасчетах") Тогда
ЭтоДанныеЭЛН = (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрДанныхЭЛНЗаполняемыхРаботодателем);
ЭтоПодтверждениеВидаДеятельности = (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.ПодтверждениеВидаДеятельности);
ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам = (Отправка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам);
Если (Отправка.СтатусОтправки <> Перечисления.СтатусыОтправки.Отправлен
И (Отправка.СтатусОтправки <> Перечисления.СтатусыОтправки.НеПринят
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС))
ИЛИ ЭтоДанныеЭЛН ИЛИ ЭтоПодтверждениеВидаДеятельности
ИЛИ ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам Тогда
Элементы.ВыгрузитьПолученнуюКвитанцию.Видимость = Истина;
КонецЕсли;
Если ЭтоПодтверждениеВидаДеятельности
ИЛИ Отправка.ВидОтчета = Справочники.ВидыОтправляемыхДокументов.МашиночитаемыеДоверенностиФСС Тогда
ПодписанныйПакетЗаполнен = Отправка.ПодписанныйПакет.Получить() <> Неопределено;
Если ПодписанныйПакетЗаполнен Тогда
Если Отправка.ВидОтчета = Справочники.ВидыОтправляемыхДокументов.МашиночитаемыеДоверенностиФСС Тогда
Элементы.ВыгрузитьОтправленныйОтчетСПодписью.Видимость = Истина;
Элементы.ВыгрузитьОтправленныйПакетДокументов.Видимость = Ложь;
КонецЕсли;
Иначе
Элементы.ВыгрузитьОтправленныйОтчетСПодписью.Видимость = Ложь;
Элементы.ВыгрузитьОтправленныйПакетДокументов.Заголовок = НСтр("ru = 'Отправленный отчет'");
КонецЕсли;
КонецЕсли;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС Тогда
Элементы.ВыгрузитьПодтверждениеДоставкиВСФР.Видимость = Отправка.ДоставленоВСФР;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбъектВАрхиве(Знач ОбъектОтправки, Знач ИмяФайла)
КонтекстМодуля = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстМодуля.ОбъектВАрхиве(ОбъектОтправки, ИмяФайла);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьАдресФайлаПодписанногоПакета(
ОтправкаСсылка,
ИмяФайлаПодписанногоПакета,
ВАрхиве = Ложь,
УникальныйИдентификаторФормы = Неопределено)
ВАрхиве = ОбъектВАрхиве(ОтправкаСсылка, "ПодписанныйПакет");
Если ВАрхиве Тогда
Возврат "";
КонецЕсли;
ИмяФайлаПодписанногоПакета = ОтправкаСсылка.ИмяФайлаПакета;
ДанныеПодписанногоПакета = ОтправкаСсылка.ПодписанныйПакет.Получить();
Возврат ?(ДанныеПодписанногоПакета = Неопределено, Неопределено,
ПоместитьВоВременноеХранилище(ДанныеПодписанногоПакета, УникальныйИдентификаторФормы));
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьАдресФайлаПакета(
ОтправкаСсылка,
ИмяФайлаПакета,
ВАрхиве = Ложь,
УникальныйИдентификаторФормы = Неопределено)
ЭтоОтправкаРегистрацииЮЛ = Ложь;
МодульДокументооборотРегистрацияВФНС = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.ГосударственнаяРегистрацияВФНС") Тогда
МодульДокументооборотРегистрацияВФНС = ОбщегоНазначения.ОбщийМодуль("ДокументооборотРегистрацияВФНС");
ОписаниеОбъектов = МодульДокументооборотРегистрацияВФНС.ОписаниеОбъектовПодсистемы();
ЭтоОтправкаРегистрацииЮЛ = ТипЗнч(ОтправкаСсылка) = ОписаниеОбъектов.ТипСправочникаОтправки;
КонецЕсли;
Если ЭтоОтправкаРегистрацииЮЛ Тогда
ВсеЭтапы = МодульДокументооборотРегистрацияВФНС.СформироватьЭтапыОтправки(ОтправкаСсылка);
Если ВсеЭтапы.Отправлено.Выполнен И ВсеЭтапы.Отправлено.Успешно И ВсеЭтапы.Отправлено.Файлы.Количество() > 0 Тогда
ДанныеФайла = РаботаСФайлами.ДанныеФайла(ВсеЭтапы.Отправлено.Файлы[0], Новый Структура("ИдентификаторФормы", УникальныйИдентификаторФормы));
ИмяФайлаПакета = ДанныеФайла.ИмяФайла;
Возврат ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
КонецЕсли;
ИначеЕсли ТипЗнч(ОтправкаСсылка) <> Тип("СправочникСсылка.ОтправкиФТС") Тогда
ВАрхиве = ОбъектВАрхиве(ОтправкаСсылка, "ЗашифрованныйПакет");
Если ВАрхиве Тогда
Возврат "";
КонецЕсли;
ИмяФайлаПакета = ОтправкаСсылка.ИмяФайлаПакета;
ДанныеПакета = ОтправкаСсылка.ЗашифрованныйПакет.Получить();
Возврат ПоместитьВоВременноеХранилище(ДанныеПакета, УникальныйИдентификаторФормы);
Иначе
ВАрхиве = ОбъектВАрхиве(ОтправкаСсылка, "Подпись");
Если ВАрхиве Тогда
Возврат "";
КонецЕсли;
ИмяФайлаПакета = НСтр("ru = 'Подпись'") + ОтправкаСсылка.ИмяФайлаВыгрузки;
ДанныеПакета = ОтправкаСсылка.Подпись.Получить();
Возврат ПоместитьВоВременноеХранилище(ДанныеПакета, УникальныйИдентификаторФормы);
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьАдресФайлаКвитанции(
ОтправкаСсылка,
ИмяФайлаКвитанции,
ВАрхиве = Ложь,
УникальныйИдентификаторФормы = Неопределено)
ВАрхиве = ОбъектВАрхиве(ОтправкаСсылка, "Квитанция");
Если ВАрхиве Тогда
Возврат "";
КонецЕсли;
Если ТипЗнч(ОтправкаСсылка) <> Тип("СправочникСсылка.ОтправкиФТС") Тогда
ЭтоДанныеЭЛН = (ОтправкаСсылка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрДанныхЭЛНЗаполняемыхРаботодателем);
ЭтоПодтверждениеВидаДеятельности = (ОтправкаСсылка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.ПодтверждениеВидаДеятельности);
ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам = (ОтправкаСсылка.ВидОтчета =
Справочники.ВидыОтправляемыхДокументов.РеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам);
ИмяФайлаКвитанции = ОтправкаСсылка.ИдентификаторОтправкиНаСервере
+ ?(ЭтоДанныеЭЛН ИЛИ ЭтоПодтверждениеВидаДеятельности ИЛИ ЭтоРеестрСтимулирующихВыплатМедицинскимИСоциальнымРаботникам,
".xml", ".p7e");
ДанныеКвитанции = ОтправкаСсылка.Квитанция.Получить();
Возврат ПоместитьВоВременноеХранилище(ДанныеКвитанции, УникальныйИдентификаторФормы);
Иначе
СтрКвитанция = ОтправкаСсылка.Квитанция.Получить();
ВременныйФайл = ПолучитьИмяВременногоФайла();
Если ТипЗнч(СтрКвитанция) = Тип("ДвоичныеДанные") Тогда
ИмяФайлаКвитанции = НСтр("ru = 'Квитанция'") + ОтправкаСсылка.ИмяФайлаВыгрузки + ".bin";
СтрКвитанция.Записать(ВременныйФайл);
Иначе
ИмяФайлаКвитанции = НСтр("ru = 'Квитанция'") + ОтправкаСсылка.ИмяФайлаВыгрузки;
Текст = Новый ЗаписьТекста(ВременныйФайл, КодировкаТекста.UTF8);
Текст.Записать(СтрКвитанция);
Текст.Закрыть();
КонецЕсли;
ДанныеКвитанции = Новый ДвоичныеДанные(ВременныйФайл);
Возврат ПоместитьВоВременноеХранилище(ДанныеКвитанции, УникальныйИдентификаторФормы);
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ЗначенияРеквизитовОбъекта(Ссылка, ИменаРеквизитов, УникальныйИдентификатор)
РазрешенныеРеквизитыДанных = СтрРазделить("ФайлВырузки,ЭлектроннаяПодпись,ФайлЗаявленияНаОтзыв,"
+ "ЭлектроннаяПодписьЗаявленияНаОтзыв,Образ,КвитанцияДоставкиВСФР", ",");
Результат = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, ИменаРеквизитов);
Для каждого КлючИЗначение Из Результат Цикл
Если ТипЗнч(КлючИЗначение.Значение) = Тип("ХранилищеЗначения")
И РазрешенныеРеквизитыДанных.Найти(КлючИЗначение.Ключ) <> Неопределено Тогда
ДанныеЗначения = КлючИЗначение.Значение.Получить();
Результат[КлючИЗначение.Ключ] = ?(ДанныеЗначения = Неопределено, Неопределено,
ПоместитьВоВременноеХранилище(ДанныеЗначения, УникальныйИдентификатор));
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
Оповестить("Пометка прочтенным", , Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтправки()
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("Организация", Организация);
ПараметрыОповещения.Вставить("Ссылка", Ссылка);
Оповестить("Завершение отправки", ПараметрыОповещения, Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.ПоказатьКритическиеОшибкиПоСсылке(Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДокументыРеализацииПолномочийНОНажатиеПослеВыбора(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
ПоказатьЗначение(, ВыбранныйЭлемент.Значение);
КонецПроцедуры
&НаСервере
Процедура ПрорисоватьСПАРК()
Элементы.СПАРК.Видимость = ДокументооборотСКОВызовСервера.ИспользуетсяРежимТестирования() И ЭтоНужныйВидОтчетаСПАРК;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияЧтоЭДООбязателен(Результат, ВходящийКонтекст) Экспорт
УправлениеЭУ();
КонецПроцедуры
&НаКлиенте
Процедура КакУзнать_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТребованияФНСКлиент.СохранитьРезультатВыбораЭДОДляСсылки(Ссылка, Результат);
УправлениеЭУ();
КонецПроцедуры
#КонецОбласти