&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;
&НаКлиенте
Перем СсылкаНаДокумент;
&НаКлиенте
Перем МенеджерКриптографии;
&НаКлиенте
Перем СертификатКриптографии;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ИнициализироватьПараметры(Параметры);
ОткрытьНаНужнойСтраницеПриСозданииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ПрограммноеЗакрытие Тогда
Возврат;
КонецЕсли;
Если СпроситьПроЗаявлениеПФР() Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_СпроситьПроСохранениеЗаявленияПФР", 0.1, Истина);
ИначеЕсли СпроситьПроЭДО() Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_СпроситьПроЭДОПередЗакрытием", 0.1, Истина);
Иначе
ТекстПредупреждения = НСтр("ru = 'Прервать настройку 1С-Отчетности?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект,
Отказ,
ЗавершениеРаботы,
ТекстПредупреждения,
"ПрограммноеЗакрытие");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Сейчас = ТекущаяДата();
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
СогласиеЕНСУспешноОтправлено =
ИмяСобытия = "Успешная отправка"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ВыполняемоеОповещение")
И ТипЗнч(Параметр.ВыполняемоеОповещение.ДополнительныеПараметры) = Тип("Структура")
И Параметр.ВыполняемоеОповещение.ДополнительныеПараметры.Свойство("СсылкаНаОтчет")
И Параметр.ВыполняемоеОповещение.ДополнительныеПараметры.СсылкаНаОтчет = СогласиеЕНС;
Если СогласиеЕНСУспешноОтправлено Тогда
СогласиеЕНСОтправлено = Истина;
КонецЕсли;
Если ИмяСобытия = "ДлительноеДействиеЗакрыта"
И Источник = СогласиеЕНС
И СогласиеЕНСОтправлено Тогда
ДействияПослеОтправкиСогласияЕНС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДействияПослеОтправкиСогласияЕНС()
ОтправитьСогласиеЕНС = Ложь;
ИзменитьОформлениеКнопкиОк();
Если ПоказатьГалку1СЭДО() И ПродолжитьПодключениеЭДО Тогда
ЗавершитьПодключениеКЭДО();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область ЗаявленияВПФР
&НаКлиенте
Процедура ОшибкаОтправкиЗаявленияВПФР_НайтиВСпискеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.НайтиЗаявлениеПФРВФорме1СОтчетность(ОтправляемоеЗаявлениеПФР, Организация);
КонецПроцедуры
&НаКлиенте
Процедура ФлагЗаявлениеУжеПредоставленоВПФРПриИзменении(Элемент)
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаКлиенте
Процедура ЗаявлениеВПФР_СсылкаНаЗаявлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
КонтекстЭДОКлиент.ОткрытьЗаявлениеВПФР(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОтправкаДокументов_ПодсказкаПроУПУПОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Ссылка = "заявления" Тогда
ПоказатьЗначение(, ДокументЗаявление.ЗПЭД);
Иначе
Для Каждого ЭлектронныйДокумент Из ДокументЗаявление.ЭлектронныеДокументы Цикл
МЧД = ЭлектронныйДокумент.МЧД;
Если ТипЗнч(МЧД) = Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю") Тогда
ПоказатьЗначение(, МЧД);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Ошибка_ЧтоДелатьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФормуПомощи();
КонецПроцедуры
&НаКлиенте
Процедура СсылкаРаспискаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Отсканируйте" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"СканироватьФайл_Завершение",
ЭтотОбъект);
РаботаСФайламиКлиент.ДобавитьФайл(
ОписаниеОповещения,
ДокументЗаявление.Ссылка,
ЭтотОбъект,
3,
Истина);
Иначе
Требования = ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ТребованияКИзображениямВЗаявленииПо1СОтчетности();
ПараметрыДобавления = Новый Структура;
ПараметрыДобавления.Вставить("МаксимальныйРазмерФайла", Требования.МаксимальныйРазмерФайла);
ПараметрыДобавления.Вставить("ВозвращатьРазмер", Истина);
ПараметрыДобавления.Вставить("ДопустимыеТипыФайлов", Требования.ДопустимыеТипыФайлов);
ПараметрыДобавления.Вставить("Требования", Требования);
Оповещение = Новый ОписаниеОповещения("СканРаспискаПослеДобавленияФайлов", ЭтотОбъект);
ОперацииСФайламиЭДКОКлиент.ДобавитьФайлы(Оповещение, УникальныйИдентификатор, "Выберите файл <Сведения о сертификате>", ПараметрыДобавления);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьСсылкаРаспискаНажатие(Элемент)
ФайлСканРасписка = Неопределено;
ИзменитьОформлениеДокумента(0, 0, "");
КонецПроцедуры
&НаКлиенте
Процедура РаспечатайтеСертификатОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Адрес = ОбработкаЗаявленийАбонентаВызовСервера.АдресПоBase64(РаспискаОтУЦ, УникальныйИдентификатор);
ОперацииСФайламиЭДКОКлиент.ОткрытьФайл(Адрес, "Расписка.pdf");
Иначе
КонтекстЭДОКлиент.НапечататьДокумент(Расписка, НСтр("ru = 'Расписка'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяПомощь2Нажатие(Элемент)
ОткрытьФормуПомощи();
КонецПроцедуры
&НаКлиенте
Процедура ЧтоДелать2ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФормуПомощи();
КонецПроцедуры
&НаКлиенте
Процедура ОзнакомьтесьССертифкатомЭлектронноеПодписаниеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если АдресРасписки = "" Тогда
ПолучитьАдресНовогоСертификата();
Если АдресРасписки = "" Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не удалось скачать сертификат с сервера удостоверяющего центра. Попробуйте позже.'"));
Возврат;
КонецЕсли;
КонецЕсли;
КонтекстЭДОКлиент.НапечататьДокумент(Расписка, НСтр("ru = 'Расписка'"));
КонецПроцедуры
&НаКлиенте
Процедура КСожалениюОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "условия" Тогда
ПерейтиПоНавигационнойСсылке("https://1c-report.ru/perevipusk_kep/");
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "сертификат" Тогда
КриптографияЭДКОКлиент.ПоказатьСертификат(СертификатДляПодписания, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПояснениеКРаспискеДЛОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Адрес = ОбработкаЗаявленийАбонентаВызовСервера.АдресПоBase64(РаспискаОтУЦ, УникальныйИдентификатор);
ОперацииСФайламиЭДКОКлиент.ОткрытьФайл(Адрес, "Расписка.pdf");
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьСогласиеЕНСПояснениеОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка)
Если Ссылка = "согласие" Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(,СогласиеЕНС);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьСогласиеЕНСПриИзменении(Элемент)
ИзменитьОформлениеСтраницыУспешноеЗавершение();
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьПодключениеЭДОПриИзменении(Элемент)
ИзменитьОформлениеСтраницыУспешноеЗавершение();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
&НаКлиенте
Процедура ТаблицаДокументовПометкаПриИзменении(Элемент)
ИзменитьОформлениеСтраницыМЧДиЗПЭД(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаДокументовПредставлениеОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ТаблицаДокументов.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ПоказатьЗначение(,ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
СогласиеЕНСОтправлено = Ложь;
Если ПоказатьГалкуСогласияЕНС() И ОтправитьСогласиеЕНС Тогда
Если СогласиеЕНСОтправлено() Тогда
ОтправитьСогласиеЕНС = Ложь;
Сообщить(НСтр("ru = 'Согласие уже отправлено'"));
ИзменитьОформлениеКнопкиОк();
Иначе
РегламентированнаяОтчетностьКлиент.ПриНажатииНаКнопкуОтправкиВКонтролирующийОрган(
ЭтотОбъект,
"ФНС",
,
Истина,
СогласиеЕНС,
Организация);
КонецЕсли;
ИначеЕсли ПоказатьГалку1СЭДО() И ПродолжитьПодключениеЭДО Тогда
ДействияПослеОтправкиСогласияЕНС();
КонецЕсли;
КонецПроцедуры
Функция СогласиеЕНСОтправлено()
Возврат ДокументооборотСКО.ОтчетОтправленПоСсылке(СогласиеЕНС);
КонецФункции
&НаКлиенте
Процедура ОтправитьМЧДПозже(Команда)
ПослеОтправкиМЧД(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьМЧДСейчас(Команда)
Для каждого Строка Из ТаблицаДокументов Цикл
Если Строка.Пометка Тогда
Строка.ОписаниеОшибки = "";
Строка.Выполнено = Ложь;
Строка.СостояниеОтправки = "";
КонецЕсли;
КонецЦикла;
СертификатРуководителяОтпечаток = ОтпечатокРуководителя();
ИзменитьОформлениеСтраницыМЧДиЗПЭД(Истина);
Заголовок = НСтр("ru = 'Подождите, пожалуйста...'");
ОтправитьМЧДЦикл(0);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтправкиМЧД(Команда)
ПоказатьЗавершениеНастройки();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьОшибку(Команда)
ПрограммноеЗакрытие = Истина;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПропуститьОтправкуЗявленияПФР(Команда)
КонтекстЭДОКлиент.ОтправитьЗаявлениеВПФРПозже(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеВПФРПозже(Команда)
КонтекстЭДОКлиент.ОтправитьЗаявлениеВПФРПозже(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаявленияВПФР_ОтправитьЗаявлениеСейчас(Команда = Неопределено)
КонтекстЭДОКлиент.ОтправитьЗаявлениВПФРИзПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПовторитьОтправкуСЭлПодписью(Команда)
ПередатьРаспискуВБумажномВиде = Ложь;
НастроитьАвтоматически(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура КомандаБольшеНеНапоминать(Команда)
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ЗаявлениеОдобрено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодтверждениеБольшеНеПоказывать_Завершение",
ЭтотОбъект);
ОткрытьФорму(
"Документ.ЗаявлениеАбонентаСпецоператораСвязи.Форма.ПодтверждениеБольшеНеПоказывать",
,,,,,
ОписаниеОповещения);
Иначе
БольшеНеНапоминать();
Если ЗаявлениеОдобрено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"КомандаБольшеНеНапоминать_Завершение",
ЭтотОбъект);
Текст = НСтр("ru = 'Вы сможете завершить настройку 1С-Отчетности по данному заявлению позже, нажав в форме заявления кнопку ""Обновить"" сверху.
|Все заявления доступны по ссылке ""Список заявлений"" в разделе ""Настройки"" формы ""1С-Отчетность""'");
ПоказатьПредупреждение(ОписаниеОповещения, Текст);
Иначе
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандаБольшеНеНапоминать_Завершение(ВходящийКонтекст) Экспорт
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПодготовитьНовоеЗаявление(Команда)
ОтметитьОтклоненноеКакНастроенное();
СоздатьНовоеЗаявление();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьБумажнуюИлиЭлектроннуюРасписку(Команда)
Если НЕ СертификатДействителен() Тогда
Возврат;
КонецЕсли;
Если ТребуетсяПолучениеРасписки И ПередатьРаспискуВБумажномВиде Тогда
Если Не ЗначениеЗаполнено(ФайлСканРасписка) Тогда
ТекстСообщения = НСтр("ru = 'Укажите скан-копию подписанного бланка сертификата'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "УказательСканРасписка");
Возврат;
КонецЕсли;
КонецЕсли;
Элементы.Подождите.Заголовок = НСтр("ru = 'Выполняется отправка расписки...'");
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ДлительноеДействие,
НСтр("ru = 'Подождите, пожалуйста...'"));
ИзменитьОформлениеФормы();
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьБумажнуюИлиЭлектроннуюРасписку", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Функция СертификатДействителен()
Если СертификатДляПодписания = Неопределено Тогда
ПередатьРаспискуВБумажномВиде = Истина;
Возврат Истина;
КонецЕсли;
Если СертификатДляПодписания.Свойство("ДействителенПо") Тогда
ДействителенПо = СертификатДляПодписания.ДействителенПо;
ИначеЕсли СертификатДляПодписания.Свойство("ДатаОкончания") Тогда
ДействителенПо = СертификатДляПодписания.ДатаОкончания;
Иначе
Возврат Истина;
КонецЕсли;
СертификатПросрочен = МестноеВремя(ДействителенПо) < ТекущаяДата();
Если СертификатПросрочен
И Элементы.Страницы.ТекущаяСтраница = Элементы.ЗаявлениеОдобрено Тогда
ПередатьРаспискуВБумажномВиде = Истина;
ТекстОшибки = НСтр("ru = 'Сертификат, которым выполняется подписание, просрочен'");
Элементы.ПовторитьОтправкуСЭлПодписью.Видимость = Ложь;
ПодписатьРасписку_СообщитьОбОшибкеПодписания();
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ОтправитьРасписку(ОповещениеОЗавершении)
Результат = ОтправитьРаспискуНаСервере();
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Результат);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьАвтоматически(Команда)
Элементы.Отмена.Видимость = Ложь;
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
ПрошлоВремени = 0;
ПолучитьКрайнийСрокДЛ();
КонецЕсли;
ТребуетсяПолучениеРасписки = ТребуетсяПолучениеРасписки();
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ТребуетсяПолучениеРасписки
И НЕ ЗначениеЗаполнено(РаспискаОтУЦ) Тогда
ПрограммноеЗакрытие = Истина;
Закрыть();
ИначеЕсли ТребуетсяПолучениеРасписки Тогда
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
ПолучитьКрайнийСрокДЛ();
КонецЕсли;
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ПрошелКрайнийСрокДЛ Тогда
ОткрытьНаСтраницеПросроченаОтправкаРасписки();
ИзменитьОформлениеФормы();
ИначеЕсли ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
АдресРасписки = ОбработкаЗаявленийАбонентаВызовСервера.АдресПоBase64(
РаспискаОтУЦ,
УникальныйИдентификатор);
ОтправитьБумажнуюИлиЭлектроннуюРасписку(Неопределено);
ИначеЕсли АдресРасписки = "" Тогда
ПолучитьАдресНовогоСертификата();
Если АдресРасписки = "" Тогда
ПоказатьСтраницуСОшибкой();
КонецЕсли;
Иначе
ОтправитьБумажнуюИлиЭлектроннуюРасписку(Неопределено);
КонецЕсли;
Иначе
НастроитьАвтоматическиБезРасписки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьАвтоматическиБезРасписки()
Элементы.Подождите.Заголовок = НСтр("ru = 'Выполняется настройка 1С-Отчетности...'");
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ДлительноеДействие,
НСтр("ru = 'Подождите, пожалуйста...'"));
ИзменитьОформлениеФормы();
ПодключитьОбработчикОжидания("Подключаемый_НастроитьАвтоматически", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьПодключениеКЭДО()
ПрограммноеЗакрытие = Истина;
Если ЗначениеЗаполнено(ПараметрыПодключениеЭДО) Тогда
РезультатЗакрытия = Новый Структура();
РезультатЗакрытия.Вставить("ПодключитьЭДО", ПодключитьЭДО);
РезультатЗакрытия.Вставить("ПереиздатьСертификатЭДО", ПереиздатьСертификатЭДО);
РезультатЗакрытия.Вставить("Организация", ДокументЗаявление.Организация);
РезультатЗакрытия.Вставить("ПараметрыЗапускаПодключениеЭДО", ПараметрыПодключениеЭДО);
РезультатЗакрытия.Вставить("ДокументЗаявление", ДокументЗаявление.Ссылка);
Закрыть(РезультатЗакрытия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбратитьсяВИФНС(Команда)
ПрограммноеЗакрытие = Истина;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПодтверждениеБольшеНеПоказывать_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = "Прервать" Тогда
БольшеНеНапоминать();
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура БольшеНеНапоминать()
ПрограммноеЗакрытие = Истина;
НапоминитьПозжеПроЗаявление(ДокументЗаявление.Ссылка, Истина);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура Подключаемый_СпроситьПроЭДОПередЗакрытием() Экспорт
КонтекстЭДОКлиент.Подключаемый_СпроситьПроЭДОПередЗакрытием(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Функция СпроситьПроЭДО()
ЭтоПоследнийШаг = Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение;
ЕстьЭДО = ПодключитьЭДО ИЛИ ПереиздатьСертификатЭДО;
СпроситьПроЭДО = ЕстьЭДО И ЗаявлениеОдобрено И ЭтоПоследнийШаг;
Возврат СпроситьПроЭДО;
КонецФункции
&НаКлиенте
Функция СпроситьПроЗаявлениеПФР()
ЭтоШагЗаявленияПФР = Элементы.Страницы.ТекущаяСтраница = Элементы.ОтправкаЗаявленияВПФР;
СпроситьПроЗаявлениеПФР = ФлагЗаявлениеУжеПредоставленоВПФР И ЭтоШагЗаявленияПФР;
Возврат СпроситьПроЗаявлениеПФР;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьСтраницу(Форма, ТекущаяСтраница, ЗаголовокСтраницы = "")
Если ЗаголовокСтраницы <> "" Тогда
Форма.Заголовок = ЗаголовокСтраницы;
КонецЕсли;
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Форма.Элементы.Страницы, ТекущаяСтраница);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметры(Параметры)
ЭтоРежимОблачной1СО = ДокументооборотСКОПовтИсп.ЭтоРежимОблачной1СО();
ИдентификаторАбонента = Параметры.ИдентификаторАбонента;
НовыйСтатусДокумента = Параметры.НовыйСтатусДокумента;
ОтпечатокСертификатаИзОтвета = Параметры.ОтпечатокСертификатаИзОтвета;
ИспользуетсяРежимТестирования = ДокументооборотСКОВызовСервера.ИспользуетсяРежимТестирования();
ПодключитьЭДО = ДокументЗаявление.ПодключитьЭДО;
ПереиздатьСертификатЭДО = ДокументЗаявление.ПереиздатьСертификатЭДО;
Организация = ДокументЗаявление.Организация;
ЭтоЭлектронноеПодписание = ДокументЗаявление.ПодписатьЭП;
Статус = ДокументЗаявление.Статус;
СпецоператорСвязи = ДокументЗаявление.СпецоператорСвязи;
ИдентификаторДокументооборота = ДокументЗаявление.ИдентификаторДокументооборота;
ЭтоПервичноеЗаявление = ДокументЗаявление.ТипЗаявления = Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Первичное;
КрасныйЦвет = Новый Цвет(226, 40, 40);
ЗаявлениеОдобрено = НовыйСтатусДокумента = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено;
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.ОпределитьМестоХраненияКлюча(
ДокументЗаявление.МодельХраненияЗакрытогоКлюча,
ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(ДокументЗаявление, "УчетнаяЗапись"));
ПодсистемаЕНССуществует = ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЕдиныйНалоговыйСчет");
ЗаполнитьДанныеРаспискиДЛ(Параметры);
СертификатДляПодписания = ОбработкаЗаявленийАбонентаВызовСервера.СертификатИзЗаявления(ДокументЗаявление);
ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ = "МашиночитаемыеДоверенностиЦБ";
ТребуетсяПолучениеРасписки = ТребуетсяПолучениеРасписки();
НапоминитьПозжеПроЗаявление(ДокументЗаявление);
ПолучитьАдресНовогоСертификата();
ИнициализироватьСостояниеЭДОсПФР();
ОтправитьДатуПодключенияК1СО();
КонецПроцедуры
&НаСервере
Функция ТребуетсяПолучениеРасписки()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ИспользоватьСуществующий = ОбработкаЗаявленийАбонентаКлиентСервер.ИспользоватьСуществующий(ДокументЗаявление);
ТребуетсяВПервичном = ЭтоПервичноеЗаявление И НЕ ИспользоватьСуществующий;
ЭтоВторичное = НЕ ЭтоПервичноеЗаявление;
ЭтоСертификатКА = НЕ ДокументЗаявление.ЭтоСертификатДругогоУЦ;
ЭтоПереизданиеСертификата = КонтекстЭДОСервер.ЭтоПереизданиеСертификата(ДокументЗаявление);
ТребуетсяВоВторичном =
НЕ ИспользоватьСуществующий
И ЭтоВторичное
И ЭтоПереизданиеСертификата
И (ЭтоСертификатКА
И НЕ ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
ИЛИ ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И НЕ РаспискаОтправлена И НЕ ПрошелКрайнийСрокДЛ);
Требуется =
ЭтоЭлектронноеПодписание
И ЗаявлениеОдобрено
И СертификатДляПодписания <> Неопределено
И (ТребуетсяВПервичном ИЛИ ТребуетсяВоВторичном);
Возврат Требуется;
КонецФункции
&НаСервере
Функция ИдентификаторФайлаАвтонастройки()
Если НЕ ЗначениеЗаполнено(ИдентификаторАбонента)
И ЗначениеЗаполнено(ДокументЗаявление.УчетнаяЗапись)
И НЕ ЭтоПервичноеЗаявление Тогда
Идентификатор = Сред(ДокументЗаявление.УчетнаяЗапись.ИдентификаторАбонента, 4);
Иначе
Идентификатор = ИдентификаторАбонента;
КонецЕсли;
Возврат Идентификатор;
КонецФункции
&НаСервере
Процедура ПолучитьАдресНовогоСертификата()
Если ЗаявлениеОдобрено
И ТребуетсяПолучениеРасписки
И НЕ ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Идентификатор = ИдентификаторФайлаАвтонастройки();
Результат = ПолучитьФайлАвтонастройки(
ДокументЗаявление.СпецоператорСвязи,
Идентификатор);
Если Результат.Выполнено Тогда
СертификатыИзФайлаНастройки = ПолучитьСертификатыИзФайлаНастройки(Результат.Настройки);
Для Каждого СертификатИзФайлаНастройки Из СертификатыИзФайлаНастройки Цикл
Если Врег(СертификатИзФайлаНастройки.Хранилище) = "MY" Тогда
НовыйСертификат = СертификатИзФайлаНастройки.Сертификат;
КонецЕсли;
КонецЦикла;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ПечатьСертификатаНаСервере(Расписка, НовыйСертификат);
АдресРасписки = ПоместитьВоВременноеХранилище(НовыйСертификат, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьСледующееДействиеПослеОтправкиЗаявленияВПФР(ПродолжитьДействиеПрерванноеПоказомПредупреждения = Неопределено) Экспорт
ПоказатьЗавершениеНастройки();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием_Завершение(ПродолжитьДействиеПрерванноеПоказомПредупреждения = Неопределено) Экспорт
ПрограммноеЗакрытие = Истина;
Закрыть();
КонецПроцедуры
&НаСервере
Процедура ДействияПередОтправкойЗаявленияВПФР() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ДействияПередОтправкойЗаявленияВПФР(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СпроситьПроСохранениеЗаявленияПФР()
КонтекстЭДОКлиент.Подключаемый_СпроситьПроСохранениеЗаявленияПФР(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеДокумента(Размер, Количество, ИмяФайлаРасписки)
ДокументооборотСКОКлиентСервер.ИзменитьОформлениеДокумента(ЭтотОбъект, "Расписка", Размер, Количество, ИмяФайлаРасписки);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НастроитьАвтоматически()
ВыполнитьЗавершениеПодключения();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьБумажнуюИлиЭлектроннуюРасписку()
Если ТребуетсяПолучениеРасписки И НЕ ПередатьРаспискуВБумажномВиде Тогда
ПодписатьРасписку();
Иначе
ПрисоединитьФайлРаспискиКДокументу(ФайлСканРасписка.Адрес, Неопределено);
Оповещение = Новый ОписаниеОповещения("ОтправитьРаспискуПослеВыполнения", ЭтотОбъект);
ОтправитьРасписку(Оповещение);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПараметрыДляЗапускаМетодаБЭД(ЗаявлениеСсылка) Экспорт
Если ЗначениеЗаполнено(ЗаявлениеСсылка.НастройкиЭДО) Тогда
Возврат ЗаявлениеСсылка.НастройкиЭДО;
Иначе
Результат = Неопределено;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ЗаявлениеАбонентаСпецоператораСвязи.Организация,
| ЗаявлениеАбонентаСпецоператораСвязи.АдресЮридический,
| ЗаявлениеАбонентаСпецоператораСвязи.ПодключитьЭДО,
| ЗаявлениеАбонентаСпецоператораСвязи.ОператорЭДО,
| ЗаявлениеАбонентаСпецоператораСвязи.КодНалоговогоОрганаЭДО,
| ЗаявлениеАбонентаСпецоператораСвязи.ТипКриптопровайдера
|ИЗ
| Документ.ЗаявлениеАбонентаСпецоператораСвязи КАК ЗаявлениеАбонентаСпецоператораСвязи
|ГДЕ
| ЗаявлениеАбонентаСпецоператораСвязи.УчетнаяЗапись <> ЗНАЧЕНИЕ(Справочник.УчетныеЗаписиДокументооборота.ПустаяСсылка)
| И ЗаявлениеАбонентаСпецоператораСвязи.Ссылка = &ЗаявлениеСсылка";
Запрос.УстановитьПараметр("ЗаявлениеСсылка", ЗаявлениеСсылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.ПодключитьЭДО Тогда
Результат = Новый Структура;
Результат.Вставить("Организация", Выборка.Организация);
Результат.Вставить("ОператорЭДО", Выборка.ОператорЭДО);
Результат.Вставить("КодНалоговогоОргана", Выборка.КодНалоговогоОрганаЭДО);
Если Выборка.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoPro Тогда
ТипКриптоПровайдера = "CryptoPro";
ИначеЕсли Выборка.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.VipNet Тогда
ТипКриптоПровайдера = "VipNet";
Иначе
Возврат Неопределено;
КонецЕсли;
Результат.Вставить("ТипКриптопровайдера", ТипКриптоПровайдера);
АдресЮридический = Выборка.АдресЮридический;
Если ЗначениеЗаполнено(АдресЮридический) Тогда
ЭтоАдресПоФИАСу = УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВXML(АдресЮридический);
Если ЭтоАдресПоФИАСу Тогда
СведенияОбАдресе = ОбработкаЗаявленийАбонента.СведенияОбАдресе(АдресЮридический);
Результат.Вставить("Индекс", СведенияОбАдресе.Индекс);
Результат.Вставить("Район", СведенияОбАдресе.Район);
Результат.Вставить("Город", СведенияОбАдресе.Город);
Результат.Вставить("НаселенныйПункт", СведенияОбАдресе.НаселенныйПункт);
Результат.Вставить("Улица", СведенияОбАдресе.Улица);
Результат.Вставить("Дом", СведенияОбАдресе.Здание.Номер);
Результат.Вставить("Корпус", "");
Результат.Вставить("Квартира", "");
Корпуса = СведенияОбАдресе.Корпуса;
Для каждого Корпус Из Корпуса Цикл
Если ЗначениеЗаполнено(Корпус.Номер) И Корпус.ТипКорпуса = НСтр("ru = 'Корпус'") Тогда
Результат.Вставить("Корпус", Корпус.Номер);
КонецЕсли;
Если ЗначениеЗаполнено(Корпус.Номер) И Корпус.ТипКорпуса = НСтр("ru = 'Квартира'") Тогда
Результат.Вставить("Квартира", Корпус.Номер);
КонецЕсли;
КонецЦикла;
Результат.Вставить("КодРегиона", СведенияОбАдресе.КодРегиона);
Результат.Вставить("Регион", СведенияОбАдресе.Регион);
Иначе
СтруктураАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(АдресЮридический);
Если ЗначениеЗаполнено(СтруктураАдреса) Тогда
Результат.Вставить("Индекс", СтруктураАдреса.Индекс);
Результат.Вставить("Район", СтруктураАдреса.Район);
Результат.Вставить("Город", СтруктураАдреса.Город);
Результат.Вставить("НаселенныйПункт", СтруктураАдреса.НаселенныйПункт);
Результат.Вставить("Улица", СтруктураАдреса.Улица);
Результат.Вставить("Дом", СтруктураАдреса.Дом);
Результат.Вставить("Корпус", СтруктураАдреса.Корпус);
Результат.Вставить("Квартира", СтруктураАдреса.Квартира);
КодРегиона = СтруктураАдреса.Регион;
Результат.Вставить("КодРегиона", КодРегиона);
Регион = РегламентированнаяОтчетностьВызовСервера.ПолучитьНазваниеРегионаПоКоду(КодРегиона);
Если ЗначениеЗаполнено(Регион) Тогда
Результат.Вставить("Регион", Регион);
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецФункции
&НаКлиенте
Функция НужноПодписатьМетодомБРО()
ЭтоВторичное = НЕ ЭтоПервичноеЗаявление;
ЭтоСертификатКА = НЕ ДокументЗаявление.ЭтоСертификатДругогоУЦ;
ИспользоватьСуществующий = ОбработкаЗаявленийАбонентаКлиентСервер.ИспользоватьСуществующий(ДокументЗаявление);
ПервичноеССертификатом1С = ИспользоватьСуществующий И ЭтоСертификатКА И ЭтоПервичноеЗаявление;
ВторичноеПерешлиОтСУЦкКА = НЕ ИспользоватьСуществующий И ЭтоВторичное И ЭтоСертификатКА;
ПодписатьМетодомБРО =
ПервичноеССертификатом1С
ИЛИ ВторичноеПерешлиОтСУЦкКА;
Возврат ПодписатьМетодомБРО;
КонецФункции
&НаКлиенте
Процедура ПолучитьМенеджерИСертификатКриптографии()
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьРасписку_ПослеПолученияМенеджераИСертификатКриптографии",
ЭтотОбъект);
КонтекстЭДОКлиент.ПолучитьМенеджерИСертификатКриптографии(
СертификатДляПодписания,
ОписаниеОповещения,
ДокументЗаявление.ТипКриптопровайдера);
КонецПроцедуры
&НаКлиенте
Функция НужноПодписатьКомпонентойСАвтонастройкой()
ЭтоВторичное = НЕ ЭтоПервичноеЗаявление;
ЭтоСУЦ = ДокументЗаявление.ЭтоСертификатДругогоУЦ;
ИспользоватьСуществующий = ОбработкаЗаявленийАбонентаКлиентСервер.ИспользоватьСуществующий(ДокументЗаявление);
НужнаАвтонастройка =
ИспользоватьСуществующий
И ЭтоСУЦ
И ЭтоВторичное;
Возврат НужнаАвтонастройка;
КонецФункции
&НаКлиенте
Функция НужноПодписатьПлатформой()
ПодписатьПлатформой =
НЕ НужноПодписатьКомпонентойСАвтонастройкой()
И НЕ НужноПодписатьМетодомБРО();
Возврат ПодписатьПлатформой;
КонецФункции
&НаКлиенте
Процедура ПодписатьРасписку()
Если НужноПодписатьКомпонентойСАвтонастройкой() Тогда
ПодписатьРаспискуКомпонентойСАвтонастройкой();
ИначеЕсли НужноПодписатьМетодомБРО() Тогда
ПодписатьРаспискуКомпонентой();
ИначеЕсли НужноПодписатьПлатформой() Тогда
ПолучитьМенеджерИСертификатКриптографии();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРаспискуКомпонентойСАвтонастройкой()
ШаблонНастроек = КонтекстЭДОКлиент.ШаблонИнформацииОСервереОнлайнПроверки();
РезультатАвтонастройки = КонтекстЭДОКлиент.РезультатАвтонастройкиИзКэша(Организация);
Если РезультатАвтонастройки = Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьРаспискуКомпонентойСАвтонастройкой_ПослеАвтонастройки",
ЭтотОбъект);
КонтекстЭДОКлиент.АвтоматическаяНастройкаУчетнойЗаписи(
ДокументЗаявление.УчетнаяЗапись,
,
ОписаниеОповещения,
,
,
Истина,
,
,
,
ШаблонНастроек);
Иначе
ПодписатьРаспискуКомпонентойСАвтонастройкой_ПослеАвтонастройки(РезультатАвтонастройки, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРаспискуКомпонентойСАвтонастройкой_ПослеАвтонастройки(Результат, ВходящийКонтекст) Экспорт
Если ЗначениеЗаполнено(Результат)
И Результат.Свойство("СтруктураДляИнформацииОСервереОнлайнПроверки") Тогда
ШаблонНастроек = Результат.СтруктураДляИнформацииОСервереОнлайнПроверки;
ПодписатьРаспискуКомпонентой();
Иначе
ПолучитьМенеджерИСертификатКриптографии();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРасписку_ПослеПолученияМенеджераИСертификатКриптографии(Результат, ВходящийКонтекст) Экспорт
Выполнено = ОбработкаЗаявленийАбонентаКлиент.МенеджерКриптографииПлатформыПолучен(Результат);
Если Выполнено Тогда
СертификатКриптографии = Результат.СертификатКриптографии;
МенеджерКриптографии = Результат.МенеджерКриптографии;
ПодписатьРаспискуПлатформой();
Иначе
ТекстОшибки = ОбработкаЗаявленийАбонентаКлиент.ОшибкаПолученияМенеджераКриптографииПлатформы(Результат);
ПодписатьРасписку_СообщитьОбОшибкеПодписания();
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРаспискуКомпонентой() Экспорт
Оповещение = Новый ОписаниеОповещения("ПодписатьРасписку_ПослеПодписания", ЭтотОбъект);
МестоХраненияСертификата = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(СертификатДляПодписания);
ПараметрыОперации = Неопределено;
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияСертификата) Тогда
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ТипФайла", "cer");
ПараметрыОперации.Вставить("ИмяФайла", "Расписка");
ПараметрыОперации.Вставить("ПодтверждатьПринудительно", Истина);
КонецЕсли;
КриптографияЭДКОКлиент.ПодписатьPKCS7(
Оповещение,
СертификатДляПодписания,
АдресРасписки,
ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата,
ПоместитьВоВременноеХранилище(, УникальныйИдентификатор),
Ложь,
, , ПараметрыОперации);
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРаспискуПлатформой() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьРасписку_ПослеПодписания",
ЭтотОбъект,
,
"ПодписатьРасписку_ОбработчикОшибкиПодписания",
ЭтотОбъект);
ДвДанные = ПолучитьИзВременногоХранилища(АдресРасписки);
МенеджерКриптографии.НачатьПодписывание(
ОписаниеОповещения,
ДвДанные,
СертификатКриптографии);
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРасписку_ОбработчикОшибкиПодписания(ИнформацияОбОшибке, СтандартнаяОбработка, ВходящийКонтекст) Экспорт
СтандартнаяОбработка = Ложь;
ТекстОшибки = КраткоеПредставлениеОшибки(ОбщегоНазначенияЭДКОКлиентСервер.ПолучитьИнформациюОбОшибке(ИнформацияОбОшибке));
ПодписатьРасписку_СообщитьОбОшибкеПодписания();
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРасписку_ПослеПодписания(Результат, ВходящийКонтекст) Экспорт
Выполнено = НЕ НужноПодписатьПлатформой() И Результат.Выполнено ИЛИ НужноПодписатьПлатформой();
Если Выполнено Тогда
Если НужноПодписатьПлатформой() Тогда
ФайлПодписи = ПоместитьВоВременноеХранилище(Результат, Новый УникальныйИдентификатор);
Иначе
ФайлПодписи = Результат.ФайлПодписи;
КонецЕсли;
ПрисоединитьФайлРаспискиКДокументу(АдресРасписки, ФайлПодписи);
Оповещение = Новый ОписаниеОповещения("ОтправитьРаспискуПослеВыполнения", ЭтотОбъект);
ОтправитьРасписку(Оповещение);
ИначеЕсли НЕ НужноПодписатьПлатформой() Тогда
ТекстОшибки = Результат.ОписаниеОшибки;
ПодписатьРасписку_СообщитьОбОшибкеПодписания();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьРасписку_СообщитьОбОшибкеПодписания() Экспорт
ПередатьРаспискуВБумажномВиде = Истина;
ПоказатьСтраницуОтправкиРаспискиВБумажномВиде();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьРаспискуПослеВыполнения(Результат, ВходящийКонтекст) Экспорт
Если Результат.Выполнено Тогда
ВыполнитьЗавершениеПодключения();
Иначе
ТекстОшибки = Результат.ОписаниеОшибки;
ПоказатьСтраницуСОшибкой();
Элементы.ОписаниеОшибки.Заголовок = ТекстОшибки;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗавершениеПодключения()
Заголовок = НСтр("ru = 'Подождите, пожалуйста...'");
Элементы.Подождите.Заголовок = НСтр("ru = 'Выполняется настройка 1С-Отчетности...'");
ПодключитьОбработчикОжидания("Подключаемый_ВыполнитьЗавершениеПодключения", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗавершениеПодключения()
ВыполнитьАвтонастройкуУчетки();
КонецПроцедуры
&НаСервере
Функция НужноВыполнитьРазрегистрациюАдминистратора()
Строка = СтрокаТаблицыПользователей(ЭтотОбъект);
ЭтоСамоРазрегистрацияАдмина =
Строка <> Неопределено
И НЕ Строка.Пометка
И Строка.ПометкаИсходная
И Строка.ЭтоАдмин
И Строка.Пользователь = ДокументЗаявление.Ответственный
И НЕ ВладелецЕстьВФайлеАвтонастройки(Строка);
Возврат ЭтоСамоРазрегистрацияАдмина;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СтрокаТаблицыПользователей(Форма)
Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(
Форма.ДокументЗаявление.Ссылка.ПользователиУчетнойЗаписи.Выгрузить(),
Форма.ДокументЗаявление.ВладелецЭЦП,
Истина);
Возврат Строка;
КонецФункции
&НаСервере
Процедура РазрегистрироватьАдминаВБазе()
Строка = СтрокаТаблицыПользователей(ЭтотОбъект);
Запись = РегистрыСведений.ДополнительныеРеквизитыУчетнойЗаписи.СоздатьНаборЗаписей();
Запись.Отбор.УчетнаяЗапись.Установить(ДокументЗаявление.УчетнаяЗапись);
Запись.Отбор.ФизическоеЛицо.Установить(Строка.ФизическоеЛицо);
Запись.Прочитать();
Запись.Очистить();
Запись.Записать();
Запись = РегистрыСведений.ПользователиУчетныхЗаписейДокументооборота.СоздатьНаборЗаписей();
Запись.Отбор.УчетнаяЗапись.Установить(ДокументЗаявление.УчетнаяЗапись);
Запись.Отбор.Пользователь.Установить(Строка.Пользователь);
Запись.Прочитать();
Запись.Очистить();
Запись.Записать();
КонецПроцедуры
&НаСервере
Функция ВладелецЕстьВФайлеАвтонастройки(Строка)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
УчетнаяЗапись = ДокументЗаявление.УчетнаяЗапись;
ИдентификаторАбонента = Сред(УчетнаяЗапись.ИдентификаторАбонента, 4);
Адрес = КонтекстЭДОСервер.ПолучитьФайлАвтонастройки(
УчетнаяЗапись.СпецоператорСвязи,
ИдентификаторАбонента).Настройки;
ДокументDOM = КонтекстЭДОСервер.ФайлАвтонастрокиВФорматеDOMПоАдресу(Адрес);
ЕстьСредиВладельцев = Ложь;
ВладелецыЭЦП = ДокументDOM.ПолучитьЭлементыПоИмени("ВладелецЭЦП");
Для каждого ДанныеВладельцаЭЦП Из ВладелецыЭЦП Цикл
СНИЛС = КонтекстЭДОСервер.ПолучитьЗначениеУзлаXML(ДанныеВладельцаЭЦП, "СНИЛС");
Если СНИЛС = Строка.СНИЛС Тогда
ЕстьСредиВладельцев = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ЕстьСредиВладельцев;
КонецФункции
&НаКлиенте
Процедура ВыполнитьАвтонастройкуУчетки()
ПараметрыОбработатьОбновление = ПараметрыАвтонастройкиУчетнойЗаписи();
Если ПрерватьАвтонастройкуПриУдаленномПереизданииСертификата(ПараметрыОбработатьОбновление) Тогда
Возврат;
КонецЕсли;
ОбработатьОбновление(ПараметрыОбработатьОбновление);
КонецПроцедуры
&НаКлиенте
Функция ПрерватьАвтонастройкуПриУдаленномПереизданииСертификата(ПараметрыОбработатьОбновление)
Если НЕ ЭтоПервичноеЗаявление
И ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Если ЗначениеЗаполнено(ПараметрыОбработатьОбновление.ОтпечатокСертификатаИзОтвета) Тогда
ОтключитьОбработчикОжидания("Подключаемый_ПроверитьНаличиеОтпечатка");
Иначе
Если ИспользуетсяРежимТестирования Тогда
МаксВремя = 15;
Иначе
МаксВремя = 3*60*60;
КонецЕсли;
Если ПрошлоВремени > МаксВремя Тогда
ПоказатьОшибкуПолученияСертификата();
Иначе
Элементы.Подождите.Заголовок = НСтр("ru = 'Выполняется получение сертификата от удостоверяющего центра...'");
Элементы.Отмена.Видимость = Истина;
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьНаличиеОтпечатка", 5);
КонецЕсли;
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ПоказатьОшибкуПолученияСертификата()
Если ЭтоРежимОблачной1СО Тогда
ТекстОшибки = НСтр("ru = 'Сертификат еще не получен от удостоверяющего центра. Повторите настройку через 1-2 минуты.
|Также вы можете повторить настройку позднее: Раздел ""Настройки"" -> ""Настройки обмена с контролирующими органами"" – кнопка ""Обновить"".'");
Иначе
ТекстОшибки = НСтр("ru = 'Сертификат еще не получен от удостоверяющего центра. Повторите настройку через 1-2 минуты.
|Также вы можете повторить настройку позднее: форма ""1С-Отчетность"" -> раздел ""Настройки"" -> ""Настройки обмена с контролирующими органами"" – кнопка ""Обновить"".'");
КонецЕсли;
ПоказатьСтраницуСОшибкой();
ОтключитьОбработчикОжидания("Подключаемый_ПроверитьНаличиеОтпечатка");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьНаличиеОтпечатка()
ПрошлоВремени = ПрошлоВремени + 5;
ВыполнитьАвтонастройкуУчетки();
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьОбновление(ПараметрыОбработатьОбновление)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ВыполнитьЗавершениеПодключения_ПослеОбработкиОбновления",
ЭтотОбъект);
КонтекстЭДОКлиент.ОбработатьОбновление(ПараметрыОбработатьОбновление, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗавершениеПодключения_ПослеОбработкиОбновления(Результат, ВходящийКонтекст) Экспорт
ОбновлениеВыполненоУспешно = Результат.РезультатОбновления;
ОбновлениеВыполнилось = ОбновлениеВыполненоУспешно И ИдентификаторАбонента <> "";
ОбновитьРеквизитыЗаявления();
Если ОбновлениеВыполнилось Тогда
ЭтоСаморазрегистрация =
ДокументЗаявление.ЭтоМультиРежим
И НЕ ЭтоПервичноеЗаявление
И НужноВыполнитьРазрегистрациюАдминистратора();
Если ЭтоСаморазрегистрация Тогда
РазрегистрироватьАдминаВБазе();
КонецЕсли;
ПослеВыполненияОбновления();
Иначе
ПоказатьОшибкуНастройки(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыполненияОбновления()
ЗаполнитьМЧДИзЗаявления();
Если НужноОтправитьМЧДиЗПЭД() Тогда
ДобавитьОтпечатокВРегистрМЧДкСопоставлению();
ПоказатьСтраницуОтправкиДокументов();
ИначеЕсли НужноОтправитьЗаявлениеВПФР() Тогда
ПоказатьСтраницуОтправкиЗаявленияВПФР();
Иначе
ПоказатьЗавершениеНастройки();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьОтпечатокВРегистрМЧДкСопоставлению()
УчетнаяЗапись = ДокументооборотСКОВызовСервера.УчетнаяЗаписьОрганизации(Организация);
Отпечаток = Мультирежим.СертификатПользователя(УчетнаяЗапись, "Отпечаток").Отпечаток;
Для каждого Строка Из ТаблицаДокументов Цикл
Набор = РегистрыСведений.МЧДкСопоставлению.СоздатьНаборЗаписей();
Набор.Отбор.МЧД.Установить(Строка.Ссылка);
Набор.Прочитать();
Для каждого Запись Из Набор Цикл
Запись.Отпечаток = Отпечаток;
КонецЦикла;
Набор.Записать(Истина);
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция НужноОтправитьЗаявлениеВПФР()
ИнициализироватьСостояниеЭДОсПФР();
Возврат НужноОтправитьЗаявлениеВПФРИзМастера(НаПодключение);
КонецФункции
&НаКлиенте
Процедура ПоказатьОшибкуНастройки(Результат)
Если Результат.Свойство("ПараметрыФункции")
И ТипЗнч(Результат.ПараметрыФункции) = Тип("Структура")
И Результат.ПараметрыФункции.Свойство("ТекстОшибокДляМастераПодключенияК1СОтчетности")
И ЗначениеЗаполнено(Результат.ПараметрыФункции.ТекстОшибокДляМастераПодключенияК1СОтчетности) Тогда
ТекстОшибки = Результат.ПараметрыФункции.ТекстОшибокДляМастераПодключенияК1СОтчетности;
КонецЕсли;
Если Результат.Свойство("ОшибкаУстановкиЛичногоСертификата")
И ЗначениеЗаполнено(Результат.ОшибкаУстановкиЛичногоСертификата) Тогда
ТекстОшибки = Результат.ОшибкаУстановкиЛичногоСертификата;
КонецЕсли;
Если Результат.Свойство("ОшибкаАктивированияУчетнойЗаписиОблачнойПодписи")
И ЗначениеЗаполнено(Результат.ОшибкаАктивированияУчетнойЗаписиОблачнойПодписи) Тогда
ТекстОшибки = Результат.ОшибкаАктивированияУчетнойЗаписиОблачнойПодписи;
КонецЕсли;
ПоказатьСтраницуСОшибкой();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьЗавершениеНастройки()
Если ПодключитьЭДО ИЛИ ПереиздатьСертификатЭДО Тогда
ПрограммноеЗакрытие = Ложь;
Иначе
ПрограммноеЗакрытие = Истина;
КонецЕсли;
ОтметитьОтклоненноеКакНастроенное();
ПараметрыПодключениеЭДО = ПолучитьПараметрыДляЗапускаМетодаБЭД(ДокументЗаявление.Ссылка);
ПоказатьСтраницуУспешногоЗавершения();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСтраницуУспешногоЗавершения()
Если ПоказатьГалкуСогласияЕНС() Тогда
СоздатьСогласиеЕНС();
ОтправитьСогласиеЕНС = Истина;
КонецЕсли;
Если ПоказатьГалку1СЭДО() Тогда
ПродолжитьПодключениеЭДО = Истина;
КонецЕсли;
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.УспешноеЗавершение,
НСтр("ru = 'Настройка 1С-Отчетности завершена'"));
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Процедура СоздатьСогласиеЕНС()
МодульЕдиныйНалоговыйСчетЛичныйКабинет = ОбщегоНазначения.ОбщийМодуль("ЕдиныйНалоговыйСчетЛичныйКабинет");
СогласиеЕНС = МодульЕдиныйНалоговыйСчетЛичныйКабинет.НовоеСогласиеНаРаскрытиеНалоговойТайныЕНС(Организация);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьРеквизитыЗаявления()
Если ОбновлениеВыполнилось Тогда
СтатусКомментарий = "Создана учетная запись.";
Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено");
НастройкаЗавершена = Истина;
ЗаписатьРеквизитыЗаявления(
СтатусКомментарий,
Статус,
НастройкаЗавершена,
КонтекстЭДОКлиент.НоваяУчетнаяЗапись);
КонтекстЭДОКлиент.УстановитьУчетнуюЗаписьОрганизации(
Организация,
КонтекстЭДОКлиент.НоваяУчетнаяЗапись);
ОповеститьОбИзменении(КонтекстЭДОКлиент.НоваяУчетнаяЗапись);
Оповестить("ОбновитьУчетнуюЗапись", КонтекстЭДОКлиент.НоваяУчетнаяЗапись,);
Если ДокументЗаявление.ЭтоМультиРежим Тогда
Иначе
ОбработкаЗаявленийАбонентаВызовСервера.ДобавитьПользователей1ПРежимаВУчетнуюЗаписьИзЗаявления(
ДокументЗаявление.Ссылка,
КонтекстЭДОКлиент.НоваяУчетнаяЗапись);
КонецЕсли;
СоздатьПриглашения =
ДокументЗаявление.ЭтоМультиРежим И ДокументЗаявление.ВладелецЭЦПЭтоАдмин
ИЛИ МультирежимКлиентСервер.ЭтоОтключениеМультирежима(ДокументЗаявление);
Если СоздатьПриглашения Тогда
СоздатьПриглашенияПользователей1СОтчетности();
КонецЕсли;
Оповестить("ЗаполнитьСводнуюИнформациюПоЗаявлениюАбонентаСпецоператораСвязи", ДокументЗаявление.Ссылка);
Иначе
СтатусКомментарий = "Заявление одобрено, но не удалось создать учетную запись.";
Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено");
НастройкаЗавершена = Ложь;
ЗаписатьРеквизитыЗаявления(
СтатусКомментарий,
Статус,
НастройкаЗавершена);
КонецЕсли;
ЭтотОбъект.Прочитать();
КонецПроцедуры
&НаСервере
Процедура СоздатьПриглашенияПользователей1СОтчетности()
Приглашения = Мультирежим.ДанныеПриглашенийПользователей(ДокументЗаявление);
Если Приглашения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументЗаявление.УчетнаяЗапись) Тогда
УчетнаяЗапись = ДокументооборотСКОВызовСервера.УчетнаяЗаписьОрганизации(Организация);
Для каждого Приглашение Из Приглашения Цикл
Приглашение.УчетнаяЗапись = УчетнаяЗапись;
КонецЦикла;
КонецЕсли;
Мультирежим.ЗаписатьВРегистрПриглашенияПользователей1СОтчетности(Приглашения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьРеквизитыЗаявления(СтатусКомментарий, Статус, НастройкаЗавершена, УчетнаяЗапись = Неопределено)
ЗаписатьРеквизитыЗаявленияНаСервере(СтатусКомментарий, Статус, НастройкаЗавершена, УчетнаяЗапись);
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьРеквизитыЗаявленияНаСервере(СтатусКомментарий, Статус, НастройкаЗавершена, УчетнаяЗапись = Неопределено)
РеквизитыДокументаДляЗаписи = Новый Структура;
РеквизитыДокументаДляЗаписи.Вставить("ДатаПолученияОтвета", ТекущаяДатаСеанса());
РеквизитыДокументаДляЗаписи.Вставить("Статус", Статус);
РеквизитыДокументаДляЗаписи.Вставить("СтатусКомментарий", СтатусКомментарий);
РеквизитыДокументаДляЗаписи.Вставить("НастройкаЗавершена", НастройкаЗавершена);
Если УчетнаяЗапись <> Неопределено Тогда
РеквизитыДокументаДляЗаписи.Вставить("УчетнаяЗапись", УчетнаяЗапись);
КонецЕсли;
ОбработкаЗаявленийАбонентаВызовСервера.ОбновитьРеквизитыЗаявления(ДокументЗаявление.Ссылка, РеквизитыДокументаДляЗаписи);
КонецПроцедуры
&НаКлиенте
Функция ПараметрыАвтонастройкиУчетнойЗаписи() Экспорт
Если НЕ ЭтоПервичноеЗаявление И НЕ ЗначениеЗаполнено(ОтпечатокСертификатаИзОтвета) И ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Результат = ОбработкаЗаявленийАбонентаВызовСервера.ПолучитьИРазобратьОтветНаЗаявление(ДокументЗаявление.Ссылка);
Если Результат.Свойство("ОтпечатокСертификатаИзОтвета") Тогда
ОтпечатокСертификатаИзОтвета = Результат.ОтпечатокСертификатаИзОтвета;
КонецЕсли;
КонецЕсли;
ПараметрыОбработатьОбновление = КонтекстЭДОКлиент.ПараметрыОбработатьОбновление();
ПараметрыОбработатьОбновление.ТелефонМобильныйДляАвторизации = ДокументЗаявление.ТелефонМобильныйДляАвторизации;
ПараметрыОбработатьОбновление.ИдентификаторАбонента = ИдентификаторАбонента;
ПараметрыОбработатьОбновление.СпецОператорСвязи = СпецоператорСвязи;
ПараметрыОбработатьОбновление.ПутьКонтейнерЗакрытогоКлюча = ДокументЗаявление.ПутьКонтейнерЗакрытогоКлюча;
ПараметрыОбработатьОбновление.Организация = Организация;
ПараметрыОбработатьОбновление.ЭтоВторичноеЗаявление = Ложь;
ПараметрыОбработатьОбновление.ОтпечатокСертификатаИзОтвета = ОтпечатокСертификатаИзОтвета;
ПараметрыОбработатьОбновление.ВызовИзМастераПодключенияК1СОтчетности = Истина;
ПараметрыОбработатьОбновление.СсылкаНаЗаявление = ДокументЗаявление.Ссылка;
Если ТребуетсяПолучениеРасписки Тогда
МестоХраненияСертификата = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(СертификатДляПодписания);
КриптографияЭДКОКлиентСервер.ЗаполнитьМестоХраненияКлюча(МестоХраненияСертификата, ПараметрыОбработатьОбновление);
Иначе
ПараметрыОбработатьОбновление.ЗаявлениеПодключения = ДокументЗаявление.Ссылка;
КонецЕсли;
КриптографияЭДКОКлиентСервер.ЗаполнитьМестоХраненияКлюча(МестоХраненияКлюча, ПараметрыОбработатьОбновление);
ИдентификаторДокументооборота = ?(ЗначениеЗаполнено(ДокументЗаявление.ИдентификаторКлючевогоКонтейнера),
ДокументЗаявление.ИдентификаторКлючевогоКонтейнера,
ДокументЗаявление.ИдентификаторДокументооборота);
ПараметрыОбработатьОбновление.ИдентификаторДокументооборота = ИдентификаторДокументооборота;
Возврат ПараметрыОбработатьОбновление;
КонецФункции
&НаСервере
Процедура ПоказатьСтраницуСОшибкой()
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ОшибкаНастройки,
НСтр("ru = 'Настройка 1С-Отчетности'"));
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыЗаявлениеОдобрено()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.УстановитьПредставлениеЗаявленияВВидеФорматированнойСтроки(
ДокументЗаявление.Ссылка,
Элементы.ЗаголовокЗаявлениеОдобрено,
Истина);
Элементы.ЗаголовокЗаявлениеОдобрено.Заголовок =
Новый ФорматированнаяСтрока(Элементы.ЗаголовокЗаявлениеОдобрено.Заголовок, Новый Шрифт(,11));
Элементы.НастроитьАвтоматически.КнопкаПоУмолчанию = Истина;
Если ТребуетсяПолучениеРасписки
И НЕ ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Элементы.НастроитьАвтоматически.Заголовок = НСтр("ru = 'Отправить расписку'");
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Элементы.ВариантыСтраницыОдобрено, Элементы.ГруппаЭлПодписание);
ИначеЕсли НЕ ТребуетсяПолучениеРасписки Тогда
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Элементы.ВариантыСтраницыОдобрено, Элементы.ГруппаБумажноеПодписание);
ИначеЕсли ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ЗначениеЗаполнено(РаспискаОтУЦ) Тогда
ИзменитьОформлениеГруппыОтправитьРаспискуДЛ();
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Элементы.ВариантыСтраницыОдобрено, Элементы.ГруппаОтправитьРаспискуДЛ);
ИначеЕсли ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ТребуетсяПолучениеРасписки
И НЕ ЗначениеЗаполнено(РаспискаОтУЦ) Тогда
ИзменитьОформлениеГруппыПустаяРаспискаДЛ();
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Элементы.ВариантыСтраницыОдобрено, Элементы.ГруппаОшибкиПолученияРаспискиДЛ);
Иначе
Элементы.ВариантыСтраницыОдобрено.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыЗаявлениеОтклонено()
Элементы.ЗаголовокПричинаОтклонения.Шрифт = Новый Шрифт(,,,Ложь);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.УстановитьПредставлениеЗаявленияВВидеФорматированнойСтроки(
ДокументЗаявление.Ссылка,
Элементы.ЗаголовокПричинаОтклонения,
Истина);
Элементы.ЗаголовокПричинаОтклонения.Заголовок = Новый ФорматированнаяСтрока(
Элементы.ЗаголовокПричинаОтклонения.Заголовок,
Новый Шрифт(,11));
Элементы.ПричинаОтклонения.Заголовок = ДокументЗаявление.СтатусКомментарий;
Элементы.ПодготовитьНовоеЗаявление.КнопкаПоУмолчанию = Истина;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыОшибкаНастройки()
СерверОбновленияНедоступен = СтрНайти(ВРЕГ(ТекстОшибки), НСтр("ru = 'СЕРВЕР'"));
Если СерверОбновленияНедоступен Тогда
Элементы.ОписаниеОшибки.Заголовок = НСтр("ru = 'Не удалось подключиться к серверу удостоверяющего центра'");
ИначеЕсли ЗначениеЗаполнено(ТекстОшибки) Тогда
Элементы.ОписаниеОшибки.Заголовок = ТекстОшибки;
Иначе
Элементы.ОписаниеОшибки.Заголовок = НСтр("ru = 'Не удалось установить сертификаты и выполнить автоматическую настройку'");
КонецЕсли;
Элементы.ПовторитьНастройку.КнопкаПоУмолчанию = Истина;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыОшибкаОтправкиРасписки()
ЭтоУдаленноеПолучение = ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата;
ИзменитьОформлениеДокумента(0, 0, "");
Элементы.ЗаголовокКОшибкеЭлектронногоПодписания.Видимость = НЕ ЭтоУдаленноеПолучение ИЛИ СертификатПросрочен;
Элементы.ГруппаОписанияОшибкиПриОтправкеРасписки.Видимость = НЕ ЭтоУдаленноеПолучение ИЛИ СертификатПросрочен;
Элементы.ЧтоДелатьРаспечатайтеСертификат.Видимость = НЕ ЭтоУдаленноеПолучение ИЛИ СертификатПросрочен;
Элементы.ПричинаОшибкиОтправкиРасписки.Заголовок = ТекстОшибки;
Элементы.ПовторитьОтправку.КнопкаПоУмолчанию = Истина;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыУспешноеЗавершение()
ИзменитьОформлениеПоздравления();
ИзменитьОформлениеГруппы1СЭДО();
ИзменитьОформлениеГруппыЕНС();
ИзменитьОформлениеКнопкиОк();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКнопкиОк()
Элементы.ОК.Видимость =
ПоказатьГалкуСогласияЕНС() И ОтправитьСогласиеЕНС
ИЛИ ПоказатьГалку1СЭДО() И ПродолжитьПодключениеЭДО;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПоздравления()
Если ЭтоПервичноеЗаявление Тогда
Если Мультирежим.ЭтоМультиРежимПоОрганизации(Организация) Тогда
Шаблон = НСтр("ru = 'Поздравляем!
|Вы успешно подключены к 1С-Отчетности'");
Иначе
Шаблон = НСтр("ru = 'Поздравляем!
|Организация %1 успешно подключена к 1С-Отчетности'");
Шаблон = СтрШаблон(Шаблон, Организация);
КонецЕсли;
Элементы.НадписьОбУспешнойОтправке.Заголовок = Шаблон;
Иначе
Шаблон = НСтр("ru = 'Поздравляем!
|Новые настройки подключения к 1С-Отчетности успешно применены'");
Элементы.НадписьОбУспешнойОтправке.Заголовок = Шаблон;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеГруппы1СЭДО()
Элементы.ГруппаЗавершениеНастройки1СЭДО.Видимость = ПоказатьГалку1СЭДО();
Если ПодключитьЭДО Тогда
Элементы.ПродолжитьПодключениеЭДОПояснение.Заголовок = НСтр("ru = 'Завершить подключение к сервису 1С-ЭДО.'");
ИначеЕсли ПереиздатьСертификатЭДО Тогда
Элементы.ПродолжитьПодключениеЭДОПояснение.Заголовок = НСтр("ru = 'Завершить обновления сертификата сервиса 1С-ЭДО.'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоказатьГалку1СЭДО()
ЛокальныйКлюч = КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча);
Показать = (ПодключитьЭДО ИЛИ ПереиздатьСертификатЭДО) И ЛокальныйКлюч И ЗначениеЗаполнено(ПараметрыПодключениеЭДО);
Возврат Показать;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеГруппыЕНС()
Элементы.ГруппаОтправитьСогласиеЕНС.Видимость = ПоказатьГалкуСогласияЕНС();
КонецПроцедуры
&НаСервере
Функция ПоказатьГалкуСогласияЕНС()
Если НЕ ПодсистемаЕНССуществует Тогда
Возврат Ложь;
КонецЕсли;
МодульЕдиныйНалоговыйСчетЛичныйКабинет = ОбщегоНазначения.ОбщийМодуль("ЕдиныйНалоговыйСчетЛичныйКабинет");
ЕстьСогласие = МодульЕдиныйНалоговыйСчетЛичныйКабинет.ПроверитьЕстьСогласиеНаПолучениеДанныхЕНС(Организация);
РегистрацияВИФНС = Документы.УведомлениеОСпецрежимахНалогообложения.РегистрацияВФНСОрганизации(Организация);
ЭтоРуководитель = ДокументЗаявление.ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.Руководитель;
ЕстьДоверенность = ЗначениеЗаполнено(РегистрацияВНОСервер.ДокументПредставителя(РегистрацияВИФНС));
УчетнаяЗапись = ДокументооборотСКОВызовСервера.УчетнаяЗаписьОрганизации(Организация);
ГосОрганыУчетнойЗаписи = Мультирежим.ГосОрганыУчетнойЗаписиИзРегистра(УчетнаяЗапись);
ПодключенФНС = ГосОрганыУчетнойЗаписи.СдаватьВФНС;
Показать = ЭтоПервичноеЗаявление И ПодключенФНС И НЕ ЕстьСогласие И (ЭтоРуководитель ИЛИ ЕстьДоверенность);
Возврат Показать;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеФормы() Экспорт
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ЗаявлениеОдобрено Тогда
ИзменитьОформлениеСтраницыЗаявлениеОдобрено();
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ЗаявлениеОтклонено Тогда
ИзменитьОформлениеСтраницыЗаявлениеОтклонено();
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ОшибкаНастройки Тогда
ИзменитьОформлениеСтраницыОшибкаНастройки();
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ОшибкаОтправкиРасписки Тогда
ИзменитьОформлениеСтраницыОшибкаОтправкиРасписки();
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение Тогда
ИзменитьОформлениеСтраницыУспешноеЗавершение();
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ОтправкаЗаявленияВПФР Тогда
ДокументооборотСКОКлиентСервер.ИзменитьОформлениеСтраницыОтправкаЗаявленияВПФР(ЭтотОбъект);
ДокументооборотСКОКлиентСервер.ИзменитьЗаголовокФормыОтправкиВПФР(ЭтотОбъект);
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ОшибкаОтправкиВПФР Тогда
ДокументооборотСКОКлиентСервер.ИзменитьОформлениеСтраницыОшибкаОтправкиВПФР(ЭтотОбъект);
ДокументооборотСКОКлиентСервер.ИзменитьЗаголовокФормыОтправкиВПФР(ЭтотОбъект);
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ПросроченаОтправкаРасписки Тогда
ИзменитьОформлениеСтраницыСрокОтправкиРаспискиПросрочен();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовоеЗаявление()
ДополнительныеПараметры = ДокументооборотСКОКлиентСервер.ПараметрыОткрытияМастера();
ДополнительныеПараметры.Вставить("ЗначениеКопирования", ДокументЗаявление.Ссылка);
ДополнительныеПараметры.Вставить("ВидЗаявления", ДокументЗаявление.ТипЗаявления);
Если Открыта() Тогда
Закрыть(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЗавершение(РезультатПолученияКонтекста, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = РезультатПолученияКонтекста.КонтекстЭДО;
Если ДокументЗаявление <> Неопределено Тогда
Оповестить("ЗаполнитьСводнуюИнформациюПоЗаявлениюАбонентаСпецоператораСвязи",ДокументЗаявление.Ссылка);
КонецЕсли;
ПриДобавленииКлючаВРеестр();
КонецПроцедуры
&НаКлиенте
Процедура ПриДобавленииКлючаВРеестр()
Если ДокументЗаявление.ВключитьЛицензиюКриптоПро Тогда
УдалосьПогаситьВыводОшибок = КонтекстЭДОКлиент.ЗапретитьВыводОшибокКриптоПро(ДокументЗаявление, НовыйСтатусДокумента);
Элементы.ПредупреждениеКриптоПро.Видимость = НЕ УдалосьПогаситьВыводОшибок;
Иначе
Элементы.ПредупреждениеКриптоПро.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуПомощи()
ФИО = СокрЛП(ДокументЗаявление.ВладелецЭЦПИмя + " " + ДокументЗаявление.ВладелецЭЦПОтчество);
НомерТелефона = ДокументЗаявление.ТелефонМобильныйДляАвторизации;
ОбработкаЗаявленийАбонентаКлиент.ОткрытьФормуПомощи(ЭтотОбъект, ФИО, НомерТелефона);
КонецПроцедуры
#Область Расписка
&НаСервереБезКонтекста
Функция ПолучитьФайлАвтонастройки(СпецоператорСвязи, ИдентификаторАбонента, ДатаПоследнегоОбновления = Неопределено)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ПолучитьФайлАвтонастройки(СпецоператорСвязи, ИдентификаторАбонента, ДатаПоследнегоОбновления);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСертификатыИзФайлаНастройки(АдресФайла)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ПолучитьСертификатыИзФайлаНастройки(АдресФайла);
КонецФункции
&НаСервере
Процедура ПрисоединитьФайлРаспискиКДокументу(АдресФайлаРасписки, АдресФайлаПодписи)
ПараметрыФайла = Новый Структура;
ПараметрыФайла.Вставить("Автор", Неопределено);
ПараметрыФайла.Вставить("ВладелецФайлов", ДокументЗаявление.Ссылка);
ПараметрыФайла.Вставить("ИмяБезРасширения", "Расписка");
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
ПараметрыФайла.Вставить("РасширениеБезТочки", "pdf");
Иначе
ПараметрыФайла.Вставить("РасширениеБезТочки", "cer");
КонецЕсли;
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное", Неопределено);
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресФайлаРасписки);
Если ЗначениеЗаполнено(АдресФайлаПодписи) Тогда
СвойстваПодписи = Новый Структура;
СвойстваПодписи.Вставить("Подпись", ПолучитьИзВременногоХранилища(АдресФайлаПодписи));
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
СвойстваПодписи.Вставить("Сертификат", СертификатДляПодписания.Сертификат);
Иначе
СвойстваПодписи.Вставить("Сертификат", ПолучитьИзВременногоХранилища(АдресРасписки));
КонецЕсли;
СвойстваПодписи.Вставить("ПодписьВерна", Истина);
СвойстваПодписи.Вставить("ДатаПроверкиПодписи", ТекущаяДатаСеанса());
СвойстваПодписи.Вставить("КомуВыданСертификат", "");
РаботаСФайлами.ДобавитьПодписьКФайлу(ПрисоединенныйФайл, СвойстваПодписи, УникальныйИдентификатор);
КонецЕсли;
СтрокаТаблицы = Неопределено;
Для Каждого ЭлектронныйДокумент Из ДокументЗаявление.ЭлектронныеДокументы Цикл
Если ЭлектронныйДокумент.Документ = "Расписка" Тогда
СтрокаТаблицы = ЭлектронныйДокумент;
Прервать;
КонецЕсли;
КонецЦикла;
Если СтрокаТаблицы = Неопределено Тогда
СтрокаТаблицы = ДокументЗаявление.ЭлектронныеДокументы.Добавить();
КонецЕсли;
СтрокаТаблицы.Документ = "Расписка";
СтрокаТаблицы.Файл = ПрисоединенныйФайл;
КонецПроцедуры
&НаСервере
Функция ОтправитьРаспискуНаСервере()
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата Тогда
Возврат ОтправитьРаспискуОтУЦ();
Иначе
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ОтправитьРаспискуНаСервере(ДокументЗаявление, ИдентификаторАбонента);
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура СканРаспискаПослеДобавленияФайлов(Результат, ВходящийКонтекст) Экспорт
Если Результат.Выполнено И ЗначениеЗаполнено(Результат.ОписанияФайлов) Тогда
ФайлСканРасписка = Новый Структура;
ФайлСканРасписка.Вставить("Адрес", Результат.ОписанияФайлов[0].Адрес);
Файл = Новый Файл(Результат.ОписанияФайлов[0].Имя);
ФайлСканРасписка.Вставить("ИмяБезРасширения", Файл.ИмяБезРасширения);
ФайлСканРасписка.Вставить("Расширение", СтрЗаменить(Файл.Расширение, ".", ""));
Размер = Результат.ОписанияФайлов[0].Размер;
ИзменитьОформлениеДокумента(Размер, 1, Файл.Имя);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОтправитьРаспискуОтУЦ()
Попытка
Результат = Новый Структура("Выполнено, ОписаниеОшибки", Истина, "");
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ФайлыРасписки = КонтекстЭДОСервер.ПолучитьРасписку(ДокументЗаявление);
fileDataДвДанные = ПолучитьИзВременногоХранилища(ФайлыРасписки.Расписка.Адрес);
fileSignДвДанные = ПолучитьИзВременногоХранилища(ФайлыРасписки.Подпись.Адрес);
fileData = ДокументооборотСКОКлиентСервер.Base64СтрокаБезПереносов(fileDataДвДанные);
fileSign = ДокументооборотСКОКлиентСервер.Base64СтрокаБезПереносов(fileSignДвДанные);
ТелоЗапроса = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:reg=""http://regservice.keydisk.ru/"">
| <soapenv:Header/>
| <soapenv:Body>
| <reg:SendCertificateForm>
| <reg:workflowGuid>&workflowGuid</reg:workflowGuid>
| <reg:fileData>&fileData</reg:fileData>
| <reg:fileSign>&fileSign</reg:fileSign>
| </reg:SendCertificateForm>
| </soapenv:Body>
|</soapenv:Envelope>";
ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&workflowGuid", ДокументЗаявление.ИдентификаторДокументооборота);
ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&fileData", XMLСтрока(fileData));
ТелоЗапроса = СтрЗаменить(ТелоЗапроса, "&fileSign", XMLСтрока(fileSign));
ЗаписатьЗапросВЖурнал(ТелоЗапроса);
Ответ = Документы.ЗаявлениеАбонентаСпецоператораСвязи.PostЗапросОператору(
"SendCertificateForm",
ТелоЗапроса,
Результат.ОписаниеОшибки);
Если Ответ = Неопределено Тогда
Результат.Выполнено = Ложь;
Результат.ОписаниеОшибки =
НСтр("ru = 'Не удалось отправить расписку по причине: '")
+ Символы.ПС
+ Результат.ОписаниеОшибки;
Возврат Результат;
Иначе
ДОМ = ДокументооборотСКО.ДваждыРазобратьОтветНаPostЗапрос(Ответ, "SendCertificateFormResult", "utf-8");
code = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьЗначениеУзлаXML(ДОМ, "code");
Если code <> "0" Тогда
ОбработкаЗаявленийАбонентаВызовСервера.СохранитьОшибку(
НСтр("ru = 'Не удалось отправить расписку по причине: '"),
Результат,
ДОМ);
КонецЕсли;
Возврат Результат;
КонецЕсли;
Исключение
ДанныеОшибки = ИнформацияОбОшибке();
ДокументооборотСКО.ОбработатьИсключение(
ДанныеОшибки,
НСтр("ru = 'Отправка расписки в УЦ Основание (метод SendCertificateForm)'"));
ТекстОшибки = КраткоеПредставлениеОшибки(ДанныеОшибки);
Результат.Выполнено = Ложь;
Результат.ОписаниеОшибки =
НСтр("ru = 'Не удалось отправить расписку по причине: '")
+ Символы.ПС
+ ТекстОшибки;
Возврат Результат;
КонецПопытки;
КонецФункции
&НаСервере
Процедура ЗаписатьЗапросВЖурнал(ТелоЗапроса)
Если ЗначениеЗаполнено(ТелоЗапроса) Тогда
ДвДанные = ПолучитьДвоичныеДанныеИзСтроки(ТелоЗапроса, "utf-8", Истина);
Адрес = ПоместитьВоВременноеХранилище(ДвДанные, Новый УникальныйИдентификатор);
ОбработкаЗаявленийАбонента.ПрисоединитьФайлЗаявления(ЭтотОбъект, Адрес, "SendCertificateForm", "txt");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьКрайнийСрокДЛ()
Результат = ОбработкаЗаявленийАбонентаВызовСервера.ПолучитьКрайнийСрокДЛ(ДокументЗаявление.Ссылка);
КрайнийСрокДЛ = Результат.КрайнийСрокДЛ;
ПрошелКрайнийСрокДЛ = Результат.ПрошелКрайнийСрокДЛ;
РаспискаОтправлена = Результат.РаспискаОтправлена;
Возврат Результат;
КонецФункции
#КонецОбласти
&НаСервере
Процедура ОтметитьЗаявлениеКакНастроенное()
ОбработкаЗаявленийАбонентаВызовСервера.ОбновитьРеквизитыЗаявления(
ДокументЗаявление.Ссылка,
Новый Структура("НастройкаЗавершена", Истина));
КонецПроцедуры
&НаСервереБезКонтекста
Процедура НапоминитьПозжеПроЗаявление(ЗаявлениеАбонента, БольшеНеНапоминать = Ложь)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.НапоминитьПозжеПроЗаявление(ЗаявлениеАбонента, БольшеНеНапоминать);
КонецПроцедуры
&НаКлиенте
Процедура СканироватьФайл_Завершение(Результат, ВидДокумента) Экспорт
Если Результат <> Неопределено И Результат.ФайлДобавлен Тогда
ДобавитьОтсканированныеФайлы(Результат.ФайлСсылка, ВидДокумента);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьОтсканированныеФайлы(ПрисоединенныйФайл, ВидДокумента)
ДополнительныеПараметры = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ДополнительныеПараметры.ИдентификаторФормы = УникальныйИдентификатор;
ДополнительныеПараметры.ПолучатьСсылкуНаДвоичныеДанные = Истина;
ДанныеФайла = РаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл, ДополнительныеПараметры);
НовоеИмя = НСтр("ru = 'Расписка'") + "." + ДанныеФайла.Расширение;
ФайлСканРасписка = Новый Структура;
ФайлСканРасписка.Вставить("Адрес", ДанныеФайла.СсылкаНаДвоичныеДанныеФайла);
ФайлСканРасписка.Вставить("ИмяБезРасширения", НовоеИмя);
ФайлСканРасписка.Вставить("Расширение", ДанныеФайла.Расширение);
ИзменитьОформлениеДокумента(ДанныеФайла.Размер, 1, НовоеИмя);
КонецПроцедуры
#Область ЗаявленияВПФР
&НаКлиенте
Процедура ПоказатьСтраницуОтправкиЗаявленияВПФР()
СостояниеЭДОсПФР = КонтекстЭДОКлиент.СостояниеЭДОсПФР(Организация);
ПрограммноеЗакрытие = Ложь;
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ОтправкаЗаявленияВПФР);
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Функция НужноОтправитьЗаявлениеВПФРИзМастера(Вид) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.НужноОтправитьЗаявлениеВПФРИзМастера(ЭтотОбъект, Вид);
КонецФункции
&НаСервере
Процедура ОткрытьНаНужнойСтраницеПриСозданииНаСервере()
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата
И ПрошелКрайнийСрокДЛ Тогда
ОткрытьНаСтраницеПросроченаОтправкаРасписки();
ИзменитьОформлениеФормы();
ИначеЕсли ЗаявлениеОдобрено Тогда
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ЗаявлениеОдобрено,
НСтр("ru = 'Заявление одобрено'"));
Иначе
ПрограммноеЗакрытие = Истина;
ОтметитьОтклоненноеКакНастроенное();
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ЗаявлениеОтклонено,
НСтр("ru = 'Заявление отклонено'"));
КонецЕсли;
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьСостояниеЭДОсПФР()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ИнициализироватьВидыЗаявленийНаЭДОВПФР(ЭтотОбъект);
СостояниеЭДОсПФР = КонтекстЭДОСервер.СостояниеЭДОсПФР(Организация);
ТекущееЗаявлениеПо1СОтчетности = ДокументЗаявление.Ссылка;
Если НужноОтправитьЗаявлениеВПФРИзМастера(НаПодключение) Тогда
ИзначальныйВидЗаявленияПФР = НаПодключение;
ИначеЕсли НужноОтправитьЗаявлениеВПФРИзМастера(НаОтключение) Тогда
ИзначальныйВидЗаявленияПФР = НаОтключение;
ИначеЕсли НужноОтправитьЗаявлениеВПФРИзМастера(НаСертификат) Тогда
ИзначальныйВидЗаявленияПФР = НаСертификат;
КонецЕсли;
ЭтоПредупреждениеИзМастера = Истина;
КонтекстЭДОСервер.ИнициализироватьПараметрыЭДОСПФР(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройкиСостоянияЭДОСПФР() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.СохранитьНастройкиСостоянияЭДОСПФР(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СоздатьЗаявленияВПФРЕслиНеСозданы() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.СоздатьЗаявленияВПФРЕслиНеСозданы(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ЗаявлениеЗаполненоКорректно(ОтправляемоеЗаявление) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ЗаявлениеВПФРЗаполненоКорректно(ОтправляемоеЗаявление);
КонецФункции
&НаКлиенте
Процедура ПоказатьСтраницуОшибкиОтправкиВПФР() Экспорт
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ОшибкаОтправкиВПФР);
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Процедура ОткрытьНаСтраницеПросроченаОтправкаРасписки()
ПрограммноеЗакрытие = Истина;
ОтметитьЗаявлениеКакНастроенное();
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ПросроченаОтправкаРасписки,
НСтр("ru = 'Обратитесь в ФНС для получения сертификата'"));
ЗаписатьРеквизитыЗаявленияНаСервере(
"Просрочена отправка расписки",
Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отклонено,
Истина);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеСтраницыСрокОтправкиРаспискиПросрочен()
ПредставлениеСертификата = ДокументооборотСКОКлиентСервер.ПредставлениеСертификата(СертификатДляПодписания);
Элементы.КСожалению.Заголовок = Новый ФорматированнаяСтрока(
НСтр("ru = 'К сожалению, согласно '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'условиям'"),,,,"условия"),
НСтр("ru = ' предоставления услуги по удаленному переизданию сертификата, текущий сертификат '"),
Новый ФорматированнаяСтрока(ПредставлениеСертификата,,,,"сертификат"),
НСтр("ru = ' и новый сертификат будут отозваны.'"));
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ЗаполнитьДанныеРаспискиДЛ(Параметры)
Если ДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата И ЗаявлениеОдобрено Тогда
РаспискаОтУЦ = Параметры.РаспискаОтУЦ;
Результат = ПолучитьКрайнийСрокДЛ();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСтраницуОтправкиРаспискиВБумажномВиде() Экспорт
СканированиеДоступно = ОбработкаЗаявленийАбонентаКлиент.ДоступноСканирование();
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ОшибкаОтправкиРасписки,
НСтр("ru = 'Отправка расписки'"));
ИзменитьОформлениеФормы();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеГруппыПустаяРаспискаДЛ()
Элементы.НастроитьАвтоматически.Заголовок = НСтр("ru = 'Закрыть'");
Элементы.ОшибкаПолученияРаспискиДЛ.Заголовок =
НСтр("ru = 'Сервер АО ""Калуга Астрал"" вернул пустую расписку'");
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеГруппыОтправитьРаспискуДЛ()
Элементы.ПредупреждениеКРаспискеДЛ.Видимость = ЗначениеЗаполнено(КрайнийСрокДЛ);
Если ЗначениеЗаполнено(КрайнийСрокДЛ) Тогда
Сейчас = ТекущаяДатаСеанса();
Дельта = КрайнийСрокДЛ - Сейчас;
Минута = 60;
Час = Минута * 60;
День = Час * 24;
РазницаВДнях = Цел(Дельта / День);
РазницаВЧасах = Цел((КрайнийСрокДЛ - Сейчас - РазницаВДнях*День) / Час);
РазницаВМинутах = Цел((КрайнийСрокДЛ - Сейчас - РазницаВДнях*День - РазницаВЧасах*Час) / Минута);
Осталось = ОбработкаЗаявленийАбонентаКлиентСервер.ПредставлениеРазницыЧерезСколькоЛетМесяцевНедельДней(
,,,
РазницаВДнях,
РазницаВЧасах,
РазницаВМинутах,
,,,
Истина);
Срок = СтрШаблон(НСтр("ru = '%1 (в течение %2)'"), Строка(КрайнийСрокДЛ), Осталось);
Текст = Новый ФорматированнаяСтрока(
НСтр("ru = 'Обратите внимание! Расписка должна быть отправлена не позднее '"),
ДокументооборотСКОКлиентСервер.Жирным(Срок),
Символы.ПС,
ДокументооборотСКОКлиентСервер.Жирным(НСтр("ru = 'В противном случае новый и текущий сертификаты будут отозваны УЦ АО ""Аналитический центр"".'")));
Элементы.ПредупреждениеКРаспискеДЛ.Заголовок = Текст;
КонецЕсли;
Если ТребуетсяПолучениеРасписки Тогда
Элементы.НастроитьАвтоматически.Заголовок = НСтр("ru = 'Подписать и отправить расписку'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОтметитьОтклоненноеКакНастроенное()
Если ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отклонено")
И НЕ ДокументЗаявление.НастройкаЗавершена Тогда
ОтметитьЗаявлениеКакНастроенное();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСтраницуОтправкиДокументов()
ПрограммноеЗакрытие = Ложь;
АктивизироватьСтраницу(
ЭтотОбъект,
Элементы.ОтправкаДокументов,
НСтр("ru = 'Отправьте документы в гос. органы'"));
ИзменитьОформлениеСтраницыМЧДиЗПЭД(Ложь);
КонецПроцедуры
&НаСервере
Функция ИзменитьОформлениеСтраницыМЧДиЗПЭД(ЭтоОтправка)
Нужно = НужноОтправитьМЧДиЗПЭД();
Элементы.ОтправитьМЧДСейчас.Видимость = Нужно И НЕ ЭтоОтправка;
Элементы.ОтправитьМЧДДалее.Видимость = НЕ Нужно И НЕ ЭтоОтправка;
ЕстьОшибки = ЕстьОшибкиОтправкиМЧДиЗПЭД();
Элементы.Ошибка_ЧтоДелать.Видимость = НЕ ЭтоОтправка И ЕстьОшибки;
Элементы.ОтправкаДокументов_ПодсказкаПроУПУП.Видимость = ЗначениеЗаполнено(ДокументЗаявление.ЗПЭД);
Если НЕ ЭтоОтправка И ЕстьОшибки Тогда
Элементы.ОтправитьМЧДСейчас.Заголовок = НСтр("ru = 'Повторить отправку'");
КонецЕсли;
КонецФункции
&НаСервере
Функция ЕстьОшибкиОтправкиМЧДиЗПЭД()
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
Отбор.Вставить("Выполнено", Ложь);
Строки = ТаблицаДокументов.НайтиСтроки(Отбор);
Для каждого Строка Из Строки Цикл
Если ЗначениеЗаполнено(Строка.ОписаниеОшибки) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция НужноОтправитьМЧДиЗПЭД()
Отбор = Новый Структура();
Отбор.Вставить("Пометка", Истина);
Возврат ТаблицаДокументов.НайтиСтроки(Отбор).Количество();
КонецФункции
&НаСервере
Процедура ЗаполнитьМЧДИзЗаявления() Экспорт
ТаблицаДокументов.Очистить();
ЕстьЗПЭД = ЗначениеЗаполнено(ДокументЗаявление.ЗПЭД);
Для Каждого ЭлектронныйДокумент Из ДокументЗаявление.ЭлектронныеДокументы Цикл
МЧД = ЭлектронныйДокумент.МЧД;
ЭтоМЧДЦБ = ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует()
И ТипЗнч(МЧД) = Тип("СправочникСсылка." + ИмяТипаСправочникаМашиночитаемыеДоверенностиЦБ);
Если ЭлектронныйДокумент.ЭтоМЧД
И ЗначениеЗаполнено(МЧД)
И НЕ ЭтоМЧДЦБ
И (ЕстьЗПЭД И ТипЗнч(МЧД) <> Тип("ДокументСсылка.УведомлениеОПредоставленииПолномочийПредставителю") ИЛИ НЕ ЕстьЗПЭД) Тогда
ДобавитьСтрокуВТаблицу(МЧД);
ИначеЕсли ЭлектронныйДокумент.ЭтоМЧД
И ЗначениеЗаполнено(МЧД)
И ЭтоМЧДЦБ Тогда
МЧДБРО.СопоставитьМЧДЦБ(МЧД);
КонецЕсли;
КонецЦикла;
Если ЕстьЗПЭД Тогда
ДобавитьСтрокуВТаблицу(ДокументЗаявление.ЗПЭД);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьСтрокуВТаблицу(Ссылка)
НовСтр = ТаблицаДокументов.Добавить();
НовСтр.Ссылка = Ссылка;
НовСтр.Представление = МЧДБРОКлиентСервер.ПредставлениеМЧД(Ссылка);
НовСтр.Пометка = НЕ ДокументооборотСКОВызовСервера.ОтчетОтправлен(Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьМЧДЦикл(ТекущийНомер)
Если ТекущийНомер = ТаблицаДокументов.Количество() Тогда
ИзменитьОформлениеСтраницыМЧДиЗПЭД(Ложь);
Заголовок = НСтр("ru = 'Результат отправки документов'");
Отбор = Новый Структура();
Отбор.Вставить("Выполнено", Ложь);
Отбор.Вставить("Пометка", Истина);
ЕстьОшибки = ТаблицаДокументов.НайтиСтроки(Отбор).Количество() > 0;
Если НЕ ЕстьОшибки Тогда
ПослеОтправкиМЧД(Неопределено);
КонецЕсли;
Иначе
ТекущаяСтрока = ТаблицаДокументов[ТекущийНомер];
Если ТекущаяСтрока.Пометка Тогда
ТекущаяСтрока.СостояниеОтправки = НСтр("ru = 'Отправляется...'");
Ссылка = ТекущаяСтрока.Ссылка;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтправитьМЧД_ПослеОбработкиОдного",
ЭтотОбъект,
ТекущийНомер);
ДокументооборотСКОКлиент.ОтправитьМЧД(ОписаниеОповещения, Ссылка, СертификатРуководителяОтпечаток);
Иначе
ТекущийНомер = ТекущийНомер + 1;
ОтправитьМЧДЦикл(ТекущийНомер);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОтпечатокРуководителя()
Возврат ДокументооборотСКОВызовСервера.ОтпечатокРуководителя(
ДокументЗаявление.Организация,
ДокументЗаявление.ВладелецЭЦП);
КонецФункции
&НаКлиенте
Процедура ОтправитьМЧД_ПослеОбработкиОдного(Результат, ТекущийНомер) Экспорт
ТекущаяСтрока = ТаблицаДокументов[ТекущийНомер];
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Результат);
Если Результат.Выполнено Тогда
ТекущаяСтрока.СостояниеОтправки = НСтр("ru = 'Отправлено'");
ТекущаяСтрока.Пометка = Ложь;
Иначе
ТекущаяСтрока.СостояниеОтправки = Результат.ОписаниеОшибки;
КонецЕсли;
ТекущийНомер = ТекущийНомер + 1;
ОтправитьМЧДЦикл(ТекущийНомер);
КонецПроцедуры
&НаКлиенте
Процедура Отмена(Команда)
ПоказатьОшибкуПолученияСертификата();
КонецПроцедуры
&НаСервере
Процедура ОтправитьДатуПодключенияК1СО()
Если НЕ ЗаявлениеОдобрено ИЛИ НЕ ЭтоПервичноеЗаявление Тогда
Возврат;
КонецЕсли;
ЭтоПСБ = ОбработкаЗаявленийАбонента.ЭтоИнтеграцияСБанком();
Если НЕ ЭтоПСБ Тогда
Возврат;
КонецЕсли;
Дата = ДатаПодключенияК1СО();
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.ВнешнийПрограммныйИнтерфейс")
И ЗначениеЗаполнено(Дата)
И ОбщегоНазначения.РазделениеВключено() Тогда
Попытка
МодульПрограммныйИнтерфейсСервиса = ОбщегоНазначения.ОбщийМодуль("ПрограммныйИнтерфейсСервиса");
Сведения = МодульПрограммныйИнтерфейсСервиса.ДополнительныеСведенияАбонента();
Отбор = Новый Структура();
Отбор.Вставить("Ключ", "ДатаПодключенияОтчетности");
НайденныеСтроки = Сведения.Свойства.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Конструктор = МодульПрограммныйИнтерфейсСервиса.НовыйДопСведенияАбонента();
Конструктор.КодАбонента = МодульПрограммныйИнтерфейсСервиса.АбонентЭтогоПриложения().Код;
Конструктор.Удалить("ПубличныйИдентификатор");
НоваяСтрока = Конструктор.Свойства.Добавить();
НоваяСтрока.Ключ = "ДатаПодключенияОтчетности";
НоваяСтрока.Значение = XMLСтрока(Дата);
МодульПрограммныйИнтерфейсСервиса.ОбновитьДопСведенияАбонента(Конструктор);
Исключение
ДокументооборотСКО.ОбработатьИсключение(
ИнформацияОбОшибке(),
НСтр("ru = 'Передача даты подключения к 1С-Отчетности для ПСБ'"));
КонецПопытки;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДатаПодключенияК1СО()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Идентификатор = ИдентификаторФайлаАвтонастройки();
Адрес = РегФайлКА.АдресРегФайлаПоИдентификаторуАбонента(ИдентификаторАбонента);
ДокументDOM = РегФайлКА.ФайлАвтонастрокиВФорматеDOMПоАдресу(Адрес);
УзлыЛицензия = ДокументDOM.ПолучитьЭлементыПоИмени("Лицензия");
Для каждого УзелЛицензия Из УзлыЛицензия Цикл
ДатаСтрокой = КонтекстЭДОСервер.ПолучитьАтрибутУзлаXML(УзелЛицензия, "ДатаНачала");
Дата = ДокументооборотСКОВызовСервера.ДатаИзСтрокиРазныхФорматов(ДатаСтрокой);
Прервать;
КонецЦикла;
Возврат Дата;
КонецФункции
#КонецОбласти