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