&НаКлиенте
Перем КонтекстЭДОКлиент;
&НаКлиенте
Перем ДанныеЗаполнения;
&НаКлиенте
Перем ДанныеОрганизации;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ВидКонтролирующегоОргана = Параметры.ТипПолучателя;
Организация = Параметры.Организация;
СертификатНедоступенИлиИстек = Параметры.СертификатНедоступенИлиИстек;
ПараметрыОтключенияНаправления = Параметры.ПараметрыОтключенияНаправления;
ОтправкаЗаявленияЗапрещена = Параметры.ОтправкаЗаявленияЗапрещена;
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Организация = ХранилищеОбщихНастроек.Загрузить("ДокументооборотСКонтролирующимиОрганами_ТекущаяОрганизацияПФР");
КонецЕсли;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи"));
Элементы.ПодписантыПользователь.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
НастроитьМЧД = (ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОтключенияНаправления, "НастроитьМЧД", Ложь)
ИЛИ ОтправкаЗаявленияЗапрещена)
И ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Исп.МЧД для ЕЦП", Истина);
ЭтоПредставитель = НастроитьМЧД
И ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОтключенияНаправления, "ЭтоПредставитель", Ложь);
МодифицированностьМЧД = Ложь;
ТекущийПользователь = Пользователи.ТекущийПользователь();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
УчетнаяЗапись = КонтекстЭДОСервер.УчетнаяЗаписьОрганизации(Организация);
ЭтоМультиРежим = Мультирежим.ЭтоМультиРежим(УчетнаяЗапись);
ИндексКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.Индекс(ВидКонтролирующегоОргана);
ИмяКонтролирующегоОргана = ДокументооборотСКОКлиентСервер.ЗаменитьПФРиФССнаСФР(
Метаданные.Перечисления.ТипыКонтролирующихОрганов.ЗначенияПеречисления[ИндексКонтролирующегоОргана].Синоним, Истина);
Заголовок = ИмяКонтролирующегоОргана;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ПФР Тогда
КодПолучателя = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
Организация,,
"КодОрганаПФР").КодОрганаПФР;
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС Тогда
КодПолучателя = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
Организация,,
"КодПодчиненностиФСС").КодПодчиненностиФСС;
Иначе
КодПолучателя = "";
КонецЕсли;
КодПолучателя = СокрЛП(КодПолучателя);
Элементы.ПодключенноеНаправление.Заголовок = СтрШаблон(
НСтр("ru = 'Направление %1 уже подключено.'"),
ИмяКонтролирующегоОргана + ?(КодПолучателя <> "", " " + КодПолучателя, ""));
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ПФР И НастроитьМЧД Тогда
Элементы.Доверенность.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.МашиночитаемыеДоверенностиФСС");
Элементы.ПодписантыДоверенность.ОграничениеТипа =
Новый ОписаниеТипов("СправочникСсылка.МашиночитаемыеДоверенностиФСС");
Если ОтправкаЗаявленияЗапрещена Тогда
Элементы.ГруппаНаправление.Видимость = Ложь;
КонецЕсли;
Элементы.ДекорацияОтступДоверенностиВерхний.Видимость = НЕ ОтправкаЗаявленияЗапрещена;
Элементы.ДекорацияОтступДоверенностиЧерта.Видимость = НЕ ОтправкаЗаявленияЗапрещена;
Элементы.ДекорацияОтступДоверенностиНижний.Видимость = НЕ ОтправкаЗаявленияЗапрещена;
Элементы.ОтчетностьПодписываетПредставитель.Видимость = Истина;
Элементы.ГруппаПредставлениеПредставителя.Видимость = Истина;
Элементы.ГруппаПодписанты.Видимость = Истина;
УстановитьПривилегированныйРежим(Истина);
СпецоператорСвязи = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "СпецоператорСвязи");
УстановитьПривилегированныйРежим(Ложь);
Если ?(СпецоператорСвязи = ПредопределенноеЗначение("Перечисление.СпецоператорыСвязи.Такском"),
НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Такс.отпр.люб.о.СФР в ЕЦП"),
НЕ ОнлайнСервисыРегламентированнойОтчетностиВызовСервера.СобытиеНаступило("Отпр.люб.отчет СФР в ЕЦП")) Тогда
ТипыДокументовЕЦППоУмолчанию = ДокументооборотСКОВызовСервера.ТипыДокументовЕЦППоУмолчанию(УчетнаяЗапись);
ТипыДокументовЕЦППоУмолчанию = СтрЗаменить(ТипыДокументовЕЦППоУмолчанию, "ЗПЭД,ЗОЭД", "");
ТипыДокументовЕЦППоУмолчанию = СтрЗаменить(ТипыДокументовЕЦППоУмолчанию, ",,", ",");
ТипыДокументовЕЦППоУмолчанию = СтрЗаменить(ТипыДокументовЕЦППоУмолчанию, ",", ", ");
Если ЗначениеЗаполнено(ТипыДокументовЕЦППоУмолчанию) Тогда
Элементы.ДекорацияПояснение.Заголовок = СтрЗаменить(Элементы.ДекорацияПояснение.Заголовок, "ЕФС-1",
ТипыДокументовЕЦППоУмолчанию);
КонецЕсли;
Элементы.ГруппаПояснение.Видимость = Истина;
КонецЕсли;
ТаблицаМЧД = ДокументооборотСКОВызовСервера.МЧДОбмена(Организация, "ПФР");
Если ТаблицаМЧД.Количество() = 0 И НЕ ЭтоПредставитель Тогда
ОтчетностьПодписываетПредставитель = 0;
Иначе
СтрокаМЧД = ТаблицаМЧД.Найти(Справочники.Пользователи.ПустаяСсылка(), "Пользователь");
Если СтрокаМЧД <> Неопределено ИЛИ ТаблицаМЧД.Количество() = 0 И НЕ ЭтоМультиРежим Тогда
Если СтрокаМЧД <> Неопределено Тогда
Доверенность = СтрокаМЧД.Доверенность;
Должность = СтрокаМЧД.Должность;
КонецЕсли;
ОтчетностьПодписываетПредставитель = 1;
Иначе
ОтчетностьПодписываетПредставитель = 2;
Для каждого СтрокаМЧД из ТаблицаМЧД Цикл
СтрокаПодписанта = Подписанты.Добавить();
СтрокаПодписанта.Пользователь = СтрокаМЧД.Пользователь;
СтрокаПодписанта.Доверенность = СтрокаМЧД.Доверенность;
СтрокаПодписанта.Должность = СтрокаМЧД.Должность;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ЦБ
И ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() Тогда
ИмяСправочникаМашиночитаемыеДоверенностиЦБ = "МашиночитаемыеДоверенностиЦБ";
Элементы.ДоверенностьЦБ.ОграничениеТипа =
Новый ОписаниеТипов("СправочникСсылка." + ИмяСправочникаМашиночитаемыеДоверенностиЦБ);
Элементы.ДекорацияОтступДоверенностиВерхний.Видимость = Истина;
Элементы.ДекорацияОтступДоверенностиЧерта.Видимость = Истина;
Элементы.ДекорацияОтступДоверенностиНижний.Видимость = Истина;
Элементы.ДоверенностьЦБ.Видимость = Истина;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| УчетныеЗаписиДокументооборота.ДоверенностьЦБ КАК ДоверенностьЦБ
|ИЗ
| Справочник.УчетныеЗаписиДокументооборота КАК УчетныеЗаписиДокументооборота
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО Организации.УчетнаяЗаписьОбмена = УчетныеЗаписиДокументооборота.Ссылка
|ГДЕ
| Организации.Ссылка = &Организация");
Запрос.УстановитьПараметр("Организация", Организация);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ДоверенностьЦБ = Выборка.ДоверенностьЦБ;
КонецЕсли;
КонецЕсли;
Элементы.НастроитьНаправление.Видимость = (ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСРАР
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.РПН
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС);
ЗаявлениеНаИзменениеДоступно = НЕ СертификатНедоступенИлиИстек;
Если НЕ ОтправкаЗаявленияЗапрещена И НЕ ЗаявлениеНаИзменениеДоступно Тогда
Элементы.ОтключитьНаправление.Заголовок = НСтр("ru = 'Подготовить заявление'");
КонецЕсли;
УправлениеФормой(ЭтаФорма);
КонтролирующийОрган = Метаданные.Перечисления.ТипыКонтролирующихОрганов.ЗначенияПеречисления[ИндексКонтролирующегоОргана].Имя;
КлючСохраненияПоложенияОкна = "Отключить" + КонтролирующийОрган
+ ?(НЕ ЗаявлениеНаИзменениеДоступно, "Подготовить", "");
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Успешная отправка заявления. Закрыть форму владельца"
И Источник = ЗаявлениеАбонента.Ссылка Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДоверенностьЦБНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Организация", Организация));
ИмяСправочникаМашиночитаемыеДоверенностиЦБ = "МашиночитаемыеДоверенностиЦБ";
ВходящийКонтекст = Новый Структура("ДоверенностьУжеЗадана", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("ДоверенностьЦБПослеВыбора", ЭтотОбъект, ВходящийКонтекст);
ОткрытьФорму(
"Справочник." + ИмяСправочникаМашиночитаемыеДоверенностиЦБ + ".ФормаВыбора",
ПараметрыФормы,
ЭтаФорма,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьЦБПриИзменении(Элемент)
ВходящийКонтекст = Новый Структура("ДоверенностьУжеЗадана", Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ДоверенностьЦБПослеВыбора", ЭтотОбъект, ВходящийКонтекст);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, ДоверенностьЦБ);
КонецПроцедуры
&НаКлиенте
Процедура ОтчетностьПодписываетПредставительПриИзменении(Элемент)
МодифицированностьМЧД = Истина;
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьПриИзменении(Элемент)
МодифицированностьМЧД = Истина;
ДолжностьИзМЧД = ?(ЗначениеЗаполнено(Доверенность)
И Доверенность <> ПредопределенноеЗначение("Справочник.МашиночитаемыеДоверенностиФСС.ПустаяСсылка"),
ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(Доверенность,
"ПредставительФЛ_Должность"), "");
Должность = Лев(ДолжностьИзМЧД, 255);
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДолжностьПриИзменении(Элемент)
МодифицированностьМЧД = Истина;
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПодписанты
&НаКлиенте
Процедура ПодписантыПриИзменении(Элемент)
Если Элементы.Подписанты.ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные = Элементы.Подписанты.ТекущиеДанные;
Если Элемент.ТекущийЭлемент = Элементы.ПодписантыДоверенность Тогда
ДолжностьИзМЧД = ?(ЗначениеЗаполнено(ТекущиеДанные.Доверенность)
И ТекущиеДанные.Доверенность <> ПредопределенноеЗначение("Справочник.МашиночитаемыеДоверенностиФСС.ПустаяСсылка"),
ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗначениеРеквизитаОбъекта(ТекущиеДанные.Доверенность,
"ПредставительФЛ_Должность"), "");
ТекущиеДанные.Должность = Лев(ДолжностьИзМЧД, 255);
КонецЕсли;
КоличествоОдинаковыхПользователей = 0;
Для каждого СтрокаПодписанта Из Подписанты Цикл
Если СтрокаПодписанта.Пользователь = ТекущиеДанные.Пользователь Тогда
КоличествоОдинаковыхПользователей = КоличествоОдинаковыхПользователей + 1;
КонецЕсли;
Если КоличествоОдинаковыхПользователей > 1 Тогда
ТекущиеДанные.Пользователь = ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка");
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МодифицированностьМЧД = Истина;
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОтключитьНаправление(Команда)
Если ОтправкаЗаявленияЗапрещена ИЛИ МодифицированностьМЧД Тогда
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ПФР")
И МодифицированностьМЧД Тогда
Если ОтчетностьПодписываетПредставитель = 1 И (НЕ ЗначениеЗаполнено(Доверенность) ИЛИ Доверенность =
ПредопределенноеЗначение("Справочник.МашиночитаемыеДоверенностиФСС.ПустаяСсылка")) Тогда
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(НСтр("ru = 'Укажите доверенность'"),, "Доверенность");
Возврат;
ИначеЕсли ОтчетностьПодписываетПредставитель = 2 И Подписанты.Количество() = 0 Тогда
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(НСтр("ru = 'Добавьте хотя бы одного подписанта'"),, "Подписанты");
Возврат;
КонецЕсли;
МассивПодписантов = Новый Массив;
Для каждого СтрокаПодписанта Из Подписанты Цикл
СведенияПодписанта = Новый Структура;
СведенияПодписанта.Вставить("Пользователь", СтрокаПодписанта.Пользователь);
СведенияПодписанта.Вставить("Доверенность", СтрокаПодписанта.Доверенность);
СведенияПодписанта.Вставить("Должность", СтрокаПодписанта.Должность);
МассивПодписантов.Добавить(СведенияПодписанта);
КонецЦикла;
ДокументооборотСКОВызовСервера.ЗаписатьМЧДОбмена(
Организация,
ВидКонтролирующегоОргана,
ОтчетностьПодписываетПредставитель,
Доверенность,
МассивПодписантов,
Должность);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ЦБ")
И ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() И МодифицированностьМЧД Тогда
ЗаписатьМЧДЦБ(Организация, ДоверенностьЦБ);
КонецЕсли;
Закрыть();
ИначеЕсли НЕ СертификатНедоступенИлиИстек И НЕ ЭтоМультиРежим Тогда
ОтправитьЗаявлениеНаИзменениеВСкрытомРежиме();
Иначе
Закрыть(ВидКонтролирующегоОргана);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьНаправление(Команда)
Закрыть();
Если ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
КонтекстЭДОКлиент.ОткрытьФормуНастройкиЭДОсФСС(Организация);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР") Тогда
КонтекстЭДОКлиент.ОткрытьФормуНастройкиЭДОсФСРАР(Организация);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН") Тогда
КонтекстЭДОКлиент.ОткрытьФормуНастройкиЭДОсРПН(Организация);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФТС") Тогда
КонтекстЭДОКлиент.ОткрытьФормуНастройкиЭДОсФТС(Организация);
ИначеЕсли ВидКонтролирующегоОргана = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ЦБ") Тогда
КонтекстЭДОКлиент.ОткрытьФормуНастройкиЭДОсФНСиПФРиРосстатомиЦБ(Организация, ЭтаФорма,, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
Если КонтекстЭДОКлиент = Неопределено Тогда
Закрыть();
КонецЕсли;
СтруктураРеквизитов = Новый Структура("Организация, ПриОткрытии", Организация, Ложь);
КонтекстЭДОКлиент.ЗаполнитьДанныеОрганизации(СтруктураРеквизитов);
ДанныеЗаполнения = КонтекстЭДОКлиент.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(СтруктураРеквизитов);
ДанныеОрганизации = ДанныеЗаполнения.СтруктураДанныхОрганизации;
КонецПроцедуры
#Область ОтправкаЗаявления
&НаКлиенте
Процедура ОтправитьЗаявлениеНаИзменениеВСкрытомРежиме()
ДополнительныеПараметры = ДлительнаяОтправкаКлиент.ПараметрыДлительнойОтправкиЗаявления();
ДополнительныеПараметры.Вставить("Организация", Организация);
Если НЕ ДлительнаяОтправкаКлиент.ПоказатьФормуДлительнойОтправкиЗаявления(ДополнительныеПараметры) Тогда
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьЗаявлениеНаИзменение", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьЗаявлениеНаИзменение() Экспорт
УдалосьСоздать = СоздатьНовоеЗаявлениеСНовымНаправлением();
Если НЕ УдалосьСоздать Тогда
ДлительнаяОтправкаКлиент.ОповеститьОНеудачнойОтправкеЗаявления();
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"СообщитьРезультатОтправки",
ЭтотОбъект);
ИдентификаторАбонента = КонтекстЭДОКлиент.ИдентификаторАбонентаПоОрганизации(Организация);
Контекст = КонтекстЭДОКлиент.ПараметрыПроцедурыСформироватьИОтправитьЗаявление();
Контекст.ДокументЗаявление = ЗаявлениеАбонента;
Контекст.ИдентификаторАбонента = ИдентификаторАбонента;
Контекст.ВызовИзМастераПодключенияК1СОтчетности = Истина;
Контекст.ВыполняемоеОповещение = ОписаниеОповещения;
Контекст.ФормироватьЗакрытыйКлючИЗапросНаСертификат = Ложь;
КонтекстЭДОКлиент.СформироватьИОтправитьЗаявление(Контекст);
КонецПроцедуры
&НаСервере
Функция СоздатьНовоеЗаявлениеСНовымНаправлением()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
НовыйДокументЗаявление = ОбработкаЗаявленийАбонента.СоздатьЗаявлениеНаИзменениеВСкрытомРежиме(Организация);
Если НовыйДокументЗаявление = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если НЕ УдалосьОтключитьНаправление(НовыйДокументЗаявление) Тогда
Возврат Ложь;
КонецЕсли;
Попытка
НовыйДокументЗаявление.Записать();
Исключение
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(ИнформацияОбОшибке().Описание);
Возврат Ложь;
КонецПопытки;
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ЗаявлениеАбонента");
Возврат Истина;
КонецФункции
&НаСервере
Функция УдалосьОтключитьНаправление(НовыйДокументЗаявление)
НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Очистить();
ОбработкаЗаявленийАбонента.СкорректироватьНаправленияСдачиОтчетностиСУчетомПредыдущихЗаявлений(НовыйДокументЗаявление, ВидКонтролирующегоОргана);
ДанныеЗаполнения = ОбработкаЗаявленийАбонента.СоздатьЗаявлениеНаИзменениеВСкрытомРежиме_ДанныеЗаполнения(Организация);
ДанныеОрганизации = ДанныеЗаполнения.СтруктураДанныхОрганизации;
Если ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ПФР
ИЛИ ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСС Тогда
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВПФР;
ОбработкаЗаявленийАбонента.УдалитьПолучателейКонтролирующегоОргана(НовыйДокументЗаявление, Перечисления.ТипыКонтролирующихОрганов.ПФР);
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСС;
ОбработкаЗаявленийАбонента.УдалитьПолучателейКонтролирующегоОргана(НовыйДокументЗаявление, Перечисления.ТипыКонтролирующихОрганов.ФСС);
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФСРАР Тогда
НовыйДокументЗаявление.ПодатьЗаявкуНаСертификатДляФСРАР = Ложь;
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСРАР;
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.РПН Тогда
НовыйДокументЗаявление.ПодатьЗаявкуНаПодключениеРПН = Ложь;
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРПН;
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ФТС Тогда
НовыйДокументЗаявление.ПодатьЗаявкуНаПодключениеФТС = Ложь;
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФТС;
ИначеЕсли ВидКонтролирующегоОргана = Перечисления.ТипыКонтролирующихОрганов.ЦБ Тогда
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВЦБ;
ОбработкаЗаявленийАбонента.УдалитьПолучателейКонтролирующегоОргана(НовыйДокументЗаявление,
Перечисления.ТипыКонтролирующихОрганов.ЦБ);
КонецЕсли;
Если НЕ ОбработкаЗаявленийАбонента.ЗаявлениеСодержитМинимальноНеобходимыхПолучателей(НовыйДокументЗаявление) Тогда
ТекстОшибки = ДокументооборотСКОКлиентСервер.ЗаменитьПФРиФССнаСФР(
НСтр("ru = 'Среди контролирующих органов, в которые будет сдаваться отчетность, должены быть ФНС или ПФР.'"),
Истина);
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(ТекстОшибки);
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура СообщитьРезультатОтправки(Результат, ВходящийКонтекст) Экспорт
Если ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("ТекстОшибки")
И ЗначениеЗаполнено(Результат.ТекстОшибки) Тогда
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(Результат.ТекстОшибки);
ДлительнаяОтправкаКлиент.ОповеститьОНеудачнойОтправкеЗаявления();
ИначеЕсли ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("ОписаниеОшибки")
И ЗначениеЗаполнено(Результат.ОписаниеОшибки) Тогда
ДлительнаяОтправкаКлиентСервер.ВывестиОшибку(Результат.ОписаниеОшибки);
ДлительнаяОтправкаКлиент.ОповеститьОНеудачнойОтправкеЗаявления();
Иначе
ТекстПояснения = НСтр("ru = 'Мы уведомим вас о результате обработки заявления.
|Обычно это занимает 20-30 минут.'");
ДлительнаяОтправкаКлиент.ОповеститьОбУдачнойОтправкеЗаявления(
Организация,
ЗаявлениеАбонента.Ссылка,
ТекстПояснения);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ДоверенностьЦБПослеВыбора(Результат, ВходящийКонтекст) Экспорт
Если ЗначениеЗаполнено(Результат) И НЕ МЧДЦБПодписана(Результат) Тогда
РезультатыПроверки = ДокументооборотСКОВызовСервера.ПроверитьМЧДЦБ(Результат);
Если РезультатыПроверки.Количество() <> 0 Тогда
Для каждого РезультатПроверки Из РезультатыПроверки Цикл
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатПроверки.ТекстОшибки);
КонецЦикла;
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Машиночитаемая доверенность должна быть подписана доверителем, исправьте ошибки и подпишите доверенность'"));
Если ВходящийКонтекст.ДоверенностьУжеЗадана Тогда
ДоверенностьЦБ = Неопределено;
КонецЕсли;
Возврат;
КонецЕсли;
ВходящийКонтекст.Вставить("ДоверенностьЦБ", Результат);
ОписаниеОповещения = Новый ОписаниеОповещения("ДоверенностьЦБПослеВопроса", ЭтотОбъект, ВходящийКонтекст);
ПоказатьВопрос(
ОписаниеОповещения,
НСтр("ru = 'Машиночитаемая доверенность должна быть подписана доверителем. Подписать сейчас?'"),
РежимДиалогаВопрос.ДаНет,,
КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
Если НЕ ВходящийКонтекст.ДоверенностьУжеЗадана Тогда
ДоверенностьЦБ = Результат;
КонецЕсли;
МодифицированностьМЧД = Истина;
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьЦБПослеВопроса(Результат, ВходящийКонтекст) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Если ВходящийКонтекст.ДоверенностьУжеЗадана Тогда
ДоверенностьЦБ = Неопределено;
КонецЕсли;
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ДоверенностьЦБПослеПодписи", ЭтотОбъект, ВходящийКонтекст);
ДокументооборотСКОКлиент.ПодписатьМЧДЦБ(ОписаниеОповещения, ВходящийКонтекст.ДоверенностьЦБ);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьЦБПослеПодписи(Результат, ВходящийКонтекст) Экспорт
Если НЕ Результат.Выполнено Тогда
Если ВходящийКонтекст.ДоверенностьУжеЗадана Тогда
ДоверенностьЦБ = Неопределено;
КонецЕсли;
Возврат;
КонецЕсли;
Если НЕ ВходящийКонтекст.ДоверенностьУжеЗадана Тогда
ДоверенностьЦБ = ВходящийКонтекст.ДоверенностьЦБ;
КонецЕсли;
МодифицированностьМЧД = Истина;
УправлениеФормой(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма)
Если Форма.ОтправкаЗаявленияЗапрещена ИЛИ Форма.МодифицированностьМЧД Тогда
Форма.Элементы.ОтключитьНаправление.Заголовок = НСтр("ru = 'Сохранить'");
Форма.Элементы.ОтключитьНаправление.КнопкаПоУмолчанию = Истина;
Форма.Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Отмена'");
КонецЕсли;
Если Форма.ОтчетностьПодписываетПредставитель <> 1 И Форма.Доверенность <> Неопределено И Форма.Доверенность <>
ПредопределенноеЗначение("Справочник.МашиночитаемыеДоверенностиФСС.ПустаяСсылка") Тогда
Форма.Доверенность = ПредопределенноеЗначение("Справочник.МашиночитаемыеДоверенностиФСС.ПустаяСсылка");
КонецЕсли;
Если Форма.ОтчетностьПодписываетПредставитель <> 1 И ЗначениеЗаполнено(Форма.Должность) Тогда
Форма.Должность = "";
КонецЕсли;
Если Форма.ОтчетностьПодписываетПредставитель <> 2 И Форма.Подписанты.Количество() <> 0 Тогда
Форма.Подписанты.Очистить();
КонецЕсли;
Форма.Элементы.Доверенность.Доступность = (Форма.ОтчетностьПодписываетПредставитель = 1);
Форма.Элементы.Должность.Доступность = (Форма.ОтчетностьПодписываетПредставитель = 1);
Форма.Элементы.Подписанты.Доступность = (Форма.ОтчетностьПодписываетПредставитель = 2);
КонецПроцедуры
&НаСервереБезКонтекста
Функция МЧДЦБПодписана(ДоверенностьСсылка)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоверенностьСсылка,
"ЭлектроннаяПодпись").Получить() <> Неопределено;
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаписатьМЧДЦБ(Организация, ДоверенностьЦБ)
УчетнаяЗапись = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "УчетнаяЗаписьОбмена");
ОбъектУчетнаяЗапись = УчетнаяЗапись.ПолучитьОбъект();
ОбъектУчетнаяЗапись.ДоверенностьЦБ = ДоверенностьЦБ;
ОбъектУчетнаяЗапись.Записать();
КонецПроцедуры
#КонецОбласти