&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;
&НаКлиенте
Перем ПрисоединенныйФайлЗаявления;
&НаКлиенте
Перем КонтекстДлительнойОперации;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Инициализация(Параметры);
ИзменитьОформлениеВРежимеИнтеграцияСБанком();
ИзменитьОформлениеВРежимеБыстрогоСтарта();
ОткрытьНаНачальнойСтранице(Истина);
ИнициализироватьВыводСтатусовИВажныхСообщений_85();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Оповестить("ЗакрытьРодителя",,ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытии_ПослеПолученияКонтекста", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если НЕ Открыта() ИЛИ ЗапретитьИзменение Тогда
Возврат;
КонецЕсли;
Если ИмяСобытия = "Запись_Организации" Тогда
Если (Источник = Организация ИЛИ Параметр = Организация)
И ЗначениеЗаполнено(Организация) Тогда
ОбработкаОповещенияЗаписиОрганизации();
КонецЕсли;
ИначеЕсли ИмяСобытия = "ПроверитьЧтоМастерФормированияЗаявкиНаПодключениеИлиИзменениеПодключенияОткрыт" И Источник = Организация Тогда
Параметр.ФормаМастераФормированияЗаявкиНаПодключениеИлиИзменениеПодключенияОткрыта = Истина;
ИначеЕсли (ИмяСобытия = "Запись_ФизическиеЛица"
ИЛИ ИмяСобытия = "Запись_ВладельцаИлиБухгалтера")
И НЕ ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ФормаОткрыта("Мастер_ПаспортныеДанные") Тогда
ОбработкаОповещенияЗаписиВладельца(ИмяСобытия, Параметр, Источник);
ИначеЕсли ИмяСобытия = "ОплатаСервиса_Изменение" Тогда
ОпределитьТариф();
ИзменитьОформлениеТарифа();
ИначеЕсли ИмяСобытия = "ИсправитьОшибкиЛокальногоХраненияКлюча" Тогда
ИсправитьОшибкиЛокальногоХраненияКлюча(Параметр);
ИначеЕсли ИмяСобытия = НСтр("ru = 'Заполнить рег. номер'") И Источник = ДокументЗаявление.Ссылка Тогда
ЗапрашиватьРегНомер = Истина;
ПоказыватьПодсказкуРегНомера = Истина;
ИзменитьОформлениеНомераОсновнойПоставки1с(, Истина);
ИначеЕсли ИмяСобытия = "Завершение отправки"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("Ссылка")
И Параметр.Ссылка = ТекущееЗаявлениеПо1СОтчетности Тогда
ИзменитьОформлениеПанелиПФРВМастере();
ИначеЕсли ИмяСобытия = "ОтказОтЭДО" И ДокументЗаявление.Ссылка = Источник Тогда
ИзменитьОформлениеПанелиОтправки();
КонецЕсли;
Если ЭтоБыстрыйСтарт Тогда
Если ИмяСобытия = НСтр("ru = 'Упрощенное заявление. Успешное создание закрытого ключа'") Тогда
ПоказатьСтраницуОтправкиЗаявления();
ИначеЕсли ИмяСобытия = НСтр("ru = 'Упрощенное заявление. Ошибка создание закрытого ключа'") Тогда
ПричинаОшибки = Параметр;
ПоказатьОшибкуСозданияКлюча();
ИначеЕсли ИмяСобытия = НСтр("ru = 'Упрощенное заявление. Ошибка отправки заявления'") Тогда
Если НЕ ЗначениеЗаполнено(ПричинаОшибки) Тогда
ПричинаОшибки = Параметр;
КонецЕсли;
ПоказатьОшибкуОтправкиЗаявления();
ИначеЕсли ИмяСобытия = НСтр("ru = 'Упрощенное заявление. Отказ от ввода пароля'") Тогда
Если ПропуститьСтраницуИнструкцияПоСозданиюКлючаЭЦП() Тогда
ПоказатьОсновнуюСтраницу();
Иначе
ОткрытьСтраницуОтправки();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если РегламентированнаяОтчетностьКлиент.ЭтоСобытиеЗавершениеОтправки(ИмяСобытия) Тогда
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗаписиВладельца(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ВладельцаИлиБухгалтера" Тогда
Руководитель = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.Руководитель(Организация);
ГлБухгалтер = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.ГлБухгалтер(Организация);
КонецЕсли;
ОбновитьДанные =
НЕ ВладелецПустой(ЭтотОбъект) И (ВладелецЭЦП = Параметр ИЛИ ВладелецЭЦП = Источник)
ИЛИ ВладелецПустой(ЭтотОбъект)
И (ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель") И Руководитель = Источник
ИЛИ ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ГлавныйБухгалтер") И Руководитель = Источник);
Если ОбновитьДанные Тогда
ОбновитьДанныеОрганизацииИзБазы();
ДанныеСотрудникаПредыдущие = ДанныеСотрудника;
ОбновитьРеквизитыСотрудника(
ДанныеСотрудникаПредыдущие,
Ложь);
ДанныеВладельцаЭЦПЗаполненыКопированием = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗаписиОрганизации()
ОпределятьВозможностьБезбумажки = Ложь;
ОбновитьРеквизитыОрганизацииИСотрудника(ОпределятьВозможностьБезбумажки);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбработкаОповещенияЗаписиОрганизации_Завершение",
ЭтотОбъект);
ПриУстановкеРежимаТолькоСУЦАсинхронно(
ОписаниеОповещения,
ОпределятьВозможностьБезбумажки);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗаписиОрганизации_Завершение(Результат, ВходящийКонтекст) Экспорт
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП_ПСБ)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.УспешнаяОтправка_ПСБ)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.КакПолучитьКЭП_ПСБ)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.УспешнаяОтправка_БС) И ПодключитьСледующую = Истина Тогда
Возврат;
КонецЕсли;
Если НЕ ПрограммноеЗакрытиеБС И ЭтоБыстрыйСтарт Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_УстановитьНастройкиНачалаРаботыО1СО", 0.1, Истина);
Возврат;
КонецЕсли;
ВышлиБезПодключенияСледующейОрганизации =
ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.УспешнаяОтправка_БС)
И ПодключитьСледующую = Неопределено;
Если ВышлиБезПодключенияСледующейОрганизации Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_ОчиститьМассивЗаявлений", 0.1, Истина);
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_СпроситьПроСохранение", 0.1, Истина);
Возврат;
КонецЕсли;
Если НЕ ЗапретитьИзменение И НЕ ОбратнаяСвязьОтправлена И Оценка <> 0 Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьОбратнуюСвязь", 0.1, Истина);
Возврат;
КонецЕсли;
Если Не ЕстьПараметрЗакрытия Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_ЗакрытьСПараметромЗакрытия", 0.1, Истина);
Возврат;
КонецЕсли;
ТекстПредупреждения = НСтр("ru = 'Прервать работу помощника?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект,
Отказ,
ЗавершениеРаботы,
ТекстПредупреждения,
"ПрограммноеЗакрытие");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_УстановитьНастройкиНачалаРаботыО1СО()
ПрограммноеЗакрытиеБС = Истина;
ОбновитьИнтерфейс = УстановитьНастройкиНачалаРаботы();
Если ОбновитьИнтерфейс Тогда
ОбновитьИнтерфейс();
Активизировать();
КонецЕсли;
Закрыть();
КонецПроцедуры
&НаСервере
Функция УстановитьНастройкиНачалаРаботы() Экспорт
Возврат Обработки.НачалоРаботыОблачной1СО.УстановитьНастройкиНачалаРаботы();
КонецФункции
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЗаявлениеНажатие(Элемент)
НапечататьЗаявление();
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизацииПриИзменении(Элемент)
Модифицированность = Истина;
ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(ЭлектроннаяПочтаОрганизации, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизацииИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
Модифицированность = Истина;
ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(Текст, Истина);
КонецПроцедуры
&НаКлиенте
Процедура РекомендацияКОшибкеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
КонтекстЭДОКлиент.ОбработкаНавигационнойСсылкиИТС(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ИнструкцияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.ПоказатьИнструкциюСозданияКонтейнера(ТипКриптопровайдера);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаДляПаролейАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиент.АвтоПодборКонтактов(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка, "ЭлектроннаяПочта");
КонецПроцедуры
&НаКлиенте
Процедура ТелефонМобильныйДляПаролейАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиент.АвтоПодборКонтактов(ЭтотОбъект, Текст, ДанныеВыбора, СтандартнаяОбработка, "ТелефонМобильный");
КонецПроцедуры
&НаКлиенте
Процедура ЧтоТакоеКЭПНажатие(Элемент)
Текст = НСтр("ru = 'Сертификат электронной подписи – это официальный электронный документ, подтверждающий, что подпись принадлежит определённому человеку. В сертификате содержатся данные о сроке его действия, области его применения, выдавшем удостоверяющем центре, полномочиях владельца.
|
|Сертификат квалифицированной электронной подписи (КЭП) - один из видов сертификатов электронной подписи. Сертификат КЭП является цифровым аналогом собственноручной подписи. Получить сертификат КЭП можно в одном из аккредитованных удостоверяющих центров.
|
|Подробнее о получении см. в статье '");
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Получение электронной подписи'"),,,,"https://its.1c.ru/bmk/elreps_kep_director");
Текст = Новый ФорматированнаяСтрока(Текст, Ссылка);
ПоказатьПредупреждение(, Текст);
КонецПроцедуры
&НаКлиенте
Процедура ПредупреждениеПроОтсутствиеПравОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
МультирежимКлиент.ПоказатьАдминистраторов(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Элемент)
ОбработкаЗаявленийАбонентаКлиент.ВывестиОшибку(Элемент);
КонецПроцедуры
#Область ЗаявленияВПФР
&НаКлиенте
Процедура ПодсказкаПФРОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.НачатьОтправкуЗаявленияИзПанельПФР(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ЕстьКЭП(Команда)
ОчиститьДанные();
Если ЭтоИнтеграцияСБанком Тогда
ИнициализироватьОрганизацию();
АктивизироватьСтраницу(ЭтотОбъект, Элементы.ГруппаДлительнаяОперация);
ПодключитьОбработчикОжидания("Подключаемы_ЕстьКЭП_ПСБ", 0.1, Истина);
Иначе
ОписаниеОповещения = Новый ОписаниеОповещения(
"ЕстьКЭП_ПослеВыбораСертификата",
ЭтотОбъект);
ВыбратьСуществующийСертификат(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемы_ЕстьКЭП_ПСБ()
ПриИзмененииОрганизации();
КонецПроцедуры
&НаСервере
Процедура ОчиститьДанные()
СброситьЭтоОткрытиеСВыбраннойЭЦП(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
РезультатПоискаОрганизацииИзСертификата = ШаблонПоискаОрганизацииПоСертификату();
Организация = Неопределено;
ОчиститьРеквизитыФормы();
ОчиститьДанныеВладельца();
ОчиститьДанныеИзСертификата();
КонецПроцедуры
&НаКлиенте
Процедура НетКЭП(Команда)
Организация = Неопределено;
ПредыдущееЗначениеОрганизации = Неопределено;
ИнициализироватьОрганизацию();
Если ЗначениеЗаполнено(ТарифОператораЭДО) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"НетКЭП_ПослеОтвета",
ЭтотОбъект);
Текст = НСтр("ru = 'Тариф ""%1"" предполагает подключение к 1С-Отчетности с имеющемся сертификатом эл. подписи.
|При переключении на получение нового сертификата вы не сможете воспользоваться тарифом ""%1"".
|Продолжить с получением нового сертификата?'");
Текст = СтрШаблон(Текст, Строка(ТарифОператораЭДО));
Кнопки = ОбработкаЗаявленийАбонентаКлиентСервер.КнопкиНетДа();
ПоказатьВопрос(ОписаниеОповещения, Текст, Кнопки, , НСтр("ru = 'Нет'"));
Иначе
СледующийШагЕслиНетКэп();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НетКЭП_ПослеОтвета(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = НСтр("ru = 'Да'") Тогда
ТарифОператораЭДО = Неопределено;
СледующийШагЕслиНетКэп();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СледующийШагЕслиНетКэп()
Если ЭтоИнтеграцияСБанком Тогда
АктивизироватьСтраницу(ЭтотОбъект, Элементы.КакПолучитьКЭП_ПСБ);
Иначе
СброситьЭтоОткрытиеСВыбраннойЭЦП(ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ИнициализироватьОрганизацию();
КонецЕсли;
ОрганизацияПриИзменении(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаУЦОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиент.ПроверкаУЦОбработкаНавигационнойСсылки(ЭтотОбъект, Ссылка, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УЦПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиент.УЦПриИзменении(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВключаемыйСертификатРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиент.ПодсказкаКСертификатуОбработкаНавигационнойСсылки(
ЭтотОбъект,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВключенныйСертификатДляПодписанияНажатие(Элемент)
КриптографияЭДКОКлиент.ПоказатьСертификат(ВключаемыйСертификат, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииВключаемогоСертификата(ВыполняемоеОповещение = Неопределено)
ПриИзмененииВключаемогоСертификатаСервер();
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриИзмененииВключаемогоСертификата_Завершение",
ЭтотОбъект,
ДополнительныеПараметры);
ПриИзмененииВключаемогоСертификатаКлиент(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииВключаемогоСертификата_Завершение(Результат, ВходящийКонтекст) Экспорт
ИзменитьОформлениеСпособаПодписания(ЭтотОбъект);
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВключаемогоСертификатаСервер(ВходящийКонтекст = Неопределено)
Если ЗначениеЗаполнено(ВключаемыйСертификат)
И СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИспользоватьСуществующий") Тогда
ВозможноЭлектронноеПодписание = Истина;
ЭтоЭлектронноеПодписание = Истина;
КонецЕсли;
ИзменитьОформлениеВключаемогоСертификата();
ИзменитьОформлениеРеквизитовПриИзмененииСпособаПолученияСертификата();
ИзменитьОформлениеДокументовПослеИзмененияСертификатов(ВходящийКонтекст);
КонецПроцедуры
&НаСервере
Процедура ОпределитьЧтоЛицензияКриптоПроВключенаВСертификат(ВходящийКонтекст = Неопределено)
Если ДвДанныеСертификата = Неопределено Тогда
Включена = Ложь;
Иначе
ВерсияБСП = ОбработкаЗаявленийАбонентаВызовСервера.ВерсияБСП();
ЕстьМетод = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(
ВерсияБСП,
"3.1.9.238") >= 0;
Если ЕстьМетод Тогда
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
Свойства = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ДополнительныеСвойстваСертификата(ДвДанныеСертификата);
Включена = Свойства.СодержитВстроеннуюЛицензиюКриптоПро;
Иначе
Включена = Ложь;
КонецЕсли;
КонецЕсли;
ЛицензияКриптоПроВключенаВСертификат = Включена;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииВключаемогоСертификатаКлиент(ВыполняемоеОповещение = Неопределено)
Если ЗначениеЗаполнено(ВключаемыйСертификат) Тогда
СертификатДляПодписания = ВключаемыйСертификат;
ПриИзмененииСертификатаДляПодписания(ВключаемыйСертификат, ВыполняемоеОповещение);
Иначе
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", Истина);
ОпределитьВозможностьБезбумажногоПодписания(ВыполняемоеОповещение,,ДополнительныеПараметры, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьВключаемыйСертификатНажатие(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
ПриИзмененииВключаемогоСертификата();
КонецПроцедуры
&НаКлиенте
Процедура СпособПолученияСертификатаПриИзменении(Элемент)
ЗапретитьСменуСпопосба =
НЕ ИспользоватьСуществующий(ЭтотОбъект)
И ЗначениеЗаполнено(ТарифОператораЭДО);
Если ЗапретитьСменуСпопосба Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"СпособПолученияСертификатаПриИзменении_ПослеОтвета",
ЭтотОбъект);
Текст = НСтр("ru = 'При переключении на получение нового сертификата вы не сможете воспользоваться тарифом ""%1"".
|Продолжить с получением нового сертификата?'");
Текст = СтрШаблон(Текст, Строка(ТарифОператораЭДО));
Кнопки = ОбработкаЗаявленийАбонентаКлиентСервер.КнопкиНетДа();
ПоказатьВопрос(ОписаниеОповещения, Текст, Кнопки, , НСтр("ru = 'Нет'"));
Иначе
ПослеИзмененияСпособаПолученияСертификата();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииСпособаПолученияСертификата(ОписаниеЗавершения = Неопределено, ОпределятьВозможностьБезбумажки = Истина)
Если ЗапретитьИзменение Тогда
ВыполнитьОбработкуОповещения(ОписаниеЗавершения);
Возврат;
КонецЕсли;
ПриИзмененииСпособаПолученияСертификатаНаСервере();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриИзмененииСпособаПолученияСертификата_Завершение",
ЭтотОбъект,
ОписаниеЗавершения);
Если ОпределятьВозможностьБезбумажки Тогда
ОпределитьВозможностьБезбумажногоПодписания(ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииСпособаПолученияСертификата_Завершение(Результат, ОписаниеЗавершения) Экспорт
УправлениеФормой();
Если ОписаниеЗавершения <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ОписаниеЗавершения);
Конецесли;
КонецПроцедуры
&НаКлиенте
Процедура РежимРаботыСКлючамиЛокальноExtendedTooltipОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИсправитьОшибкиЛокальногоХраненияКлюча(НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОшибкиЛокальногоХраненияКлюча(Параметр, СтандартнаяОбработка = Истина)
Если ТипЗнч(Параметр) = Тип("Структура") Тогда
Действие = Параметр.НавигационнаяСсылка;
Если Параметр.РежимРаботыСКлючами <> РежимРаботыСКлючами Тогда
РежимРаботыСКлючами = Параметр.РежимРаботыСКлючами;
РежимРаботыСКлючамиПриИзменении(Неопределено);
КонецЕсли;
Иначе
Действие = Параметр;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ИсправитьОшибкиЛокальногоХраненияКлюча_Завершение",
ЭтотОбъект,
Действие);
ОбработкаЗаявленийАбонентаКлиент.ИсправитьОшибкиЛокальногоХраненияКлюча(
ЭтотОбъект,
ОписаниеОповещения,
Параметр);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОшибкиЛокальногоХраненияКлюча_Завершение(Результат, Действие) Экспорт
Если Действие = "Установить компоненту" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ИсправитьОшибкиЛокальногоХраненияКлюча_ПослеПроверкиУстановкиКомпоненты",
ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.ЗаполнитьСписокКриптопровайдеров(
ОписаниеОповещения,
КонтекстЭДОКлиент,
ЭтотОбъект,
Ложь);
ИначеЕсли Действие = "Исправить конфликт" Тогда
Если Результат <> Неопределено Тогда
КриптопровайдерПриКонфликте = Результат.КриптопровайдерПриКонфликте;
ИгнорироватьКонфликт = Результат.ИгнорироватьКонфликт;
ОпределитьВозможностьБезбумажногоПодписания();
ПриИзмененииРежимаРаботыСКлючами();
ПараметрыОповещения = КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект);
ПараметрыОповещения.Вставить("ВыбранноеМестоХраненияКлюча", Результат.КриптопровайдерПриКонфликте);
ПараметрыОповещения.Вставить("ИгнорироватьКонфликт", Результат.ИгнорироватьКонфликт);
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", ПараметрыОповещения);
КонецЕсли;
Иначе
ПараметрыОповещения = КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект);
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", ПараметрыОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОшибкиЛокальногоХраненияКлюча_ПослеПроверкиУстановкиКомпоненты(Результат, ВходящийКонтекст) Экспорт
ИзменитьОформлениеМестаХраненияКлючей();
ПараметрыОповещения = КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект);
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", ПараметрыОповещения);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", Истина);
ОпределитьВозможностьБезбумажногоПодписания(,,ДополнительныеПараметры, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЧтоДелатьПослеОтправкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьСтраницуУспешнойОтправки();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПФамилияПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Если РуководительФамилия = "" Тогда
РуководительФамилия = ВладелецЭЦПФамилия;
КонецЕсли;
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПИмяПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Если РуководительИмя = "" Тогда
РуководительИмя = ВладелецЭЦПИмя;
КонецЕсли;
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПОтчествоПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Если РуководительОтчество = "" Тогда
РуководительОтчество = ВладелецЭЦПОтчество;
КонецЕсли;
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПФамилияОчистка(Элемент, СтандартнаяОбработка)
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПИмяОчистка(Элемент, СтандартнаяОбработка)
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПОтчествоОчистка(Элемент, СтандартнаяОбработка)
ФИОПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура КПППриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеКПП();
КонецПроцедуры
&НаКлиенте
Процедура КраткоеНаименованиеПриИзменении(Элемент)
ИзменитьЗаголовокФормы();
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеКраткогоНаименования();
КонецПроцедуры
&НаКлиенте
Процедура ИННИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИНН = СокрЛП(Текст);
ИзменитьОформлениеИНН(Истина);
Если НЕ Элементы.Заполнить.Видимость Тогда
Элементы.Заполнить.Видимость = Истина;
Элементы.Заполнить.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Элементы.ГруппаСведенияОрганизации.Видимость = Ложь;
Элементы.ГруппаВладелецСканыИПодписание.Видимость = Ложь;
Элементы.ГруппаПодписаниеИОтправка.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПДолжностьПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПДолжностьОчистка(Элемент, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
КонецПроцедуры
&НаКлиенте
Процедура НомерОсновнойПоставки1сПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеНомераОсновнойПоставки1с();
КонецПроцедуры
&НаКлиенте
Процедура НомерОсновнойПоставки1сОчистка(Элемент, СтандартнаяОбработка)
ИзменитьОформлениеНомераОсновнойПоставки1с();
КонецПроцедуры
&НаКлиенте
Процедура ОГРНОчистка(Элемент, СтандартнаяОбработка)
ИзменитьОформлениеОГРН();
КонецПроцедуры
&НаКлиенте
Процедура ОГРНПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеОГРН();
КонецПроцедуры
&НаКлиенте
Процедура ПаспортныеДанныеНажатие(Элемент)
ПараметрыФормы =ОбработкаЗаявленийАбонентаКлиент.ПараметрыОткрытияФормыПаспорта();
ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы);
ДополнительныеПараметры.Вставить("ПараметрыФормы", ПараметрыФормы);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПаспортныеДанные_Завершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ПаспортныеДанные", ДополнительныеПараметры,,,,,ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура АдресЮридическийНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьФормуКонтактнойИнформацииЗавершение",
ЭтотОбъект,
Элемент);
ДополнительныеПараметры = КонтекстЭДОКлиент.ПараметрыПроцедурыРедактироватьАдрес();
ДополнительныеПараметры.Вставить("Адрес", АдресЮридическийЗначение);
ДополнительныеПараметры.Вставить("АдресИмя", Элемент.Имя);
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("Оповещение", ОписаниеОповещения);
ДополнительныеПараметры.Вставить("ПринудительноФИАС", Истина);
ДополнительныеПараметры.Вставить("ТолькоПросмотр", ЗапретитьИзменение);
КонтекстЭДОКлиент.РедактироватьАдрес(ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПояснениеОНевозможностиЭлектронногоПодписанияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправитьОшибкиЛокальногоХраненияКлюча(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияПредупрежденияОКонфликтеКриптопровайдеров(Результат, ВходящийКонтекст) Экспорт
Если Результат <> Неопределено Тогда
КриптопровайдерПриКонфликте = Результат.КриптопровайдерПриКонфликте;
ИгнорироватьКонфликт = Результат.ИгнорироватьКонфликт;
ОпределитьВозможностьБезбумажногоПодписания();
ПриИзмененииРежимаРаботыСКлючами();
КонецЕсли;
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ТехническаяИнформацияНажатие(Элемент)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ДокументЗаявление", ДокументЗаявление.Ссылка);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ТехническаяИнформация", ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПротоколНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьПротоколИзПанелиОтправки(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыОтправкиНажатие(Элемент)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьСостояниеОтправкиИзПанелиОтправки(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьКритическиеОшибкиИзПанелиОтправки(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПалецВверхНажатие(Элемент)
Оценка = 1;
Элементы.ПалецВверх.Картинка = БиблиотекаКартинок.ПалецВверхЗеленый;
Элементы.ПалецВниз.Картинка = БиблиотекаКартинок.ПалецВнизСерый;
Элементы.СведенияОбратнойСвязиПодробнее.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПалецВнизНажатие(Элемент)
Оценка = -1;
Элементы.ПалецВверх.Картинка = БиблиотекаКартинок.ПалецВверхСерый;
Элементы.ПалецВниз.Картинка = БиблиотекаКартинок.ПалецВнизКрасный;
Элементы.СведенияОбратнойСвязиПодробнее.Видимость = Истина;
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьТекстовыйОтвет", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьТекстовыйОтвет()
ЭтотОбъект.ТекущийЭлемент = Элементы.ТекстовыйОтвет;
КонецПроцедуры
&НаКлиенте
Процедура ЗаголовокСообщитеОбОтправкеРекомендацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ВсеЗаявления" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("e1cib/list/Документ.ЗаявлениеАбонентаСпецоператораСвязи");
Иначе
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://www.1c.ru/rus/partners/onecrep.jsp");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаголовокОтнеситеДоверенностьВКаждуюИФНСРекомендацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
КонтекстЭДОКлиент.ОткрытьСписокДоверенностейИлиИнструкцию(
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
Организация);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннойПодписьюПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭтоЭлектронноеПодписание = Истина;
ИзменитьОформлениеКнопкиОтправки(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВБумажномВидеПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПереключитьНаБумажноеПодписание();
КонецПроцедуры
&НаКлиенте
Процедура ИнструкцияСканаЗаявленияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НапечататьЗаявление();
КонецПроцедуры
&НаКлиенте
Процедура СертификатДляПодписанияНажатие(Элемент)
ЕстьВыбор = СертификатыОрганизации.Количество() > 1;
Если ЕстьВыбор Тогда
Отпечатки = Новый СписокЗначений;
Для каждого СертификатОрганизации Из СертификатыОрганизации Цикл
Отпечатки.Добавить(СертификатОрганизации.Значение.Отпечаток);
КонецЦикла;
ОткрытьСписокЛокальныхСертификатов(Отпечатки, СертификатДляПодписания.Отпечаток);
Иначе
КриптографияЭДКОКлиент.ПоказатьСертификат(СертификатДляПодписания, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииСертификатаДляПодписания(НовоеЗначение, ВыполняемоеОповещение = Неопределено)
СертификатДляПодписания = НовоеЗначение;
Если СертификатДляПодписания <> Неопределено Тогда
СертификатДляРеквизитов = СертификатДляПодписания;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриИзмененииСертификатаДляПодписания_Завершение",
ЭтотОбъект,
ДополнительныеПараметры);
ЗаполнитьЗаявлениеДаннымиИзСертификата(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииСертификатаДляПодписания_Завершение(Результат, ВходящийКонтекст) Экспорт
ИзменитьОформлениеСпособаПодписания(ЭтотОбъект);
Если ВходящийКонтекст.ВыполняемоеОповещение <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ПриИзмененииОрганизации();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииОрганизации()
Если ПредложитьВторичноеЗаявление() Тогда
СпроситьПроСуществующееПодключение(Организация);
ИначеЕсли ЗначениеЗаполнено(ПредыдущееЗначениеОрганизации) Тогда
СпроситьПроСменуОрганизации(Организация);
Иначе
ОтработатьИзменениеОрганизации();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПредложитьВторичноеЗаявление()
Возврат ОбработкаЗаявленийАбонента.НужноПредложитьСоздатьВторичноеВместоПервичного(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ОрганизацияОчистка(Элемент, СтандартнаяОбработка)
ПредыдущееЗначениеОрганизации = Неопределено;
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияВладелецЭЦПНажатие(Элемент)
Если ЗначениеЗаполнено(ВладелецЭЦП) Тогда
ПоказатьЗначение(,ВладелецЭЦП);
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ВыбратьВладельцаЭЦП();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьНажатие(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ВыбратьСотрудника(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьПроверкуТелефонаНажатие(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиТелефонаДляОблака(ЭтотОбъект);
ТаймерТелефон = 0;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаТелефон");
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТекстТелефонаДляПаролей", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьПроверкуЭлектроннойПочтыНажатие(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиПочтыДляОблака(ЭтотОбъект);
ТаймерПочта = 0;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаПочта");
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТекстЭлектроннойПочтаДляПаролей", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТелефонДляПаролейПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭтоРучноеИзменениеТелефона = Истина;
ТелефонДляПаролейИзменениеТекстаРедактирования(Элемент, Элемент.ТекстРедактирования, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТелефонИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭтоРучноеИзменениеТелефона = Истина;
ТелефонДляПаролейИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТелефонДляПаролейИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка, Интервал = 1.5, ОчищатьПодтверждение = Истина)
Представление = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Текст);
ТелефонМобильныйДляПаролей = Представление;
ПроверкаТелефонДляПаролей.ЗначениеВведено = ЗначениеЗаполнено(Представление);
Элемент.ОтметкаНезаполненного = НЕ ПроверкаТелефонДляПаролей.ЗначениеВведено;
Если ОчищатьПодтверждение Тогда
ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(Представление) Тогда
ТелефонМобильныйДляПаролей = Текст;
КонецЕсли;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаТелефон");
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонДляПаролей");
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонДляПаролей", Интервал, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаДляПаролейПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭлектроннаяПочтаДляПаролейИзменениеТекстаРедактирования(Элемент, ЭлектроннаяПочтаДляПаролей, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаДляПаролейПриИзмененииТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭлектроннаяПочтаДляПаролейИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаДляПаролейИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка, Интервал = 1.5, ОчищатьПодтверждение = Истина)
Представление = СокрЛП(Текст);
ЭлектроннаяПочтаДляПаролей = Представление;
ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено = ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Представление);
Элемент.ОтметкаНезаполненного = НЕ ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено;
Если ОчищатьПодтверждение Тогда
ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено = Ложь;
КонецЕсли;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаПочта");
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаДляПаролей");
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаДляПаролей", Интервал, Истина);
КонецПроцедуры
&НаКлиенте
Процедура КодПодтвержденияТелефонПриИзменении(Элемент)
КодПодтвержденияТелефонИзменениеТекстаРедактирования(Элемент, КодПодтвержденияТелефон, Истина);
КонецПроцедуры
&НаКлиенте
Процедура КодПодтвержденияТелефонИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
Если СтрДлина(СокрЛП(Текст)) = 6 Тогда
КодПодтвержденияТелефон = СокрЛП(Текст);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьКодПодтверждения", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КодПодтвержденияЭлектроннаяПочтаПриИзменении(Элемент)
КодПодтвержденияЭлектроннаяПочтаИзменениеТекстаРедактирования(Элемент, КодПодтвержденияПочта, Истина);
КонецПроцедуры
&НаКлиенте
Процедура КодПодтвержденияЭлектроннаяПочтаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
Если СтрДлина(СокрЛП(Текст)) = 6 Тогда
КодПодтвержденияПочта = СокрЛП(Текст);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьКодПодтверждения", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СканОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОписаниеОповещения = Новый ОписаниеОповещения();
КонтекстЭДОКлиент.ВыполнитьДействиеСФайлом(
ЭтотОбъект,
ОписаниеОповещения,
Элемент,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьОбработкаНавигационнойСсылки(Элемент, Действие, СтандартнаяОбработка)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ДоверенностьОбработкаНавигационнойСсылки_Завершение",
ЭтотОбъект);
КонтекстЭДОКлиент.ДоверенностьОбработкаНавигационнойСсылки(
ЭтотОбъект,
Элемент,
Действие,
СтандартнаяОбработка,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьОбработкаНавигационнойСсылки_Завершение(Результат, ВходящийКонтекст) Экспорт
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьСканНажатие(Элемент)
КонтекстЭДОКлиент.ОчиститьСканНажатие(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяПомощьНажатие(Элемент)
ФИО = СокрЛП(ВладелецЭЦПИмя + " " + ВладелецЭЦПОтчество);
ОбработкаЗаявленийАбонентаКлиент.ОткрытьФормуПомощи(ЭтотОбъект, ФИО, ТелефонМобильныйДляПаролей);
КонецПроцедуры
&НаКлиенте
Процедура СогласиеСРегламентомОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СохранитьЗаявление(Истина);
Если НавигационнаяСсылкаФорматированнойСтроки = "регламент" Тогда
ПолеHTMLСоглашения = КонтекстЭДОКлиент.HTMLДокСоглашения(ДокументЗаявление.Ссылка);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПолеHTMLСоглашения", ПолеHTMLСоглашения);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ПечатьHTML",
ДополнительныеПараметры);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "лицензия" Тогда
КонтекстЭДОКлиент.ПечатьЛицензииОбИспользованииПО(ДокументЗаявление.Ссылка);
КОнецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПИННОчистка(Элемент, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ВладелецЭЦПИННПриИзменении(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПИННПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПСНИЛСПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", Истина);
ОпределитьВозможностьБезбумажногоПодписания(,,ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ВладелецЭЦПСНИЛСОчистка(Элемент, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ВладелецЭЦПСНИЛСПриИзменении(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура РежимРаботыСКлючамиПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПриИзмененииРежимаРаботыСКлючами();
ИзменитьОформлениеМестаХраненияКлючей();
КонецПроцедуры
&НаКлиенте
Процедура ВключатьЛицензиюКриптоПроВСертификатПриИзменении(Элемент)
Если НЕ СрокЛицензииКриптоПроКонечный И ВключатьЛицензиюКриптоПроВСертификат Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ВключатьЛицензиюКриптоПроВСертификатПриИзменении_Завершение",
ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'На компьютере уже имеется общая лицензия КриптоПро CSP.
|Вы уверены, что хотите включить лицензию в сертификат (потребуется доп. оплата) ?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВключатьЛицензиюКриптоПроВСертификатПриИзменении_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
ВключатьЛицензиюКриптоПроВСертификат = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВсеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
КонтекстЭДОКлиент.ВыбратьВсеОбработкаНавигационнойСсылки(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЭтоНотариусАдвокатИлиГКФХПриИзменении(Элемент) Экспорт
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеОГРН();
КонецПроцедуры
&НаКлиенте
Процедура ЭтоБюджетополучательПриИзменении(Элемент) Экспорт
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПриУстановкеРежимаТолькоСУЦАсинхронно();
КонецПроцедуры
&НаКлиенте
Процедура ПриУстановкеРежимаТолькоСУЦАсинхронно(
ОписаниеЗавершения = Неопределено,
ОпределятьВозможностьБезбумажки = Истина,
ПриОткрытии = Ложь)
Элементы.Заявление.Видимость = НЕ СкрытьПечатьЗаявления();
ПриУстановкеРежимаТолькоСУЦНаСервере();
Если ЗапретитьИзменение ИЛИ НЕ ЗначениеЗаполнено(Организация) Тогда
ВыполнитьОбработкуОповещения(ОписаниеЗавершения);
Возврат;
КонецЕсли;
ИнициализироватьСпособПолученияСертификата(ЭтотОбъект);
Если СертификатДолженБытьПолученОтГосУЦ
ИЛИ ЭтоИнтеграцияСБанком
ИЛИ УЦ = ПредопределенноеЗначение("Перечисление.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр") Тогда
ПереключитьНаЛокальноеХранение();
Иначе
ИнициализироватьПараметрыЭДО(ПриОткрытии);
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриУстановкеРежимаТолькоСУЦ_Завершение",
ЭтотОбъект,
ОписаниеЗавершения);
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения);
Иначе
ПриИзмененииСпособаПолученияСертификата(
ОписаниеОповещения,
ОпределятьВозможностьБезбумажки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриУстановкеРежимаТолькоСУЦ_Завершение(Результат, ОписаниеЗавершения) Экспорт
УправлениеФормой();
ВыполнитьОбработкуОповещения(ОписаниеЗавершения);
КонецПроцедуры
&НаСервере
Процедура ПриУстановкеРежимаТолькоСУЦНаСервере()
ОбработкаЗаявленийАбонента.ПриУстановкеРежимаТолькоСУЦНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаЛокальноеХранение() Экспорт
Если РежимРаботыСКлючами <> 2 Тогда
РежимРаботыСКлючами = 2;
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
РежимРаботыСКлючамиПриИзменении(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаОблачноеХранение() Экспорт
РежимРаботыСКлючами = 1;
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Истина);
РежимРаботыСКлючамиПриИзменении(Неопределено)
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИнициализироватьСпособПолученияСертификата(Форма)
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьСпособПолученияСертификата(
Форма,
Форма.ДанныеОрганизацииЗаполненыКопированием);
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаОблачнуюПодпись(НовоеМестоХраненияКлюча = Неопределено) Экспорт
Если НовоеМестоХраненияКлюча <> Неопределено Тогда
МестоХраненияКлюча = НовоеМестоХраненияКлюча;
КонецЕсли;
РежимРаботыСКлючами = 3;
РежимРаботыСКлючамиПриИзменении(Неопределено)
КонецПроцедуры
&НаКлиенте
Процедура НадписьВыбратьМестоХраненияКлючаНажатие(Элемент)
ВыбратьМестоХраненияКлюча();
КонецПроцедуры
&НаКлиенте
Процедура НадписьВыбратьМестоХраненияКлючаРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Описание" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://help.astral.ru/v/147062851");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияКриптопровайдерОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Подробнее" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьНастройкиОблачнойПодписи", ЭтотОбъект);
КонтекстЭДОКлиент.ПоказатьИнформациюОбОблачнойПодписи(ЭтотОбъект, ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпособПолученияСертификатаПриИзменении_ПослеОтвета(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = НСтр("ru = 'Да'") Тогда
ТарифОператораЭДО = Неопределено;
Иначе
СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИспользоватьСуществующий");
КонецЕсли;
ПослеИзмененияСпособаПолученияСертификата();
КонецПроцедуры
&НаКлиенте
Процедура ПослеИзмененияСпособаПолученияСертификата()
Если ИспользоватьСуществующий(ЭтотОбъект) ТОгда
ПереключитьНаЛокальноеХранение();
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ПриИзмененииСпособаПолученияСертификата();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПодключитьЕщеОрганизацию(Команда)
ОткрытьФорму("Обработка.НачалоРаботыОблачной1СО.Форма.БыстрыйСтарт");
ПодключитьОбработчикОжидания("Подключаемый_Закрыть", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПрилинковатьБазу(Команда)
Если ПрейтиКИнтеграции() Тогда
ПрограммноеЗакрытиеБС = Истина;
Облачная1СОСлужебныйКлиентПереопределяемый.ОткрытьФормуПрилинкованияИзБыстрогоСтарта();
ПодключитьОбработчикОжидания("Подключаемый_Закрыть", 1, Истина);
Иначе
ПодключитьОбработчикОжидания("Подключаемый_Закрыть", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Пропустить(Команда)
ПрилинковатьБазу(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура КнопкаНазадНаВопросОНаличииЭЦП(Команда)
ПерейтиНаСтраницуВопросОНаличииЭЦП();
КонецПроцедуры
&НаКлиенте
Процедура КнопкаНазад(Команда)
Если НЕ ИспользуетсяОднаОрганизация Тогда
Организация = Неопределено;
КонецЕсли;
ПредыдущееЗначениеОрганизации = Неопределено;
ОчиститьДанные();
Если ЭтоБыстрыйСтарт И НЕ ЗаявлениеСозданоКопированием Тогда
ПрограммноеЗакрытиеБС = Истина;
ПодключитьСледующую = Истина;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПараметрыФормыБыстрыйСтарт", ПараметрыФормыБыстрыйСтарт);
ДополнительныеПараметры.Вставить("ПараметрыФормыСозданияОрганизации", ПараметрыФормыСозданияОрганизации);
Облачная1СОСлужебныйКлиентПереопределяемый.ОткрытьФормуДобавленияОрганизации(ДополнительныеПараметры);
ПодключитьОбработчикОжидания("Подключаемый_Закрыть", 1, Истина);
Иначе
ПерейтиНаСтраницуВопросОНаличииЭЦП();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЗапомнитьЗаявлениеВМассив_БС()
Заявления = ДокументооборотСКОВызовСервера.ЗагрузитьНастройку("Облачная1СО_Заявления");
Если Заявления = Неопределено Тогда
Заявления = Новый Массив;
КонецЕсли;
Заявления.Добавить(ДокументЗаявление.Ссылка);
ДокументооборотСКОВызовСервера.СохранитьНастройку("Облачная1СО_Заявления", Заявления);
Возврат Заявления;
КонецФункции
&НаКлиенте
Процедура ОткрытьСписокЗаявленийВПФР(Команда)
КонтекстЭДОКлиент.ОткрытьСписокЗаявленийВПФР(ДокументЗаявление.Организация);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЗаявлениеВПФРИзМеню(Команда)
КонтекстЭДОКлиент.СоздатьЗаявлениеВПФРИзМеню(ДокументЗаявление.Организация, ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДействияФормыПечатьЗаявка(Команда)
КонтекстЭДОКлиент.НапечататьЗаявлениеПо1СОтчетности(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДействияФормыПечатьСоглашение(Команда)
КонтекстЭДОКлиент.ПечатьСоглашенияобОказанииУслуг(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДействияФормыПечатьЛицензия(Команда)
КонтекстЭДОКлиент.ПечатьЛицензииОбИспользованииПО(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДействияФормыПечатьСертификат(Команда)
КонтекстЭДОКлиент.ПечатьСертификатаПользователя(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДействиеФормыПечатьПакет(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения();
КонтекстЭДОКлиент.ПечатьПакетаДокументов(ДокументЗаявление.Ссылка, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура Готово(Команда)
ОтправитьОбратнуюСвязьСервер();
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Заполнить(Команда)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИННКорректный = Истина;
ПроверитьИНН(ЭтотОбъект, ИННКорректный, Истина);
Если ИННКорректный Тогда
Элементы.Заполнить.Видимость = Ложь;
Элементы.ЗаголовокИНН.Заголовок = НСтр("ru = 'ИНН:'");
ОтработатьИзменениеОрганизации(ИНН);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОтправку(Команда)
ПрочитатьРеквизиты();
ОписаниеОповещения = Новый ОписаниеОповещения("ОбновитьОтправку_Завершение", ЭтотОбъект);
КонтекстЭДОКлиент.ОбновитьСтатусЗаявленияАбонента_ИзПанелиОтправки(ОписаниеОповещения, ЭтаФорма, ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьНеотправленноеИзвещение(Команда)
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОтправитьНеотправленноеИзвещениеИзПанелиОтправки(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПрочитатьРеквизиты()
Если ЗапретитьИзменение Тогда
ЭтотОбъект.Прочитать();
НастройкиДляЭДО = ДокументЗаявление.Ссылка.НастройкиЭДО;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ВыбратьПользователей(Форма)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораПользователей",
ЭтотОбъект);
МультирежимКлиент.ОткрытьПраваИлиПользователей(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыПользователи() Экспорт
Результат = Мультирежим.ПараметрыФормыПользователи(ЭтотОбъект);
Результат.Вставить("ТипЗаявления", Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Первичное);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура УказатьНаправления(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"УказатьНаправления_Завершение",
ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.УказатьНаправленияВЗаявлении(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УказатьНаправления_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено ИЛИ НЕ Результат.Модифицированность Тогда
Возврат;
КонецЕсли;
ОбработатьВыбранныеНаправленияСервер(Результат);
КонецПроцедуры
&НаСервере
Процедура ОбработатьВыбранныеНаправленияСервер(Результат)
Мультирежим.ОбработатьВыбранныеНаправленияИзГлавногоОкна(ЭтотОбъект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура РасширенныеНастройки(Команда = Неопределено)
ПараметрыФормы =
"АдресЮридическийЗначение,
|АдресЮридическийПредставление,
|АдресФактическийЗначение,
|АдресФактическийПредставление,
|ВладелецЭЦПДолжность,
|ВладелецЭЦППодразделение,
|ПолучатьСМСУведомления,
|РежимРаботыСКлючами,
|ТелефонМобильный,
|ТелефонОсновной,
|ОператорПоддерживаетСМСУведомление,
|ЭтоЮридическоеЛицо,
|ДоступнаЭлектроннаяПодписьВМоделиСервиса,
|ТелефонМобильныйДляПаролей,
|CryptoProCSPУстановлен,
|ViPNetCSPУстановлен,
|Доступен1СКонтрагент,
|ДанныеОрганизацииЗаполненыКопированием,
|ЗапретитьИзменение,
|КомпонентаДляРаботыСКриптографиейПодключена,
|ЮрАдресВРасширенныхНастройках,
|ЭлПочтаОрганизацииВРасширенныхНастройках,
|ВладелецЭЦПТип,
|НомерОсновнойПоставки1с,
|РазделениеВключено,
|РегНомерВРасширенныхНастройках,
|ИгнорироватьКонфликт,
|КриптопровайдерПриКонфликте,
|СпособПодтвержденияКриптоопераций,
|СпособПолученияСертификата,
|ЭлектроннаяПочтаОрганизации,
|ЭтоОткрытиеСВыбраннойЭЦП,
|ЕстьПравоНастройкиЭДО,
|НастройкиДляЭДО,
|ПодключениеЭДОВозможно,
|ПодключитьЭДО,
|СсылкаОписаниеСервисаЭДО,
|ЭтоМультиРежим,
|ПредыдущиеУчетныеЗаписи,
|МестоХраненияКлюча";
ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы);
ДополнительныеПараметры.Вставить("ПараметрыФормы", ПараметрыФормы);
ДополнительныеПараметры.Вставить("ТипЗаявления", ПредопределенноеЗначение("Перечисление.ТипыЗаявленияАбонентаСпецоператораСвязи.Первичное"));
ДополнительныеПараметры.Вставить("ЭтоОблако", ЭтоОблако(ЭтотОбъект));
ОписаниеОповещения = Новый ОписаниеОповещения(
"РасширенныеНастройки_Завершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_РасширенныеНастройки",
ДополнительныеПараметры,
,
,
,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьТариф(Команда)
Если ЗапретитьИзменение Тогда
ПоказатьЗначение(, Тариф);
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Если ЭтоРежимБесплатнойНулевойОтчетности Тогда
ВыбратьТарифНулевойОтчетности();
Иначе
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://v8.1c.ru/edi/edi_app/1c-otchetnost/rates/index.htm");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьТарифНулевойОтчетности()
Попытка
ВыбратьТарифНулевойОтчетностиВФормеВыбораТарифа();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
НСтр("ru = 'Электронный документооборот с контролирующими органами. Выбор тарифа'"),
"Ошибка",
ТекстОшибки,
,
Истина);
ВыбратьТарифНулевойОтчетностиНаСайтеНулевойОтчетности();
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьТарифНулевойОтчетностиВФормеВыбораТарифа()
МодульТарификацияБПКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ТарификацияБПКлиент");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокСсылкиВозвратаКВладельцу", НСтр("ru='Вернуться к подключению 1С-Отчетности'"));
МодульТарификацияБПКлиент.ОткрытьФормуВыбораТарифа(ЭтотОбъект, ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьТарифНулевойОтчетностиНаСайтеНулевойОтчетности()
Если ЗначениеЗаполнено(СсылкаПерейдитеНаПлатныйТариф) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораТарифа",
ЭтотОбъект);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("СсылкаПерейдитеНаПлатныйТариф", СсылкаПерейдитеНаПлатныйТариф);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ВыборТарифаБизнесСтарт",ДополнительныеПараметры,,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьДиректора(Команда)
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель");
УстановитьНовогоВладельцаЭЦП();
КонецПроцедуры
&НаСервере
Функция ФизЛицоСоответствуетТекущемуПользователю()
Возврат Мультирежим.ФизЛицоСоответствуетТекущемуПользователю(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ВыбратьГлБухгалтера(Команда)
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ГлавныйБухгалтер");
УстановитьНовогоВладельцаЭЦП();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьСотрудника(Команда)
СброситьПраваВладельцаЭЦП();
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник");
ДругойСотрудник = Неопределено;
ВладелецЭЦП = Неопределено;
УстановитьНовогоВладельцаЭЦП();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНомер(Команда)
ОтправитьКодПодтвержденияТелефонДляПаролей();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьАдрес(Команда)
ОтправитьКодПодтвержденияЭлектроннаяПочтаДляПаролей();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьКодПовторноТелефон(Команда)
ОтправитьКодПодтвержденияТелефонДляПаролей();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьКодПовторноЭлектроннаяПочта(Команда)
ОтправитьКодПодтвержденияЭлектроннаяПочтаДляПаролей();
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
СохранитьИОтправить(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СкрытьИнформациюКриптопровайдера(Команда)
ИзменитьОформлениеПанелиРекламыDSS(Ложь);
КонецПроцедуры
&НаСервере
Процедура СброситьПраваВладельцаЭЦП()
Мультирежим.СброситьПометкуВладельцаЭЦПВТаблицеПользователей(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция АдресТаблицы(Имя) Экспорт
Возврат Мультирежим.АдресТаблицы(ЭтотОбъект, Имя);
КонецФункции
#Область ЗаявленияВПФР
&НаСервере
Процедура ИзменитьОформлениеПанелиПФРВМастере() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ИзменитьОформлениеПанелиПФРВМастере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция НужноОтправитьЗаявлениеВПФРИзМастера(Вид) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.НужноОтправитьЗаявлениеВПФРИзМастера(ЭтотОбъект, Вид);
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере_ИнициализацияПФР()
ЗаявлениеСозданоКопированием = ЗначениеЗаполнено(Реквизит);
Если ЗаявлениеСозданоКопированием И НЕ ЭтоОткрытиеЗаявления Тогда
СсылкаНаЭтоЗаявление = Документы.ЗаявлениеАбонентаСпецоператораСвязи.ПустаяСсылка();
Иначе
СсылкаНаЭтоЗаявление = Реквизит;
КонецЕсли;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.Мастер_ПриСозданииНаСервере(ЭтотОбъект, СсылкаНаЭтоЗаявление);
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция ЗаполнитьМЧДВЗаявлении() Экспорт
ОбработкаЗаявленийАбонента.ЗаполнитьМЧДВЗаявлении(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ПараметрыФормыНаправленийСервер() Экспорт
Возврат Мультирежим.ПараметрыОткрытияФормыНаправленийИзГлавногоОкна(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ПараметрыФормыНаправленийУчетнойЗаписиСервер() Экспорт
Возврат Мультирежим.ПараметрыФормыНаправленийУчетнойЗаписи(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ОтправитьВБумажномВиде() Экспорт
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьВБумажномВиде", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьВБумажномВиде() Экспорт
ПереключитьНаБумажноеПодписание();
СохранитьИОтправить();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОчиститьМассивЗаявлений()
ПодключитьСледующую = Ложь;
ДокументооборотСКОВызовСервера.СохранитьНастройку("Облачная1СО_Заявления", Неопределено);
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СпроситьПроСохранение()
ТекстВопроса = НСтр("ru = 'Данные были изменены. Сохранить изменения?'");
ОписаниеОповещения = Новый ОписаниеОповещения(
"СпроситьПроСохранение_Завершение",
ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена);
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСохранение_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
СохранитьЗаявление();
ПрограммноеЗакрытие = Истина;
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
Модифицированность = Ложь;
ПрограммноеЗакрытие = Истина;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да ИЛИ Ответ = КодВозвратаДиалога.Нет Тогда
Если ОткрытьЗаявлениеНаИзменение Тогда
ОткрытьЗаявлениеНаИзменение();
Иначе
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеМестаХраненияКлючей()
ЭтоКонфликтКриптопровайдеров = CryptoProCSPУстановлен И ViPNetCSPУстановлен;
УстановленХотяБыОдинКриптопровайдер = CryptoProCSPУстановлен ИЛИ ViPNetCSPУстановлен;
ВыбранЛокальныхРежим = ЭтоЛокальнаяЭП(ЭтотОбъект);
ВыбранОблачныйРежим = ЭтоОблачнаяПодпись(ЭтотОбъект);
ЕстьОшибкаЛокальногоХраненияКлючей = ЕстьОшибкаЛокальногоХраненияКлючей();
ИздатьНовый = СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат =
(CryptoProCSPУстановлен И НЕ ЭтоКонфликтКриптопровайдеров
ИЛИ ИгнорироватьКонфликт И КриптопровайдерПриКонфликте = Перечисления.ТипыКриптоПровайдеров.CryptoPro)
И ЭтоЛокальнаяЭП(ЭтотОбъект)
И НЕ ЕстьОшибкаЛокальногоХраненияКлючей
И НЕ ВозможноБесшовноеПолучениеСертификатаВДУЦ;
Элементы.ГруппаВсеМестаХраненияКлючей.Видимость = ДоступнаЭлектроннаяОблачнаяПодпись;
Элементы.ГруппаПереключателейХраненияКлюча.Видимость = НЕ ДоступнаЭлектроннаяОблачнаяПодпись;
Элементы.ГруппаМестоХраненияКлюча.Видимость =
(ДоступнаЭлектроннаяПодписьВМоделиСервиса
ИЛИ ДоступнаЭлектроннаяОблачнаяПодпись
ИЛИ ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат
ИЛИ ЕстьОшибкаЛокальногоХраненияКлючей)
И ИздатьНовый
И НЕ СертификатДолженБытьПолученОтГосУЦ
И НЕ ЭтоОткрытиеСВыбраннойЭЦП
И НЕ ЭтоИнтеграцияСБанком
И НЕ ВозможноБесшовноеПолучениеСертификатаВДУЦ;
ОшибкаЗаполнения = Ложь;
ПоказатьПодсказку = Ложь;
Если ЭтоЛокальнаяЭП(ЭтотОбъект) Тогда
ПредставлениеМестаХранения = "На этом компьютере";
ИначеЕсли ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ПоказатьПодсказку = Истина;
ПредставлениеМестаХранения = НСтр("ru = 'В программе (сервис 1С:DSS)'");
Если ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
ПредставлениеМестаХранения = ПредставлениеМестаХранения + ": " + СокрЛП(СвойствоОблачнойПодписи.УчетнаяЗапись);
ИначеЕсли ЗначениеЗаполнено(СвойствоОблачнойПодписи.НовыйЛогин) Тогда
ПредставлениеМестаХранения = ПредставлениеМестаХранения + ": новая учетная запись " + СвойствоОблачнойПодписи.НовыйЛогин;
ОшибкаЗаполнения = НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.ИдентификаторСервера);
Иначе
ПредставлениеМестаХранения = ПредставлениеМестаХранения + ": требует настройки";
ОшибкаЗаполнения = Истина;
КонецЕсли;
Иначе
ПредставлениеМестаХранения = НСтр("ru = 'В программе'");
КонецЕсли;
Элементы.НадписьВыбратьМестоХраненияКлюча.Заголовок = ПредставлениеМестаХранения;
Если ОшибкаЗаполнения Тогда
Элементы.НадписьВыбратьМестоХраненияКлюча.ЦветТекста = КрасныйЦвет;
Иначе
Элементы.НадписьВыбратьМестоХраненияКлюча.ЦветТекста = СинийЦвет;
КонецЕсли;
Если ПоказатьПодсказку Тогда
Элементы.НадписьВыбратьМестоХраненияКлюча.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Иначе
Элементы.НадписьВыбратьМестоХраненияКлюча.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Элементы.ГруппаРежимРаботыСКлючамиВМоделиСервиса.Видимость = ДоступнаЭлектроннаяПодписьВМоделиСервиса;
Элементы.РежимРаботыСКлючамиЛокально.Видимость = ДоступнаЭлектроннаяПодписьВМоделиСервиса;
Элементы.ВключатьЛицензиюКриптоПроВСертификат.Видимость = ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат;
Элементы.ОшибкаЛокальногоХранения.Видимость = ВыбранЛокальныхРежим И ЕстьОшибкаЛокальногоХраненияКлючей;
Если Элементы.ОшибкаЛокальногоХранения.Видимость Тогда
ТекстОшибкиВГруппеСертификат = Элементы.ГруппаПолученияСертификата.ПодчиненныеЭлементы.Найти(Элементы.ОшибкаЛокальногоХранения);
ТекстОшибкиВГруппеДоступность = Элементы.ГруппаПереключателейХраненияКлюча.ПодчиненныеЭлементы.Найти(Элементы.ОшибкаЛокальногоХранения);
Если НЕ Элементы.ГруппаМестоХраненияКлюча.Видимость
И ТекстОшибкиВГруппеСертификат = Неопределено Тогда
Элементы.Переместить(
Элементы.ОшибкаЛокальногоХранения,
Элементы.ГруппаПолученияСертификата);
ИначеЕсли ТекстОшибкиВГруппеДоступность = Неопределено Тогда
Элементы.Переместить(
Элементы.ОшибкаЛокальногоХранения,
Элементы.ГруппаПереключателейХраненияКлюча);
КонецЕсли;
КонецЕсли;
Если ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат
И НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса
И НЕ ДоступнаЭлектроннаяОблачнаяПодпись
И НЕ ЕстьОшибкаЛокальногоХраненияКлючей Тогда
Элементы.ЗаголовокМестоХраненияКлюча.Заголовок = НСтр("ru = 'Лицензия КриптоПро:'");
Элементы.ВключатьЛицензиюКриптоПроВСертификат.Заголовок = НСтр("ru = 'Включить в сертификат (платно)'");
Иначе
Элементы.ЗаголовокМестоХраненияКлюча.Заголовок = НСтр("ru = 'Доступность подписи:'");
Элементы.ВключатьЛицензиюКриптоПроВСертификат.Заголовок = НСтр("ru = 'вместе с лицензией КриптоПро CSP на сертификат (платно)'");
КонецЕсли;
Если ЕстьОшибкаЛокальногоХраненияКлючей И ВыбранЛокальныхРежим Тогда
Элементы.РежимРаботыСКлючамиЛокально.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
Иначе
Элементы.РежимРаботыСКлючамиЛокально.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
КонецЕсли;
Если ЕстьОшибкаЛокальногоХраненияКлючей Тогда
Текст = ТекстОшибкиЛокальногоХраненияКлючей();
Если ЭтоКонфликтКриптопровайдеров Тогда
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Исправить'"),,,,"Исправить конфликт");
ИначеЕсли НЕ КомпонентаДляРаботыСКриптографиейПодключена Тогда
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Установить'"),,,,"Установить компоненту");
ИначеЕсли НЕ УстановленХотяБыОдинКриптопровайдер Тогда
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Установить'"),,,,"Установить криптопровайдер");
ИначеЕсли ЕстьОшибкаЛицензииКриптоПро() Тогда
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Приобрести'"),,,,"Приобрести");
КонецЕсли;
Если ДоступнаЭлектроннаяПодписьВМоделиСервиса Тогда
КрасныйТекст = Новый ФорматированнаяСтрока(" " + Текст,,КрасныйЦвет);
Иначе
КрасныйТекст = Новый ФорматированнаяСтрока(Текст,,КрасныйЦвет);
КонецЕсли;
ПодсказкаПоЛокальномуКлючу = Новый ФорматированнаяСтрока(КрасныйТекст, Ссылка);
ОшибкаЛокальногоХранения = ПодсказкаПоЛокальномуКлючу;
Иначе
ПодсказкаПоЛокальномуКлючу = НСтр("ru = 'Ключ электронной подписи будет храниться на этом компьютере при помощи %1'");
Если CryptoProCSPУстановлен Тогда
ПодсказкаПоЛокальномуКлючу = СтрШаблон(ПодсказкаПоЛокальномуКлючу, НСтр("ru = 'CryptoPro CSP'"));
Иначе
ПодсказкаПоЛокальномуКлючу = СтрШаблон(ПодсказкаПоЛокальномуКлючу, НСтр("ru = 'ViPNet CSP'"));
КонецЕсли;
КонецЕсли;
Элементы.РежимРаботыСКлючамиЛокально.РасширеннаяПодсказка.Заголовок = ПодсказкаПоЛокальномуКлючу;
Если ЗапретитьИзменение Тогда
Элементы.ГруппаМестоХраненияКлюча.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьСтраницу(Форма, Страница)
Если ЭтоТекущаяСтраница(Форма, Страница) И НЕ Страница.Видимость Тогда
Страница.Видимость = Истина;
Иначе
Группа = Форма.Элементы.СтраницыЗаявления;
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(
Группа,
Страница);
КонецЕсли;
АктивизироватьСтраницу_БС(Форма, Страница);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьСтраницу_БС(Форма, Страница)
ОтображатьВРежимеБС = ОтображатьВРежимеБС(Форма);
Страница.Ширина = ?(ОтображатьВРежимеБС, Форма.ШиринаЗаявления_БС, 0);
Страница.РастягиватьПоГоризонтали = НЕ ОтображатьВРежимеБС;
ОтображатьЗаголовокБС(Форма, Страница, ОтображатьВРежимеБС);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОтображатьЗаголовокБС(Форма, Страница, Отображать)
ИмяЗаголовка = Страница.Имя + "_Группа_ЗаголовокБС";
Группа = Форма.Элементы.Найти(ИмяЗаголовка);
Если Группа <> Неопределено Тогда
Группа.Видимость = Отображать;
Если Отображать Тогда
Группа.РастягиватьПоГоризонтали = Истина;
Группа.ГоризонтальноеПоложениеПодчиненных = ГоризонтальноеПоложениеЭлемента.Центр;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьДопСтраницу(МногостраничныйЭлемент, ТекущаяСтраница) Экспорт
МенятьВидимость = Истина;
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(
МногостраничныйЭлемент,
ТекущаяСтраница,
МенятьВидимость);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОтображатьВРежимеБС(Форма)
Возврат Форма.ЭтоБыстрыйСтарт И НЕ Форма.ЗапретитьИзменение
КонецФункции
&НаСервере
Процедура ПриОтправкеЗаявленияНаПодключение()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПриОтправкеЗаявленияНаПодключение(ДокументЗаявление.Ссылка);
БольшеНеПоказыватьПриглашение();
КонецПроцедуры
&НаСервере
Процедура БольшеНеПоказыватьПриглашение()
ЭтоПодключениеПотенциального = Мультирежим.ЭтоПодключениеПотенциальногоПользователя(
ЭтотОбъект,
ВладелецЭЦП,
ТаблицаПользователей);
Если ЭтоПодключениеПотенциального Тогда
УчетнаяЗапись = Мультирежим.УчетнаяЗаписьОрганизацииПоФорме(ЭтотОбъект);
Мультирежим.БольшеНеНапоминатьПроПриглашение(Организация, УчетнаяЗапись, ТекущийПользователь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьОбратнуюСвязь()
ОтправитьОбратнуюСвязьСервер();
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПаспортныеДанные_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Результат.ПараметрыФормы;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат, ПараметрыФормы, "ПараметрыФормы");
Если Результат.Модифицированность Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Конецесли;
ИзменитьОформлениеПаспортныхДанных();
КонецПроцедуры
&НаСервере
Функция АдресТаблицыСравненияРеквизитов() Экспорт
ТаблицаЗначенийСравненияРеквизитов = РеквизитФормыВЗначение("ТаблицаСравненияРеквизитов");
Возврат ПоместитьВоВременноеХранилище(ТаблицаЗначенийСравненияРеквизитов, Новый УникальныйИдентификатор);
КонецФункции
&НаКлиенте
Процедура СохранитьИОтправить(НовыйGUID = Ложь)
ЗаблокироватьКнопку();
СохранитьЗаявление(Истина, НовыйGUID);
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
Если ЕстьОшибкиВЗаполненииЗаявления() Тогда
РазблокироватьКнопку();
Возврат;
Иначе
СнятьМодифицированность(ЭтотОбъект);
КонецЕсли;
Если ЭтоЭлектронноеПодписание Тогда
СравнитьРеквизитыСертификатов();
Иначе
СравнитьРеквизитыПоЕГРЮЛ();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыПоЕГРЮЛ()
ОписаниеОповещения = Новый ОписаниеОповещения(
"СравнитьРеквизитыПоЕГРЮЛ_Завершение",
ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.СравнитьЗаявлениеПоЕГРЮЛ(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыПоЕГРЮЛ_Завершение(Исправить, ВходящийКонтекст) Экспорт
Если Исправить = Истина Тогда
ИсправитьОшибкиЕГРЮЛСервер();
ИначеЕсли Исправить = Ложь Тогда
НачатьОтправкуЗаявления();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИсправитьОшибкиЕГРЮЛСервер() Экспорт
ОбработкаЗаявленийАбонента.ИсправитьОшибкиЕГРЮЛ(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаблокироватьКнопку()
Если НЕ ЭтоБыстрыйСтарт Тогда
Элементы.Отправить.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазблокироватьКнопку()
Элементы.Отправить.Доступность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура Отправить_ПослеОтветаНаВопросОБумажномПодписании(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = НСтр("ru = 'Да'") Тогда
ПереключитьНаБумажноеПодписание();
СохранитьИОтправить();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПереключитьНаБумажноеПодписание()
СпособПодписания = 2;
ЭтоЭлектронноеПодписание = Ложь;
ИзменитьОформлениеКнопкиОтправки(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыСертификатов()
ОписаниеОповещения = Новый ОписаниеОповещения(
"СравнитьРеквизитыСертификатов_ПослеПолученияОтвета",
ЭтотОбъект);
КонтекстЭДОКлиент.СравнитьРеквизитыСертификатов(ЭтотОбъект, "РеквизитыСертификата", ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыСертификатов_ПослеПолученияОтвета(Результат, ВходящийКонтекст) Экспорт
Если Результат.Выполнено Тогда
НачатьОтправкуЗаявления();
Иначе
Если Результат.Действие = НСтр("ru = 'Взять из сертификата'") Тогда
ЗаполнитьЗаявлениеДаннымиИзСертификатаПередОтправкой();
СохранитьИОтправить();
ИначеЕсли Результат.Действие = НСтр("ru = 'В бумажном виде'") Тогда
ПереключитьНаБумажноеПодписание();
СохранитьИОтправить();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЗаявлениеДаннымиИзСертификатаПередОтправкой()
Для каждого СтрокаТаблицы Из ТаблицаСравненияРеквизитов Цикл
РеквизитФормы = СтрокаТаблицы.РеквизитФормы;
Если СтрокаТаблицы.Различается Тогда
Если СтрокаТаблицы.Наименование = НСтр("ru = 'ОГРН'")
ИЛИ СтрокаТаблицы.Наименование = НСтр("ru = 'ОГРНИП'") Тогда
ОГРН = СтрокаТаблицы.СтороннийСертификат;
ИначеЕсли СтрокаТаблицы.Наименование = НСтр("ru = 'Краткое наименование'") Тогда
КраткоеНаименование = СтрокаТаблицы.СтороннийСертификат;
ИначеЕсли СтрокаТаблицы.Наименование = НСтр("ru = 'ИНН'") Тогда
ИНН = СтрокаТаблицы.СтороннийСертификат;
ИначеЕсли СтрокаТаблицы.Наименование = НСтр("ru = 'ИНН владельца сертификата'") Тогда
ВладелецЭЦПИНН = СтрокаТаблицы.СтороннийСертификат;
Иначе
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура НачатьОтправкуЗаявления()
ПодключитьОбработчикОжидания("Подключаемый_ПоказатьБубликОтправки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПоказатьБубликОтправки()
Если ЭтоБыстрыйСтарт Тогда
ОткрытьСтраницуОтправкиИНачатьОтправкуПриНеобходимости();
Иначе
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Заявление", ДокументЗаявление.Ссылка);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ОтправкаЗаявления", ДополнительныеПараметры, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявление()
Если ЭтоОблако(ЭтотОбъект) И ЭтоЭлектронноеПодписание Тогда
АлгоритмКонтейнераКлючей = КонтекстЭДОКлиент.ЗаявлениеОпределитьАлгоритмДляСозданияКонтейнераКлючей(ДокументЗаявление);
НачатьОпределениеТекстаЗаявления(АлгоритмКонтейнераКлючей);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
Иначе
ОтправитьЗаявлениеИзКонтейнера();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьТекстЗаявления() Экспорт
Если ЭтоАдресВременногоХранилища(АдресЗаданияПоПолучениюТекстаЗаявления) Тогда
Результат = ПолучитьИзВременногоХранилища(АдресЗаданияПоПолучениюТекстаЗаявления);
Если ЗначениеЗаполнено(Результат) Тогда
ОтключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления");
Если Результат.Выполнено Тогда
ТекстОтправляемогоЗаявления = Результат.ТекстОтправляемогоЗаявления;
АдресТекстаОтправляемогоЗаявления = ПоместитьВоВременноеХранилище(ТекстОтправляемогоЗаявления, Новый УникальныйИдентификатор);
ПрисоединенныйФайлЗаявления = ПрисоединитьФайлЗаявления(АдресТекстаОтправляемогоЗаявления);
ОтправитьЗаявлениеИзКонтейнера(АдресТекстаОтправляемогоЗаявления);
Иначе
ОтправитьЗаявлениеИзКонтейнера_Завершение(Результат, Неопределено);
КонецЕсли;
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
КонецЕсли;
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПрисоединитьФайлЗаявления(АдресТекстаОтправляемогоЗаявления)
ЭтотОбъект.Прочитать();
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ПрисоединенныйФайлЗаявления = КонтекстЭДОСервер.ПрисоединитьФайлЗаявления(НовыйДокументЗаявление, АдресТекстаОтправляемогоЗаявления, "Заявление_на_подключение");
НовыйДокументЗаявление.Записать();
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
Возврат ПрисоединенныйФайлЗаявления;
КонецФункции
&НаСервере
Процедура НачатьОпределениеТекстаЗаявления(Алгоритм)
АдресЗаданияПоПолучениюТекстаЗаявления = ПоместитьВоВременноеХранилище("", ЭтаФорма.УникальныйИдентификатор);
ДополнительныеПараметры = Новый Массив();
ДополнительныеПараметры.Добавить(АдресЗаданияПоПолучениюТекстаЗаявления);
ДополнительныеПараметры.Добавить(ДокументЗаявление.Ссылка);
ДополнительныеПараметры.Добавить(Алгоритм);
ФоновыеЗадания.Выполнить("ЭлектронныйДокументооборотСКонтролирующимиОрганами.НачатьОпределениеТекстаЗаявления", ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеИзКонтейнера(АдресТекстаОтправляемогоЗаявления = Неопределено)
ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьЗаявлениеИзКонтейнера_Завершение", ЭтотОбъект);
Контекст = КонтекстЭДОКлиент.ПараметрыПроцедурыСформироватьИОтправитьЗаявление();
Контекст.ДокументЗаявление = ДокументЗаявление;
Контекст.ВызовИзМастераПодключенияК1СОтчетности = Истина;
Контекст.ВыполняемоеОповещение = ОписаниеОповещения;
Контекст.АдресТекстаОтправленногоЗаявления = АдресТекстаОтправляемогоЗаявления;
Контекст.ЭтоНулевка = ЭтоРежимБесплатнойНулевойОтчетности ИЛИ ЭтоРежимОграниченнойФункциональности;
Контекст.ПрисоединенныйФайлЗаявления = ПрисоединенныйФайлЗаявления;
Контекст.ФормаВладелец = ЭтотОбъект;
Если ЭтоМультиРежим Тогда
ИдентификаторАбонента = КонтекстЭДОКлиент.ИдентификаторАбонентаПоОрганизации(Организация);
Контекст.ИдентификаторАбонента = ИдентификаторАбонента;
КонецЕсли;
Если ДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса ИЛИ ИспользоватьСуществующий(ЭтотОбъект) Тогда
Контекст.ФормироватьЗакрытыйКлючИЗапросНаСертификат = Ложь;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
Контекст.ФормироватьЗакрытыйКлючИЗапросНаСертификат = КонтекстЭДОКлиент.ФормироватьЗапросНаСертификатОблачнойПодписи(МестоХраненияКлюча);
КонецЕсли;
Если ВключатьЛицензиюКриптоПроВСертификат
И ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат Тогда
Контекст.OIDЛицензииКриптоПро = OIDЛицензииКриптоПро;
КонецЕсли;
Если ЭтоЭлектронноеПодписание Тогда
Контекст.СтороннийСертификат = СертификатДляПодписания;
Контекст.СтороннийСертификат.Вставить(
"ПредставлениеСертификата",
ДокументооборотСКОКлиентСервер.ПредставлениеСертификата(СертификатДляПодписания));
КонецЕсли;
КонтекстЭДОКлиент.СформироватьИОтправитьЗаявление(Контекст);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеИзКонтейнера_Завершение(Результат, ДополнительныеПараметры) Экспорт
РазблокироватьКнопку();
ЭтотОбъект.Прочитать();
Если Результат.Свойство("ТекстОшибки") Тогда
ПолученныйТекстОшибокОтправки = Результат.ТекстОшибки;
ИначеЕсли Результат.Свойство("ОписаниеОшибки") Тогда
ПолученныйТекстОшибокОтправки = Результат.ОписаниеОшибки;
КонецЕсли;
Если ТекстОшибокОтправки <> ПолученныйТекстОшибокОтправки Тогда
ТекстОшибокОтправки = ПолученныйТекстОшибокОтправки;
КонецЕсли;
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
Оповестить("Завершение отправки заявления", Результат, ДокументЗаявление.Ссылка);
ЭтотОбъект.Прочитать();
Если ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено") Тогда
Оповестить(НСтр("ru = 'Упрощенное заявление. Успешная отправки заявления'"), , ДокументЗаявление.Ссылка);
УведомитьПартнераОЗаявлении();
ЭтаФорма.Активизировать();
ПоказатьСтраницуУспешнойОтправки();
ПриОтправкеЗаявленияНаПодключение();
ЗапретитьИзменение = Истина;
ИначеЕсли СтрНайти(ПолученныйТекстОшибокОтправки, "Отказ от ввода пароля") <> 0 Тогда
Оповестить(НСтр("ru = 'Упрощенное заявление. Отказ от ввода пароля'"), "", ДокументЗаявление.Ссылка);
Иначе
Оповестить(НСтр("ru = 'Упрощенное заявление. Ошибка отправки заявления'"), ТекстОшибокОтправки, ДокументЗаявление.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСтраницуУспешнойОтправки()
Если ЭтоБыстрыйСтарт Тогда
Заявления = ЗапомнитьЗаявлениеВМассив_БС();
ИзменитьОформлениеСтраницыУспешнойОтправки_БС(Заявления);
АктивизироватьСтраницу(ЭтотОбъект, Элементы.УспешнаяОтправка_БС);
ИначеЕсли ЭтоИнтеграцияСБанком Тогда
АктивизироватьСтраницу(ЭтотОбъект, Элементы.УспешнаяОтправка_ПСБ);
Элементы.Готово_ПСБ.КнопкаПоУмолчанию = Истина;
Иначе
ИзменитьОформлениеСтраницыУспешнойОтправки();
АктивизироватьСтраницу(ЭтотОбъект, Элементы.УспешнаяОтправка);
Элементы.Готово.КнопкаПоУмолчанию = Истина;
КонецЕсли;
ПрограммноеЗакрытие = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьОформлениеСтраницыУспешнойОтправки_БС(Заявления)
Подстроки = Новый Массив;
Подстроки.Добавить(НСтр("ru = 'Программа сообщит вам, когда заявление будет обработано.
|Посмотреть ранее отправленные заявления можно '"));
Подстроки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'здесь'"),,,,"здесь"));
Подстроки.Добавить(" (" + Строка(Заявления.Количество()) + ").");
Элементы.УспешнаяОтправка_Заявления.Заголовок = Новый ФорматированнаяСтрока(Подстроки);
Если НЕ ПрейтиКИнтеграции() Тогда
Элементы.УспешнаяОтправка_ПрилинковатьБазу.Заголовок = НСтр("ru = 'Начать работу'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПрейтиКИнтеграции()
Возврат НЕ ОтключенаИнтеграция() И НЕ ДанныеОрганизацииЗаполненыКопированием;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеСтраницыУспешнойОтправки()
ВладелецЭПНеРуководитель = НЕ ЭтоРуководитель(ЭтотОбъект);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ПоказыватьБлокФНС = СдаватьВФНС И ВладелецЭПНеРуководитель;
ЕстьТолькоПервыйБлок = НЕ ПоказыватьБлокФНС;
Если ЕстьТолькоПервыйБлок Тогда
Элементы.ДекорацияСообщитеОбОтправкеЗаявления.Видимость = Ложь;
Элементы.ДекорацияСообщитеОбОтправкеОтступ.Видимость = Ложь;
Элементы.ГруппаНижнийРаздел.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
КонецЕсли;
Если ЭтоРежимБесплатнойНулевойОтчетности ИЛИ ЭтоРежимОграниченнойФункциональности Тогда
Элементы.ЗаголовокСообщитеОбОтправкеЗаявления.Заголовок = НСтр("ru = 'Дождитесь, пока с вами свяжется партнер для оформления документов'");
Элементы.ЗаголовокСообщитеОбОтправкеРекомендация.Заголовок =
НСтр("ru = 'Обратите внимание, воспользоваться 1С-Отчетностью вы сможете только после одобрения заявления партнером и настройки программы. Подключение к 1С-Отчетности обычно занимает 1-2 дня.'");
КонецЕсли;
Если ЭтоРежимОблачной1СО И Не ЭтоБыстрыйСтарт Тогда
Элементы.НадписьОбУспешнойОтправке.Заголовок = НСтр("ru = 'Ваше заявление успешно отправлено и находится в обработке'");
Если ЗапретитьИзменение Тогда
Элементы.ЗаголовокСообщитеОбОтправкеЗаявления.Заголовок = НСтр("ru = 'Заявление находится в обработке.'");
Иначе
Элементы.ГруппаСообщитеОбОтправкеЗаявленияЗаголовок.Видимость = Ложь;
Элементы.ДекорацияСообщитеОбОтправкеОтступ.Картинка = БиблиотекаКартинок.Этап1БРО;
Элементы.ДекорацияСообщитеОбОтправкеОтступ.Высота = 0;
КонецЕсли;
Подстроки = Новый Массив;
Подстроки.Добавить(НСтр("ru='Обычно обработка заявления занимает до 2 рабочих часов, а регламентированное время — до 24 часов. Заявления, поступившие с 20:00 до утра следующего дня, обрабатываются с 08:00 (время московское). Повторно отправлять заявление следует, только если вы ошиблись в текущем.
|
|Отслеживать статус заявления можно в разделе '"));
Подстроки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru='""Все заявления""'"), , , , "ВсеЗаявления"));
Элементы.ЗаголовокСообщитеОбОтправкеРекомендация.Заголовок = Новый ФорматированнаяСтрока(Подстроки);
КонецЕсли;
Элементы.ГруппаОтнеситеДоверенностьВКаждуюИФНС.Видимость = ПоказыватьБлокФНС;
Если ЗапретитьИзменение Тогда
Элементы.ИконкаИПоздравления.Видимость = Ложь;
Элементы.ГруппаОбратнойСвязи.Видимость = Ложь;
Элементы.Готово.Заголовок = НСтр("ru = 'ОК'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УведомитьПартнераОЗаявлении()
ОбработкаЗаявленийАбонента.УведомитьПартнераОЗаявлении(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьФИОРуководителяИз1СКонтрагент(Данные)
РуководительФамилия = Данные.Фамилия;
РуководительИмя = Данные.Имя;
РуководительОтчество = Данные.Отчество;
Если ВладелецЭЦПТип_БС = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник Тогда
Возврат;
КонецЕсли;
ВладелецЭЦПФамилия = РуководительФамилия;
ВладелецЭЦПИмя = РуководительИмя;
ВладелецЭЦПОтчество = РуководительОтчество;
ФИОВладельцаИз1СКонтрагента = ВладелецЭЦПФамилия <> "" И ВладелецЭЦПИмя <> "";
НачатьОпределениеВладельцаЭППоФИО();
КонецПроцедуры
&НаСервере
Процедура ОчиститьРеквизитыИз1СКонтрагента()
ФИОВладельцаИз1СКонтрагента = Ложь;
РуководительФамилия = "";
РуководительИмя = "";
РуководительОтчество = "";
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИз1СКонтрагент()
ДозаполнитьЗаявлениеДаннымиИз1СКонтрагент();
ОбработкаЗаявленийАбонента.ЗаполнитьДанныеЕГРЮЛДляСравнения(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДозаполнитьЗаявлениеДаннымиИз1СКонтрагент()
Доступен1СКонтрагент = Ложь;
ЗаполнятьПринудительно = Ложь;
ОчиститьРеквизитыИз1СКонтрагента();
ЭтоИП = НЕ ЭтоЮридическоеЛицо;
ИПСдаетОтчетностьЗаСебя = ЭтоИП И НЕ ИПИспользуетТрудНаемныхРаботников;
ЗаполнятьФИО =
ЗаполнятьПринудительно
ИЛИ НЕ ЗначениеЗаполнено(ВладелецЭЦП) И НЕ ЗначениеЗаполнено(ВладелецЭЦПФамилия);
ЗаполнятьНаименование = ОбработкаЗаявленийАбонента.НаименованиеПустое(ЭтотОбъект) ИЛИ ЗаполнятьПринудительно;
ЗаполнятьКПП = ЭтоЮридическоеЛицо И (НЕ ЗначениеЗаполнено(КПП) ИЛИ ЗаполнятьПринудительно);
ЗаполнятьОГРН = НЕ ЗначениеЗаполнено(ОГРН) ИЛИ ЗаполнятьПринудительно;
ЗаполнятьАдрес = ЭтоЮридическоеЛицо И (АдресЮридическийПредставление = "" ИЛИ ЗаполнятьПринудительно);
ЗаполнятьДолжность =
ЭтоРуководитель(ЭтотОбъект)
И ЭтоЮридическоеЛицо
И (НЕ ЗначениеЗаполнено(ВладелецЭЦПДолжность) ИЛИ ЗаполнятьПринудительно);
ЗаполнятьКодФНС = НЕ ЗначениеЗаполнено(ДанныеОрганизации.КодНО) ИЛИ ЗаполнятьПринудительно;
ЗаполнятьРегНомерПФР = НЕ ЗначениеЗаполнено(РегНомерПФР) И НЕ ИПСдаетОтчетностьЗаСебя ИЛИ ЗаполнятьПринудительно;
ЗаполнятьКодПФР = НЕ ЗначениеЗаполнено(КодПФР) И НЕ ИПСдаетОтчетностьЗаСебя ИЛИ ЗаполнятьПринудительно;
Если ПризнакОбособленногоПодразделения Тогда
Возврат;
КонецЕсли;
РеквизитыКонтрагента = ОбработкаЗаявленийАбонентаПовтИсп.РеквизитыКонтрагента(ИНН);
ВсеРеквизитыЗаполнены =
НЕ ЗаполнятьФИО
И НЕ ЗаполнятьНаименование
И НЕ ЗаполнятьКПП
И НЕ ЗаполнятьОГРН
И НЕ ЗаполнятьАдрес
И НЕ ЗаполнятьДолжность
И НЕ ЗаполнятьКодФНС
И НЕ ЗаполнятьРегНомерПФР
И НЕ ЗаполнятьКодПФР;
Если ВсеРеквизитыЗаполнены
ИЛИ РеквизитыКонтрагента = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЭтоЮридическоеЛицо
И ЗначениеЗаполнено(РеквизитыКонтрагента.КПП)
И ЗначениеЗаполнено(КПП)
И КПП <> РеквизитыКонтрагента.КПП
И НЕ ЗаполнятьПринудительно Тогда
ПризнакОбособленногоПодразделения = НЕ ИспользуетсяРежимТестирования;
Если ПризнакОбособленногоПодразделения Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Доступен1СКонтрагент = Истина;
Если ЗаполнятьФИО Тогда
Если ЭтоЮридическоеЛицо Тогда
РуководительИз1СКонтрагента = ОбработкаЗаявленийАбонента.ДанныеРуководителяЮЛИз1СКонтрагента(
ЭтотОбъект,
РеквизитыКонтрагента);
Если РуководительИз1СКонтрагента <> Неопределено Тогда
ЗаполнитьФИОРуководителяИз1СКонтрагент(РуководительИз1СКонтрагента);
КонецЕсли;
Иначе
ЗаполнитьФИОРуководителяИз1СКонтрагент(РеквизитыКонтрагента);
КонецЕсли;
КонецЕсли;
Если ЗаполнятьНаименование Тогда
ПоказыватьКраткоеНаименование = Ложь;
КраткоеНаименование = РеквизитыКонтрагента.НаименованиеСокращенное;
КонецЕсли;
Если ЗаполнятьКПП Тогда
КПП = РеквизитыКонтрагента.КПП;
ПоказыватьКПП = НЕ ЗначениеЗаполнено(СокрЛП(КПП));
КонецЕсли;
Если ЗаполнятьОГРН Тогда
ОГРН = РеквизитыКонтрагента.РегистрационныйНомер;
КонецЕсли;
Если ЗаполнятьАдрес
И РеквизитыКонтрагента.ЮридическийАдрес <> Неопределено Тогда
Адрес = ОбработкаЗаявленийАбонента.ПривестиАдресКФИАСу(РеквизитыКонтрагента.ЮридическийАдрес);
АдресЮридическийЗначение = Адрес.КонтактнаяИнформация;
АдресЮридическийПредставление = Адрес.Представление;
ПриИзмененииЮридическогоАдреса();
КонецЕсли;
Если ЗаполнятьДолжность
И РуководительИз1СКонтрагента <> Неопределено
И ЗначениеЗаполнено(РуководительИз1СКонтрагента.Должность)
Тогда
ВладелецЭЦПДолжность = РуководительИз1СКонтрагента.Должность;
КонецЕсли;
Если ЗаполнятьКодФНС
И РеквизитыКонтрагента.РегистрацияВНалоговомОргане <> Неопределено
И ЗначениеЗаполнено(РеквизитыКонтрагента.РегистрацияВНалоговомОргане.Код) Тогда
ДанныеОрганизации.КодНО = РеквизитыКонтрагента.РегистрацияВНалоговомОргане.Код;
КонецЕсли;
Если ЗаполнятьРегНомерПФР
И РеквизитыКонтрагента.РегистрацияВПенсионномФонде <> Неопределено
И ЗначениеЗаполнено(РеквизитыКонтрагента.РегистрацияВПенсионномФонде.РегистрационныйНомерПФР) Тогда
РегНомерПФР = РеквизитыКонтрагента.РегистрацияВПенсионномФонде.РегистрационныйНомерПФР;
ДанныеОрганизации.РегНомПФР = РегНомерПФР;
КонецЕсли;
Если ЗаполнятьКодПФР
И РеквизитыКонтрагента.РегистрацияВПенсионномФонде <> Неопределено
И ЗначениеЗаполнено(РеквизитыКонтрагента.РегистрацияВПенсионномФонде.КодОрганаПФР) Тогда
КодПФР = РеквизитыКонтрагента.РегистрацияВПенсионномФонде.КодОрганаПФР;
ДанныеОрганизации.КодОрганаПФР = КодПФР;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СтруктураАдреса(АдресЗначенияПолей) Экспорт
СтруктураАдреса = НовыйСтруктураАдреса();
СведенияОбАдресе = РаботаСАдресами.СведенияОбАдресе(АдресЗначенияПолей);
СтруктураАдреса.Страна = СведенияОбАдресе.Страна;
СтруктураАдреса.КодСтраны = СведенияОбАдресе.КодСтраны;
Если СтруктураАдреса.Свойство("Страна")
И СтрСравнить(СтруктураАдреса.Страна, Справочники.СтраныМира.Россия.Наименование) = 0 Тогда
СтруктураАдреса.АдресРФ = Истина;
Иначе
СтруктураАдреса.АдресРФ = Ложь;
КонецЕсли;
СтруктураАдреса.Индекс = СведенияОбАдресе.Индекс;
СтруктураАдреса.Регион = СведенияОбАдресе.Регион;
СтруктураАдреса.КодРегиона = ?(СведенияОбАдресе.Свойство("КодРегиона"), СведенияОбАдресе.КодРегиона, "");
СтруктураАдреса.РегионСокращение = СведенияОбАдресе.РегионСокращение;
СтруктураАдреса.Район = СведенияОбАдресе.Район;
СтруктураАдреса.РайонСокращение = СведенияОбАдресе.РайонСокращение;
СтруктураАдреса.Город = СведенияОбАдресе.Город;
СтруктураАдреса.ГородСокращение = СведенияОбАдресе.ГородСокращение;
СтруктураАдреса.НаселенныйПункт = СведенияОбАдресе.НаселенныйПункт;
СтруктураАдреса.НаселенныйПунктСокращение = СведенияОбАдресе.НаселенныйПунктСокращение;
СтруктураАдреса.Улица = СведенияОбАдресе.Улица;
СтруктураАдреса.УлицаСокращение = СведенияОбАдресе.УлицаСокращение;
СтруктураАдреса.Дом = СведенияОбАдресе.Здание.Номер;
СтруктураАдреса.ТипДома = СведенияОбАдресе.Здание.ТипЗдания;
Если СведенияОбАдресе.Корпуса.Количество() > 0 Тогда
СтруктураАдреса.Корпус = СведенияОбАдресе.Корпуса[0].Номер;
СтруктураАдреса.ТипКорпуса = СведенияОбАдресе.Корпуса[0].ТипКорпуса;
КонецЕсли;
Если СведенияОбАдресе.Помещения.Количество() > 0 Тогда
СтруктураАдреса.Квартира = СведенияОбАдресе.Помещения[0].Номер;
СтруктураАдреса.ТипКвартиры = СведенияОбАдресе.Помещения[0].ТипПомещения;
КонецЕсли;
Возврат СтруктураАдреса;
КонецФункции
&НаСервере
Функция НовыйСтруктураАдреса()
СтруктураАдреса = Новый Структура();
СтруктураАдреса.Вставить("АдресРФ", Истина);
СтруктураАдреса.Вставить("КодСтраны", "");
СтруктураАдреса.Вставить("Страна", "");
СтруктураАдреса.Вставить("Индекс", "");
СтруктураАдреса.Вставить("Регион", "");
СтруктураАдреса.Вставить("РегионСокращение", "");
СтруктураАдреса.Вставить("КодРегиона", "");
СтруктураАдреса.Вставить("Район", "");
СтруктураАдреса.Вставить("РайонСокращение", "");
СтруктураАдреса.Вставить("Город", "");
СтруктураАдреса.Вставить("ГородСокращение", "");
СтруктураАдреса.Вставить("НаселенныйПункт", "");
СтруктураАдреса.Вставить("НаселенныйПунктСокращение", "");
СтруктураАдреса.Вставить("Улица", "");
СтруктураАдреса.Вставить("УлицаСокращение", "");
СтруктураАдреса.Вставить("Дом", "");
СтруктураАдреса.Вставить("ТипДома", "");
СтруктураАдреса.Вставить("Корпус", "");
СтруктураАдреса.Вставить("ТипКорпуса", "");
СтруктураАдреса.Вставить("Квартира", "");
СтруктураАдреса.Вставить("ТипКвартиры", "");
СтруктураАдреса.Вставить("Представление", "");
СтруктураАдреса.Вставить("ЗначенияПолей", "");
Возврат СтруктураАдреса;
КонецФункции
&НаСервере
Процедура СохранитьЗаявление(ЗаписатьЗаявление = Истина, НовыйGUID = Ложь) Экспорт
ЭтотОбъект.Прочитать();
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
Если ЗапретитьИзменение Тогда
СохранитьЗаявление_Сохранить1СЭДО(НовыйДокументЗаявление);
Иначе
ОбработкаЗаявленийАбонента.СохранитьЗаявление_Очистка(ЭтотОбъект, НовыйДокументЗаявление);
СохранитьЗаявление_СлужебныеРеквизиты(НовыйДокументЗаявление, НовыйGUID);
СохранитьЗаявление_ДанныеОрганизации(НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.СохранитьЗаявление_ДанныеУЦ(ЭтотОбъект, НовыйДокументЗаявление);
СохранитьЗаявление_Контакты(НовыйДокументЗаявление);
СохранитьЗаявление_ВладелецЭП(НовыйДокументЗаявление);
СохранитьЗаявление_Криптография(НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.СохранитьЗаявление_ГосОрганы(ЭтотОбъект, НовыйДокументЗаявление);
СохранитьЗаявление_Сохранить1СЭДО(НовыйДокументЗаявление);
СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление);
СохранитьЗаявление_СохранитьПользователей(НовыйДокументЗаявление);
СохранитьЗаявление_БС(НовыйДокументЗаявление);
Если ЗаписатьЗаявление Тогда
ОбработкаЗаявленийАбонента.УдалитьПробелы(НовыйДокументЗаявление);
СохранитьЗаявление_СохранитьДокументы(НовыйДокументЗаявление);
СохранитьЗаявление_СохранитьВыборКриптопровайдера();
НовыйДокументЗаявление.Записать();
КонецЕсли;
КонецЕсли;
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
Модифицированность = Ложь;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_СлужебныеРеквизиты(НовыйДокументЗаявление, НовыйGUID) Экспорт
Если НовыйGUID ИЛИ НЕ ЗначениеЗаполнено(НовыйДокументЗаявление.ИдентификаторДокументооборота) Тогда
GUID = ОбщегоНазначенияЭДКОКлиентСервер.НовыйИдентификатор();
Иначе
GUID = НовыйДокументЗаявление.ИдентификаторДокументооборота;
КонецЕсли;
Если ЗапрашиватьРегНомер Тогда
НовыйДокументЗаявление.НомерОсновнойПоставки1с = НомерОсновнойПоставки1с;
КонецЕсли;
НовыйДокументЗаявление.ЭтоУпрощенноеЗаявление = Истина;
НовыйДокументЗаявление.Тариф = Тариф;
НовыйДокументЗаявление.ТарифОператораЭДО = ТарифОператораЭДО;
ЭтоПодключениеПотенциального = Мультирежим.ЭтоПодключениеПотенциальногоПользователя(
ЭтотОбъект,
ВладелецЭЦП,
ТаблицаПользователей);
ПодключилсяПоБумажке = МультирежимКлиентСервер.ПоказыватьСообщениеПроОтсутствиеПрав(ЭтотОбъект);
Если ЭтоПодключениеПотенциального
ИЛИ ПодключилсяПоБумажке Тогда
УчетнаяЗапись = Мультирежим.УчетнаяЗаписьОрганизацииПоФорме(ЭтотОбъект);
НовыйДокументЗаявление.УчетнаяЗапись = УчетнаяЗапись;
КонецЕсли;
ОбработкаЗаявленийАбонента.СохранитьЗаявление_СлужебныеРеквизиты(ЭтотОбъект, НовыйДокументЗаявление, GUID);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Криптография(НовыйДокументЗаявление)
НовыйДокументЗаявление.ЭтоСертификатДругогоУЦ = ЭтоСертификатДругогоУЦ;
НовыйДокументЗаявление.ПутьКонтейнерЗакрытогоКлюча = "";
Если ИгнорироватьКонфликт Тогда
НовыйДокументЗаявление.ТипКриптопровайдера = КриптопровайдерПриКонфликте;
Иначе
НовыйДокументЗаявление.ТипКриптопровайдера = ТипКриптопровайдера;
КонецЕсли;
СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление);
НовыйДокументЗаявление.СпособПодтвержденияКриптоопераций = СпособПодтвержденияКриптоопераций;
НовыйДокументЗаявление.ПодписатьЭП = ПодписатьЭП();
НовыйДокументЗаявление.ТребуетсяВстречаСПартнером = ТребуетсяВстречаСПартнером();
Если ЗначениеЗаполнено(СпособПолученияСертификата) Тогда
НовыйДокументЗаявление.СпособПолученияСертификата = СпособПолученияСертификата;
Иначе
НовыйДокументЗаявление.СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИздатьНовый;
КонецЕсли;
Если Элементы.ВключатьЛицензиюКриптоПроВСертификат.Видимость Тогда
НовыйДокументЗаявление.ВключитьЛицензиюКриптоПро = ВключатьЛицензиюКриптоПроВСертификат;
КонецЕсли;
НовыйДокументЗаявление.МодельХраненияЗакрытогоКлюча = КриптографияЭДКОКлиентСервер.МодельХраненияЗакрытогоКлюча(МестоХраненияКлюча);
НовыйДокументЗаявление.ПараметрыПодключенияОблачнойПодписи.Очистить();
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "УчетнаяЗапись", СвойствоОблачнойПодписи.УчетнаяЗапись);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "СоздатьНовуюУчетнуюЗапись", СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "Логин", СвойствоОблачнойПодписи.НовыйЛогин);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "ИдентификаторСервера", СвойствоОблачнойПодписи.ИдентификаторСервера);
НовыйДокументЗаявление.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoProDSS;
КонецЕсли;
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = ВключаемыйСертификатОблачный;
Иначе
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = ЭтоОблако(ЭтотОбъект);
КонецЕсли;
НовыйДокументЗаявление.ЭтоОткрытиеСВыбраннойЭЦП = ЭтоОткрытиеСВыбраннойЭЦП;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление)
Если СертификатДляПодписания <> Неопределено Тогда
СертификатДляПодписания.Вставить("Сертификат", ДвДанныеСертификата);
НовыйДокументЗаявление.РеквизитыСертификата = Новый ХранилищеЗначения(СертификатДляПодписания);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ДанныеОрганизации(НовыйДокументЗаявление)
НовыйДокументЗаявление.Организация = Организация;
НовыйДокументЗаявление.ТипОрганизации = ЭтоЮридическоеЛицо;
НовыйДокументЗаявление.ИНН = ИНН;
НовыйДокументЗаявление.КПП = КПП;
НовыйДокументЗаявление.КраткоеНаименование = КраткоеНаименование;
НовыйДокументЗаявление.ПризнакОбособленногоПодразделения = ПризнакОбособленногоПодразделения;
НовыйДокументЗаявление.ЭтоНотариусАдвокатИлиГКФХ = ЭтоНотариусАдвокатИлиГКФХ;
НовыйДокументЗаявление.ТелефонОсновной = ?(ТелефонОсновной = "", ТелефонМобильныйДляПаролей, ТелефонОсновной);
НовыйДокументЗаявление.ЭтоБюджетополучатель = ЭтоБюджетополучатель;
НовыйДокументЗаявление.ЭлектроннаяПочтаОрганизации = ЭлектроннаяПочтаОрганизации;
Если ЭтоНотариусАдвокатИлиГКФХ Тогда
Если ИспользоватьСуществующий(ЭтотОбъект) И ЗначениеЗаполнено(ОГРН_ИзСертификата) Тогда
НовыйДокументЗаявление.ОГРН = ОГРН_ИзСертификата;
ИначеЕсли ИспользоватьСуществующий(ЭтотОбъект) И НЕ ЗначениеЗаполнено(ОГРН_ИзСертификата) Тогда
НовыйДокументЗаявление.ОГРН = "";
ИначеЕсли ЗначениеЗаполнено(ОГРН) Тогда
НовыйДокументЗаявление.ОГРН = ОГРН;
КонецЕсли;
ИначеЕсли НЕ ЭтоИностраннаяОрганизация Тогда
НовыйДокументЗаявление.ОГРН = ОГРН;
КонецЕсли;
СохранитьЗаявление_Адрес(НовыйДокументЗаявление);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Контакты(НовыйДокументЗаявление)
НовыйДокументЗаявление.ТелефонМобильныйДляАвторизации = ТелефонМобильныйДляПаролей;
НовыйДокументЗаявление.ЭлектроннаяПочта = ЭлектроннаяПочтаДляПаролей;
Если ТелефонМобильный = "" Тогда
ТелефонДляСМС = ТелефонМобильныйДляПаролей;
Иначе
ТелефонДляСМС = ТелефонМобильный;
КонецЕсли;
НовыйДокументЗаявление.ТелефонМобильный = ТелефонДляСМС;
НовыйДокументЗаявление.ПолучатьСМСУведомления = ПолучатьСМСУведомления;
Если ЭтоОблако(ЭтотОбъект) Тогда
ТелефонПодтвержден = ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено
И НЕ ПроверкаТелефонДляПаролей.ВыполняетсяПроверка;
Если ТелефонПодтвержден Тогда
НовыйДокументЗаявление.ИдентификаторПроверкиТелефонаДляПаролей = ПроверкаТелефонДляПаролей.ИдентификаторПроверки;
КонецЕсли;
ПочтаПодтверждена = ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено
И НЕ ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка;
Если ПочтаПодтверждена Тогда
НовыйДокументЗаявление.ИдентификаторПроверкиЭлектроннойПочтыДляПаролей = ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Адрес(НовыйДокументЗаявление)
НовыйДокументЗаявление.АдресЮридический = АдресЮридическийЗначение;
НовыйДокументЗаявление.АдресФактический = АдресФактическийЗначение;
Если ЭтоАдресВременногоХранилища(АдресЗаданияПоПолучениюИдентификатораАдресовФИАС) Тогда
ИдентификаторыАдресов = ПолучитьИзВременногоХранилища(АдресЗаданияПоПолучениюИдентификатораАдресовФИАС);
Если ИдентификаторыАдресов <> Неопределено Тогда
Если ИдентификаторыАдресов.АдресЮридическийЗначение = АдресЮридическийЗначение Тогда
НовыйДокументЗаявление.АдресЮридическийИдентификаторПоФИАС = ИдентификаторыАдресов.АдресЮридическийИдентификаторПоФИАС;
КонецЕсли;
Если ИдентификаторыАдресов.АдресФактическийЗначение = АдресФактическийЗначение Тогда
НовыйДокументЗаявление.АдресФактическийИдентификаторПоФИАС = ИдентификаторыАдресов.АдресФактическийИдентификаторПоФИАС;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ТребуетсяВстречаСПартнером()
ЭтоОтправкаБезДокументов = ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоОтправкаБезДокументов(ЭтотОбъект);
Возврат НЕ ЭтоОтправкаБезДокументов И (НЕ ИспользоватьСуществующий(ЭтотОбъект) ИЛИ НЕ ПодписатьЭП());
КонецФункции
&НаСервере
Функция ПодписатьЭП()
Возврат СпособПодписания = 1 ИЛИ ИспользоватьСуществующий(ЭтотОбъект) ИЛИ ЭтоСертификатДругогоУЦ;;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИспользоватьСуществующий(Форма) Экспорт
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ИспользоватьСуществующий(Форма);
КонецФункции
&НаСервере
Процедура СохранитьЗаявление_ВладелецЭП(НовыйДокументЗаявление)
ОбработкаЗаявленийАбонента.СохранитьВладельцаВЗаявление(
ЭтотОбъект,
НовыйДокументЗаявление,
ВладелецЭЦП,
ВладелецЭЦПСНИЛС,
ВладелецЭЦПИНН,
ВладелецЭЦПДолжность,
ВладелецЭЦППодразделение);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_СохранитьПользователей(НовыйДокументЗаявление)
ОбработкаЗаявленийАбонента.СохранитьПользователей(ЭтотОбъект, НовыйДокументЗаявление);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Сохранить1СЭДО(НовыйДокументЗаявление)
НовыйДокументЗаявление.ПодключитьЭДО = Ложь;
НовыйДокументЗаявление.ПереиздатьСертификатЭДО = Ложь;
НовыйДокументЗаявление.НастройкиЭДО = Неопределено;
Если ПодключитьЭДО И ЕстьПравоНастройкиЭДО Тогда
НовыйДокументЗаявление.ПодключитьЭДО = Истина;
НовыйДокументЗаявление.НастройкиЭДО = НастройкиДляЭДО;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_БС(НовыйДокументЗаявление)
НовыйДокументЗаявление.ЭтоБыстрыйСтарт = ЭтоБыстрыйСтарт;
НовыйДокументЗаявление.ЕстьПредыдущиеУчетныеЗаписи = ЕстьПредыдущиеУчетныеЗаписи;
НовыйДокументЗаявление.ПредыдущиеУчетныеЗаписи = Новый ХранилищеЗначения(ПредыдущиеУчетныеЗаписи, Новый СжатиеДанных(0));
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_СохранитьДокументы(НовыйДокументЗаявление)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.СохранитьДокументыЗаявления(ЭтотОбъект, НовыйДокументЗаявление);
НовыйДокументЗаявление.ЗПЭД = ЗПЭД;
КонецПроцедуры
&НаКлиенте
Процедура НапечататьЗаявление()
СохранитьЗаявление(Истина);
КонтекстЭДОКлиент.НапечататьЗаявлениеПо1СОтчетности(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаСервере
Процедура УдалитьВсеСканы_Сервер()
ОбработкаЗаявленийАбонентаКлиентСервер.УдалитьВсеСканы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьИзменениеОрганизации(ИННОрганизации = "")
Если ЭтоОткрытиеСВыбраннойЭЦП Тогда
ОпределитьВладельцаПоСертификату();
ОбработкаЗаявленийАбонентаКлиент.СкорректироватьПризнакЭтоФизЛицо(ЭтотОбъект, ЭтотОбъект);
КонецЕсли;
Если НЕ ЭтоБыстрыйСтарт Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
КонецЕсли;
ПредыдущееЗначениеОрганизации = Организация;
ОтменитьПроверкуТелефонаНажатие(Неопределено);
ОтменитьПроверкуЭлектроннойПочтыНажатие(Неопределено);
ОбработатьИзменениеОрганизации(ИННОрганизации);
Элементы.ИНН.ОбновитьТекстРедактирования();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтработатьИзменениеОрганизации_ПослеУстановкиРежимаСУЦ",
ЭтотОбъект);
ОпределятьВозможностьБезбумажки = Истина;
ПриУстановкеРежимаТолькоСУЦАсинхронно(ОписаниеОповещения, ОпределятьВозможностьБезбумажки);
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьИзменениеОрганизации_ПослеУстановкиРежимаСУЦ(Результат, ВходящийКонтекст) Экспорт
ОткрытьНаНачальнойСтранице();
УправлениеФормой();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОтработатьИзменениеОрганизации_Завершение",
ЭтотОбъект);
ПосоветоватьОбратитсяКАдминистраторуПриОтсутствииПрав(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьИзменениеОрганизации_Завершение(Результат, ВходящийКонтекст) Экспорт
ПриИзмененииТелефонаИлиПочтыДляПароля(Ложь);
Элементы.ТелефонМобильныйДляПаролей.ОбновитьТекстРедактирования();
Элементы.ЭлектроннаяПочтаДляПаролей.ОбновитьТекстРедактирования();
Элементы.ЭлектроннаяПочтаОрганизации.ОбновитьТекстРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьЗаявлениеНаИзменение()
ПрограммноеЗакрытие = Истина;
Модифицированность = Ложь;
ОткрытьЗаявлениеНаИзменение = Истина;
Изменение = ПредопределенноеЗначение("Перечисление.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение");
ДополнительныеПараметры = ДокументооборотСКОКлиентСервер.ПараметрыОткрытияМастера();
ДополнительныеПараметры.Вставить("Организация", Организация);
ДополнительныеПараметры.Вставить("ВидЗаявления", Изменение);
ПрограммноеЗакрытие = Истина;
ЕстьПараметрЗакрытия = Истина;
Закрыть(ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСуществующееПодключение(Организация)
ВыполняемоеОповещение = Новый ОписаниеОповещения(
"СпроситьПроСуществующееПодключение_Завершение",
ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.СпроситьПроСуществующееПодключение(
Организация,
ПредыдущееЗначениеОрганизации,
ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСуществующееПодключение_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = 1 Тогда
ОтработатьИзменениеОрганизации();
ИначеЕсли Ответ = 2 Тогда
ОткрытьЗаявлениеНаИзменение();
ИначеЕсли Ответ = 3 Тогда
Организация = ПредыдущееЗначениеОрганизации;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСменуОрганизации(Организация)
ОписаниеОповещения = Новый ОписаниеОповещения(
"СпроситьПроСменуОрганизации_Завершение",
ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Обратите внимание, сведения, указанные в заявлении по организации ""%1"", будут очищены'");
ТекстВопроса = СтрШаблон(ТекстВопроса, Строка(ПредыдущееЗначениеОрганизации));
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(1, НСтр("ru = 'Продолжить'"));
Кнопки.Добавить(2, НСтр("ru = 'Отмена'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки,,Кнопки[0].Значение);
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСменуОрганизации_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = 1 Тогда
ОтработатьИзменениеОрганизации();
Иначе
Организация = ПредыдущееЗначениеОрганизации;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЕстьОшибкиВЗаполненииЗаявления()
ОчиститьСообщения();
МастерДалее = Истина;
ПроверитьКПП(ЭтотОбъект, МастерДалее);
ПроверитьКраткоеНаименование(МастерДалее);
ПроверитьТариф(МастерДалее);
Если ЗапрашиватьРегНомер Тогда
ПроверитьНомерОсновнойПоставки1с(МастерДалее);
КонецЕсли;
Если Элементы.ГруппаЮрАдрес.Видимость Тогда
ПроверитьЮрАдрес(МастерДалее);
КонецЕсли;
Если Элементы.ГруппаОГРН.Видимость Тогда
ПроверитьОГРН(МастерДалее);
КонецЕсли;
Если Элементы.ГруппаЭлектроннаяПочтаОрганизации.Видимость Тогда
ПроверитьЭлПочтуОрганизации(МастерДалее);
КонецЕсли;
ПроверитьНаправления(МастерДалее);
ПроверитьПользователей(МастерДалее);
ПроверитьХранениеКлючей(МастерДалее);
Проверить1СЭДО(МастерДалее);
ПроверитьРеквизитыВладельцаЭП(МастерДалее);
ПроверитьПаспортныеДанные(МастерДалее);
ПроверитьТелефонВладельцаЭП(ЭтотОбъект, МастерДалее);
ПроверитьЭлПочтуВладельцаЭП(ЭтотОбъект, МастерДалее);
Если Элементы.ГруппаВладелецЭЦПДолжность.Видимость Тогда
ПроверитьДолжностьВладельцаЭП(МастерДалее);
КонецЕсли;
КонтекстЭДОКлиент.ПроверитьСканыДокументов(ЭтотОбъект, МастерДалее);
ПроверитьРасширенныеНастройки(МастерДалее);
ПроверитьOIDЛицензииКриптоПро(МастерДалее);
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьВключаемыйСертификат(ЭтотОбъект, МастерДалее);
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьУЦ(ЭтотОбъект, МастерДалее);
ПроверитьРежимВосстановленияОблачнойПодписи(МастерДалее);
Результат = ФизЛицоСоответствуетТекущемуПользователю();
Если НЕ Результат.Корректно Тогда
МультирежимКлиент.ПредупредитьОНеобходимостиСменитьПользователя(ЭтотОбъект, Результат);
МастерДалее = Ложь;
КонецЕсли;
Если МастерДалее Тогда
ПроверитьНаШум(МастерДалее);
КонецЕсли;
Возврат НЕ МастерДалее;
КонецФункции
&НаСервере
Процедура ПроверитьНаШум(МастерДалее)
ОбработкаЗаявленийАбонента.ПроверитьНаШум(ДокументЗаявление, МастерДалее);
КонецПроцедуры
&НаСервере
Процедура ПроверитьOIDЛицензииКриптоПро(МастерДалее)
ОбработкаЗаявленийАбонента.ПроверитьOIDЛицензииКриптоПро(ЭтотОбъект, МастерДалее);
КонецПроцедуры
&НаСервере
Процедура Проверить1СЭДО(МастерДалее)
Если ПодключитьЭДО Тогда
ЕстьОшибка = Ложь;
НастройкиКорректны = Неопределено;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПроверитьНастройкиРегистрацииЭДО(НастройкиДляЭДО, НастройкиКорректны);
Если НЕ НастройкиКорректны Тогда
ЕстьОшибка = Истина;
КонецЕсли;
Если ЕстьОшибка Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Уточните параметры подключения 1С-ЭДО'"), ,"ПодключитьЭДО");
МастерДалее = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьПользователей(МастерДалее)
Мультирежим.ПроверитьПользователей(
ЭтотОбъект,
МастерДалее);
КонецПроцедуры
&НаСервере
Функция ПроверитьКраткоеНаименование(МастерДалее = Истина, ВыводитьСообщения = Истина)
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Реквизит = "ПроверкаКраткоеНаименование";
РезультатПроверки.Поле = "КраткоеНаименование";
Если ЭтоЮридическоеЛицо Тогда
ТекстОшибки = "";
Если НЕ ЗначениеЗаполнено(СокрЛП(КраткоеНаименование)) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Заполните краткое наименование организации'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ДокументооборотСКОКлиентСервер.НайденыЗапрещенныеСимволы(
КраткоеНаименование,
НСтр("ru = 'Краткое наименование организации'"),
"КраткоеНаименование",
Истина,
ТекстОшибки)Тогда
РезультатПроверки.ТекстОшибки = ТекстОшибки;
КонецЕсли;
КонецЕсли;
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
Возврат РезультатПроверки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьКПП(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Реквизит = "ПроверкаКПП";
РезультатПроверки.Поле = "КПП";
Элементы = Форма.Элементы;
ТекстОшибки = "";
Если Форма.ЭтоЮридическоеЛицо И Форма.ПоказыватьКПП Тогда
Если НЕ ЗначениеЗаполнено(СокрЛП(Форма.КПП)) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Укажите КПП организации'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ДокументооборотСКОКлиентСервер.НайденыЗапрещенныеСимволы(
Форма.КПП,
НСтр("ru = 'КПП организации'"),
"КПП",
Истина,
ТекстОшибки)Тогда
РезультатПроверки.ТекстОшибки = ТекстОшибки;
ИначеЕсли НЕ ДокументооборотСКОКлиентСервер.ПроверитьКПП(Форма.КПП) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'КПП организации должен состоять из 9 цифр'");
РезультатПроверки.Пустой = Истина;
КонецЕсли;
КонецЕсли;
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
Возврат РезультатПроверки;
КонецФункции
&НаСервере
Функция ПроверитьЮрАдрес(МастерДалее = Истина, ВыводитьСообщения = Истина)
Если ЭтоЮридическоеЛицо Тогда
ПредставлениеАдресаИП = НСтр("ru = 'Юридический адрес'");
ПредставлениеАдресаРП = НСтр("ru = 'Юридического адреса'");
Иначе
ПредставлениеАдресаИП = НСтр("ru = 'Адрес регистрации'");
ПредставлениеАдресаРП = НСтр("ru = 'адреса регистрации'");
КонецЕсли;
Результат = ОбработкаЗаявленийАбонента.ПроверитьАдресОрганизацииЗаявления(
ЭтотОбъект,
АдресЮридическийЗначение,
"УказательЮрАдреса",
ПредставлениеАдресаИП,
ПредставлениеАдресаРП,
МастерДалее,
НЕ ВыводитьСообщения);
Возврат Результат;
КонецФункции
&НаСервере
Функция ПроверитьДолжностьВладельцаЭП(МастерДалее = Истина, ВыводитьСообщения = Истина)
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
Возврат РезультатПроверки;
КонецЕсли;
Возврат ОбработкаЗаявленийАбонента.ПроверитьДолжностьВУпрощенномЗаявлении(ЭтотОбъект, МастерДалее, ВыводитьСообщения);
КонецФункции
&НаСервере
Функция ПроверитьОГРН(МастерДалее = Истина, ВыводитьСообщения = Истина)
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Поле = "ОГРН";
Если НЕ ЭтоИностраннаяОрганизация Тогда
Если ЭтоЮридическоеЛицо Тогда
Если ПустаяСтрока(ОГРН) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Заполните ОГРН'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли НЕ (ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(ОГРН,13)) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'ОГРН должен состоять из 13 цифр'");
КонецЕсли;
Иначе
Если ПустаяСтрока(ОГРН) И НЕ ЭтоНотариусАдвокатИлиГКФХ Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Заполните ОГРНИП'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ЗначениеЗаполнено(ОГРН) И НЕ ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(ОГРН,15, Истина) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'ОГРНИП должен состоять из 15 цифр'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
Возврат РезультатПроверки;
КонецФункции
&НаСервере
Функция ПроверитьЭлПочтуОрганизации(МастерДалее = Истина, ВыводитьСообщения = Истина)
ТекстОшибки = "";
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Поле = "ЭлектроннаяПочтаОрганизации";
ЭлектроннаяПочтаОрганизации = СокрЛП(ЭлектроннаяПочтаОрганизации);
Если ПустаяСтрока(ЭлектроннаяПочтаОрганизации) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Заполните адрес электронной почты'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ДокументооборотСКОКлиентСервер.НайденыЗапрещенныеСимволы(
ЭлектроннаяПочтаОрганизации,
НСтр("ru = 'Электронная почта '"),
"ЭлектроннаяПочтаОрганизации",
Истина,
ТекстОшибки) Тогда
РезультатПроверки.ТекстОшибки = ТекстОшибки;
ИначеЕсли НЕ ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(ЭлектроннаяПочтаОрганизации) Тогда
Если НЕ СтрНайти(ЭлектроннаяПочтаОрганизации, "@") Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Некорректно указана электронная почта. Отсутствует символ @'");
Иначе
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Электронная почта содержит некорректные сочетания символов'");
КонецЕсли;
КонецЕсли;
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
Возврат РезультатПроверки;
КонецФункции
&НаСервере
Функция ПроверитьРасширенныеНастройки(МастерДалее = Истина, ВыводитьСообщения = Истина)
ДанныеКорректны = Истина;
ОбработкаЗаявленийАбонента.РасширенныеНастройкиУказаныКорректно(ЭтотОбъект, ДанныеКорректны, Ложь);
Если НЕ ДанныеКорректны Тогда
Если ВыводитьСообщения Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Проверьте корректность заполнения расширенных настроек'"), ,"УказательРасширенныхНастроек");
КонецЕсли;
МастерДалее = Ложь;
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура ПроверитьПаспортныеДанные(МастерДалее = Истина, ВыводитьСообщения = Истина)
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ДанныеУказаныКорректно = Истина;
КонтекстЭДОСервер.ПаспортныеДанныеУказаныКорректно(ЭтотОбъект, ДанныеУказаныКорректно, Ложь);
Если НЕ ДанныеУказаныКорректно Тогда
МастерДалее = Ложь;
Если ВыводитьСообщения Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Проверьте корректность заполнения удостоверения личности'"),
,
"УказательПаспортныхДанных");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРеквизитыВладельцаЭП(МастерДалее)
Если НЕ ЭтоОткрытиеСВыбраннойЭЦП Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьВладельцаЭП(ЭтотОбъект, МастерДалее);
КонецЕсли;
ПроверитьФИОВладельцаЭП(ЭтотОбъект, МастерДалее, Истина);
ПроверитьИННВладельцаЭП(ЭтотОбъект, МастерДалее, Истина);
ПроверитьВладелецЭЦПСНИЛС(ЭтотОбъект, МастерДалее, Истина);
КОнецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьИННВладельцаЭП(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьИННВладельцаЭП(Форма, МастерДалее, ВыводитьСообщения);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЕстьОшибкаВИННВладельца(Форма)
РезультатПроверки = ПроверитьИННВладельцаЭП(Форма, , Ложь);
ЕстьОшибка = ЗначениеЗаполнено(РезультатПроверки.ТекстОшибки);
Возврат ЕстьОшибка;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьФИОВладельцаЭП(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьФИОВладельцаЭП(Форма, МастерДалее, ВыводитьСообщения);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьВладелецЭЦПСНИЛС(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьВладелецЭЦПСНИЛС(Форма, МастерДалее, ВыводитьСообщения);
КонецФункции
&НаСервере
Функция ПроверитьНаправления(МастерДалее = Истина, ВыводитьСообщения = Истина)
Мультирежим.ПроверитьНаправленияПередОтправкой(ЭтотОбъект, МастерДалее);
КонецФункции
&НаСервере
Процедура СохранитьЗаявление_СохранитьВыборКриптопровайдера()
Если ЭтоОблако(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Криптопровайдер = КриптографияЭДКОКлиентСервер.СвойстваКриптопровайдераПоУмолчанию(ТипКриптопровайдера);
Константы.ДокументооборотСКонтролирующимиОрганами_ТипКриптопровайдера.Установить(Криптопровайдер.Тип);
Константы.ДокументооборотСКонтролирующимиОрганами_ИмяКриптопровайдера.Установить(Криптопровайдер.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьТариф(МастерДалее)
ПроверятьТариф =
ЭтоРежимБесплатнойНулевойОтчетности
И НЕ ИспользуетсяРежимТестирования;
Если ПроверятьТариф И НЕ ЗначениеЗаполнено(Тариф)Тогда
МастерДалее = Ложь;
ТекстСообщения = НСтр("ru = 'Выберите тариф'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, ,"УказательНаВыборТарифа");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьНомерОсновнойПоставки1с(МастерДалее = Истина, ВыводитьСообщения = Истина)
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Поле = "НомерОсновнойПоставки1с";
ТекстОшибки = "";
Если ПустаяСтрока(НомерОсновнойПоставки1с) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Заполните регистрационный номер программы'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ДокументооборотСКОКлиентСервер.НайденыЗапрещенныеСимволы(
НомерОсновнойПоставки1с,
НСтр("ru = 'Регистрационный номер программы'"),
"НомерОсновнойПоставки1с",
Истина,
ТекстОшибки) Тогда
РезультатПроверки.ТекстОшибки = ТекстОшибки;
КонецЕсли;
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
Возврат РезультатПроверки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьТелефонВладельцаЭП(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Поле = "ТелефонМобильныйДляПаролей";
Если ИспользоватьСуществующий(Форма) И НЕ Форма.ЭтоСертификатДругогоУЦ Тогда
Возврат РезультатПроверки;
КонецЕсли;
Элементы = Форма.Элементы;
ТелефонДляПаролейБезРазделителей = ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ТелефонМобильныйБезРазделителей(Форма.ТелефонМобильныйДляПаролей);
Если ПустаяСтрока(ТелефонДляПаролейБезРазделителей) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Заполните номер мобильного телефона'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли НЕ ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(ТелефонДляПаролейБезРазделителей, 11, Истина) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Мобильный телефон должен иметь формат +7 XXX XXX-XX-XX'");
КонецЕсли;
Если РезультатПроверки.ТекстОшибки = "" Тогда
ЭтоОблако = ЭтоОблако(Форма);
Если ЭтоОблако Тогда
Если НЕ Форма.ПроверкаТелефонДляПаролей.ЗначениеВведено Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Заполните номер мобильного телефона'");
РезультатПроверки.Пустой = Истина;
Иначе
Если Не Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено Тогда
Если Форма.ПроверкаТелефонДляПаролей.ВыполняетсяПроверка Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Введите код из SMS'");
РезультатПроверки.Пустой = Истина;
РезультатПроверки.Поле = "КодПодтверждения";
Иначе
РезультатПроверки.ТекстОшибки = НСтр("ru='Выполните проверку номера телефона'");
РезультатПроверки.Пустой = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ВыводитьСообщения Тогда
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
КонецЕсли;
Возврат РезультатПроверки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьЭлПочтуВладельцаЭП(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
ТекстОшибки = "";
Элементы = Форма.Элементы;
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.Поле = "ЭлектроннаяПочтаДляПаролей";
Форма.ЭлектроннаяПочтаДляПаролей = СокрЛП(Форма.ЭлектроннаяПочтаДляПаролей);
Если ПустаяСтрока(Форма.ЭлектроннаяПочтаДляПаролей) Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Заполните адрес электронной почты'");
РезультатПроверки.Пустой = Истина;
ИначеЕсли ДокументооборотСКОКлиентСервер.НайденыЗапрещенныеСимволы(
Форма.ЭлектроннаяПочтаДляПаролей,
НСтр("ru = 'Электронная почта '"),
"ЭлектроннаяПочтаДляПаролей",
Истина,
ТекстОшибки) Тогда
РезультатПроверки.ТекстОшибки = ТекстОшибки;
ИначеЕсли НЕ ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Форма.ЭлектроннаяПочтаДляПаролей) Тогда
Если НЕ СтрНайти(Форма.ЭлектроннаяПочтаДляПаролей, "@") Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Некорректно указана электронная почта. Отсутствует символ @'");
Иначе
РезультатПроверки.ТекстОшибки = НСтр("ru = 'Электронная почта содержит некорректные сочетания символов'");
КонецЕсли;
КонецЕсли;
Если РезультатПроверки.ТекстОшибки = "" Тогда
ЭтоОблако = ЭтоОблако(Форма);
Если ЭтоОблако Тогда
Если НЕ Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Заполните адрес электронной почты'");
РезультатПроверки.Пустой = Истина;
Иначе
Если Не Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено Тогда
Если Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка Тогда
РезультатПроверки.ТекстОшибки = НСтр("ru='Введите код из письма'");
РезультатПроверки.Пустой = Истина;
РезультатПроверки.Поле = "КодПодтверждения";
Иначе
РезультатПроверки.ТекстОшибки = НСтр("ru='Выполните проверку электронной почты'");
РезультатПроверки.Пустой = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ВыводитьСообщения Тогда
ДокументооборотСКОКлиентСервер.ВывестиОшибкуПроверкиРеквизита(МастерДалее, РезультатПроверки, ВыводитьСообщения);
КонецЕсли;
Возврат РезультатПроверки;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанныеСотрудника()
ОчиститьДанныеВладельца();
ВидСотрудникаНеВыбран = ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ПустаяСсылка");
Если ЭтоОткрытиеСВыбраннойЭЦП Тогда
ВладелецЭЦП = ВладелецЭЦП_ИзСертификата;
Иначе
Если ЭтоРуководитель(ЭтотОбъект) Тогда
ВладелецЭЦП = Руководитель;
КонецЕсли;
Если ЭтоБухгалтер(ЭтотОбъект) Тогда
ВладелецЭЦП = ГлБухгалтер;
КонецЕсли;
Если ЭтоДругойСотрудник(ЭтотОбъект) И ЗначениеЗаполнено(ДругойСотрудник) Тогда
ВладелецЭЦП = ДругойСотрудник;
КонецЕсли;
КонецЕсли;
ОбработкаЗаявленийАбонента.ЗаполнитьДанныеСотрудника(ЭтотОбъект);
ДозаполнитьДанныеСотрудника_ИзСертификата();
ДозаполнитьДанныеСотрудника_Из1СКонтрагента();
КонецПроцедуры
&НаСервере
Процедура ДозаполнитьДанныеСотрудника_Из1СКонтрагента()
Если ЭтоРуководитель(ЭтотОбъект) Тогда
Если ВладелецЭЦПФамилия = "" Тогда
ВладелецЭЦПФамилия = РуководительФамилия;
КонецЕсли;
Если ВладелецЭЦПИмя = "" Тогда
ВладелецЭЦПИмя = РуководительИмя;
КонецЕсли;
Если ВладелецЭЦПОтчество = "" Тогда
ВладелецЭЦПОтчество = РуководительОтчество;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДозаполнитьДанныеСотрудника_ИзСертификата()
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПФамилия,,
ВладелецЭЦПФамилия_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПИмя,,
ВладелецЭЦПИмя_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПОтчество,,
ВладелецЭЦПОтчество_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПСНИЛС,,
ВладелецЭЦПСНИЛС_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПИНН,,
ВладелецЭЦПИНН_ИзСертификата);
Если ЭтоЮридическоеЛицо Тогда
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦПДолжность,,
ВладелецЭЦПДолжность_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ВладелецЭЦППодразделение,,
ВладелецЭЦППодразделение_ИзСертификата);
КонецЕсли;
ВзятьИзБазыИлиИзСертификата(
ЭлектроннаяПочта,,
ЭлектроннаяПочта_ИзСертификата);
ВзятьИзБазыИлиИзСертификата(
ЭлектроннаяПочтаДляПаролей,,
ЭлектроннаяПочта_ИзСертификата);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВладельцаЭЦП()
Если ЭтоРуководитель(ЭтотОбъект) Тогда
ОткрытьФормуРуководителя();
ИначеЕсли ЭтоБухгалтер(ЭтотОбъект) Тогда
ОткрытьФормуГлБухгалтера();
ИначеЕсли ЭтоДругойСотрудник(ЭтотОбъект) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьФормуВыбораВладельцаЭЦПЗавершение",
ЭтотОбъект);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ПолучитьИсполнителя(
Организация,
ДругойСотрудник,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораВладельцаЭЦПЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ДругойСотрудник = Результат;
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник");
ВладелецЭЦП = ДругойСотрудник;
УстановитьНовогоВладельцаЭЦП();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуРуководителя()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуРуководителя(Организация);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуГлБухгалтера()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуГлБухгалтера(Организация);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНовогоВладельцаЭЦП() Экспорт
Если НЕ ЭтоОткрытиеСВыбраннойЭЦП Тогда
Если ЭтоРуководитель(ЭтотОбъект) Тогда
ВладелецЭЦП = Руководитель;
КонецЕсли;
Если ЭтоБухгалтер(ЭтотОбъект) Тогда
ВладелецЭЦП = ГлБухгалтер;
КонецЕсли;
Если ЭтоДругойСотрудник(ЭтотОбъект) И ЗначениеЗаполнено(ДругойСотрудник) Тогда
ВладелецЭЦП = ДругойСотрудник;
КонецЕсли;
Результат = ФизЛицоСоответствуетТекущемуПользователю();
Если НЕ Результат.Корректно Тогда
ВладелецЭЦП = Результат.ПравильныйВладелецЭЦП;
ВладелецЭЦПТип = Результат.ПравильныйВладелецЭЦПТип;
Если ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник") Тогда
ДругойСотрудник = ВладелецЭЦП;
КонецЕсли;
МультирежимКлиент.ПредупредитьОНеобходимостиСменитьПользователя(ЭтотОбъект, Результат);
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Попытка
УстановитьНовогоВладельцаЭЦПСервер();
Исключение
ВыбратьСотрудника(Неопределено);
ВызватьИсключение;
КонецПопытки;
Элементы.ТелефонМобильныйДляПаролей.ОбновитьТекстРедактирования();
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"УстановитьНовогоВладельцаЭЦП_Завершение",
ЭтотОбъект);
ОпределятьВозможностьБезбумажки = Истина;
ПриУстановкеРежимаТолькоСУЦАсинхронно(ОписаниеОповещения, ОпределятьВозможностьБезбумажки);
КонецПроцедуры
&НаСервере
Процедура УстановитьНовогоВладельцаЭЦПСервер()
ДанныеВладельцаЭЦПЗаполненыКопированием = Ложь;
СброситьЭтоОткрытиеСВыбраннойЭЦП(ЭтотОбъект);
ИнициализацияДляЭПВМоделиСервиса();
ЗаполнитьДанныеСотрудника();
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаЭП()
ПоказатьКакНадпись =
ЗначениеЗаполнено(ВладелецЭЦПФамилия)
И НЕ ЗначениеЗаполнено(ВладелецЭЦП);
Элементы.НадписьВладелецЭЦП.Видимость = ПоказатьКакНадпись;
Если ПоказатьКакНадпись Тогда
Элементы.НадписьВладелецЭЦП.Заголовок = ВладелецЭЦПФамилия + " " + ВладелецЭЦПИмя + " " + ВладелецЭЦПОтчество;
КонецЕсли;
Элементы.ВладелецЭЦПФИО.Видимость = Ложь;
ПоказатьКакГиперссылку = НЕ ПоказатьКакНадпись;
Элементы.ДекорацияВладелецЭЦП.Видимость = ПоказатьКакГиперссылку;
Если ПоказатьКакГиперссылку Тогда
Если ЗначениеЗаполнено(ВладелецЭЦП) Тогда
Элементы.ДекорацияВладелецЭЦП.Заголовок = Строка(ВладелецЭЦП);
Элементы.ДекорацияВладелецЭЦП.ЦветТекста = Новый Цвет;
Иначе
Элементы.ДекорацияВладелецЭЦП.Заголовок = НСтр("ru = 'Выбрать'");
Элементы.ДекорацияВладелецЭЦП.ЦветТекста = КрасныйЦвет;
КонецЕсли;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеВладельцаЭП(ЭтотОбъект);
Элементы.ЗаголовокВладелецЭП.Шрифт = Новый Шрифт(
Элементы.ЗаголовокВладелецЭП.Шрифт,
,,
ЭтоОткрытиеСВыбраннойЭЦП);
Элементы.ЖирныйЗаголовокСертификат.Видимость = НЕ ЭтоИнтеграцияСБанком И НЕ ЭтоОткрытиеСВыбраннойЭЦП;
Элементы.ОчиститьВладельца.Видимость =
ЭтоДругойСотрудник(ЭтотОбъект)
И ЗначениеЗаполнено(ДругойСотрудник)
И НЕ ЗапретитьИзменение;
Если ЗапретитьИзменение Тогда
Элементы.ВладелецЭЦПФамилия.ТолькоПросмотр = Истина;
Элементы.ВладелецЭЦПИмя.ТолькоПросмотр = Истина;
Элементы.ВладелецЭЦПОтчество.ТолькоПросмотр = Истина;
Элементы.ВладелецЭЦПСНИЛС.ТолькоПросмотр = Истина;
КонецЕсли;
ИзменитьОформлениеВладельцаЭЦПДолжность(ЭтотОбъект);
РезультатПроверки = ПроверитьДолжностьВладельцаЭП(,Ложь);
Элементы.ПроверкаВладелецЭЦПДолжность.Заголовок = ?(РезультатПроверки.Пустой, "", РезультатПроверки.ТекстОшибки);
Элементы.ГруппаЗаголовокСведенияОВладельце.Видимость = НЕ ИспользоватьСуществующий(ЭтотОбъект);
ИзменитьОформлениеПаспортныхДанных();
ИзменитьОформлениеСНИЛС();
ИзменитьОформлениеИННВладельца();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВключаемогоСертификата()
ОбработкаЗаявленийАбонента.ИзменитьОформлениеВключаемогоСертификата(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоРуководитель(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоРуководитель(Форма);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоБухгалтер(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоБухгалтер(Форма);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоДругойСотрудник(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоДругойСотрудник(Форма);
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеСНИЛС()
РезультатПроверки = ПроверитьВладелецЭЦПСНИЛС(ЭтотОбъект,,Ложь);
Элементы.ПроверкаВладелецЭЦПСНИЛС.Заголовок = ?(РезультатПроверки.Пустой, "", РезультатПроверки.ТекстОшибки);
ИгнорироватьОшибку = ВладелецПустой(ЭтотОбъект);
ИздатьНовый = СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
Элементы.ГруппаВладелецЭЦПСНИЛС.Видимость = ИздатьНовый ИЛИ ЗначениеЗаполнено(РезультатПроверки.ТекстОшибки) И НЕ ИгнорироватьОшибку;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ВладелецПустой(Форма)
Заполнен = ЗначениеЗаполнено(Форма.ВладелецЭЦП) ИЛИ ЗначениеЗаполнено(Форма.ВладелецЭЦПФамилия);
Возврат НЕ Заполнен;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеИННВладельца()
РезультатПроверки = ПроверитьИННВладельцаЭП(ЭтотОбъект,,Ложь);
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаВладелецЭЦПИНН,
РезультатПроверки);
ИгнорироватьОшибку = ВладелецПустой(ЭтотОбъект);
Элементы.ГруппаВладелецЭЦПИНН.Видимость = РезультатПроверки.ЕстьОшибка И НЕ ИгнорироватьОшибку;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметрыЭДО(ПриОткрытии = Ложь)
ПодключитьЭДО = Ложь;
ПодключениеЭДОВозможно = Ложь;
Если НЕ ЗначениеЗаполнено(Организация) ИЛИ ЭтоИнтеграцияСБанком Тогда
Возврат;
КонецЕсли;
ВыбраноОблачноеЭП = ЭтоОблако(ЭтотОбъект);
ВыбраноОблачнаяПодпись = КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча);
ЭтоОткрытиеРанееСозданногоЗаявления = ЗначениеЗаполнено(Реквизит) И ПриОткрытии И ЭтоОткрытиеЗаявления;
ТребуетсяПодключение = Неопределено;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ТребуетсяПодключениеЭДО(Организация, ТребуетсяПодключение);
СсылкаОписаниеСервисаЭДО = "";
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.АдресСтраницыСУсловиямиПодключения(СсылкаОписаниеСервисаЭДО);
Если ЭтоОткрытиеРанееСозданногоЗаявления И Реквизит.ПодключитьЭДО И ЗначениеЗаполнено(Реквизит.НастройкиЭДО) Тогда
НастройкиДляЭДО = Реквизит.НастройкиЭДО;
ПодключитьЭДО = Истина;
ПодключениеЭДОВозможно = НЕ ВыбраноОблачноеЭП И НЕ ВыбраноОблачнаяПодпись;
Иначе
Если ТребуетсяПодключение = Истина Тогда
НастройкиДляЭДО = Неопределено;
КодФНС = СокрЛП(РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Организация, , "КодНО").КодНО);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ИнициализироватьНастройкиПодключенияЭДО(Организация, КодФНС, НастройкиДляЭДО);
Если НастройкиДляЭДО <> Неопределено Тогда
Если (ЗаявлениеСозданоКопированием ИЛИ ЭтоОткрытиеРанееСозданногоЗаявления) И НЕ ВыбраноОблачноеЭП И НЕ ВыбраноОблачнаяПодпись Тогда
ПодключитьЭДО = Реквизит.ПодключитьЭДО;
Иначе
ПодключитьЭДО = Ложь;
КонецЕсли;
ПодключениеЭДОВозможно = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИзменитьОформлениеРасширенныхНастроек(ПриОткрытии);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьРеквизитыОрганизацииИСотрудника(НеобходимоОбновитьСертификат)
ДанныеОрганизацииПредыдущие = ДанныеОрганизации;
ДанныеОрганизацииИОтветственныхЛицПредыдущие = ДанныеОрганизацииИОтветственныхЛиц;
ДанныеСотрудникаПредыдущие = ДанныеСотрудника;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Организация", ?(ЗначениеЗаполнено(Организация), Организация, Неопределено));
ДополнительныеПараметры.Вставить("ПриОткрытии", Ложь);
КонтекстЭДОКлиент.ЗаполнитьДанныеОрганизации(ДополнительныеПараметры);
ДанныеОрганизацииИОтветственныхЛиц = КонтекстЭДОКлиент.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(ДополнительныеПараметры);
Если ТипЗнч(ДанныеОрганизацииИОтветственныхЛиц) = Тип("Структура")
И ДанныеОрганизацииИОтветственныхЛиц.Свойство("СтруктураДанныхОрганизации") Тогда
ДанныеОрганизации = ДанныеОрганизацииИОтветственныхЛиц.СтруктураДанныхОрганизации;
Иначе
Возврат;
КонецЕсли;
ДанныеОрганизации.Вставить("Организация", Организация);
ОбновитьРеквизитыОрганизации(
ДанныеОрганизацииПредыдущие,
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
НеобходимоОбновитьСертификат);
ОбновитьРеквизитыСотрудника(
ДанныеСотрудникаПредыдущие,
НеобходимоОбновитьСертификат);
ДанныеОрганизацииЗаполненыКопированием = Ложь;
ДанныеВладельцаЭЦПЗаполненыКопированием = Ложь;
СведенияПоСчету = РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(
Организация
,,
"БанкСчетНомер, БанкСчетНаимБанка, БанкСчетКоррСчетБанка, БанкСчетБИКБанка,");
ЗаполнитьЗначенияСвойств(ДанныеОрганизации, СведенияПоСчету);
ЗаполнитьЗначенияСвойств(ДанныеОрганизацииИОтветственныхЛиц, СведенияПоСчету);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьРеквизитыОрганизации(
ДанныеОрганизацииПредыдущие,
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
НеобходимоОбновитьСертификат)
Если ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ПустаяСсылка") Тогда
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель");
КонецЕсли;
ЭтоЮридическоеЛицо = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоЮрЛицо(Организация);
Если ДанныеОрганизацииПредыдущие = Неопределено
ИЛИ ДанныеОрганизацииИОтветственныхЛицПредыдущие = Неопределено Тогда
Возврат;
КонецЕсли;
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"КраткоеНаименование",
КраткоеНаименование,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ИзменилсяИНН = ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"ИННЮЛ",
ИНН,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
Если ЭтоЮридическоеЛицо Тогда
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"КППЮЛ",
КПП,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
Иначе
КПП = "";
КонецЕсли;
ИзменилсяОГРН = ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"ОГРН",
ОГРН,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"РегНомПФР",
РегНомерПФР,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"РегНомСФР",
РегНомерСФР,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"ТелОрганизации",
ТелефонОсновной,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"ЭлектроннаяПочта",
ЭлектроннаяПочтаОрганизации,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
"АдресЮридическийЗначение",
АдресЮридическийЗначение,
ДанныеОрганизацииИОтветственныхЛиц,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
"АдресЮридическийПредставление",
АдресЮридическийПредставление,
ДанныеОрганизацииИОтветственныхЛиц,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
"АдресФактическийЗначение",
АдресФактическийЗначение,
ДанныеОрганизацииИОтветственныхЛиц,
ДанныеОрганизацииЗаполненыКопированием);
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииИОтветственныхЛицПредыдущие,
"АдресФактическийПредставление",
АдресФактическийПредставление,
ДанныеОрганизацииИОтветственныхЛиц,
ДанныеОрганизацииЗаполненыКопированием);
Если ДанныеОрганизацииИОтветственныхЛицПредыдущие.Свойство("АдресЮридическийЗначение")
И ДанныеОрганизацииИОтветственныхЛиц.Свойство("АдресЮридическийЗначение") Тогда
КодРегионаФСРАРПредыдущиее = КодРегионаПоАдресу(ДанныеОрганизацииИОтветственныхЛицПредыдущие.АдресЮридическийЗначение);
КодРегионаФСРАРНовое = КодРегионаПоАдресу(ДанныеОрганизацииИОтветственныхЛиц.АдресЮридическийЗначение);
ПопытатьсяОбновитьРеквизит(
КодРегионаФСРАРПредыдущиее,
,
КодРегионаФСРАР,
КодРегионаФСРАРНовое,
ДанныеОрганизацииЗаполненыКопированием);
КонецЕсли;
Если ЭтоЮридическоеЛицо Тогда
Если ДанныеОрганизацииПредыдущие.Свойство("ПризнакОбособленногоПодразделения") Тогда
ПопытатьсяОбновитьРеквизит(
ДанныеОрганизацииПредыдущие,
"ПризнакОбособленногоПодразделения",
ПризнакОбособленногоПодразделения,
ДанныеОрганизации,
ДанныеОрганизацииЗаполненыКопированием);
КонецЕсли;
КонецЕсли;
ИнициализироватьНаправления();
НовыйКодПФР = КодПФР();
Если НовыйКодПФР <> КодПФР Тогда
КодПФР = НовыйКодПФР;
КонецЕсли;
Если НЕ ИННОрганизацииЗаполнен() Тогда
Возврат;
КонецЕсли;
ИзменитьЗаголовокФормы();
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьОформлениеЮрАдреса();
Если ИзменилсяИНН ИЛИ ИзменилсяОГРН Тогда
НеобходимоОбновитьСертификат = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПопытатьсяОбновитьРеквизит(
СтарыеДанные,
ИмяРеквизита,
ТекущееЗначение,
НовыеДанные,
ДанныеЗаполненыКопированием = Ложь)
ЗначениеОбновлено = Ложь;
СтароеЗначение = Неопределено;
НовоеЗначение = Неопределено;
Если ТипЗнч(СтарыеДанные) = Тип("Структура") Тогда
НайденоПолеВСтарыхДанных = СтарыеДанные.Свойство(ИмяРеквизита, СтароеЗначение);
Иначе
НайденоПолеВСтарыхДанных = Истина;
СтароеЗначение = СтарыеДанные;
КонецЕсли;
Если ТипЗнч(НовыеДанные) = Тип("Структура") Тогда
НайденоПолеВНовыхДанных = НовыеДанные.Свойство(ИмяРеквизита, НовоеЗначение);
Иначе
НайденоПолеВНовыхДанных = Истина;
НовоеЗначение = НовыеДанные;
КонецЕсли;
Если НайденоПолеВСтарыхДанных И НайденоПолеВНовыхДанных И ЗначениеЗаполнено(НовоеЗначение) Тогда
Если СтароеЗначение <> НовоеЗначение ИЛИ ТекущееЗначение <> НовоеЗначение И ДанныеЗаполненыКопированием Тогда
ТекущееЗначение = НовоеЗначение;
ЗначениеОбновлено = Истина;
КонецЕсли;
КонецЕсли;
Возврат ЗначениеОбновлено;
КонецФункции
&НаСервере
Процедура ПопытатьсяОбновитьВидДокумента(СтарыеДанные, ИмяРеквизита, ТекущееЗначение, НовыеДанные)
СтароеЗначение = Неопределено;
НовоеЗначение = Неопределено;
НайденоПолеВСтарыхДанных = СтарыеДанные.Свойство(ИмяРеквизита, СтароеЗначение);
НайденоПолеВНовыхДанных = НовыеДанные.Свойство(ИмяРеквизита, НовоеЗначение);
Если НайденоПолеВСтарыхДанных И НайденоПолеВНовыхДанных Тогда
НовоеЗначениеВидаДокумента = ПолучитьВидДокументаПоНаименованию(НовоеЗначение);
СтароеЗначениеВидаДокумента = ПолучитьВидДокументаПоНаименованию(СтароеЗначение);
Если СтароеЗначениеВидаДокумента <> НовоеЗначениеВидаДокумента
ИЛИ ТекущееЗначение <> НовоеЗначениеВидаДокумента Тогда
ТекущееЗначение = НовоеЗначениеВидаДокумента;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьВидДокументаПоНаименованию(Знач Наименование)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ПолучитьВидДокументаПоНаименованию(Наименование);
КонецФункции
&НаКлиенте
Процедура ОбновитьРеквизитыСотрудника(ДанныеСотрудникаПредыдущие, НеобходимоОбновитьСертификат)
ДанныеСотрудника = ОбработкаЗаявленийАбонентаВызовСервера.ПолучитьДанныеСотрудника(
ВладелецЭЦПТип,
ДанныеОрганизации,
ВладелецЭЦП);
Если ДанныеСотрудникаПредыдущие = Неопределено И ДанныеВладельцаЭЦПЗаполненыКопированием Тогда
ДанныеСотрудникаПредыдущие = Новый Структура;
ФИО = Новый Структура;
ФИО.Вставить("Имя", ВладелецЭЦПИмя);
ФИО.Вставить("Фамилия", ВладелецЭЦПФамилия);
ФИО.Вставить("Отчество", ВладелецЭЦПОтчество);
ДанныеСотрудникаПредыдущие.Вставить("ФИО", ФИО);
ДанныеСотрудникаПредыдущие.Вставить("ВидДокумента", ВладелецЭЦПВидДокумента);
ДанныеСотрудникаПредыдущие.Вставить("Серия", ВладелецЭЦПСерияДокумента);
ДанныеСотрудникаПредыдущие.Вставить("Номер", ВладелецЭЦПНомерДокумента);
ДанныеСотрудникаПредыдущие.Вставить("ДатаВыдачи", ВладелецЭЦПДатаВыдачиДокумента);
ДанныеСотрудникаПредыдущие.Вставить("КемВыдан", ВладелецЭЦПКемВыданДокумент);
ДанныеСотрудникаПредыдущие.Вставить("ДатаРождения", ВладелецЭЦПДатаРождения);
ДанныеСотрудникаПредыдущие.Вставить("МестоРождения", ВладелецЭЦПМестоРождения);
ДанныеСотрудникаПредыдущие.Вставить("КодПодразделения", ВладелецЭЦПКодПодразделения);
ДанныеСотрудникаПредыдущие.Вставить("Пол", ВладелецЭЦППол);
ДанныеСотрудникаПредыдущие.Вставить("Гражданство", ВладелецЭЦПГражданство);
ДанныеСотрудникаПредыдущие.Вставить("ЭлектроннаяПочта", ЭлектроннаяПочта);
ДанныеСотрудникаПредыдущие.Вставить("СНИЛС", ВладелецЭЦПСНИЛС);
ДанныеСотрудникаПредыдущие.Вставить("Должность", ВладелецЭЦПДолжность);
ДанныеСотрудникаПредыдущие.Вставить("Подразделение", ВладелецЭЦППодразделение);
ДанныеСотрудникаПредыдущие.Вставить("ИНН", ВладелецЭЦПИНН);
ДанныеСотрудникаПредыдущие.Вставить("ТелефонРабочий", ТелефонМобильный);
КонецЕсли;
Если ДанныеСотрудникаПредыдущие = Неопределено Тогда
Возврат;
КонецЕсли;
ИзменилосьИмя = ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие.ФИО, "Имя", ВладелецЭЦПИмя, ДанныеСотрудника.ФИО);
ИзмениласьФамилия = ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие.ФИО, "Фамилия", ВладелецЭЦПФамилия, ДанныеСотрудника.ФИО);
ИзменилосьОтчетство = ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие.ФИО, "Отчество", ВладелецЭЦПОтчество, ДанныеСотрудника.ФИО);
ПопытатьсяОбновитьВидДокумента(ДанныеСотрудникаПредыдущие, "ВидДокумента", ВладелецЭЦПВидДокумента, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Серия", ВладелецЭЦПСерияДокумента, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Номер", ВладелецЭЦПНомерДокумента, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "ДатаВыдачи", ВладелецЭЦПДатаВыдачиДокумента, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "КемВыдан", ВладелецЭЦПКемВыданДокумент, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "ДатаРождения", ВладелецЭЦПДатаРождения, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "МестоРождения", ВладелецЭЦПМестоРождения, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "КодПодразделения", ВладелецЭЦПКодПодразделения, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Пол", ВладелецЭЦППол, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Гражданство", ВладелецЭЦПГражданство, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Должность", ВладелецЭЦПДолжность, ДанныеСотрудника);
ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "Подразделение", ВладелецЭЦППодразделение, ДанныеСотрудника);
ИзменилсяСНИЛС = ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "СНИЛС", ВладелецЭЦПСНИЛС, ДанныеСотрудника);
ИзменилсяИНН = ПопытатьсяОбновитьРеквизит(ДанныеСотрудникаПредыдущие, "ИНН", ВладелецЭЦПИНН, ДанныеСотрудника);
ИННВладельцаБылКорректным = НЕ ЕстьОшибкаВИННВладельца(ЭтотОбъект);
ИзменитьОформлениеВладельцаЭП();
Если ИзменилосьИмя ИЛИ ИзмениласьФамилия ИЛИ ИзменилосьОтчетство ИЛИ ИзменилсяСНИЛС ИЛИ ИзменилсяИНН Тогда
НеобходимоОбновитьСертификат = Истина;
КонецЕсли;
ИзмениласьЭлектроннаяПочта = ПопытатьсяОбновитьРеквизит(
ДанныеСотрудникаПредыдущие,
"ЭлектроннаяПочта",
ЭлектроннаяПочта,
ДанныеСотрудника);
ИзменилсяТелефонМобильный = ПопытатьсяОбновитьРеквизит(
ДанныеСотрудникаПредыдущие,
"ТелефонРабочий",
ТелефонМобильный,
ДанныеСотрудника);
Если ИзмениласьЭлектроннаяПочта ИЛИ ИзменилсяТелефонМобильный Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ОбновитьКонтактыВладельцаЭЦП(ЭтотОбъект, ДанныеСотрудника);
ПриИзмененииТелефонаИлиПочтыДляПароля(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасширенныеНастройки_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПредыдущийРежимРаботыСКлючами = РежимРаботыСКлючами;
ПредыдущийАдресЮридическийЗначение = АдресЮридическийЗначение;
ПредыдущийТелефонДляПаролей = ТелефонМобильныйДляПаролей;
ПредыдущийИгнорироватьКонфликт = ИгнорироватьКонфликт;
ПараметрыФормы = Результат.ПараметрыФормы;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат, ПараметрыФормы, "ПараметрыФормы");
Если Результат.Модифицированность Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Конецесли;
ИзменилсяРежимРаботыСКлючами = ПредыдущийРежимРаботыСКлючами <> РежимРаботыСКлючами;
Если ИзменилсяРежимРаботыСКлючами Тогда
ПриИзмененииРежимаРаботыСКлючами();
КонецЕсли;
ИзменитьОформлениеНаправлений();
Если ПредыдущийАдресЮридическийЗначение <> АдресЮридическийЗначение Тогда
ПриИзмененииЮридическогоАдреса();
КонецЕсли;
Если ТелефонМобильныйДляПаролей <> "" И НЕ КонтекстЭДОКлиент.ТелефоныСовпадают(ПредыдущийТелефонДляПаролей, ТелефонМобильныйДляПаролей) Тогда
ПриИзмененииТелефонаИлиПочтыДляПароля();
КонецЕсли;
ИзменитьОформлениеРасширенныхНастроек();
Если ПредыдущийИгнорироватьКонфликт <> ИгнорироватьКонфликт Тогда
ОпределитьВозможностьБезбумажногоПодписания();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СнятьМодифицированность(Форма)
Форма.Модифицированность = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииРежимаРаботыСКлючами()
Если РежимРаботыСКлючами = 1 Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Истина);
ИначеЕсли РежимРаботыСКлючами = 2 Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ПриИзмененииТелефонаИлиПочтыДляПароля(Ложь);
ИнициализироватьПараметрыЭДО();
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
ИзменитьОформлениеМестаХраненияКлючей();
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеУЦ(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииТелефонаИлиПочтыДляПароля(ПриОткрытии = Ложь)
Интервал = 0.1;
ТаймерТелефон = 0;
Если ПроверкаТелефонДляПаролей.Значение = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонМобильныйДляПаролей)
И ПроверкаТелефонДляПаролей.ЗначениеВведено И ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено Тогда
Иначе
ЗаполнитьПеременныеДляПроверкиТелефона(ЭтотОбъект, ПриОткрытии);
КонецЕсли;
Если ЗначениеЗаполнено(ТелефонМобильныйДляПаролей) Тогда
ЭтоРучноеИзменениеТелефона = Ложь;
ТелефонДляПаролейИзменениеТекстаРедактирования(
Элементы.ТелефонМобильныйДляПаролей,
ТелефонМобильныйДляПаролей,
Истина,
Интервал,
Ложь);
КонецЕсли;
ТаймерПочта = 0;
Если ПроверкаЭлектроннаяПочтаДляПаролей.Значение = СокрЛП(ЭлектроннаяПочтаДляПаролей)
И ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено
И ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено Тогда
Иначе
ЗаполнитьПеременныеДляПроверкиЭлектроннойПочты(ЭтотОбъект, ПриОткрытии);
КонецЕсли;
Если ЗначениеЗаполнено(ЭлектроннаяПочтаДляПаролей) Тогда
ЭлектроннаяПочтаДляПаролейИзменениеТекстаРедактирования(
Элементы.ЭлектроннаяПочтаДляПаролей,
ЭлектроннаяПочтаДляПаролей,
Истина,
Интервал,
Ложь);
КонецЕсли;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораПользователей(Результат, ВходящийКонтекст) Экспорт
Если ЭтоМультиРежим Тогда
ТарифОператораЭДО = Неопределено;
КонецЕсли;
Если ЭтоМультиРежим <> ЭтоМультиРежимИсходный Тогда
Если НЕ ИспользоватьСуществующий(ЭтотОбъект) Тогда
ИнициализацияДляЭПВМоделиСервиса();
КонецЕсли;
ИнициализацияДляОблачнойПодписи();
ИнициализироватьПараметрыЭДО();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ТаблицаИзАдреса(Адрес, Имя) Экспорт
Мультирежим.ТаблицаИзАдреса(ЭтотОбъект, Адрес, Имя);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПользователей() Экспорт
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Элементы.УказательПользователи.Видимость = НЕ ЭтоЛичныеНастройки;
Результат = Мультирежим.ОформлениеПользователей(ЭтотОбъект);
ЗаполнитьЗначенияСвойств(Элементы.ВыбратьПользователей, Результат);
Элементы.ПроверкаФизЛица.Видимость = ЗначениеЗаполнено(Результат.ТекстОшибки);
Элементы.ПроверкаФизЛица.Подсказка = Результат.ТекстОшибки;
Элементы.ГруппаПользователи.Видимость = Элементы.ВыбратьПользователей.Видимость;
Элементы.ЗаголовокПользователи.Заголовок = Мультирежим.ЗаголовокПользователей(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораТарифа(РезультатВыбораТарифа, ВходящийКонтекст) Экспорт
Если НЕ ЗапретитьИзменение И ЗначениеЗаполнено(РезультатВыбораТарифа) Тогда
Тариф = РезультатВыбораТарифа;
ИзменитьОформлениеТарифа();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеПолученияКонтекста(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
ПутьКОбъекту = КонтекстЭДОКлиент.ПутьКОбъекту;
СканированиеДоступно = ОбработкаЗаявленийАбонентаКлиент.ДоступноСканирование();
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьТекстРедактированияДляИНН", 0.1, Истина);
ИзменитьОформлениеНомераОсновнойПоставки1с(Истина);
СрокЛицензииКриптоПроКонечный = КонтекстЭДОКлиент.СрокЛицензииКриптоПроКонечный();
Если ЗаявлениеСозданоКопированием ИЛИ ЭтоОткрытиеЗаявления Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_ПроверкиРежимаСУЦ",
ЭтотОбъект);
ОпределятьВозможностьБезбумажки = Ложь;
ПриУстановкеРежимаТолькоСУЦАсинхронно(ОписаниеОповещения, ОпределятьВозможностьБезбумажки, Истина);
ИначеЕсли ЭтоБыстрыйСтарт И НЕ ЗапретитьИзменение Тогда
ПодключитьОбработчикОжидания("Подключаемый_ОткрытьЗаявлениеВРежимеБыстрогоСтарта", 0.1, Истина);
Иначе
ПриОткрытии_ПроверкиРежимаСУЦ();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПроверкиРежимаСУЦ(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
Если ЗапретитьИзменение Тогда
Подключаемый_ОпределитьВозможностьБезбумажногоПодписания_ПриОткрытии();
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ОпределитьВозможностьБезбумажногоПодписания_ПриОткрытии", 0.2, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьТекстРедактированияДляИНН()
Элементы.ИНН.ОбновитьТекстРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОпределитьВозможностьБезбумажногоПодписания_ПриОткрытии() Экспорт
ДлительнаяОтправкаКлиент.ЗакрытьФормуОжиданияЗагрузкиМодуля();
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", ЗаявлениеСозданоКопированием);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_ПослеОпределенияВозможностиБезбумажногоПодписания",
ЭтотОбъект);
ОпределитьВозможностьБезбумажногоПодписания(ОписаниеОповещения, Истина, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеОпределенияВозможностиБезбумажногоПодписания(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
Если ЗапретитьИзменение Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.СнятьМодифицированность(ЭтотОбъект);
ПоказатьОсновнуюСтраницу();
УправлениеФормой(Истина);
Иначе
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_ПослеПроверкиПрав",
ЭтотОбъект);
ПосоветоватьОбратитсяКАдминистраторуПриОтсутствииПрав(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПосоветоватьОбратитсяКАдминистраторуПриОтсутствииПрав(ВыполняемоеОповещение = Неопределено) Экспорт
Показывать =
НЕ ЗаявлениеСозданоКопированием
И МультирежимКлиентСервер.ПоказыватьСообщениеПроОтсутствиеПрав(ЭтотОбъект);
Если Показывать Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_ПослеПоказаПредупрежденияПроОтсутствиеПрав",
ЭтотОбъект,
ВыполняемоеОповещение);
ПоказатьПредупреждениеНетПравНаПодключение(ОписаниеОповещения);
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеПроверкиПрав(Результат, ВходящийКонтекст) Экспорт
ПриОткрытии_ПослеПроверкиПрав_БС();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеПроверкиПрав_БС()
Если ЭтоБыстрыйСтарт Тогда
УправлениеФормой();
ОткрытьНаОсновнойСтранице();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеПоказаПредупрежденияПроОтсутствиеПрав(Результат, ВыполняемоеОповещение) Экспорт
Если Результат = Неопределено Тогда
ПриОтказеОтСамостоятельногоПодключения();
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыПредупрежденияНетПравНаПодключение() Экспорт
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Организация", Организация);
ПараметрыФормы.Вставить("АдресТаблицы", Мультирежим.АдресТаблицы(ЭтотОбъект, "ТаблицаПользователей"));
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура ПоказатьПредупреждениеНетПравНаПодключение(ОповещениеОЗавершении) Экспорт
ПараметрыФормы = ПараметрыПредупрежденияНетПравНаПодключение();
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ОбратитесьКАдминистраторуПриПодключении",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОповещениеОЗавершении);
КонецПроцедуры
&НаКлиенте
Процедура ПриОтказеОтСамостоятельногоПодключения() Экспорт
Если ИспользуетсяОднаОрганизация Тогда
ПрограммноеЗакрытие = Истина;
Модифицированность = Ложь;
Закрыть();
Иначе
Организация = Неопределено;
ПредыдущееЗначениеОрганизации = Неопределено;
ПоказатьСтраницуСПустойОрганизацией();
УправлениеФормой();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьОформлениеНомераОсновнойПоставки1с(ПриОткрытии = Ложь, НужноЗапроситьРегНомер = Ложь)
Если ЗапретитьИзменение И ЗначениеЗаполнено(НомерОсновнойПоставки1с) Тогда
Элементы.ГруппаРегНомерПрограммы.Видимость = Истина;
Элементы.ГруппаРегНомерПрограммы.ТолькоПросмотр = Истина;
ИначеЕсли ЗапрашиватьРегНомер Тогда
Если РазделениеВключено Тогда
ПодсказкаКНомеруОсновнойПоставки1с = НСтр("ru = 'Если вы переходите из локальной версии, то регистрационный номер можно найти:
|- в регистрационной анкете
|- в договоре ИТС (при наличии)
|- на коробке с программой, обложках книг, дисках, входящих в комплект поставки
|
|Если вы сразу начали работать в сервисе, то регистрационный номер - это символы FR и код абонента сервиса.
|Например, FR1015
|
|Код абонента сервиса можно узнать в '");
ГиперссылкаНаЛичныйКабинет = Новый ФорматированнаяСтрока(НСтр("ru = 'Личном кабинете'"),,,,"https://1cfresh.com/a/adm/ru_RU/");
Элементы.НомерОсновнойПоставки1с.РасширеннаяПодсказка.Заголовок =
Новый ФорматированнаяСтрока(ПодсказкаКНомеруОсновнойПоставки1с, ГиперссылкаНаЛичныйКабинет);
Иначе
Элементы.НомерОсновнойПоставки1с.РасширеннаяПодсказка.Заголовок =
НСтр("ru = 'Регистрационный номер можно найти:
|
|- в регистрационной анкете
|- в договоре ИТС (при наличии)
|- на коробке с программой, обложках книг или дисках, входящих в комплект поставки'");
КонецЕсли;
РезультатПроверки = ПроверитьНомерОсновнойПоставки1с(, Ложь);
Элементы.ПроверкаНомерОсновнойПоставки1с.Заголовок = ?(РезультатПроверки.Пустой, "", РезультатПроверки.ТекстОшибки);
Если ПриОткрытии ИЛИ НужноЗапроситьРегНомер Тогда
Элементы.ГруппаРегНомерПрограммы.Видимость = НЕ ЗначениеЗаполнено(НомерОсновнойПоставки1с) ИЛИ РезультатПроверки.ЕстьОшибка;
КонецЕсли;
Элементы.ПодсказкаРегНомер.Видимость = ПоказыватьПодсказкуРегНомера;
Иначе
Элементы.ГруппаРегНомерПрограммы.Видимость = Ложь;
Элементы.ПодсказкаРегНомер.Видимость = Ложь;
КонецЕсли;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьЦвета()
ЧерныйЦвет = Новый Цвет(65, 48, 3);
СерыйЦвет = Новый Цвет(87, 87, 87);
СинийЦвет = Новый Цвет(28, 85, 174);
ЦветТекстаФормы = Новый Цвет(65, 48, 3);
КрасныйЦвет = ЦветаСтиля.ЦветОшибкиПроверкиБРО;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьТребованийКФайлам()
Требования = ОбработкаЗаявленийАбонентаКлиентСервер.ТребованияВложениямЗаявления();
ДопустимыеТипыФайлов = Требования.ДопустимыеТипыФайлов;
МаксимальныйРазмерФайла = Требования.МаксимальныйРазмерФайла;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьОкружениеИКонстанты()
ИспользуетсяРежимТестирования = ДокументооборотСКОВызовСервера.ИспользуетсяРежимТестирования();
ТекущийПользователь = Пользователи.ТекущийПользователь();
ПоддерживаетсяМультирежим = Мультирежим.ПоддерживаетсяМультирежим();
ИспользоватьРегНомерСФР = ДокументооборотСКОВызовСервера.СобытиеНаступилоИспользоватьРегНомерСФР();
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ЭтоВебКлиент = ОбщегоНазначения.ЭтоВебКлиент();
ИспользуетсяОднаОрганизация = РегламентированнаяОтчетностьВызовСервера.ИспользуетсяОднаОрганизация();
ЭтоРежимОблачной1СО = ДокументооборотСКОПовтИсп.ЭтоРежимОблачной1СО();
ФНС = Перечисления.ТипыКонтролирующихОрганов.ФНС;
ФСГС = Перечисления.ТипыКонтролирующихОрганов.ФСГС;
ИменаУЦКалуги = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИменаУЦКалуги();
ИнициализироватьЦвета();
ИнициализироватьТребованийКФайлам();
ИнициализироватьПрава1СЭДО();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПрава1СЭДО()
ЕстьПравоНастройкиЭДО = Истина;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ЕстьПравоНастройкиЭДО(ЕстьПравоНастройкиЭДО);
КонецПроцедуры
&НаСервере
Процедура РазобратьПараметры(Параметры)
СписокПараметров =
"ЭтоОткрытиеЗаявления,
|Реквизит,
|ТарифОператораЭДО,
|ПоказыватьПодсказкуРегНомера,
|ЗапрашиватьРегНомер";
ДобавитьПараметры_БС(СписокПараметров);
СписокПараметров = СтрРазделить(СписокПараметров, "," + Символы.ПС, Ложь);
Для каждого Имя Из СписокПараметров Цикл
Параметры.Свойство(Имя, ЭтотОбъект[Имя]);
КонецЦикла;
РазобратьПараметры_БС(Параметры);
ОрганизацияИзПараметра = Параметры.Организация;
ПолучитьКриптопровайдераИзПараметров(Параметры);
КонецПроцедуры
&НаСервере
Процедура ДобавитьПараметры_БС(СписокПараметров)
СписокПараметров = СписокПараметров + "," +
"ЭтоБыстрыйСтарт,
|ЕстьПредыдущиеУчетныеЗаписи,
|ПредыдущиеУчетныеЗаписи,
|НетСертификатов_БС,
|ВладелецЭЦПТип_БС,
|ЗаблокироватьМодифицированность_БС";
КонецПроцедуры
&НаСервере
Процедура РазобратьПараметры_БС(Параметры)
Если НЕ ЭтоБыстрыйСтарт Тогда
Возврат;
КонецЕсли;
ПараметрыФормы_БС = Параметры.ПараметрыФормы_БС;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, ПараметрыФормы_БС);
Параметры.Свойство("ПараметрыФормыБыстрыйСтарт", ПараметрыФормыБыстрыйСтарт);
Параметры.Свойство("ПараметрыФормыСозданияОрганизации", ПараметрыФормыСозданияОрганизации);
ШиринаЗаявления_БС = 80;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьКонтакты_БС()
Если ПредыдущиеУчетныеЗаписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Владелец = ДокументооборотСКОКлиентСервер.ВладелецСертификат(ВключаемыйСертификат);
СНИЛС = ДокументооборотСКОКлиентСервер.СНИЛСИзСертификата(Владелец);
Для каждого Строка Из ПредыдущиеУчетныеЗаписи Цикл
Адрес = Строка.Значение;
ДвДанные = ПолучитьИзВременногоХранилища(Адрес);
Текст = ПолучитьСтрокуИзДвоичныхДанных(ДвДанные, "windows-1251");
Результат = РегФайлКА.КонтактыИзУчетнойЗаписи(Адрес, СНИЛС);
Результат.Вставить("ДвДанные", ДвДанные);
Результат.Вставить("СНИЛС", СНИЛС);
Результат.Вставить("Текст", Текст);
Строка.Значение = Результат;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьНаправления_БС()
Если ПредыдущиеУчетныеЗаписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Владелец = ДокументооборотСКОКлиентСервер.ВладелецСертификат(ВключаемыйСертификат);
СНИЛС = ДокументооборотСКОКлиентСервер.СНИЛСИзСертификата(Владелец);
ВидыНаправлений = МультирежимКлиентСервер.ФлагиНаправлений();
ВидыНаправлений = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ВидыНаправлений, ",", Истина, Истина);
Для каждого Орган Из ВидыНаправлений Цикл
ЭтотОбъект[Орган] = Ложь;
КонецЦикла;
ПолучателиФНС.Очистить();
ПолучателиФСГС.Очистить();
Для каждого ПредыдущаяУчетнаяЗапись Из ПредыдущиеУчетныеЗаписи Цикл
ДвДанные = ПредыдущаяУчетнаяЗапись.Значение.ДвДанные;
ДокументDOM = РегФайлКА.ФайлАвтонастрокиВФорматеDOMПоДвДанным(ДвДанные);
УзелВладелец = РегФайлКА.УзелВладелецЭЦПИзРегФайлаПоСНИЛС(ДокументDOM, СНИЛС);
ОрганыВладельца = РегФайлКА.ДоступныеОрганыОрганизацииИзРегФайла(ДокументDOM);
Для каждого Орган Из ВидыНаправлений Цикл
Если ОрганыВладельца[Орган] Тогда
ЭтотОбъект[Орган] = Истина;
КонецЕсли;
КонецЦикла;
НаправленияТаблицей = РегФайлКА.НаправленияУчетнойЗаписи(ДокументDOM);
Для каждого Строка Из НаправленияТаблицей Цикл
Если Строка.ТипПолучателя = Перечисления.ТипыКонтролирующихОрганов.ФНС Тогда
КонтекстЭДОСервер.НовоеНаправление(ПолучателиФНС, Строка.ТипПолучателя, Строка.КодПолучателя, Строка.КПП);
ИначеЕсли Строка.ТипПолучателя = Перечисления.ТипыКонтролирующихОрганов.ФСГС Тогда
КонтекстЭДОСервер.НовоеНаправление(ПолучателиФСГС, Строка.ТипПолучателя, Строка.КодПолучателя);
ИначеЕсли Строка.ТипПолучателя = Перечисления.ТипыКонтролирующихОрганов.ПФР Тогда
КодПФР = Строка.КодПолучателя;
Если НЕ ЗначениеЗаполнено(РегНомерПФР) Тогда
РегНомерПФР = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПолучитьЗначениеУзлаXML(ДокументDOM, "РегНомерПФР");
КонецЕсли;
ИначеЕсли Строка.ТипПолучателя = Перечисления.ТипыКонтролирующихОрганов.ПФР Тогда
Если НЕ ЗначениеЗаполнено(КодРегионаФСРАР) И ЗначениеЗаполнено(КодРегиона_ИзСертификата) Тогда
КодРегионаФСРАР = КодРегиона_ИзСертификата;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьЭПВМоделиСервисаПриСозданииНаСервере()
ИнициализацияДляЭПВМоделиСервиса();
ЗаполнитьПеременныеДляПроверкиТелефона(ЭтотОбъект, Истина);
ЗаполнитьПеременныеДляПроверкиЭлектроннойПочты(ЭтотОбъект, Истина);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьАдресаПриСозданииНаСервере()
ИнициализироватьФактическийАдрес();
НачатьОпределениеИдентификаторАдресаФИАС();
КонецПроцедуры
&НаСервере
Процедура Инициализация(Параметры)
РазобратьПараметры(Параметры);
ИнициализироватьОкружениеИКонстанты();
УстановитьНастройкиРежимаОграниченнойФункциональности();
ИнициализироватьПараметрыУЦ();
ИнициализацияДляОблачнойПодписи();
ПриСозданииНаСервере_ИнициализацияПФР();
ЗаявлениеСозданоКопированием = ЗначениеЗаполнено(Реквизит);
Если ЗаявлениеСозданоКопированием Тогда
ДействияДляСкопированногоЗаявления();
Иначе
СпособПодтвержденияКриптоопераций = Перечисления.СпособыПодтвержденияКриптоопераций.СессионныйТокен;
ЗаполнитьМестоХраненияЗакрытогоКлюча(Истина);
ИнициализироватьКонтакты_БС();
КонецЕсли;
ИнициализироватьЭПВМоделиСервисаПриСозданииНаСервере();
ИнициализироватьАдресаПриСозданииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьФактическийАдрес()
Если (НЕ ЗначениеЗаполнено(АдресФактическийПредставление) ИЛИ НЕ ЗначениеЗаполнено(АдресФактическийЗначение))
И (ЗначениеЗаполнено(АдресЮридическийПредставление) ИЛИ ЗначениеЗаполнено(АдресЮридическийЗначение)) Тогда
АдресФактическийЗначение = АдресЮридическийЗначение;
АдресФактическийПредставление = АдресЮридическийПредставление;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьКриптопровайдераИзПараметров(Параметры)
Если Параметры.Свойство("CryptoProCSPУстановлен")
И Параметры.Свойство("ViPNetCSPУстановлен")
И Параметры.Свойство("КомпонентаДляРаботыСКриптографиейПодключена") Тогда
CryptoProCSPУстановлен = Параметры.CryptoProCSPУстановлен;
ViPNetCSPУстановлен = Параметры.ViPNetCSPУстановлен;
КомпонентаДляРаботыСКриптографиейПодключена = Параметры.КомпонентаДляРаботыСКриптографиейПодключена;
Если ViPNetCSPУстановлен Тогда
ТипКриптопровайдера = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.VipNet");
ИначеЕсли CryptoProCSPУстановлен Тогда
ТипКриптопровайдера = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoPro");
КонецЕсли;
КонецЕсли;
Параметры.Свойство("ЛицензииКриптоПроИстекла", ЛицензииКриптоПроИстекла);
Если Параметры.Свойство("ВсеСертификаты") Тогда
ВсеСертификаты = Параметры.ВсеСертификаты;
КонецЕсли;
Параметры.Свойство("ИгнорироватьКонфликт", ИгнорироватьКонфликт);
Параметры.Свойство("КриптопровайдерПриКонфликте", КриптопровайдерПриКонфликте);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметрыУЦ()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ИнициализироватьПараметрыУЦ(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СброситьЭтоОткрытиеСВыбраннойЭЦП(Форма)
Форма.ЭтоОткрытиеСВыбраннойЭЦП = Ложь;
КонецПроцедуры
&НаСервере
Процедура ОбработатьИзменениеОрганизации(ИННОрганизации = "", ПриОткрытии = Ложь)
Если НЕ ОрганизацияЗаполнена() Тогда
Возврат;
КонецЕсли;
ДанныеОрганизацииИОтветственныхЛиц = Новый Структура();
ЗадаватьВопросПроСуществованиеУчетнойЗаписи = Истина;
ЗПЭД = Неопределено;
Если НЕ ЭтоОткрытиеСВыбраннойЭЦП Тогда
ОчиститьРеквизитыФормы(ИННОрганизации);
КонецЕсли;
ОбновитьДанныеОрганизацииИзБазы();
ЗаполнитьЗаявлениеДаннымиИзБазы(ДанныеОрганизацииИОтветственныхЛиц, ИННОрганизации);
Если НЕ ИННОрганизацииЗаполнен() Тогда
Возврат;
КонецЕсли;
ИПИспользуетТрудНаемныхРаботников = РегламентированнаяОтчетность.ИПИспользуетТрудНаемныхРаботников(Организация);
Мультирежим.ИнициализироватьМультирежим(ЭтотОбъект);
ИнициализироватьНаправления();
ИнициализироватьПользователей();
ИнициализироватьВладельцаЭЦП();
ЗаполнитьЗаявлениеДаннымиИз1СКонтрагент();
ИнициализироватьСпособПолученияСертификата(ЭтотОбъект);
Если НЕ ЭтоОткрытиеСВыбраннойЭЦП Тогда
ИнициализацияДляОблачнойПодписи();
ИнициализацияДляЭПВМоделиСервиса();
КонецЕсли;
ИнициализироватьПараметрыЭДО();
ИнициализироватьМобильныйТелефон();
РезультатПроверки = ПроверитьЭлПочтуОрганизации(,Ложь);
ЭлПочтаОрганизацииВРасширенныхНастройках = НЕ РезультатПроверки.ЕстьОшибка;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьВладельцаЭЦП()
Если ЭтоМультиРежим Тогда
Результат = Мультирежим.ВладелецЭЦПТипПоФорме(ЭтотОбъект);
ВладелецЭЦПТип = Результат.ВладелецЭЦПТип;
Если ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник Тогда
ДругойСотрудник = Результат.ВладелецЭЦП;
КонецЕсли;
ИначеЕсли ВладелецЭЦПТип_БС = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник") Тогда
ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник;
Если ЗначениеЗаполнено(ВладелецЭЦП_ИзСертификата) Тогда
ДругойСотрудник = ВладелецЭЦП_ИзСертификата;
КонецЕсли;
ИначеЕсли ЭтоОткрытиеСВыбраннойЭЦП Тогда
ВладелецЭЦПТип = ВладелецЭЦПТип_ИзСертификата;
Если ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник Тогда
ДругойСотрудник = ВладелецЭЦП_ИзСертификата;
КонецЕсли;
Иначе
ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.Руководитель;
КонецЕсли;
ЗаполнитьДанныеСотрудника();
КонецПроцедуры
&НаСервере
Процедура ПоказатьОсновнуюСтраницу()
Элементы.РамкаОрганизации.Видимость = НЕ ИспользуетсяОднаОрганизация;
АктивизироватьСтраницу(ЭтотОбъект, Элементы.ОсновнаяСтраница);
ЗаблокироватьМодифицированность_БС = Ложь;
ИзменитьОформлениеПанелей();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПользователей()
УчетнаяЗапись = Мультирежим.УчетнаяЗаписьОрганизацииПоФорме(ЭтотОбъект);
Мультирежим.ИнициализироватьПользователей(ЭтотОбъект, ТаблицаПользователей, УчетнаяЗапись);
КонецПроцедуры
&НаСервере
Процедура ОткрытьНаНачальнойСтранице(ПриОткрытии = Ложь)
НачатьСВопросаОНаличииЭЦП =
НЕ ЗаявлениеСозданоКопированием
И НЕ ЭтоОткрытиеЗаявления
И ПриОткрытии;
Если ПриОткрытии И ЗапретитьИзменение Тогда
ИначеЕсли НачатьСВопросаОНаличииЭЦП Тогда
Если ЭтоБыстрыйСтарт Тогда
АктивизироватьСтраницу(ЭтотОбъект, Элементы.СтраницаБублик_БС);
Иначе
ПерейтиНаСтраницуВопросОНаличииЭЦП();
КонецЕсли;
Иначе
ОткрытьНаОсновнойСтранице();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьЗаявлениеВРежимеБыстрогоСтарта() Экспорт
Если НетСертификатов_БС Тогда
СледующийШагЕслиНетКэп();
Иначе
ОповещениеОЗавершении = Новый ОписаниеОповещения(
"ЕстьКЭП_ПослеВыбораСертификата",
ЭтотОбъект);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораВключаемогоСертификата",
ЭтотОбъект,
ДополнительныеПараметры);
Результат = Новый Структура();
Результат.Вставить("ВключаемыйСертификат", ВключаемыйСертификат);
Результат.Вставить("ЭтоСертификатДругогоУЦ", ЭтоСертификатДругогоУЦ);
Результат.Вставить("ВключаемыйСертификатОблачный", ВключаемыйСертификатОблачный);
ВходящийКонтекст = Новый Структура();
ВходящийКонтекст.Вставить("ОповещениеОЗавершении", ОписаниеОповещения);
ВходящийКонтекст.Вставить("Форма", ЭтотОбъект);
ВходящийКонтекст.Вставить("Результат", Результат);
ОбработкаЗаявленийАбонентаКлиент.ЗаписатьСуществующийСертификатВФорму(КодВозвратаДиалога.ОК, ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОткрытьНаОсновнойСтранице()
Если ЗначениеЗаполнено(Организация) Тогда
ПоказатьОсновнуюСтраницу();
Иначе
ПоказатьСтраницуСПустойОрганизацией();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПерейтиНаСтраницуВопросОНаличииЭЦП()
ИзменитьЗаголовокФормы();
Если ЭтоИнтеграцияСБанком Тогда
АктивизироватьСтраницу(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП_ПСБ);
Иначе
АктивизироватьСтраницу(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП);
Элементы.ПодсказкаНетКЭП.Видимость = Не ЗначениеЗаполнено(ТарифОператораЭДО);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПоказатьСтраницуСПустойОрганизацией()
Элементы.РамкаОрганизации1.Видимость = НЕ ИспользуетсяОднаОрганизация;
АктивизироватьСтраницу(ЭтотОбъект, Элементы.НеЗаполненаОрганизация);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоТекущаяСтраница(Форма, Страница)
ТекущаяСтраница = Форма.Элементы.СтраницыЗаявления.ТекущаяСтраница;
Возврат ТекущаяСтраница = Страница;
КонецФункции
&НаСервере
Процедура УправлениеФормой(ПриОткрытии = Ложь) Экспорт
ИзменитьЗаголовокФормы();
Если ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.НеЗаполненаОрганизация)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП_ПСБ)
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.ВопросОНаличииЭЦП) И НЕ ЭтоОткрытиеСВыбраннойЭЦП
ИЛИ ЭтоТекущаяСтраница(ЭтотОбъект, Элементы.СтраницаБублик_БС) И НЕ ЭтоОткрытиеСВыбраннойЭЦП Тогда
Возврат;
КонецЕсли;
ИзменитьОформлениеОрганизации(ПриОткрытии);
ИзменитьОформлениеИНН();
ИзменитьОформлениеКПП();
ИзменитьОформлениеКраткогоНаименования();
ИзменитьОформлениеВладельцаЭП();
ИзменитьОформлениеЮрАдреса(ПриОткрытии);
ИзменитьОформлениеОГРН(ПриОткрытии);
ИзменитьОформлениеЭлПочтыОрганизации();
ИзменитьОформлениеДобавляемыхФлагов();
ИзменитьОформлениеВключаемогоСертификата();
ИзменитьОформлениеРеквизитовПриИзмененииСпособаПолученияСертификата();
ИзменитьОформлениеПользователей();
ИзменитьОформлениеНаправлений();
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеБюджетополучателя(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеУЦ(ЭтотОбъект);
ИзменитьОформлениеРасширенныхНастроек(Истина);
ИзменитьОформлениеТехническойИнформации(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(ЭтотОбъект, ПриОткрытии);
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
ИзменитьОформлениеФормыПриСозданииНаСервереПриЗапретеИзменения();
ИзменитьОформлениеТарифа();
ИзменитьОформлениеПанелей();
ИзменитьОформлениеПанелиРекламыDSS();
МультирежимКлиентСервер.ИзменитьОформлениеПредупрежденияПроОтсутствиеПрав(ЭтотОбъект);
ИзменитьОформлениеМестаХраненияКлючей();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПанелей() Экспорт
ИзменитьОформлениеКнопкиОтправки(ЭтотОбъект);
ИзменитьОформлениеПанелиОтправки();
ИзменитьОформлениеКоманднойПанели();
ИзменитьОформлениеЧтоДелатьДальше();
ИзменитьОформлениеПанелиПФРВМастере();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВРежимеИнтеграцияСБанком()
Элементы.ОсталосьЗаполнитьЗаявление.Видимость =
ЭтоИнтеграцияСБанком
И НЕ ЗапретитьИзменение;
Элементы.КнопкаНазад.Видимость = НЕ ЗапретитьИзменение;
Элементы.ГруппаПодсказка.Видимость = ЭтоИнтеграцияСБанком;
Если ЭтоИнтеграцияСБанком Тогда
Элементы.ГруппаРеквизитыЗаявления.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Одинарный;
Элементы.ГруппаПодписаниеИОтправка.ВертикальноеПоложениеВГруппе = ВертикальноеПоложениеЭлемента.Авто;
Элементы.Переместить(
Элементы.ГруппаПолученияСертификата,
Элементы.ГруппаБлокДанныхОВладельце);
Элементы.Переместить(
Элементы.ГруппаПодсказка,
Элементы.ГруппаБлокДанныхОВладельце);
Конецесли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВРежимеБыстрогоСтарта()
ОтображатьВРежимеБС = ОтображатьВРежимеБС(ЭтотОбъект);
Элементы.ОтступСлева.Видимость = ОтображатьВРежимеБС;
Элементы.ОтступСправа.Видимость = ОтображатьВРежимеБС;
Элементы.ОтступСверху.Видимость = ОтображатьВРежимеБС;
Элементы.ОсновнаяГоризонтальнаяГруппа.ГоризонтальноеПоложениеПодчиненных =
?(ОтображатьВРежимеБС,
ГоризонтальноеПоложениеЭлемента.Центр,
ГоризонтальноеПоложениеЭлемента.Лево);
Элементы.СтраницыЗаявления.РастягиватьПоГоризонтали = НЕ ОтображатьВРежимеБС;
Элементы.СтраницыЗаявления.Ширина = ?(ОтображатьВРежимеБС, ШиринаЗаявления_БС, 0);
Элементы.ОсновнаяСтраница.Ширина = ?(ОтображатьВРежимеБС, ШиринаЗаявления_БС, 0);
Если ОтображатьВРежимеБС Тогда
Элементы.Отправить.Шрифт = Новый Шрифт(Элементы.Отправить.Шрифт, ,12);
ИзменитьЗаголовокФормы();
КонецЕсли;
Элементы.ГруппаРасширенныеНастройкиИПомощь_БС.Видимость = ОтображатьВРежимеБС;
Элементы.ОтступДоПомощи1.Видимость = НЕ ОтображатьВРежимеБС;
Элементы.ОтступДоПомощи2.Видимость = НЕ ОтображатьВРежимеБС;
Элементы.ГруппаОсновныеРеквизиты.РастягиватьПоГоризонтали = НЕ ОтображатьВРежимеБС;
Элементы.ГруппаВариантовПодписания.Видимость = НЕ ОтображатьВРежимеБС;
Элементы.Пропустить.Видимость = ОтображатьВРежимеБС;
Элементы.ТребуетсяПомощь.Видимость = НЕ ЭтоБыстрыйСтарт;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеОрганизацииИзБазы()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СтруктураРеквизитов = Новый Структура();
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("ПриОткрытии", Истина);
СтруктураРеквизитов.Вставить("АдресЮридический",);
СтруктураРеквизитов.Вставить("АдресФактический",);
КонтекстЭДОСервер.ЗаполнитьДанныеОрганизации(СтруктураРеквизитов);
ДанныеОрганизацииИОтветственныхЛиц = КонтекстЭДОСервер.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(СтруктураРеквизитов);
ДанныеОрганизации = ДанныеОрганизацииИОтветственныхЛиц.СтруктураДанныхОрганизации;
ЭтоИностраннаяОрганизация = ЭтоИностраннаяОрганизация(Организация);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеЮрАдреса(ПриОткрытии = Ложь)
РезультатПроверки = ПроверитьЮрАдрес(,Ложь);
СкрыватьПриИнтеграцииСБанком = НЕ РезультатПроверки.ЕстьОшибка И ЭтоИнтеграцияСБанком;
СкрыватьПриКопировании = ДанныеОрганизацииЗаполненыКопированием И ЗначениеЗаполнено(АдресЮридическийЗначение) И ПриОткрытии;
СкрыватьДляЮрЛица =
НЕ РезультатПроверки.ЕстьОшибка
И ЭтоЮридическоеЛицо
И (Доступен1СКонтрагент ИЛИ СкрыватьПриКопировании);
ЮрАдресВРасширенныхНастройках =
СкрыватьДляЮрЛица
ИЛИ СкрыватьПриИнтеграцииСБанком
ИЛИ ЭтоОткрытиеСВыбраннойЭЦП И НЕ РезультатПроверки.ЕстьОшибка;
Если ЮрАдресВРасширенныхНастройках Тогда
Элементы.ГруппаЮрАдрес.Видимость = Ложь;
Иначе
Если ЭтоЮридическоеЛицо Тогда
Элементы.ЗаголовокЮрАдрес.Заголовок = НСтр("ru = 'Юридический адрес:'");
Иначе
Элементы.ЗаголовокЮрАдрес.Заголовок = НСтр("ru = 'Адрес регистрации:'");
КонецЕсли;
АдресЮридический = СтрЗаменить(АдресЮридическийПредставление, ",", "");
АдресЮридический = СтрЗаменить(АдресЮридический, НСтр("ru = 'Заполнить'"), "");
Элементы.ГруппаЮрАдрес.Видимость = Истина;
Если ЗначениеЗаполнено(АдресЮридический) Тогда
Элементы.АдресЮридическийПредставление.ЦветТекста = Новый Цвет;
Элементы.АдресЮридическийПредставление.Заголовок = АдресЮридическийПредставление;
Иначе
Элементы.АдресЮридическийПредставление.Заголовок = НСтр("ru = 'Заполнить'");
Элементы.АдресЮридическийПредставление.ЦветТекста = КрасныйЦвет;
КонецЕсли;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаЮрАдреса,
РезультатПроверки);
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКраткогоНаименования()
РезультатПроверки = ПроверитьКраткоеНаименование(, Ложь);
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаКраткоеНаименование,
РезультатПроверки);
Элементы.ГруппаКраткоеНаименование.Видимость =
ОбработкаЗаявленийАбонента.НаименованиеПустое(ЭтотОбъект)
ИЛИ ЗначениеЗаполнено(РезультатПроверки.ТекстОшибки);
Если ЗапретитьИзменение Тогда
Элементы.ГруппаКраткоеНаименование.Доступность = Ложь;
КонецЕсли;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКПП()
Если ПоказыватьКПП Тогда
РезультатПроверки = ПроверитьКПП(ЭтотОбъект,, Ложь);
Элементы.ПроверкаКПП.Заголовок = ?(РезультатПроверки.Пустой, "", РезультатПроверки.ТекстОшибки);
Элементы.ГруппаКПП.Видимость = Истина;
Иначе
Элементы.ГруппаКПП.Видимость = Ложь;
КонецЕсли;
Если ЗапретитьИзменение Тогда
Элементы.ГруппаКПП.Доступность = Ложь;
КонецЕсли;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеТехническойИнформации(Форма)
Форма.Элементы.ГруппаТехническаяИнформация.Видимость = Форма.ЗапретитьИзменение;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеВладельцаЭЦПДолжность(Форма)
Элементы = Форма.Элементы;
ИздатьНовый = Форма.СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
БратьИз1СКонтрагента =
Форма.ЭтоЮридическоеЛицо
И Форма.Доступен1СКонтрагент
И ЭтоРуководитель(Форма);
Элементы.ГруппаВладелецЭЦПДолжность.Видимость =
НЕ БратьИз1СКонтрагента
И Форма.ЭтоЮридическоеЛицо
И ИздатьНовый
И НЕ Форма.ВладелецЭЦПЭтоФизЛицо;
Если Форма.ЗапретитьИзменение Тогда
Элементы.ВладелецЭЦПДолжность.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьМобильныйТелефон()
ПолучатьСМСУведомления = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзБазы(ДанныеОрганизацииИОтветственныхЛиц, ИННОрганизации = "")
Если ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ПустаяСсылка") Тогда
ВладелецЭЦПТип = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель");
КонецЕсли;
ОпределитьОтветственныеЛицаОрганизации();
ЭтоЮридическоеЛицо = ДанныеОрганизации.ТипОрганизации;
ВзятьИзБазыИлиИзСертификата(
КраткоеНаименование,
ДанныеОрганизации.КраткоеНаименование,
КраткоеНаименование_ИзСертификата);
Если ЭтоОткрытиеСВыбраннойЭЦП Тогда
ЭтоБюджетополучатель = ЭтоБюджетополучатель_ИзСертификата;
ИначеЕсли НЕ ДанныеОрганизацииЗаполненыКопированием И ЭтоЮридическоеЛицо Тогда
ЭтоБюджетополучатель = ДанныеОрганизации.ЭтоБюджетополучатель;
КонецЕсли;
ПоказыватьКраткоеНаименование =
ОбработкаЗаявленийАбонента.НаименованиеПустое(ЭтотОбъект)
И НЕ (ЭтоОткрытиеСВыбраннойЭЦП И ЗначениеЗаполнено(КраткоеНаименование_ИзСертификата));
КПП = ДанныеОрганизации.КППЮЛ;
Если ЭтоЮридическоеЛицо Тогда
ПоказыватьКПП = НЕ ЗначениеЗаполнено(СокрЛП(КПП));
Иначе
ПоказыватьКПП = Ложь;
КонецЕсли;
ВзятьИзБазыИлиИзСертификата(
ОГРН,
ДанныеОрганизации.ОГРН,
ОГРН_ИзСертификата);
РегНомерПФР = ДанныеОрганизации.РегНомПФР;
РегНомерСФР = ДанныеОрганизации.РегНомСФР;
ТелефонОсновной = ДанныеОрганизации.ТелОрганизации;
ВзятьИзБазыИлиИзСертификата(
ЭлектроннаяПочтаОрганизации,
ДанныеОрганизации.ЭлектроннаяПочта,
ЭлектроннаяПочта_ИзСертификата);
Если ИННОрганизации = "" Тогда
ИНН = ДанныеОрганизации.ИННЮЛ;
ПоказыватьИНН = НЕ ЗначениеЗаполнено(СокрЛП(ИНН));
КонецЕсли;
АдресЮридическийЗначение = ДанныеОрганизацииИОтветственныхЛиц.АдресЮридическийЗначение;
АдресЮридическийПредставление = ДанныеОрганизацииИОтветственныхЛиц.АдресЮридическийПредставление;
АдресФактическийЗначение = ДанныеОрганизацииИОтветственныхЛиц.АдресФактическийЗначение;
АдресФактическийПредставление = ДанныеОрганизацииИОтветственныхЛиц.АдресФактическийПредставление;
ИнициализироватьФактическийАдрес();
Если ЭтоЮридическоеЛицо Тогда
ПризнакОбособленногоПодразделения = ДанныеОрганизации.ПризнакОбособленногоПодразделения;
КонецЕсли;
КодРегиона = КодРегионаПоАдресу(АдресЮридическийЗначение);
Если ЭтоОткрытиеСВыбраннойЭЦП
И НЕ ЗначениеЗаполнено(КодРегиона)
И ЗначениеЗаполнено(КодРегиона_ИзСертификата) Тогда
КодРегиона = КодРегиона_ИзСертификата;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВзятьИзБазыИлиИзСертификата(Приемник, ИсточникИзБазы = Неопределено, Источник_ИзСертификата)
Если ЗначениеЗаполнено(ИсточникИзБазы) Тогда
Приемник = ИсточникИзБазы;
ИначеЕсли ЭтоОткрытиеСВыбраннойЭЦП И ЗначениеЗаполнено(Источник_ИзСертификата) Тогда
Приемник = Источник_ИзСертификата;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция КодПФР(РеквизитыОрганизации = Неопределено)
Если РеквизитыОрганизации = Неопределено Тогда
РеквизитыОрганизации = ДанныеОрганизации;
КонецЕсли;
ПолученыйКодПФР = "";
Если (ПустаяСтрока(РеквизитыОрганизации.КодОрганаПФР)
ИЛИ СтрДлина(РеквизитыОрганизации.КодОрганаПФР) < 7)
И ЗначениеЗаполнено(РеквизитыОрганизации.РегНомПФР) Тогда
ПолученыйКодПФР = Лев(РеквизитыОрганизации.РегНомПФР,7);
ИначеЕсли ЗначениеЗаполнено(РеквизитыОрганизации.КодОрганаПФР) Тогда
ПолученыйКодПФР = РеквизитыОрганизации.КодОрганаПФР;
ИначеЕсли ЗначениеЗаполнено(КодПФР_БИП) Тогда
ПолученыйКодПФР = КодПФР_БИП;
КонецЕсли;
Возврат ПолученыйКодПФР;
КонецФункции
&НаСервере
Функция КодРегионаПоАдресу(Адрес)
Возврат ОбработкаЗаявленийАбонента.КодРегионаПоАдресу(Адрес)
КонецФункции
&НаСервере
Процедура ИнициализироватьНаправления()
ОпределитьПодключаемыеНаправленияСдачиОтчетности();
Если ЭтоМультиРежимИсходный Тогда
Результат = ОбработкаЗаявленийАбонента.ИнициализироватьИсходныеГосОрганыУчетнойЗаписи(
ЭтотОбъект,
ПолучателиФНС,
ПолучателиФСГС);
СписокСвойств = Мультирежим.РезультатВыбораНаправлений();
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат, СписокСвойств);
Иначе
Если ПредыдущиеУчетныеЗаписи.Количество() > 0 Тогда
ИнициализироватьНаправления_БС();
Иначе
ВосстановитьНаправленияПоУмолчаниюФНС();
ВосстановитьНаправленияПоУмолчаниюФСГС();
КодРегионаФСРАР = КодРегиона;
КодПФР = КодПФР(ДанныеОрганизации);
КонецЕсли;
КонецЕсли;
ИзменитьОформлениеНаправлений();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеНаправлений() Экспорт
Мультирежим.ИзменитьОформлениеНаправленийВГлавномОкне(ЭтотОбъект);
Элементы.ЗаголовокНаправления.Заголовок = Мультирежим.ЗаголовокГосОрганов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОпределитьПодключаемыеНаправленияСдачиОтчетности(ЭтоСкопированоеЗаявление = Ложь)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ОпределитьПодключаемыеНаправленияСдачиОтчетности(ЭтотОбъект, ЭтоСкопированоеЗаявление);
СкорректироватьОрганыДляТарифов();
КонецПроцедуры
&НаСервере
Функция ДобавитьВсеНаправленияФНС()
Возврат ОбработкаЗаявленийАбонента.ВсеНаправленияФНС(Организация);
КонецФункции
&НаСервере
Процедура ВосстановитьНаправленияПоУмолчаниюФНС()
ПолучателиФНС.Очистить();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Если ЗначениеЗаполнено(ДанныеОрганизации.КодНО) Тогда
КонтекстЭДОСервер.НовоеНаправление(ПолучателиФНС, ФНС, ДанныеОрганизации.КодНО, КПП);
КонецЕсли;
ВсеНаправленияФНС = ДобавитьВсеНаправленияФНС();
Для каждого НаправлениеФНС Из ВсеНаправленияФНС Цикл
КонтекстЭДОСервер.НовоеНаправление(ПолучателиФНС, ФНС, НаправлениеФНС.Код, НаправлениеФНС.КПП);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВосстановитьНаправленияПоУмолчаниюФСГС()
ПолучателиФСГС.Очистить();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КодРегиона = КодРегионаПоАдресу(АдресЮридическийЗначение);
Если НЕ ЗначениеЗаполнено(КодРегиона) Тогда
КодРегиона = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(АдресЮридическийПредставление).Регион;
КонецЕсли;
КодОрганаФСГС = КонтекстЭДОСервер.ТОГСПоРегиону(КодРегиона, Спецоператор);
Если НЕ ЗначениеЗаполнено(КодОрганаФСГС) И НЕ ПустаяСтрока(ДанныеОрганизации.КодОрганаФСГС) Тогда
КодОрганаФСГС = ДанныеОрганизации.КодОрганаФСГС;
КонецЕсли;
Если ИспользуетсяРежимТестирования Тогда
КодОрганаФСГС = "00-00";
КонецЕсли;
Если ЗначениеЗаполнено(КодОрганаФСГС) Тогда
ДобавитьНовоеНаправлениеФСГСПоКодуОрганаФСГС(КодОрганаФСГС);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьНовоеНаправлениеФСГСПоКодуОрганаФСГС(КодОрганаФСГС)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
НаименованиеФСГС = КонтекстЭДОСервер.НаименованиеТОГСаПоКоду(КодОрганаФСГС, Спецоператор);
КонтекстЭДОСервер.НовоеНаправление(
ПолучателиФСГС,
ФСГС,
КодОрганаФСГС,
,
НаименованиеФСГС);
КонецПроцедуры
&НаСервере
Процедура ОчиститьРеквизитыФормы(ИННОрганизации = "")
ОбработкаЗаявленийАбонента.ОчиститьРеквизитыЗаявления(ЭтотОбъект, ИННОрганизации);
КонецПроцедуры
&НаСервере
Процедура ОчиститьДанныеВладельца() Экспорт
ОбработкаЗаявленийАбонента.ОчиститьДанныеВладельцаВЗаявленииНаПодключение(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОчиститьДанныеИзСертификата() Экспорт
РеквизитыФормы = ПолучитьРеквизиты();
Для каждого РеквизитФормы Из РеквизитыФормы Цикл
Имя = РеквизитФормы.Имя;
ОчиститьРеквизит = СтрНайти(Имя, "_ИзСертификата") <> 0;
Если ОчиститьРеквизит Тогда
ЭтотОбъект[Имя] = Неопределено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ДействияДляСкопированногоЗаявления()
ЗаявлениеСозданоКопированием = Истина;
ДанныеОрганизацииЗаполненыКопированием = Истина;
ДанныеВладельцаЭЦПЗаполненыКопированием = Истина;
Организация = Реквизит.Организация;
Если НЕ ОрганизацияЗаполнена() Тогда
ОткрытьНаНачальнойСтранице(Истина);
УправлениеФормой(Истина);
Возврат;
КонецЕсли;
ДействияДляСкопированногоЗаявления_ЗаполнитьДанныеОрганизации();
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления();
Если НЕ ИННОрганизацииЗаполнен(Истина) Тогда
Возврат;
КонецЕсли;
ДействияДляСкопированногоЗаявления_ЗаполнитьСвойстваВладельцаЭЦП();
Если НЕ ЗапретитьИзменение Тогда
ЗаполнитьЗаявлениеДаннымиИз1СКонтрагент();
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", Истина);
ПриИзмененииВключаемогоСертификатаСервер(ДополнительныеПараметры);
ИзменитьЗаголовокФормы();
КонецПроцедуры
&НаСервере
Процедура ДействияДляСкопированногоЗаявления_ЗаполнитьСвойстваВладельцаЭЦП()
ОпределитьОтветственныеЛицаОрганизации();
Если ЗначениеЗаполнено(ВладелецЭЦП) Тогда
Если ЭтоРуководитель(ЭтотОбъект) И Руководитель <> ВладелецЭЦП
ИЛИ ЭтоБухгалтер(ЭтотОбъект) И ГлБухгалтер <> ВладелецЭЦП Тогда
ДанныеВладельцаЭЦПЗаполненыКопированием = Ложь;
ИначеЕсли ЭтоДругойСотрудник(ЭтотОбъект) Тогда
ДругойСотрудник = ВладелецЭЦП;
КонецЕсли;
Иначе
ДанныеВладельцаЭЦПЗаполненыКопированием = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДействияДляСкопированногоЗаявления_ЗаполнитьДанныеОрганизации()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СтруктураРеквизитов = Новый Структура();
СтруктураРеквизитов.Вставить("Организация", ?(ЗначениеЗаполнено(Организация),Организация,Неопределено));
СтруктураРеквизитов.Вставить("ПриОткрытии", Истина);
СтруктураРеквизитов.Вставить("АдресЮридический",);
СтруктураРеквизитов.Вставить("АдресФактический",);
КонтекстЭДОСервер.ЗаполнитьДанныеОрганизации(СтруктураРеквизитов);
ДанныеОрганизацииИОтветственныхЛиц = КонтекстЭДОСервер.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(СтруктураРеквизитов);
Если ДанныеОрганизацииИОтветственныхЛиц.Свойство("СтруктураДанныхОрганизации") Тогда
ДанныеОрганизации = ДанныеОрганизацииИОтветственныхЛиц.СтруктураДанныхОрганизации;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОрганизацияЗаполнена()
Если ЗначениеЗаполнено(Организация) Тогда
Возврат Истина;
Иначе
Если ИспользуетсяОднаОрганизация И НЕ ЗначениеЗаполнено(Организация) Тогда
ПрограммноеЗакрытие = Истина;
Элементы.НадписьОбОтсутствииОрганизации.Заголовок = НСтр("ru = 'Перед началом подключения создайте организацию, которую требуется подключить к 1С-Отчетности'");
КонецЕсли;
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеИНН(ЭтоИзменениеИНН = Ложь)
Если ПоказыватьИНН И ИНН = "" Тогда
ЭтотОбъект.ТекущийЭлемент = Элементы.ИНН;
КонецЕсли;
Элементы.ГруппаИНН.Видимость = ПоказыватьИНН;
ИННКорректный = Истина;
РезультатПроверки = ПроверитьИНН(ЭтотОбъект, ИННКорректный, Ложь);
ПоказыватьПредпросмотрНаименования = ЭтоИзменениеИНН И ИННКорректный;
ОткрытьПоляЗаявления = НЕ ЭтоИзменениеИНН И (ИННКорректный И ПоказыватьИНН ИЛИ НЕ ПоказыватьИНН);
Элементы.ГруппаСведенияОрганизации.Видимость = ОткрытьПоляЗаявления;
Элементы.ГруппаВладелецСканыИПодписание.Видимость = ОткрытьПоляЗаявления;
Элементы.ГруппаПодписаниеИОтправка.Видимость = ОткрытьПоляЗаявления;
Если ОткрытьПоляЗаявления Тогда
Элементы.Отправить.КнопкаПоУмолчанию = Истина;
Иначе
Элементы.Заполнить.КнопкаПоУмолчанию = Истина;
КонецЕсли;
Если НЕ ПоказыватьИНН Тогда
Возврат;
КонецЕсли;
Если ЗапретитьИзменение Тогда
Элементы.ИНН.ТолькоПросмотр = Истина;
Элементы.Заполнить.Видимость = Ложь;
Возврат;
КонецЕсли;
Если ИспользуетсяОднаОрганизация И НЕ ЗначениеЗаполнено(ИНН) Тогда
Элементы.ЗаголовокИНН.Заголовок = НСтр("ru = 'Укажите ИНН вашей организации:'");
КонецЕсли;
Если ИспользуетсяОднаОрганизация Тогда
Элементы.ЗаголовокИНН.Шрифт = Новый Шрифт(Элементы.ЗаголовокИНН.Шрифт,,,Истина);
Иначе
Элементы.ЗаголовокИНН.Шрифт = Новый Шрифт(Элементы.ЗаголовокИНН.Шрифт,,,Ложь);
КонецЕсли;
Если РезультатПроверки.ЕстьОшибка Тогда
Если РезультатПроверки.Пустой Тогда
Элементы.ГруппаИННКомментарий.Видимость = Ложь;
Иначе
Элементы.ИННКомментарий.Заголовок = РезультатПроверки.ТекстОшибки;
Элементы.ИННКомментарий.ЦветТекста = КрасныйЦвет;
Элементы.ГруппаИННКомментарий.Видимость = Истина;
КонецЕсли;
ИначеЕсли ПоказыватьПредпросмотрНаименования Тогда
Если ПризнакОбособленногоПодразделения Тогда
Возврат;
КонецЕсли;
РеквизитыКонтрагента = ОбработкаЗаявленийАбонентаПовтИсп.РеквизитыКонтрагента(ИНН);
Если РеквизитыКонтрагента = Неопределено Тогда
Элементы.ИННКомментарий.Заголовок = "";
Возврат;
КонецЕсли;
Элементы.ИННКомментарий.Заголовок = СокращенноеНаименование(РеквизитыКонтрагента.НаименованиеСокращенное);
Элементы.ИННКомментарий.ЦветТекста = СерыйЦвет;
Элементы.ГруппаИННКомментарий.Видимость = Истина;
Иначе
Элементы.ГруппаИННКомментарий.Видимость = Ложь;
КонецЕсли;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПроверитьИНН(Форма, МастерДалее = Истина, ВыводитьСообщения = Истина)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьИНН(Форма, МастерДалее, ВыводитьСообщения);
КонецФункции
&НаСервере
Функция ИННОрганизацииЗаполнен(ПриОткрытии = Ложь)
ПроверкаПройдена = Истина;
ТекстОшибки = "";
ИННКорректный = Истина;
РезультатПроверки = ПроверитьИНН(ЭтотОбъект, ИННКорректный, Ложь);
Если НЕ ИННКорректный Тогда
ПроверкаПройдена = Ложь;
ПоказыватьИНН = Истина;
ИзменитьОформлениеИНН(Истина);
Элементы.ИНН.ОбновитьТекстРедактирования();
УправлениеФормой(ПриОткрытии);
КонецЕсли;
Возврат ПроверкаПройдена;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеОрганизации(ПриОткрытии = Ложь)
Белый = Новый Цвет(255, 255, 255);
Если ЗапретитьИзменение ИЛИ ЭтоБыстрыйСтарт Тогда
Элементы.РамкаОрганизации.ЦветФона = Белый;
Элементы.Организация.ТолькоПросмотр = ЗапретитьИзменение;
ИначеЕсли ЭтоИнтеграцияСБанком Тогда
Элементы.РамкаОрганизации.ЦветФона = Белый;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОпределитьОтветственныеЛицаОрганизации()
Руководитель = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.Руководитель(Организация);
ГлБухгалтер = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.ГлБухгалтер(Организация);
КонецПроцедуры
&НаСервере
Процедура ИзменитьЗаголовокФормы()
ОтображатьВРежимеБС = ОтображатьВРежимеБС(ЭтотОбъект);
Если ОтображатьВРежимеБС Тогда
Заголовок = НСтр("ru = 'Первый запуск'");
Иначе
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ДобавитьОрганизациюВЗаголовок(
ЭтотОбъект.Заголовок,
ИспользуетсяОднаОрганизация,
КраткоеНаименование,
НСтр("ru = 'Подключение к 1С-Отчетности'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЭтоИностраннаяОрганизация(Организация)
Возврат ИнтерфейсыВзаимодействияБРО.ЭтоИностраннаяОрганизацияПоИНН(Организация);
КонецФункции
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления()
Мультирежим.ИнициализироватьМультирежим(ЭтотОбъект);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Разное();
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Организация();
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ВладелецЭП(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Криптография();
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ОблачнаяПодпись(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ЭПВОблаке(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Адреса(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Направления(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Пользователи(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_1СЭДО(Реквизит);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Документы();
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_БС(Реквизит);
Если ЭтоОткрытиеЗаявления Тогда
ЗначениеВРеквизитФормы(Реквизит.ПолучитьОбъект(), "ДокументЗаявление");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Разное()
Если ЗапрашиватьРегНомер ИЛИ ЗапретитьИзменение Тогда
НомерОсновнойПоставки1с = Реквизит.НомерОсновнойПоставки1с;
КонецЕсли;
Статусы = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи;
ЗапретитьИзменение =
ЭтоОткрытиеЗаявления
И Реквизит.Статус <> Статусы.ПустаяСсылка()
И Реквизит.Статус <> Статусы.Подготовлено;
УЦ = Реквизит.УдостоверяющийЦентр;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_БС(Реквизит)
ЭтоБыстрыйСтарт = Реквизит.ЭтоБыстрыйСтарт;
ЕстьПредыдущиеУчетныеЗаписи = Реквизит.ЕстьПредыдущиеУчетныеЗаписи;
ПредыдущиеУчетныеЗаписи = Реквизит.ПредыдущиеУчетныеЗаписи.Получить();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Организация()
Организация = Реквизит.Организация;
КраткоеНаименование = Реквизит.КраткоеНаименование;
ИНН = Реквизит.ИНН;
КПП = Реквизит.КПП;
ПризнакОбособленногоПодразделения = Реквизит.ПризнакОбособленногоПодразделения;
ТелефонОсновной = Реквизит.ТелефонОсновной;
ЭлектроннаяПочта = Реквизит.ЭлектроннаяПочта;
ЭтоЮридическоеЛицо = Реквизит.ТипОрганизации;
ОГРН = Реквизит.ОГРН;
КодРегиона = КодРегионаПоАдресу(АдресЮридическийЗначение);
ЭтоНотариусАдвокатИлиГКФХ = Реквизит.ЭтоНотариусАдвокатИлиГКФХ;
ЭтоБюджетополучатель = Реквизит.ЭтоБюджетополучатель;
ЭтоИностраннаяОрганизация = ЭтоИностраннаяОрганизация(Организация);
ЭлектроннаяПочтаОрганизации = Реквизит.ЭлектроннаяПочтаОрганизации;
ПоказыватьИНН = НЕ ЗначениеЗаполнено(СокрЛП(ИНН));
ПоказыватьКраткоеНаименование = ОбработкаЗаявленийАбонента.НаименованиеПустое(ЭтотОбъект);
ИПИспользуетТрудНаемныхРаботников = РегламентированнаяОтчетность.ИПИспользуетТрудНаемныхРаботников(Организация);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Криптография()
Спецоператор = Реквизит.СпецоператорСвязи;
СпецоператорСвязи = Спецоператор;
ВключатьЛицензиюКриптоПроВСертификат = Реквизит.ВключитьЛицензиюКриптоПро;
СертификатИзКопии = Реквизит.РеквизитыСертификата.Получить();
ЭтоЭлектронноеПодписаниеИзКопии = Реквизит.ПодписатьЭП;
СпособПолученияСертификата = Реквизит.СпособПолученияСертификата;
ЭтоСертификатДругогоУЦ = Реквизит.ЭтоСертификатДругогоУЦ;
ЭтоОткрытиеСВыбраннойЭЦП = Реквизит.ЭтоОткрытиеСВыбраннойЭЦП;
Если НЕ ЭтоОткрытиеЗаявления И СертификатДолженБытьПолученОтГосУЦ Тогда
СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИспользоватьСуществующий");
КонецЕсли;
Если ЭтоОткрытиеЗаявления Тогда
Статусы = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи;
Если Реквизит.Статус <> Статусы.ПустаяСсылка()
И Реквизит.Статус <> Статусы.Подготовлено Тогда
СертификатДляПодписания = СертификатИзКопии;
КонецЕсли;
КонецЕсли;
ДоступнаЭлектроннаяПодписьВМоделиСервиса = ОбработкаЗаявленийАбонента.ДоступнаЭлектроннаяПодписьВМоделиСервиса(ЭтотОбъект);
ПереинициализироватьДоступностьОблака =
НЕ ЭтоОткрытиеЗаявления
И ДоступнаЭлектроннаяПодписьВМоделиСервиса
И СертификатДолженБытьПолученОтГосУЦ;
Если ПереинициализироватьДоступностьОблака Тогда
ИнициализацияДляЭПВМоделиСервиса();
КонецЕсли;
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
ВключаемыйСертификат = СертификатИзКопии;
ВключаемыйСертификатОблачный = РежимРаботыСКлючамиИзКопии = 1;
Если ВключаемыйСертификатОблачный И НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса Тогда
СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИздатьНовый;
ВключаемыйСертификат = Неопределено;
ЭтоСертификатДругогоУЦ = Ложь;
ВключаемыйСертификатОблачный = Ложь;
КонецЕсли;
ПолучитьДанныеОрганизацииИВладельца_ИзСертификата(ЭтотОбъект, ВключаемыйСертификат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ЭПВОблаке(Реквизит)
РежимРаботыСКлючами = ПолучитьМодельХраненияКлюча(МестоХраненияКлюча);
РежимРаботыСКлючамиИзКопии = РежимРаботыСКлючами;
Если КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
ИдентификаторПроверкиТелефонаДляПаролейИзКопии = Реквизит.ИдентификаторПроверкиТелефонаДляПаролей;
ИдентификаторПроверкиЭлектроннойПочтыДляПаролейИзКопии = Реквизит.ИдентификаторПроверкиЭлектроннойПочтыДляПаролей;
КонецЕсли;
ТелефонМобильныйДляПаролей = Реквизит.ТелефонМобильныйДляАвторизации;
ТелефонДляПаролейИзКопии = Реквизит.ТелефонМобильныйДляАвторизации;
ЭлектроннаяПочтаДляПаролей = ЭлектроннаяПочта;
ЭлектроннаяПочтаДляПаролейИзКопии = ЭлектроннаяПочта;
СпособПодтвержденияКриптоопераций = ?(ЗначениеЗаполнено(Реквизит.СпособПодтвержденияКриптоопераций),
Реквизит.СпособПодтвержденияКриптоопераций,
Перечисления.СпособыПодтвержденияКриптоопераций.СессионныйТокен);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ВладелецЭП(Реквизит)
ОбработкаЗаявленийАбонента.СкопироватьРеквизитыВладельцаИзИсходногоЗаявления(ЭтотОбъект, Реквизит);
ИННВладельцаБылКорректным = НЕ ЕстьОшибкаВИННВладельца(ЭтотОбъект);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ВладелецЭЦПВидДокумента = КонтекстЭДОСервер.СкорректироватьВидУдостоверения(ВладелецЭЦПВидДокумента);
Если ЗначениеЗаполнено(ВладелецЭЦПВидДокумента) Тогда
ВладелецЭЦПСерияДокумента = Реквизит.ВладелецЭЦПСерияДокумента;
ВладелецЭЦПНомерДокумента = Реквизит.ВладелецЭЦПНомерДокумента;
ВладелецЭЦПДатаВыдачиДокумента = Реквизит.ВладелецЭЦПДатаВыдачиДокумента;
ВладелецЭЦПКемВыданДокумент = Реквизит.ВладелецЭЦПКемВыданДокумент;
ВладелецЭЦПДатаРождения = Реквизит.ВладелецЭЦПДатаРождения;
ВладелецЭЦПМестоРождения = Реквизит.ВладелецЭЦПМестоРождения;
ВладелецЭЦПКодПодразделения = Реквизит.ВладелецЭЦПКодПодразделения;
ВладелецЭЦППол = Реквизит.ВладелецЭЦППол;
ВладелецЭЦПГражданство = Реквизит.ВладелецЭЦПГражданство;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Адреса(Реквизит)
Результат = ОбработкаЗаявленийАбонента.АдресИзСкопированногоЗаявления(Реквизит);
АдресЮридическийЗначение = Результат.АдресЮридическийЗначение;
АдресЮридическийПредставление = Результат.АдресЮридическийПредставление;
АдресФактическийЗначение = Результат.АдресФактическийЗначение;
АдресФактическийПредставление = Результат.АдресФактическийПредставление;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_1СЭДО(Реквизит)
ИнициализироватьПараметрыЭДО(Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Пользователи(Реквизит)
ОбработкаЗаявленийАбонента.ЗаполнитьТаблицуПользователейИзКопии(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Направления(Реквизит)
КодРегионаФСРАР = Реквизит.КодРегионаФСРАР;
ПолучателиФНС.Очистить();
ПолучателиФСГС.Очистить();
Для Каждого СтрокаНаправления из Реквизит.Получатели цикл
Если СтрокаНаправления.ТипПолучателя = ФНС Тогда
СдаватьВФНС = Истина;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.НовоеНаправление(ПолучателиФНС, ФНС, СтрокаНаправления.КодПолучателя, СтрокаНаправления.КПП);
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ПФР") Тогда
СдаватьВПФР = Истина;
КодПФР = СтрокаНаправления.КодПолучателя;
РегНомерПФР = Реквизит.РегНомерПФР;
РегНомерСФР = Реквизит.РегНомерСФР;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
СдаватьВФСС = Истина;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ФСГС Тогда
СдаватьВРосстат = Истина;
ДобавитьНовоеНаправлениеФСГСПоКодуОрганаФСГС(СтрокаНаправления.КодПолучателя);
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ЦБ")
И ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() Тогда
СдаватьВЦБ = Истина;
КонецЕсли;
КонецЦикла;
ПодатьЗаявкуНаСертификатДляФСРАР = Реквизит.ПодатьЗаявкуНаСертификатДляФСРАР;
ПодатьЗаявкуНаПодключениеРПН = Реквизит.ПодатьЗаявкуНаПодключениеРПН;
ПодатьЗаявкуНаПодключениеФТС = Реквизит.ПодатьЗаявкуНаПодключениеФТС;
ОпределитьПодключаемыеНаправленияСдачиОтчетности(Истина);
ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_НеподключенныеНаправления(Реквизит);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_НеподключенныеНаправления(Реквизит)
Если ПризнакПоддержкиФНС И НЕ СдаватьВФНС Тогда
ВосстановитьНаправленияПоУмолчаниюФНС();
КонецЕсли;
Если ПризнакПоддержкиРосстат И НЕ СдаватьВРосстат Тогда
ВосстановитьНаправленияПоУмолчаниюФСГС();
КонецЕсли;
Если ПризнакПоддержкиПФР И НЕ СдаватьВПФР Тогда
РегНомерПФР = ДанныеОрганизации.РегНомПФР;
РегНомерСФР = ДанныеОрганизации.РегНомСФР;
КодПФР = КодПФР(ДанныеОрганизации);
КонецЕсли;
Если ПризнакПоддержкиФСРАР И НЕ ПодатьЗаявкуНаСертификатДляФСРАР Тогда
КодРегионаФСРАР = КодРегиона;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_Документы()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ЗаполнитьДокументыИзСкопированногоЗаявления(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИнициализацияДляЭПВМоделиСервиса() Экспорт
ОбработкаЗаявленийАбонента.ИнициализацияДляЭПВМоделиСервиса(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКоманднойПанели()
Статус = ДокументЗаявление.Статус;
Подготовлено = Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Подготовлено;
Элементы.ОсновнаяПанель.Видимость = ЗапретитьИзменение;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.УстановитьВидимостьМенюПФР(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеФормыПриСозданииНаСервереПриЗапретеИзменения()
Если ЗапретитьИзменение Тогда
ПрограммноеЗакрытие = Истина;
Элементы.ГруппаПодписаниеИОтправка.ВертикальноеПоложениеВГруппе = ВертикальноеПоложениеЭлемента.Авто;
ИзменитьОформлениеСпособаПодписания(ЭтотОбъект);
Элементы.ВыбратьВсе.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеЧтоДелатьДальше()
Если ЗапретитьИзменение Тогда
ЭтотОбъект.Прочитать();
КонецЕсли;
Элементы.ЧтоДелатьДальше.Видимость = ЗапретитьИзменение
И НЕ ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отклонено")
И НЕ ДокументЗаявление.НастройкаЗавершена;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПаспортныхДанных()
ИздатьНовый = СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
Элементы.ГруппаПаспортныеДанные.Видимость = ИздатьНовый;
ДанныеКорректны = Истина;
ПроверитьПаспортныеДанные(ДанныеКорректны, Ложь);
Подстроки = Новый Массив;
Подстроки.Добавить(ВладелецЭЦПВидДокумента);
Подстроки.Добавить(ВладелецЭЦПСерияДокумента);
Подстроки.Добавить(ВладелецЭЦПНомерДокумента);
Представление = СокрЛП(СтрСоединить(Подстроки, " "));
Если Представление = "" Тогда
Представление = НСтр("ru = 'Уточнить'");
КонецЕсли;
Если ДанныеКорректны Тогда
Элементы.ПаспортныеДанные.ЦветТекста = Новый Цвет();
Иначе
Элементы.ПаспортныеДанные.ЦветТекста = КрасныйЦвет;
КонецЕсли;
Элементы.ПаспортныеДанные.Заголовок = Представление;
РезультатПроверки = ПроверитьФИОВладельцаЭП(ЭтотОбъект,,Ложь);
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаУказательВладелецЭП,
РезультатПроверки);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеТарифа()
Если ЭтоРежимБесплатнойНулевойОтчетности Тогда
Если ЗначениеЗаполнено(Тариф) Тогда
Элементы.ВыбратьТариф.ЦветТекста = Новый Цвет();
Элементы.ВыбратьТариф.Заголовок = Тариф;
Иначе
Элементы.ВыбратьТариф.ЦветТекста = КрасныйЦвет;
Элементы.ВыбратьТариф.Заголовок = НСтр("ru = 'Выбрать'");
КонецЕсли;
Иначе
Элементы.ГруппаТариф.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаТарифа.Видимость =
ПоддерживаетсяМультирежим
И НЕ ЭтоБыстрыйСтарт
И НЕ ЭтоРежимОблачной1СО;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьОрганизацию()
Если ИспользуетсяОднаОрганизация Тогда
Организация = ОбработкаЗаявленийАбонента.ОрганизацияПоУмолчанию();
Иначе
Организация = ОрганизацияИзПараметра;
Если НЕ ЗначениеЗаполнено(Организация) И ЗначениеЗаполнено(Реквизит) Тогда
Организация = Реквизит.Организация;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРасширенныхНастроек(ПриОткрытии = Ложь)
ВыведенТолькоИНН = НЕ Элементы.ГруппаСведенияОрганизации.Видимость;
Если НЕ ЗначениеЗаполнено(Организация) ИЛИ ВыведенТолькоИНН Тогда
Элементы.РасширенныеНастройки.Видимость = Ложь;
Элементы.РасширенныеНастройкиДоп.Видимость = Ложь;
Иначе
Если ЭтоБыстрыйСтарт Тогда
АктивнаяНастройка = Элементы.РасширенныеНастройки_БС;
Элементы.РасширенныеНастройки.Видимость = Ложь;
Элементы.РасширенныеНастройкиДоп.Видимость = Ложь;
ИначеЕсли ИспользуетсяОднаОрганизация Тогда
АктивнаяНастройка = Элементы.РасширенныеНастройкиДоп;
Элементы.РасширенныеНастройки.Видимость = Ложь;
Иначе
АктивнаяНастройка = Элементы.РасширенныеНастройки;
Элементы.РасширенныеНастройкиДоп.Видимость = Ложь;
КонецЕсли;
АктивнаяНастройка.Видимость = Истина;
ЗаполненыКорректно = ПроверитьРасширенныеНастройки(, Ложь);
Если ЗаполненыКорректно Тогда
АктивнаяНастройка.ЦветТекста = Новый Цвет;
Иначе
АктивнаяНастройка.ЦветТекста = КрасныйЦвет;
КонецЕсли;
КонецЕсли;
Элементы.ГруппаРасширенныеНастройкиДоп.Видимость = Элементы.РасширенныеНастройкиДоп.Видимость;
КонецПроцедуры
#Область НулевкаИБизнесСтарт
&НаСервере
Процедура УстановитьНастройкиРежимаОграниченнойФункциональности()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.УстановитьНастройкиРежимаОграниченнойФункциональности(ЭтотОбъект);
Если ЭтоРежимБесплатнойНулевойОтчетности Тогда
ОпределитьТариф();
Если ЗначениеЗаполнено(Тариф) Тогда
Элементы.ГруппаТариф.Видимость = Ложь;
КонецЕсли;
Если Элементы.Заявление.Видимость Тогда
Элементы.Заявление.Гиперссылка = Ложь;
КонецЕсли;
КонецЕсли;
ЭтоИнтеграцияСБанком = ОбработкаЗаявленийАбонента.ЭтоИнтеграцияСБанком();
КонецПроцедуры
#КонецОбласти
#Область ЭПВОблаке
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПеременныеДляПроверкиТелефона(Форма, ПриОткрытии = Ложь)
Если ПриОткрытии И Форма.ИдентификаторПроверкиТелефонаДляПаролейИзКопии <> "" Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиТелефонаДляОблака(Форма);
Форма.ПроверкаТелефонДляПаролей.Значение = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Форма.ТелефонДляПаролейИзКопии);
Форма.ПроверкаТелефонДляПаролей.ЗначениеВведено = Истина;
Форма.ПроверкаТелефонДляПаролей.ВыполняетсяПроверка = Ложь;
Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено = Истина;
Форма.ПроверкаТелефонДляПаролей.КодОтправлен = Истина;
Форма.ПроверкаТелефонДляПаролей.ИдентификаторПроверки = Форма.ИдентификаторПроверкиТелефонаДляПаролейИзКопии;
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиТелефонаДляОблака(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПеременныеДляПроверкиЭлектроннойПочты(Форма, ПриОткрытии = Ложь)
Если ПриОткрытии И Форма.ИдентификаторПроверкиЭлектроннойПочтыДляПаролейИзКопии <> "" Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиПочтыДляОблака(Форма);
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.Значение = СокрЛП(Форма.ЭлектроннаяПочтаДляПаролейИзКопии);
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено = Истина;
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка = Ложь;
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено = Истина;
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.КодОтправлен = Истина;
Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки = Форма.ИдентификаторПроверкиЭлектроннойПочтыДляПаролейИзКопии;
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиПочтыДляОблака(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОблако(Форма) Экспорт
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоОблако(Форма);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеТелефонаИПочтыДляПаролей(Форма)
Если Форма.ПроверкаТелефонДляПаролей = Неопределено
ИЛИ Форма.ПроверкаЭлектроннаяПочтаДляПаролей = Неопределено Тогда
Возврат;
КонецЕсли;
Элементы = Форма.Элементы;
ЭтоОблако = ЭтоОблако(Форма);
Элементы.ПроверитьНомер.Видимость =
ЭтоОблако
И Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Форма.ПроверкаТелефонДляПаролей.ЗначениеВведено
И Не Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено
И Не Форма.ПроверкаТелефонДляПаролей.ВыполняетсяПроверка
И НЕ Форма.ЗапретитьИзменение;
Элементы.КартинкаТелефонПроверен.Видимость =
ЭтоОблако
И НЕ Элементы.ПроверитьНомер.Видимость
И Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено;
Элементы.ГруппаКодПодтвержденияТелефон.Видимость =
ЭтоОблако
И Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Форма.ПроверкаТелефонДляПаролей.ВыполняетсяПроверка
И Не Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено;
Элементы.ОтправитьКодПовторноТелефон.Видимость =
Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Не Форма.ПроверкаТелефонДляПаролей.КодОтправлен;
Элементы.НадписьОбратногоОтсчетаТелефон.Видимость =
Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Форма.ПроверкаТелефонДляПаролей.КодОтправлен;
Элементы.ТелефонМобильныйДляПаролей.ТолькоПросмотр =
ЭтоОблако
И Форма.ПроверкаТелефонДляПаролей <> Неопределено
И Форма.ПроверкаТелефонДляПаролей.ЗначениеВведено
И Не Форма.ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено
И Форма.ПроверкаТелефонДляПаролей.ВыполняетсяПроверка
ИЛИ Форма.ЗапретитьИзменение;
Если ИспользоватьСуществующий(Форма) И НЕ Форма.ЭтоСертификатДругогоУЦ Тогда
Элементы.ТелефонМобильныйДляПаролей.АвтоОтметкаНезаполненного = Ложь;
Иначе
Элементы.ТелефонМобильныйДляПаролей.АвтоОтметкаНезаполненного = Истина;
КонецЕсли;
РезультатПроверки = ПроверитьТелефонВладельцаЭП(Форма,,Ложь);
ПоказатьОшибку = НЕ РезультатПроверки.Пустой И РезультатПроверки.ТекстОшибки <> "";
Элементы.ПроверкаТелефонаДляПаролей.Видимость = ПоказатьОшибку;
Если ПоказатьОшибку Тогда
Форма.ПроверкаТелефонаДляПаролей = РезультатПроверки.ТекстОшибки;
КонецЕсли;
Элементы.ПроверитьАдрес.Видимость = ЭтоОблако
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено
И Не Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено
И Не Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка
И НЕ Форма.ЗапретитьИзменение;
Элементы.КартинкаЭлектроннаяПочтаПроверена.Видимость =
ЭтоОблако
И НЕ Элементы.ПроверитьАдрес.Видимость
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено;
Элементы.ГруппаКодПодтвержденияЭлектроннаяПочта.Видимость =
ЭтоОблако
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка
И Не Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено;
Элементы.ОтправитьКодПовторноЭлектроннаяПочта.Видимость =
Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И НЕ Форма.ПроверкаЭлектроннаяПочтаДляПаролей.КодОтправлен;
Элементы.НадписьОбратногоОтсчетаЭлектроннаяПочта.Видимость =
Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.КодОтправлен;
Элементы.ЭлектроннаяПочтаДляПаролей.ТолькоПросмотр = ЭтоОблако
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей <> Неопределено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено
И Не Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено
И Форма.ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка
ИЛИ Форма.ЗапретитьИзменение;
РезультатПроверки = ПроверитьЭлПочтуВладельцаЭП(Форма,,Ложь);
ПоказатьОшибку = НЕ РезультатПроверки.Пустой И РезультатПроверки.ТекстОшибки <> "";
Элементы.ПроверкаЭлектроннойПочты.Видимость = ПоказатьОшибку;
Если ПоказатьОшибку Тогда
Форма.ПроверкаЭлектроннойПочты = РезультатПроверки.ТекстОшибки;
КонецЕсли;
Если ЭтоОблако(Форма) Тогда
Элементы.ПодсказкаДляТелефонаДляПаролей.Подсказка = НСтр("ru = 'На этот номер будут приходить SMS с паролем для отправки отчетности'");
Элементы.ПодсказкаЭлектроннаяПочтаДляПаролей.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
Иначе
Элементы.ПодсказкаДляТелефонаДляПаролей.Подсказка = НСтр("ru = 'Телефон используется:
|1. Для связи с пользователем в ходе подключения и использования 1С-Отчетности.
|2. Для получения SMS-уведомлений о статусе отправки отчетов и входящих сообщениях.'");
Элементы.ПодсказкаЭлектроннаяПочтаДляПаролей.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Если Форма.ЗапретитьИзменение Тогда
Элементы.ТелефонМобильныйДляПаролей.ОтметкаНезаполненного = Ложь;
Элементы.ЭлектроннаяПочтаДляПаролей.ОтметкаНезаполненного = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьКодПодтвержденияТелефонДляПаролей()
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьТелефонДляПаролей");
ОчиститьСообщения();
КодПодтвержденияТелефон = Неопределено;
Результат = ПроверитьНомерНаСервере(ТелефонМобильныйДляПаролей);
Если Результат.Выполнено Тогда
ТаймерТелефон = Результат.ЗадержкаПередПовторнойОтправкой;
ПроверкаТелефонДляПаролей.ИдентификаторПроверки = Результат.Идентификатор;
ПодключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаТелефон", 1, Истина);;
ПроверкаТелефонДляПаролей.ВыполняетсяПроверка = Истина;
ПроверкаТелефонДляПаролей.КодОтправлен = Истина;
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьПолеКодПодтвержденияТелефон", 0.1, Истина);
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.ОписаниеОшибки,, "ТелефонМобильныйДляПаролей");
КонецЕсли;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьКодПодтвержденияЭлектроннаяПочтаДляПаролей()
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаДляПаролей");
ОчиститьСообщения();
КодПодтвержденияПочта = Неопределено;
Результат = ПроверитьАдресНаСервере(ЭлектроннаяПочтаДляПаролей);
Если Результат.Выполнено Тогда
ТаймерПочта = Результат.ЗадержкаПередПовторнойОтправкой;
ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки = Результат.Идентификатор;
ПодключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаПочта", 1, Истина);
ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка = Истина;
ПроверкаЭлектроннаяПочтаДляПаролей.КодОтправлен = Истина;
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьПолеКодПодтвержденияЭлектроннаяПочта", 0.1, Истина);
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.ОписаниеОшибки,, "ЭлектроннаяПочтаДляПаролей");
КонецЕсли;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьНомерНаСервере(Телефон, Идентификатор = "")
Возврат МенеджерСервисаКриптографии.ПолучитьКодПроверкиТелефона(Телефон, Идентификатор);
КонецФункции
&НаСервереБезКонтекста
Функция ПроверитьАдресНаСервере(ЭлектроннаяПочта, Идентификатор = "")
Возврат МенеджерСервисаКриптографии.ПолучитьКодПроверкиЭлектроннойПочты(ЭлектроннаяПочта, Идентификатор);
КонецФункции
&НаСервереБезКонтекста
Функция ПроверитьТелефонПоКодуНаСервере(Идентификатор, КодПодтвержденияТелефон)
Возврат МенеджерСервисаКриптографии.ПроверитьТелефонПоКоду(Идентификатор, КодПодтвержденияТелефон);
КонецФункции
&НаСервереБезКонтекста
Функция ПроверитьЭлектроннуюПочтуПоКодуНаСервере(Идентификатор, КодПодтвержденияПочта)
Возврат МенеджерСервисаКриптографии.ПроверитьЭлектроннуюПочтуПоКоду(Идентификатор, КодПодтвержденияПочта);
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОбновитьЭлектроннаяПочтаДляПаролей()
Если ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено Тогда
Элементы.ЭлектроннаяПочтаДляПаролей.ОбновитьТекстРедактирования();
Если ЭтоОблако(ЭтотОбъект) Тогда
АктивироватьКнопкуПроверитьАдрес();
КонецЕсли;
КонецЕсли;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура АктивироватьКнопкуПроверитьАдрес()
ОтключитьОбработчикОжидания("Подключаемый_АктивироватьКнопкуПроверитьАдрес");
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьКнопкуПроверитьАдрес", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОбратногоОтсчетаТелефон()
ТаймерТелефон = ТаймерТелефон - 1;
Если ТаймерТелефон >= 0 Тогда
НадписьОбратногоОтсчетаТелефон = СтрШаблон(НСтр("ru = 'Запросить код повторно можно через %1 сек.'"), ТаймерТелефон);
ПодключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаТелефон", 1, Истина);
Иначе
НадписьОбратногоОтсчетаТелефон = "";
ПроверкаТелефонДляПаролей.КодОтправлен = Ложь;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОбратногоОтсчетаПочта()
ТаймерПочта = ТаймерПочта - 1;
Если ТаймерПочта >= 0 Тогда
НадписьОбратногоОтсчетаПочта = СтрШаблон(НСтр("ru = 'Запросить код повторно можно через %1 сек.'"), ТаймерПочта);
ПодключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаПочта", 1, Истина);
Иначе
НадписьОбратногоОтсчетаПочта = "";
ПроверкаЭлектроннаяПочтаДляПаролей.КодОтправлен = Ложь;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьПолеКодПодтвержденияТелефон()
ТекущийЭлемент = Элементы.КодПодтвержденияТелефон;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьПолеКодПодтвержденияЭлектроннаяПочта()
ТекущийЭлемент = Элементы.КодПодтвержденияЭлектроннаяПочта;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьКодПодтверждения()
ОчиститьСообщения();
КодПодтвержденияТелефон = СокрЛП(КодПодтвержденияТелефон);
КодПодтвержденияПочта = СокрЛП(КодПодтвержденияПочта);
Если СтрДлина(КодПодтвержденияТелефон) = 6 ИЛИ СтрДлина(КодПодтвержденияПочта) = 6 Тогда
Если ПроверкаТелефонДляПаролей.ВыполняетсяПроверка
И СтрДлина(КодПодтвержденияТелефон) = 6 Тогда
Результат = ПроверитьТелефонПоКодуНаСервере(
ПроверкаТелефонДляПаролей.ИдентификаторПроверки, КодПодтвержденияТелефон);
Если Результат.Выполнено Тогда
ПроверкаТелефонДляПаролей.Значение = ТелефонМобильныйДляПаролей;
ПроверкаТелефонДляПаролей.ВыполняетсяПроверка = Ложь;
ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено = Истина;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаТелефон");
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
ПерейтиКПодтверждениюПочты();
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.ОписаниеОшибки,, "КодПодтвержденияТелефон");
КонецЕсли;
КонецЕсли;
Если ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка
И СтрДлина(КодПодтвержденияПочта) = 6 Тогда
Результат = ПроверитьЭлектроннуюПочтуПоКодуНаСервере(
ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки, КодПодтвержденияПочта);
Если Результат.Выполнено Тогда
ПроверкаЭлектроннаяПочтаДляПаролей.Значение = ЭлектроннаяПочтаДляПаролей;
ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка = Ложь;
ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено = Истина;
ОтключитьОбработчикОжидания("Подключаемый_ОбработчикОбратногоОтсчетаПочта");
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.ОписаниеОшибки,, "КодПодтвержденияПочта");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКПодтверждениюПочты()
Если НЕ ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено Тогда
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьЭлектроннаяПочтаДляПаролей", 0.1, Истина);
ИначеЕсли ПроверкаЭлектроннаяПочтаДляПаролей.ВыполняетсяПроверка Тогда
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьПолеКодПодтвержденияЭлектроннаяПочта", 0.1, Истина);
ИначеЕсли НЕ ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено Тогда
АктивироватьКнопкуПроверитьАдрес();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьТелефонДляПаролей()
Если ПроверкаТелефонДляПаролей.ЗначениеВведено Тогда
Элементы.ТелефонМобильныйДляПаролей.ОбновитьТекстРедактирования();
Если ЭтоОблако(ЭтотОбъект) Тогда
ОтключитьОбработчикОжидания("Подключаемый_АктивироватьКнопкуПроверитьНомер");
ПодключитьОбработчикОжидания("Подключаемый_АктивироватьКнопкуПроверитьНомер", 0.1, Истина);
КонецЕсли;
КонецЕсли;
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
ИзменитьОформлениеРасширенныхНастроек();
ОбновитьМобильныйТелефонПоТелефонуДляПаролей();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьМобильныйТелефонПоТелефонуДляПаролей()
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьМобильныйТелефонПоТелефонуДляПаролей", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьМобильныйТелефонПоТелефонуДляПаролей()
Если ЭтоОблако(ЭтотОбъект) И ПроверкаТелефонДляПаролей.ЗначениеВведено Тогда
Если ЭтоРучноеИзменениеТелефона И ПолучатьСМСУведомления
И НЕ КонтекстЭДОКлиент.ТелефоныСовпадают(ТелефонМобильныйДляПаролей, ТелефонМобильный)
И ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонМобильный)<>"" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОбновитьМобильныйТелефонПоТелефонуДляПаролей_Завершение",
ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Вы только что изменили номер мобильного телефона, на который высылаются пароли для отправки отчетности.
|Изменить также номер мобильного телефона для SMS-уведомлений о статусе отправки отчетов и входящих сообщениях?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
ИначеЕсли ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонМобильный) = "" Тогда
ТелефонМобильный = ТелефонМобильныйДляПаролей;
ИзменитьОформлениеРасширенныхНастроек();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьМобильныйТелефонПоТелефонуДляПаролей_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ТелефонМобильный = ТелефонМобильныйДляПаролей;
ИзменитьОформлениеРасширенныхНастроек();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьТекстТелефонаДляПаролей()
Элементы.ТелефонМобильныйДляПаролей.ОбновитьТекстРедактирования();
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьТекстЭлектроннойПочтаДляПаролей()
Элементы.ЭлектроннаяПочтаДляПаролей.ОбновитьТекстРедактирования();
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьКнопкуПроверитьНомер()
ТекущийЭлемент = Элементы.ПроверитьНомер;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьКнопкуПроверитьАдрес()
ТекущийЭлемент = Элементы.ПроверитьАдрес;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_АктивироватьЭлектроннаяПочтаДляПаролей()
ТекущийЭлемент = Элементы.ЭлектроннаяПочтаДляПаролей;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокЛокальныхСертификатов(Отпечатки, ТекущийОтпечаток = "")
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьСписокЛокальныхСертификатов_ПослеВыбора",
ЭтотОбъект);
КриптографияЭДКОКлиент.ВыбратьСертификат(
ОписаниеОповещения, Ложь, ТекущийОтпечаток, "My", Ложь, Ложь, Отпечатки, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокЛокальныхСертификатов_ПослеВыбора(Результат, ВходящийКонтекст) Экспорт
Если НЕ Результат.Выполнено Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ВыбранныйСертификат = Результат.ВыбранноеЗначение;
ПриИзмененииСертификатаДляПодписания(ВыбранныйСертификат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоЛокальнаяЭП(Форма)
Возврат Форма.РежимРаботыСКлючами = 2;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОблачнаяПодпись(Форма)
Возврат Форма.РежимРаботыСКлючами = 3;
КонецФункции
#КонецОбласти
&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьВозможностьБезбумажногоПодписания(Форма)
Форма.ВозможноЭлектронноеПодписание = Ложь;
Форма.СертификатДляПодписания = Неопределено;
Форма.СертификатДляРеквизитов = Неопределено;
Форма.СертификатыОрганизации.Очистить();
Форма.СертификатыОрганизацииПоИНН.Очистить();
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьВозможностьБезбумажногоПодписания(
ОписаниеЗавершения = Неопределено,
ПриОткрытии = Ложь,
ДопПараметры = Неопределено,
ПринудительноУстанавливатьКомпоненту = Ложь)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОписаниеЗавершения", ОписаниеЗавершения);
ДополнительныеПараметры.Вставить("ПриОткрытии", ПриОткрытии);
ДополнительныеПараметры.Вставить("ДопПараметры", ДопПараметры);
ДополнительныеПараметры.Вставить("ПринудительноУстанавливатьКомпоненту", ПринудительноУстанавливатьКомпоненту);
КонтекстДлительнойОперации = ДополнительныеПараметры;
ПодключитьОбработчикОжидания("Подключаемый_ОпределитьВозможностьБезбумажногоПодписания", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОпределитьВозможностьБезбумажногоПодписания()
ОписаниеЗавершения = КонтекстДлительнойОперации.ОписаниеЗавершения;
ПриОткрытии = КонтекстДлительнойОперации.ПриОткрытии;
ДопПараметры = КонтекстДлительнойОперации.ДопПараметры;
Если НЕ ЗапретитьИзменение Тогда
ОчиститьВозможностьБезбумажногоПодписания(ЭтотОбъект);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОписаниеЗавершения", ОписаниеЗавершения);
ДополнительныеПараметры.Вставить("ПриОткрытии", ПриОткрытии);
ДополнительныеПараметры.Вставить("ДопПараметры", ДопПараметры);
ВыполняемоеОповещение = Новый ОписаниеОповещения(
"ОпределитьВозможностьБезбумажногоПодписания_ПослеЗаполненияДаннымиИзСертификата",
ЭтотОбъект,
ДополнительныеПараметры);
ЗапрещеноПодписаниеПриБесшовномПолученииСертификатаВДУЦ =
ВозможноБесшовноеПолучениеСертификатаВДУЦ И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(Организация)
ИЛИ НЕ ЗначениеЗаполнено(ИНН)
ИЛИ ЗапретитьИзменение
ИЛИ CryptoProCSPУстановлен И ViPNetCSPУстановлен И НЕ ИгнорироватьКонфликт
ИЛИ ЗапрещеноПодписаниеПриБесшовномПолученииСертификатаВДУЦ Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
Возврат;
КонецЕсли;
Если ВключаемыйСертификатОблачный
И ВключаемыйСертификат <> Неопределено
И ИспользоватьСуществующий(ЭтотОбъект) Тогда
ВозможноЭлектронноеПодписание = Истина;
СертификатДляПодписания = ВключаемыйСертификат;
ПриИзмененииСертификатаДляПодписания(СертификатДляПодписания, ВыполняемоеОповещение);
Возврат;
КонецЕсли;
ВывестиБубликДлительнойОперацииПоискаСертификатов(ЭтотОбъект);
ПринудительноУстанавливатьКомпоненту = КонтекстДлительнойОперации.ПринудительноУстанавливатьКомпоненту;
ПредлагатьУстановкуРасширения =
ЭтоВебКлиент
И (НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса
ИЛИ ПринудительноУстанавливатьКомпоненту
ИЛИ НЕ ЭтоОблако(ЭтотОбъект))
ИЛИ НЕ ЭтоВебКлиент;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ДополнительныеПараметры.Вставить("ПриОткрытии", ПриОткрытии);
ДополнительныеПараметры.Вставить("ПредлагатьУстановкуРасширения", ПредлагатьУстановкуРасширения);
Если (CryptoProCSPУстановлен ИЛИ ViPNetCSPУстановлен) И НЕ ИгнорироватьКонфликт Тогда
КомпонентаДляРаботыСКриптографиейПодключена = Истина;
ОпределитьВозможностьБезбумажногоПодписания_ПослеОпределенияКриптопровайдера(Неопределено, ДополнительныеПараметры);
Иначе
ОповещениеПослеПоискаКриптопровайдеров = Новый ОписаниеОповещения(
"ОпределитьВозможностьБезбумажногоПодписания_ПослеОпределенияКриптопровайдера",
ЭтотОбъект,
ДополнительныеПараметры);
ОбработкаЗаявленийАбонентаКлиент.ЗаполнитьСписокКриптопровайдеров(
ОповещениеПослеПоискаКриптопровайдеров,
КонтекстЭДОКлиент,
ЭтотОбъект,
ПредлагатьУстановкуРасширения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьВозможностьБезбумажногоПодписания_ПослеОпределенияКриптопровайдера(Результат, ВходящийКонтекст) Экспорт
Если НЕ CryptoProCSPУстановлен И НЕ ViPNetCSPУстановлен И НЕ ДоступнаЭлектроннаяОблачнаяПодпись Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение);
Возврат;
КонецЕсли;
ВывестиБубликДлительнойОперацииПоискаСертификатов(ЭтотОбъект);
Если ВсеСертификаты = Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОпределитьВозможностьБезбумажногоПодписания_ПослеПолученияСертификата",
ЭтотОбъект,
ВходящийКонтекст);
ДополнительныеПараметрыМетода = Новый Структура;
ДополнительныеПараметрыМетода.Вставить("ПредлагатьУстановкуВнешнейКомпоненты", ВходящийКонтекст.ПредлагатьУстановкуРасширения);
ДополнительныеПараметрыМетода.Вставить("ВыводитьСообщения", Ложь);
Хранилище = Новый Структура("Хранилище, ЭтоЛокальноеХранилище", "MY", Истина);
КриптографияЭДКОКлиент.ПолучитьСертификаты(ОписаниеОповещения, Хранилище, ДополнительныеПараметрыМетода);
Иначе
Результат = Новый Структура();
Результат.Вставить("Выполнено", Истина);
Результат.Вставить("Сертификаты", ВсеСертификаты);
ОпределитьВозможностьБезбумажногоПодписания_ПослеПолученияСертификата(
Результат,
ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьВозможностьБезбумажногоПодписания_ПослеПолученияСертификата(
Результат,
ВходящийКонтекст) Экспорт
Если НЕ Результат.Выполнено Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение);
Возврат;
КонецЕсли;
РезультатПроверкиСНИЛС = ПроверитьВладелецЭЦПСНИЛС(ЭтотОбъект,,Ложь);
РезультатПроверкиВладелецЭЦП = ПроверитьФИОВладельцаЭП(ЭтотОбъект,,Ложь);
Если РезультатПроверкиВладелецЭЦП.ЕстьОшибка
ИЛИ РезультатПроверкиСНИЛС.ЕстьОшибка Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение);
Возврат;
КонецЕсли;
ЭтотОбъект.ВсеСертификаты = Результат.Сертификаты;
НайденныеСертификаты = КонтекстЭДОКлиент.СертификатыПоРеквизитамОрганизацииИВладельца(ЭтотОбъект, Истина);
СертификатДляРеквизитов = ОпределитьСертификатДляРеквизитов(НайденныеСертификаты);
СертификатыОрганизации = ОпределитьВсеСертификатыДляПодписания(НайденныеСертификаты);
Если ВходящийКонтекст.ПриОткрытии И ВключаемыйСертификат <> Неопределено Тогда
НовыйСертификатДляПодписания = ВключаемыйСертификат;
Иначе
НовыйСертификатДляПодписания = ОпределитьСертификатДляПодписания(ВходящийКонтекст, СертификатыОрганизации);
КонецЕсли;
ПриИзмененииСертификатаДляПодписания(НовыйСертификатДляПодписания, ВходящийКонтекст.ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОпределитьВозможностьБезбумажногоПодписания_ПослеЗаполненияДаннымиИзСертификата(Результат, ВходящийКонтекст) Экспорт
ДополнительныеПараметры = ВходящийКонтекст.ДопПараметры;
ПослеЗаполненияДаннымиИзСертификатаНаСервере(ВходящийКонтекст.ПриОткрытии, ДополнительныеПараметры);
ПриИзмененииТелефонаИлиПочтыДляПароля(ВходящийКонтекст.ПриОткрытии);
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект));
Если ВходящийКонтекст.ОписаниеЗавершения <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ОписаниеЗавершения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияДаннымиИзСертификатаНаСервере(ПриОткрытии, ДополнительныеПараметры)
Если ПриОткрытии И ЗаявлениеСозданоКопированием Тогда
Если ЭтоЭлектронноеПодписаниеИзКопии И СертификатДляПодписания <> Неопределено Тогда
ЭтоЭлектронноеПодписание = Истина;
СпособПодписания = 1;
Иначе
ЭтоЭлектронноеПодписание = Ложь;
ПереключитьНаБумажноеПодписание();
КонецЕсли;
Иначе
Если ВозможноЭлектронноеПодписание Тогда
СпособПодписания = 1;
ЭтоЭлектронноеПодписание = Истина;
Иначе
СпособПодписания = 2;
ЭтоЭлектронноеПодписание = Ложь;
КонецЕсли;
КонецЕсли;
ИзменитьОформлениеДокументовПослеИзмененияСертификатов(ДополнительныеПараметры);
ИзменитьОформлениеСпособаПодписания(ЭтотОбъект);
ИзменитьРежимРаботыСКлючамиПослеИзмененияСертификатов(ПриОткрытии, ДополнительныеПараметры);
ИзменитьОформлениеРасширенныхНастроек();
ИзменитьОформлениеВключаемогоСертификата();
КонецПроцедуры
&НаСервере
Процедура ИзменитьРежимРаботыСКлючамиПослеИзмененияСертификатов(ПриОткрытии, ДополнительныеПараметры)
ПроверитьВозможностьИспользованияЛокальногоКлюча(ПриОткрытии);
ПроверитьВозможностьИспользованияОблака();
ИзменитьОформлениеМестаХраненияКлючей();
КонецПроцедуры
&НаСервере
Процедура ПроверитьВозможностьИспользованияОблака()
ЭтоХранениеКлючейВОблакеИзКопии = РежимРаботыСКлючамиИзКопии = 1;
НеМожетИспользоватьсяХранениеКлючаВОблаке =
ЭтоХранениеКлючейВОблакеИзКопии
И НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса
ИЛИ СертификатДолженБытьПолученОтГосУЦ
ИЛИ УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр;
Если НеМожетИспользоватьсяХранениеКлючаВОблаке Тогда
РежимРаботыСКлючами = 2;
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВозможностьИспользованияЛокальногоКлюча(ПриОткрытии)
Если (ЗаявлениеСозданоКопированием ИЛИ ЭтоОткрытиеЗаявления)
И (УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦФНС
ИЛИ УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр) Тогда
Возврат;
КонецЕсли;
ЭтоХранениеКлючейЛокальноИзКопии = РежимРаботыСКлючамиИзКопии = 2;
НеМожетИспользоватьсяХранениеКлючаНаКомпьютере =
НЕ ViPNetCSPУстановлен
И НЕ CryptoProCSPУстановлен
И ПриОткрытии
И ДоступнаЭлектроннаяПодписьВМоделиСервиса
И ЭтоХранениеКлючейЛокальноИзКопии;
Если НеМожетИспользоватьсяХранениеКлючаНаКомпьютере Тогда
РежимРаботыСКлючами = 1;
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Истина);
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеДокументовПослеИзмененияСертификатов(ВходящийКонтекст)
ПропуститьОчисткуФайлов = ВходящийКонтекст <> Неопределено И ВходящийКонтекст.Свойство("ПропуститьОчисткуФайлов");
ОчиститьТолькоФайлыВладельца = ВходящийКонтекст <> Неопределено И ВходящийКонтекст.Свойство("ОчиститьТолькоФайлыВладельца");
Если ПропуститьОчисткуФайлов Тогда
ИначеЕсли ОчиститьТолькоФайлыВладельца Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьФайлыПриУстановкеНовогоВладельцаЭЦП(ЭтотОбъект);
Иначе
УдалитьВсеСканы_Сервер();
ЗаполнитьМЧДВЗаявлении();
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция СкрытьПечатьЗаявления() Экспорт
ПолучениеВКА = ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоПолучениеСертификатВКА(ЭтотОбъект);
Возврат НЕ ПолучениеВКА;
КонецФункции
&НаКлиенте
Функция ОпределитьВсеСертификатыДляПодписания(ВсеСертификатыОрганизации)
ВалидныеСертификатыОрганизации = Новый СписокЗначений;
Для каждого Сертификат Из ВсеСертификатыОрганизации Цикл
Если Сертификат.ДействителенС < ТекущаяДата()
И Сертификат.ДействителенПо > ТекущаяДата()
И Сертификат.Валиден Тогда
ВалидныеСертификатыОрганизации.Добавить(Сертификат);
КонецЕсли;
КонецЦикла;
Возврат ВалидныеСертификатыОрганизации;
КонецФункции
&НаКлиенте
Функция ОпределитьСертификатДляПодписания(ВходящийКонтекст, СертификатыОрганизации)
Если ВключаемыйСертификат <> Неопределено
И ИспользоватьСуществующий(ЭтотОбъект) Тогда
Возврат ВключаемыйСертификат;
КонецЕсли;
ПриОткрытии = ВходящийКонтекст.ПриОткрытии;
ИскомыйСертификат = Неопределено;
МаксимальнаяДатаОкончания = Дата(1,1,1);
ИспользоватьСертификатИзКопии = Ложь;
Для каждого Сертификат Из СертификатыОрганизации Цикл
Сертификат = Сертификат.Значение;
ВозможноЭлектронноеПодписание = Истина;
Если ПриОткрытии
И СертификатИзКопии <> Неопределено
И Сертификат.Отпечаток = СертификатИзКопии.Отпечаток Тогда
ИспользоватьСертификатИзКопии = Истина;
Прервать;
ИначеЕсли Сертификат.ДействителенПо > МаксимальнаяДатаОкончания Тогда
МаксимальнаяДатаОкончания = Сертификат.ДействителенПо;
ИскомыйСертификат = Сертификат;
КонецЕсли;
КонецЦикла;
Если ИспользоватьСертификатИзКопии Тогда
ИскомыйСертификат = СертификатИзКопии;
КонецЕсли;
Возврат ИскомыйСертификат;
КонецФункции
&НаКлиенте
Функция ОпределитьСертификатДляРеквизитов(ВсеСертификатыОрганизации)
ИскомыйСертификат = Неопределено;
МаксимальнаяДатаОкончания = Дата(1,1,1);
Для каждого Сертификат Из ВсеСертификатыОрганизации Цикл
Если Сертификат.ДействителенПо > МаксимальнаяДатаОкончания Тогда
МаксимальнаяДатаОкончания = Сертификат.ДействителенПо;
ИскомыйСертификат = Сертификат;
КонецЕсли;
КонецЦикла;
Возврат ИскомыйСертификат;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЗаявлениеДаннымиИзСертификата(ВыполняемоеОповещение)
Если СертификатДляРеквизитов = Неопределено Тогда
Если ВыполняемоеОповещение <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
КонецЕсли;
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ЗаполнитьСведенияИзСертификатаДляРеквизитов_ПослеЭкспортаСертификата",
ЭтотОбъект,
ДополнительныеПараметры);
КонтекстЭДОКлиент.ПолучитьДвоичныеДанныеСертификата(ОписаниеОповещения, СертификатДляРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСведенияИзСертификатаДляРеквизитов_ПослеЭкспортаСертификата(Результат, ВходящийКонтекст) Экспорт
ДополнительныеПараметры = Новый Структура();
ВыполняемоеОповещение = ВходящийКонтекст.ВыполняемоеОповещение;
Если Результат = Неопределено
ИЛИ НЕ Результат.Свойство("ДвДанные") Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ДополнительныеПараметры);
Возврат;
КонецЕсли;
ДвДанныеСертификата = Результат.ДвДанные;
ОпределитьЧтоЛицензияКриптоПроВключенаВСертификат();
Успешно = ПолучитьДанныеОрганизацииИВладельца_ИзСертификата(ЭтотОбъект, СертификатДляРеквизитов);
Если Успешно Тогда
ЗаполнитьДанныеОрганизацииИВладельца_ИзСертификата();
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ДополнительныеПараметры);
Возврат;
КонецЕсли;
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьДанныеОрганизацииИВладельца_ИзСертификата(Форма, Сертификат)
Если Сертификат = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ВладелецСтруктура = ДокументооборотСКОКлиентСервер.ВладелецСертификат(Сертификат);
Если ВладелецСтруктура = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ПолучитьДанныеОрганизации_ИзСертификата(Форма, ВладелецСтруктура);
ПолучитьДанныеВладельца_ИзСертификата(Форма, Сертификат);
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьДанныеОрганизацииИВладельца_ИзСертификата()
ЗаполняемыеПоля =
"ВладелецЭЦПДолжность,
|ВладелецЭЦППодразделение,
|ЭлектроннаяПочта,
|ВладелецЭЦПИНН,
|ВладелецЭЦПФамилия,
|ВладелецЭЦПИмя,
|ВладелецЭЦПОтчество,
|ВладелецЭЦПСНИЛС,
|КраткоеНаименование,
|ОГРН,
|ИНН,
|КодРегиона";
ЗаполняемыеПоля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(ЗаполняемыеПоля);
Для каждого Поле Из ЗаполняемыеПоля Цикл
ВзятьИзБазыИлиИзСертификата(ЭтотОбъект[Поле], , ЭтотОбъект[Поле + "_ИзСертификата"]);
КонецЦикла;
Если ЗначениеЗаполнено(КодРегиона_ИзСертификата) Тогда
КодРегионаФСРАР = КодРегиона_ИзСертификата;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлектроннаяПочта_ИзСертификата) Тогда
ЭлектроннаяПочтаДляПаролей = ЭлектроннаяПочта_ИзСертификата;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПолучитьДанныеВладельца_ИзСертификата(Форма, Сертификат) Экспорт
ВладелецСтруктура = ДокументооборотСКОКлиентСервер.ВладелецСертификат(Сертификат);
ВладелецСтруктура.Свойство("T", Форма.ВладелецЭЦПДолжность_ИзСертификата);
ВладелецСтруктура.Свойство("OU", Форма.ВладелецЭЦППодразделение_ИзСертификата);
ВладелецСтруктура.Свойство("E", Форма.ЭлектроннаяПочта_ИзСертификата);
ИННы = ДокументооборотСКОКлиентСервер.ИННыИзСертификата(ВладелецСтруктура);
ИННы.Свойство("ФЛ", Форма.ВладелецЭЦПИНН_ИзСертификата);
SNILS = "";
ВладелецСтруктура.Свойство("SNILS", SNILS);
Если ЗначениеЗаполнено(SNILS) И НЕ СтрНайти(SNILS, "-") Тогда
Форма.ВладелецЭЦПСНИЛС_ИзСертификата = СтрШаблон(
"%1-%2-%3 %4",
Лев(SNILS, 3),
Сред(SNILS, 4,3),
Сред(SNILS, 7,3),
Прав(SNILS, 2));
Иначе
Форма.ВладелецЭЦПСНИЛС_ИзСертификата = SNILS;
КонецЕсли;
ВладелецСтруктура.Свойство("SN", Форма.ВладелецЭЦПФамилия_ИзСертификата);
ИмяОтчество = "";
ВладелецСтруктура.Свойство("GN", ИмяОтчество);
Если ЗначениеЗаполнено(ИмяОтчество) Тогда
ИмяОтчество = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(ИмяОтчество);
Если ИмяОтчество.Количество() = 2 Тогда
Форма.ВладелецЭЦПИмя_ИзСертификата = ИмяОтчество[0];
Форма.ВладелецЭЦПОтчество_ИзСертификата = ИмяОтчество[1];
КонецЕсли;
КонецЕсли;
Форма.ВладелецЭЦПЭтоФизЛицо_ИзСертификата = ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоСертификатФизЛица(Сертификат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПолучитьДанныеОрганизации_ИзСертификата(Форма, ВладелецСтруктура) Экспорт
Форма.КраткоеНаименование_изСертификата = ДокументооборотСКОКлиентСервер.КраткоеНаименованиеИзСертификата(ВладелецСтруктура);
Если НЕ Форма.ЭтоИностраннаяОрганизация Тогда
Форма.ОГРН_изСертификата = ДокументооборотСКОКлиентСервер.ОГРНСертификата(ВладелецСтруктура);
КонецЕсли;
Если НЕ ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоСертификатФизЛицаПоВладельцу(ВладелецСтруктура) Тогда
Форма.ИНН_ИзСертификата = ДокументооборотСКОКлиентСервер.ИННИзСертификата(ВладелецСтруктура);
КонецЕсли;
Если ЗначениеЗаполнено(СокрЛП(Форма.ИНН_ИзСертификата)) Тогда
Форма.ЭтоЮридическоеЛицо_ИзСертификата = СтрДлина(Форма.ИНН_ИзСертификата) = 10;
КонецЕсли;
ST = "";
ВладелецСтруктура.Свойство("ST", ST);
Если ЗначениеЗаполнено(ST) Тогда
Цифры = ОбработкаЗаявленийАбонентаКлиентСервер.ЦифрыИзСтроки(ST, Ложь);
Если ЗначениеЗаполнено(Цифры) Тогда
Форма.КодРегиона_ИзСертификата = Цифры;
КонецЕсли;
КонецЕсли;
Форма.ЭтоБюджетополучатель_ИзСертификата = КриптографияЭДКОСлужебныйКлиентСервер.ИзданУЦКазначейство(Форма.ВключаемыйСертификат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВывестиБубликДлительнойОперацииПоискаСертификатов(Форма)
Элементы = Форма.Элементы;
Если Форма.КомпонентаДляРаботыСКриптографиейПодключена Тогда
Элементы.НадписьПоискаСертификата.Заголовок = НСтр("ru = 'Выполняется поиск сертификатов...'");
Иначе
Элементы.НадписьПоискаСертификата.Заголовок = НСтр("ru = 'Выполняется установка внешней компоненты криптографии...'");
КонецЕсли;
АктивизироватьДопСтраницу(Элементы.ГруппаЭлектронноеПодписание, Элементы.ГруппаПоискСертификатов);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеКнопкиОтправки(Форма)
Элементы = Форма.Элементы;
Если Форма.ЭтоЭлектронноеПодписание И Форма.СпособПодписания Тогда
Элементы.Отправить.Заголовок = НСтр("ru = 'Подписать и отправить'");
Иначе
Элементы.Отправить.Заголовок = НСтр("ru = 'Отправить заявление'");
КонецЕсли;
Элементы.Отправить.Доступность =
Форма.ЭтоИнтеграцияСБанком И ЗначениеЗаполнено(Форма.ВключаемыйСертификат)
ИЛИ НЕ Форма.ЭтоИнтеграцияСБанком;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСпособаПодписания(Форма)
Элементы = Форма.Элементы;
Если Форма.ЗапретитьИзменение Тогда
Элементы.ГруппаЭлектронноеПодписание.ТолькоПросмотр = Истина;
Элементы.ГруппаОтправки.Видимость = Ложь;
КонецЕсли;
Если Форма.ЭтоИнтеграцияСБанком ИЛИ Форма.ЭтоОткрытиеСВыбраннойЭЦП Тогда
Элементы.ГруппаВариантовПодписания.Видимость = Ложь;
ИначеЕсли ИспользоватьСуществующий(Форма) Тогда
ИзменитьОформлениеСпособаПодписанияПриИспользованииСуществующего(Форма);
ИначеЕсли Форма.ВозможноБесшовноеПолучениеСертификатаВДУЦ Тогда
ИзменитьОформлениеСпособаПодписанияПриБесшовномПолученимСертификатаВДУЦ(Форма);
ИначеЕсли Форма.ВозможноЭлектронноеПодписание
ИЛИ Форма.ЗапретитьИзменение И Форма.СертификатДляПодписания <> Неопределено Тогда
ИзменитьОформлениеСпособаПодписанияПриВыбранномСертификатеДляПодписания(Форма);
Иначе
ИзменитьОформлениеСпособаПодписанияПриПроблемахКриптографии(Форма);
КонецЕсли;
ИзменитьОформлениеКнопкиОтправки(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСпособаПодписанияПриБесшовномПолученимСертификатаВДУЦ(Форма)
Элементы = Форма.Элементы;
ОписаниеОшибки = ОбработкаЗаявленийАбонентаКлиентСервер.ОшибкаПриПолученииСертификатаЧерезДУЦ();
Элементы.ПояснениеОНевозможностиЭлектронногоПодписания.Заголовок = НСтр("ru = 'Подписание электронной подписью невозможно'");
Подсказка = Элементы.ПодсказкаОНевозможностиЭлектронногоПодписания;
РасширеннаяПодсказка = Подсказка.РасширеннаяПодсказка;
РасширеннаяПодсказка.Заголовок = ОписаниеОшибки;
ПоказатьСтраницуГруппыНеДоступноЭлектронноеПодписание(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПоказатьСтраницуГруппыНеДоступноЭлектронноеПодписание(Форма)
Элементы = Форма.Элементы;
АктивизироватьДопСтраницу(Элементы.ГруппаЭлектронноеПодписание, Элементы.ГруппаНеДоступноЭлектронноеПодписание);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСпособаПодписанияПриВыбранномСертификатеДляПодписания(Форма)
Элементы = Форма.Элементы;
Элементы.ПодсказкаОбЭлектронномПодписании.РасширеннаяПодсказка.Заголовок = ПодсказкаДляЭлектронногоПодписания(Ложь);
АктивизироватьДопСтраницу(Элементы.ГруппаЭлектронноеПодписание, Элементы.ГруппаДоступноЭлектронноеПодписание);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСпособаПодписанияПриИспользованииСуществующего(Форма)
Элементы = Форма.Элементы;
Представление = ДокументооборотСКОКлиентСервер.ПредставлениеСертификата(Форма.ВключаемыйСертификат);
Элементы.ВключенныйСертификатДляПодписания.Заголовок = Представление;
Элементы.ПодсказкаДляПодписанияВключеннымСертификатом.Видимость = ЗначениеЗаполнено(Представление);
АктивизироватьДопСтраницу(Элементы.ГруппаЭлектронноеПодписание, Элементы.ГруппаПодписаниеВключаемымСертификатом);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеСпособаПодписанияПриПроблемахКриптографии(Форма)
Элементы = Форма.Элементы;
ЭтоКонфликтКриптопровайдеров =
Форма.CryptoProCSPУстановлен
И Форма.ViPNetCSPУстановлен
И НЕ Форма.ИгнорироватьКонфликт;
ОтсуствуетКриптопровайдер =
НЕ Форма.CryptoProCSPУстановлен
И НЕ Форма.ViPNetCSPУстановлен
И Форма.КомпонентаДляРаботыСКриптографиейПодключена;
НужноУстановитьКомпоненту =
НЕ Форма.CryptoProCSPУстановлен
И НЕ Форма.ViPNetCSPУстановлен
И НЕ Форма.КомпонентаДляРаботыСКриптографиейПодключена;
Подсказка = Элементы.ПодсказкаОНевозможностиЭлектронногоПодписания;
РасширеннаяПодсказка = Подсказка.РасширеннаяПодсказка;
Если Форма.ЗапретитьИзменение Тогда
Подсказка.Видимость = Ложь;
ИначеЕсли ОтсуствуетКриптопровайдер Тогда
РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(
ПодсказкаДляЭлектронногоПодписания(),
НСтр("ru = 'Подписание электронной подписью доступно только при наличии программы защиты информации. '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'Установить'"),,,,"Установить криптопровайдер"));
ИначеЕсли ЭтоКонфликтКриптопровайдеров Тогда
РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(
ПодсказкаДляЭлектронногоПодписания(),
НСтр("ru = 'Подписание электронной подписью недоступно при конфликте криптопровайдеров. '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'Исправить'"),,,,"Исправить конфликт"));
ИначеЕсли НужноУстановитьКомпоненту Тогда
РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(
ПодсказкаДляЭлектронногоПодписания(),
Форма.ТекстОшибкиПодключенияКомпоненты,
НСтр("ru = ' Необходимо установить внешнюю компоненту криптографии. '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'Установить'"),,,,"Установить компоненту"));
ИначеЕсли ЗначениеЗаполнено(Форма.Организация) Тогда
РасширеннаяПодсказка.Заголовок = ОбработкаЗаявленийАбонентаКлиентСервер.ТекстОшибкиНеНайденоНиОдногоСертификата(Форма, Истина);
Иначе
ВывестиБубликДлительнойОперацииПоискаСертификатов(Форма);
КонецЕсли;
Элементы.Отправить.Заголовок = НСтр("ru = 'Отправить заявление'");
Элементы.ПояснениеОНевозможностиЭлектронногоПодписания.Заголовок = НСтр("ru = 'Если у вас есть сертификат эл. подписи, вы можете подписать заявление им.'");
ПоказатьСтраницуГруппыНеДоступноЭлектронноеПодписание(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПодсказкаДляЭлектронногоПодписания(ДобавлятьОтступы = Истина)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПодсказкаДляЭлектронногоПодписания(ДобавлятьОтступы);
КонецФункции
&НаСервере
Процедура ОпределитьТариф()
Если НЕ ЭтоРежимБесплатнойНулевойОтчетности Тогда
Возврат;
КонецЕсли;
Тариф = "";
Попытка
МодульТарификацияБПВызовСервераПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТарификацияБПВызовСервераПовтИсп");
Если МодульТарификацияБПВызовСервераПовтИсп = Неопределено Тогда
Возврат;
Иначе
ТарифВключаетЭДО = МодульТарификацияБПВызовСервераПовтИсп.РазрешенЭлектронныйДокументообротСКонтролирующимиОрганами();
КонецЕсли;
МодульТарификацияБП = ОбщегоНазначения.ОбщийМодуль("ТарификацияБП");
Если МодульТарификацияБП = Неопределено Тогда
Возврат;
Иначе
ВыставленСчет = МодульТарификацияБП.ЕстьВыставленныйСчетНаОплатуСервиса();
КонецЕсли;
Если ТарифВключаетЭДО ИЛИ ВыставленСчет Тогда
Тариф = МодульТарификацияБП.ИдентификаторАктуальногоТарифа();
КонецЕсли;
Исключение
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуКонтактнойИнформацииЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
НовыйАдрес = КонтекстЭДОКлиент.РедактироватьАдресКонвертацияРезультата(РезультатЗакрытия, Истина);
Если НовыйАдрес.Модифицированность Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьФормуКонтактнойИнформацииЗавершение_ПослеИзмененияЮрАдреса",
ЭтотОбъект);
КонтекстЭДОКлиент.ОбновитьАдрес(НовыйАдрес, "АдресЮридический", ОписаниеОповещения, ЭтоЮридическоеЛицо);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуКонтактнойИнформацииЗавершение_ПослеИзмененияЮрАдреса(Результат, ВходящийКонтекст) Экспорт
ПриИзмененииЮридическогоАдреса();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииЮридическогоАдреса()
КодРегиона = КодРегионаПоАдресу(АдресЮридическийЗначение);
КодРегионаФСРАР = КодРегиона;
ВосстановитьНаправленияПоУмолчаниюФСГС();
НачатьОпределениеИдентификаторАдресаФИАС();
ИзменитьОформлениеЮрАдреса();
ИзменитьОформлениеНаправлений();
ИнициализироватьФактическийАдрес();
ИзменитьОформлениеРасширенныхНастроек();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеОГРН(ПриОткрытии = Ложь)
РезультатПроверки = ПроверитьОГРН(,Ложь);
СкрытьОГРН =
НЕ РезультатПроверки.ЕстьОшибка
И НЕ ЭтоНотариусАдвокатИлиГКФХ
И (Доступен1СКонтрагент
ИЛИ ДанныеОрганизацииЗаполненыКопированием И ЗначениеЗаполнено(ОГРН) И ПриОткрытии
ИЛИ ЭтоИнтеграцияСБанком
ИЛИ ЭтоОткрытиеСВыбраннойЭЦП)
ИЛИ ЭтоИностраннаяОрганизация;
Если СкрытьОГРН Тогда
Элементы.ГруппаОГРН.Видимость = Ложь;
Иначе
Элементы.ГруппаОГРН.Видимость = Истина;
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаОГРН,
РезультатПроверки);
Если ЭтоЮридическоеЛицо Тогда
Элементы.ЗаголовокОГРН.Заголовок = НСтр("ru = 'ОГРН'");
Иначе
Элементы.ЗаголовокОГРН.Заголовок = НСтр("ru = 'ОГРНИП'");
КонецЕсли;
КонецЕсли;
Элементы.ПриНаличии.Видимость = ЭтоНотариусАдвокатИлиГКФХ;
Элементы.ОГРН.АвтоОтметкаНезаполненного = НЕ ЭтоНотариусАдвокатИлиГКФХ;
Если ЭтоНотариусАдвокатИлиГКФХ Тогда
Элементы.ОГРН.ОтметкаНезаполненного = Ложь;
КонецЕсли;
Если ЗапретитьИзменение Тогда
Элементы.ОГРН.ТолькоПросмотр = Истина;
КонецЕсли;
ИзменитьОформлениеДобавляемыхФлагов();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеЭлПочтыОрганизации()
Если ЭлПочтаОрганизацииВРасширенныхНастройках Тогда
Элементы.ГруппаЭлектроннаяПочтаОрганизации.Видимость = Ложь;
Иначе
РезультатПроверки = ПроверитьЭлПочтуОрганизации(,Ложь);
Элементы.ГруппаЭлектроннаяПочтаОрганизации.Видимость = Истина;
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаЭлектроннаяПочтаОрганизации,
РезультатПроверки);
КонецЕсли;
Если ЗапретитьИзменение Тогда
Элементы.ЭлектроннаяПочтаОрганизации.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АрхивироватьФайлОбратнойСвязи(ОписаниеФайла)
ОписаниеДляАрхива = Новый Структура;
ОписаниеДляАрхива.Вставить("Адрес", ОписаниеФайла.Адрес);
ОписаниеДляАрхива.Вставить("Имя", "file");
МассивИзОдного = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОписаниеДляАрхива);
АдресУпакованногоФайлаДанных = ОперацииСФайламиЭДКОВызовСервера.УпаковатьФайлы(МассивИзОдного);
ОписаниеФайла.Адрес = АдресУпакованногоФайлаДанных;
КонецПроцедуры
&НаСервере
Процедура ОтправитьОбратнуюСвязьСервер()
ОбратнаяСвязьОтправлена = Истина;
Если Оценка = 0 Тогда
Возврат;
КонецЕсли;
Адрес = ФайлОбратнойСвязи();
ФайлДанных = Новый Структура;
ФайлДанных.Вставить("Адрес", Адрес);
ФайлДанных.Вставить("Имя", ИмяФайлаДокументаВСоставеПакета());
ФайлОписания = ФайлОписанияПакетаОбратнойСвязи(ФайлДанных);
АрхивироватьФайлОбратнойСвязи(ФайлДанных);
Файлы = Новый Массив;
Файлы.Добавить(ФайлОписания);
Файлы.Добавить(ФайлДанных);
АдресПакета = ОперацииСФайламиЭДКОВызовСервера.УпаковатьФайлы(Файлы);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ПрисоединитьФайлЗаявления(ДокументЗаявление, АдресПакета, "Пакет_с_обратной_связью", "zip");
Base64СтрокаОбратнойСвязи = Base64Строка(ПолучитьИзВременногоХранилища(АдресПакета));
ДополнительныеПараметры = Новый Массив();
ДополнительныеПараметры.Добавить(ДокументЗаявление.СпецоператорСвязи);
ДополнительныеПараметры.Добавить(Base64СтрокаОбратнойСвязи);
ФоновыеЗадания.Выполнить("ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОтправитьОбратнуюСвязьСервер", ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Функция ФайлОписанияПакетаОбратнойСвязи(ФайлДанных)
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, "windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("пакет");
ЗаписьXML.ЗаписатьАтрибут("версияФормата", "1С:1.1");
ЗаписьXML.ЗаписатьАтрибут("версПрог", РегламентированнаяОтчетность.ВерсияПрограммы());
ЗаписьXML.ЗаписатьАтрибут("типДокументооборота", "РегистрацияАбонента");
ЗаписьXML.ЗаписатьАтрибут("типТранзакции", "ОбратнаяСвязь");
ЗаписьXML.ЗаписатьАтрибут("идентификаторДокументооборота", ДокументЗаявление.ИдентификаторДокументооборота);
ЗаписьXML.ЗаписатьНачалоЭлемента("отправитель");
ЗаписьXML.ЗаписатьАтрибут("типСубъекта", "абонент");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("получатель");
ЗаписьXML.ЗаписатьАтрибут("типСубъекта", "спецоператор");
ЗаписьXML.ЗаписатьАтрибут("идентификаторСубъекта", "КалугаАстрал");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("документ");
ЗаписьXML.ЗаписатьАтрибут("идентификаторДокумента", ОбщегоНазначенияЭДКОКлиентСервер.НовыйИдентификатор());
ЗаписьXML.ЗаписатьАтрибут("типДокумента", "ОбратнаяСвязь");
ЗаписьXML.ЗаписатьАтрибут("типСодержимого", "xml");
ЗаписьXML.ЗаписатьАтрибут("сжат", "true");
ЗаписьXML.ЗаписатьАтрибут("зашифрован", "false");
ЗаписьXML.ЗаписатьНачалоЭлемента("содержимое");
ЗаписьXML.ЗаписатьАтрибут("имяФайла", ФайлДанных.Имя);
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
ОписаниеПакета = Новый Структура;
ОписаниеПакета.Вставить("Имя", "packageDescription.xml");
ОписаниеПакета.Вставить("Адрес", ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла), Новый УникальныйИдентификатор));
ОперацииСФайламиЭДКО.УдалитьВременныйФайл(ИмяФайла);
Возврат ОписаниеПакета;
КонецФункции
&НаСервере
Функция ИмяФайлаДокументаВСоставеПакета(РасширениеБезТочки = "bin")
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.СгенерироватьUUID() + "." + РасширениеБезТочки;
КонецФункции
&НаСервере
Функция ФайлОбратнойСвязи()
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, "windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("ОбратнаяСвязь");
ЗаписьXML.ЗаписатьАтрибут("Комментарий", ТекстовыйОтвет);
ЗаписьXML.ЗаписатьАтрибут("ИДЗаявления", ДокументЗаявление.ИдентификаторДокументооборота);
ЗаписьXML.ЗаписатьАтрибут("Оценка", Строка(Оценка));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));
ОперацииСФайламиЭДКО.УдалитьВременныйФайл(ИмяФайла);
Возврат Адрес;
КонецФункции
&НаСервере
Процедура НачатьОпределениеИдентификаторАдресаФИАС()
Если НЕ ЗначениеЗаполнено(АдресЮридическийЗначение) ИЛИ ЗапретитьИзменение Тогда
Возврат;
КонецЕсли;
АдресЗаданияПоПолучениюИдентификатораАдресовФИАС = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("АдресЮридическийЗначение", АдресЮридическийЗначение);
ДополнительныеПараметры.Вставить("АдресЮридическийПредставление", АдресЮридическийПредставление);
ДополнительныеПараметры.Вставить("АдресФактическийЗначение", АдресФактическийЗначение);
ДополнительныеПараметры.Вставить("АдресФактическийПредставление", АдресФактическийПредставление);
ДополнительныеПараметры.Вставить("АдресХранилища", АдресЗаданияПоПолучениюИдентификатораАдресовФИАС);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ПолучитьИдентификаторАдресаФИАСФоновоеЗадание(ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОтправку_Завершение(Результат, ВходящийКонтекст) Экспорт
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
ИзменитьОформлениеПанелиОтправки();
ИзменитьОформлениеЧтоДелатьДальше();
ИзменитьОформлениеПанелиПФРВМастере();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПанелиОтправки()
Если ЗапретитьИзменение Тогда
ЭтотОбъект.Прочитать();
Модифицированность = Ложь;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ПараметрыПрорисовкиПанелиОтправки = ДокументооборотСКОВызовСервера.ПараметрыПрорисовкиПанелиОтправки(
ДокументЗаявление.Ссылка,
Организация);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ПрименитьПараметрыПрорисовкиПанелиОтправки(
ЭтотОбъект,
ПараметрыПрорисовкиПанелиОтправки);
Элементы.ОбновитьОтправку.Видимость = КонтекстЭДОСервер.КнопкаОбновленияВЗаявленииНаПодключениеДоступна(ДокументЗаявление.Ссылка);
НастройкаНЕЗавершена = (ДокументЗаявление.Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено
ИЛИ ДокументЗаявление.Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отклонено)
И НЕ ДокументЗаявление.НастройкаЗавершена;
НастройкаЭДОНЕЗавершена =
ДокументЗаявление.Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено
И ДокументЗаявление.НастройкаЗавершена
И НЕ ДокументЗаявление.НастройкаЭДОЗавершена
И ЗначениеЗаполнено(ДокументЗаявление.НастройкиЭДО);
Если НастройкаНЕЗавершена ИЛИ НастройкаЭДОНЕЗавершена Тогда
Элементы.НаименованиеЭтапа.Ширина = 0;
Иначе
Элементы.НаименованиеЭтапа.Ширина = 18;
КонецЕсли;
КонецЕсли;
Элементы.ГруппаПанельОтправки.Видимость = ЗапретитьИзменение;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеИзВладельца() Экспорт
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьЗаявление", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьЗаявление() Экспорт
ОтправитьЗаявление();
КонецПроцедуры
&НаСервере
Функция СокращенноеНаименование(Наименование)
Результат = Наименование;
Результат = СтрЗаменить(Результат, "Общество с ограниченной ответственностью", "ООО");
Результат = СтрЗаменить(Результат,"Акционерное общество", "АО");
Результат = СтрЗаменить(Результат,"Публичное акционерное общество", "ПАО");
Результат = СтрЗаменить(Результат, "Закрытое акционерное общество", "ЗАО");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ФИОПриИзменении()
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПропуститьОчисткуФайлов", Истина);
ОпределитьВозможностьБезбумажногоПодписания(,,ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Функция ЕстьОшибкаЛокальногоХраненияКлючей()
ЭтоУЦФНС = УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦФНС;
ИгнорироватьОтсутствиеКриптоПровайдера = ЭтоУЦФНС;
ЭтоКонфликтКриптопровайдеров = CryptoProCSPУстановлен И ViPNetCSPУстановлен;
УстановленХотяБыОдинКриптопровайдер =
(CryptoProCSPУстановлен ИЛИ ViPNetCSPУстановлен) И НЕ ИгнорироватьОтсутствиеКриптоПровайдера
ИЛИ ИгнорироватьОтсутствиеКриптоПровайдера;
Возврат
(ЭтоКонфликтКриптопровайдеров И НЕ ИгнорироватьКонфликт)
ИЛИ НЕ УстановленХотяБыОдинКриптопровайдер
ИЛИ НЕ КомпонентаДляРаботыСКриптографиейПодключена
ИЛИ ЕстьОшибкаЛицензииКриптоПро();
КонецФункции
&НаСервере
Функция ЕстьОшибкаЛицензииКриптоПро()
Есть =
CryptoProCSPУстановлен
И ЭтоЛокальнаяЭП(ЭтотОбъект)
И ЛицензииКриптоПроИстекла
И НЕ ЛицензияКриптоПроВключенаВСертификат;
Возврат Есть;
КонецФункции
&НаСервере
Функция ТекстОшибкиЛокальногоХраненияКлючей()
ЭтоКонфликтКриптопровайдеров = CryptoProCSPУстановлен И ViPNetCSPУстановлен;
УстановленХотяБыОдинКриптопровайдер = CryptoProCSPУстановлен ИЛИ ViPNetCSPУстановлен;
Текст = "";
Если ЭтоКонфликтКриптопровайдеров Тогда
Текст = НСтр("ru = 'Хранение ключа локально недоступно при конфликте криптопровайдеров. '");
ИначеЕсли НЕ КомпонентаДляРаботыСКриптографиейПодключена Тогда
Текст = НСтр("ru = 'Для хранения ключа локально необходимо установить внешнюю компоненту криптографии. '");
ИначеЕсли НЕ УстановленХотяБыОдинКриптопровайдер Тогда
Текст = НСтр("ru = 'Для хранения ключа локально необходимо установить криптопровайдер. '");
ИначеЕсли ЕстьОшибкаЛицензииКриптоПро() Тогда
Текст = НСтр("ru = 'Вероятно, лицензия на КриптоПро CSP истекла. '");
КонецЕсли;
Возврат Текст;
КонецФункции
&НаСервере
Процедура НачатьОпределениеВладельцаЭППоФИО()
ФизЛицо = Мультирежим.ФизЛицоПоФИО(ВладелецЭЦПФамилия, ВладелецЭЦПИмя, ВладелецЭЦПОтчество);
Если ЗначениеЗаполнено(ФизЛицо) Тогда
ВладелецЭЦП = ФизЛицо;
Руководитель = ФизЛицо;
ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.Руководитель;
УстановитьНовогоВладельцаЭЦПСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьХранениеКлючей(МастерДалее)
Если ИспользоватьСуществующий(ЭтотОбъект) И (ВключаемыйСертификатОблачный ИЛИ НЕ ВключаемыйСертификатОблачный И ЭтоОблако(ЭтотОбъект)) Тогда
Возврат;
КонецЕсли;
ЭтоКонфликтКриптопровайдеров = CryptoProCSPУстановлен И ViPNetCSPУстановлен И НЕ ИгнорироватьКонфликт;
УстановленХотяБыОдинКриптопровайдер = CryptoProCSPУстановлен ИЛИ ViPNetCSPУстановлен;
ВыбранЛокальныхРежим = ЭтоЛокальнаяЭП(ЭтотОбъект);
Если ВыбранЛокальныхРежим Тогда
Текст = ТекстОшибкиЛокальногоХраненияКлючей();
Если ЭтоКонфликтКриптопровайдеров
ИЛИ НЕ КомпонентаДляРаботыСКриптографиейПодключена
ИЛИ НЕ УстановленХотяБыОдинКриптопровайдер Тогда
ОбщегоНазначения.СообщитьПользователю(Текст,, "ОшибкаЛокальногоХранения");
МастерДалее = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РодительФлага() Экспорт
Группы = Новый Массив;
Группы.Добавить(Элементы.ГруппаОрганизация);
Группы.Добавить(Элементы.ГруппаИНН);
Группы.Добавить(Элементы.ГруппаКПП);
Группы.Добавить(Элементы.ГруппаКраткоеНаименование);
Группы.Добавить(Элементы.ГруппаТариф);
Группы.Добавить(Элементы.ГруппаРегНомерПрограммы);
Группы.Добавить(Элементы.ГруппаОГРН);
Группы.Добавить(Элементы.ГруппаЮрАдрес);
Группы.Добавить(Элементы.ГруппаНаправления);
ГруппаРодитель = ОбработкаЗаявленийАбонента.РодительДобавляемогоФлага(Группы);
Возврат ГруппаРодитель;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеДобавляемыхФлагов()
ОбработкаЗаявленийАбонента.ИзменитьОформлениеДобавляемыхФлагов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВключаемыйСертификатНажатие(Элемент) Экспорт
Если ВключаемыйСертификат = Неопределено Тогда
ВыбратьСуществующийСертификат();
Иначе
КриптографияЭДКОКлиент.ПоказатьСертификат(ВключаемыйСертификат, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьСуществующийСертификат(ОповещениеОЗавершении = Неопределено)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ОповещениеОЗавершении", ОповещениеОЗавершении);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", "Сертификат");
ПараметрыФормы.Вставить("ПервичноеЗаявление", Истина);
ПараметрыФормы.Вставить("УчетнаяЗаписьОблачнойПодписи", СвойствоОблачнойПодписи.УчетнаяЗапись);
ПараметрыФормы.Вставить("Организация", Организация);
ПараметрыФормы.Вставить("ИННФЛ", ПолучитьИННФЛ());
Если ИгнорироватьКонфликт Тогда
ПараметрыФормы.Вставить("ВыбранноеМестоХраненияКлюча", КриптопровайдерПриКонфликте);
ПараметрыФормы.Вставить("ИгнорироватьКонфликт", Истина);
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораВключаемогоСертификата",
ЭтотОбъект,
ДополнительныеПараметры);
ОбработкаЗаявленийАбонентаКлиент.ВключаемыйСертификатНажатие(ОписаниеОповещения, ЭтотОбъект, ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораВключаемогоСертификата(Результат, ВходящийКонтекст) Экспорт
ИнициализироватьПараметрыЭДО();
ИзменитьОформлениеРасширенныхНастроек();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораВключаемогоСертификата_Завершение",
ЭтотОбъект,
ВходящийКонтекст);
ПриИзмененииВключаемогоСертификата(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораВключаемогоСертификата_Завершение(Результат, ВходящийКонтекст) Экспорт
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
Если ВходящийКонтекст.ОповещениеОЗавершении <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ОповещениеОЗавершении);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСпособаПолученияСертификатаНаСервере()
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
ИзменитьОформлениеРеквизитовПриИзмененииСпособаПолученияСертификата();
ИзменитьОформлениеВключаемогоСертификата();
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРеквизитовПриИзмененииСпособаПолученияСертификата()
ИзменитьОформлениеМестаХраненияКлючей();
ИзменитьОформлениеВладельцаЭП();
ИзменитьОформлениеТелефонаИПочтыДляПаролей(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(ЭтотОбъект);
ИзменитьОформлениеСпособаПодписания(ЭтотОбъект);
ИзменитьОформлениеРасширенныхНастроек();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьИННФЛ()
Результат = "";
Если ЗначениеЗаполнено(ВладелецЭЦПИНН) Тогда
Результат = ВладелецЭЦПИНН;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПроверитьРежимВосстановленияОблачнойПодписи(МастерДалее)
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПроверитьРежимВосстановленияОблачнойПодписи_Завершение", ЭтотОбъект);
КонтекстЭДОКлиент.ПроверитьНастройкиОблачнойПодписиПриОтправкеЗаявления(ЭтотОбъект, МастерДалее, Истина, ОповещениеОЗавершении);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРежимВосстановленияОблачнойПодписи_Завершение(РезультатПроверки, ДополнительныеПараметры) Экспорт
Если РезультатПроверки = Истина Тогда
СохранитьИОтправить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМестоХраненияЗакрытогоКлюча(СменаОрганизации = Ложь)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СвойствоОблачнойПодписи.УчетнаяЗаписьДляВосстановления = "";
НовоеМестоХраненияКлюча = МестоХраненияКлюча;
НовоеУчетнаяЗаписьОблачнойПодписи = Неопределено;
НовоеНовыйЛогинОблачнойПодпись = "";
НовоеИдентификаторСервераОблачнойПодписи = "";
НовыйЛогинПроверен = СвойствоОблачнойПодписи.НовыйЛогинПроверен;
Если ОрганизацияЗаполнена() Тогда
Если СменаОрганизации Тогда
СостояниеУчетки = КонтекстЭДОСервер.ОпределитьСостояниеОблачнойПодписиОрганизации(Организация);
НовоеМестоХраненияКлюча = СостояниеУчетки.МестоХраненияКлюча;
НовоеУчетнаяЗаписьОблачнойПодписи = СостояниеУчетки.УчетнаяЗаписьОблачнойПодписи;
НовоеНовыйЛогинОблачнойПодпись = СостояниеУчетки.Логин;
НовоеИдентификаторСервераОблачнойПодписи = СостояниеУчетки.ИдентификаторСервера;
Иначе
СостояниеУчетки = КонтекстЭДОСервер.ОпределитьСостояниеОблачнойПодписиОрганизации(Организация, МестоХраненияКлюча, СвойствоОблачнойПодписи.НовыйЛогин);
КонецЕсли;
Если СостояниеУчетки.РежимВосстановления Тогда
СвойствоОблачнойПодписи.УчетнаяЗаписьДляВосстановления = СостояниеУчетки.Логин;
КонецЕсли;
НовыйЛогинПроверен = СостояниеУчетки.ЛогинПроверен;
Иначе
НовоеМестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
КонецЕсли;
Если СменаОрганизации Тогда
МестоХраненияКлюча = НовоеМестоХраненияКлюча;
СвойствоОблачнойПодписи.УчетнаяЗапись = НовоеУчетнаяЗаписьОблачнойПодписи;
СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись = НовоеУчетнаяЗаписьОблачнойПодписи;
СвойствоОблачнойПодписи.ИсходныйТелефон = "";
СвойствоОблачнойПодписи.НовыйЛогинПроверен = НовыйЛогинПроверен;
СвойствоОблачнойПодписи.НовыйЛогин = НовоеНовыйЛогинОблачнойПодпись;
СвойствоОблачнойПодписи.ИдентификаторСервера = НовоеИдентификаторСервераОблачнойПодписи;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись);
КонецЕсли;
Если СменаОрганизации И КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ИзменитьОформлениеПанелиРекламыDSS(Ложь);
КонецЕсли;
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭтоПоставляемыйСерверОблачнойПодписи(УчетнаяЗаписьОблачнойПодписи)
Результат = ОбработкаЗаявленийАбонентаВызовСервера.ЭтоПоставляемыйСерверОблачнойПодписи(УчетнаяЗаписьОблачнойПодписи);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьМодельХраненияКлюча(ДокументЗаявления)
МодельХраненияЗакрытогоКлюча = ДокументЗаявления.МодельХраненияЗакрытогоКлюча;
Если ЗначениеЗаполнено(МодельХраненияЗакрытогоКлюча) Тогда
Если КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МодельХраненияЗакрытогоКлюча) Тогда
Результат = 2;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МодельХраненияЗакрытогоКлюча) Тогда
Результат = 1;
Иначе
Результат = 3;
КонецЕсли;
Иначе
Результат = ?(ДокументЗаявления.ЭлектроннаяПодписьВМоделиСервиса, 1, 2);
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ЗаполнитьЗаявлениеДаннымиИзСкопированногоЗаявления_ОблачнаяПодпись(Реквизит)
РеквизитыУчетнойЗаписи = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.РеквизитыУчетнойЗаписи(Реквизит.Организация);
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.СвойстваМестаХраненияКлюча(Реквизит.МодельХраненияЗакрытогоКлюча,
ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(Реквизит, "УчетнаяЗапись"));
Если НЕ ДоступнаЭлектроннаяОблачнаяПодпись И КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(ДоступнаЭлектроннаяПодписьВМоделиСервиса);
ИначеЕсли НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса И КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
КонецЕсли;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(Реквизит, "СоздатьНовуюУчетнуюЗапись");
СвойствоОблачнойПодписи.УчетнаяЗапись = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(Реквизит, "УчетнаяЗапись");
СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись = РеквизитыУчетнойЗаписи.УчетнаяЗаписьОблачнойПодписи;
СвойствоОблачнойПодписи.ИсходныйТелефон = "";
СвойствоОблачнойПодписи.ИдентификаторСервера = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(Реквизит, "ИдентификаторСервера");
СвойствоОблачнойПодписи.НовыйЛогин = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьПараметрПодключения(Реквизит, "Логин");
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
КонецПроцедуры
&НаСервере
Процедура ИнициализацияДляОблачнойПодписи()
ОбработкаЗаявленийАбонента.ИнициализацияДляОблачнойПодписи(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМестоХраненияКлюча()
ОповещениеСледующее = Новый ОписаниеОповещения("ВыбратьМестоХраненияКлючаПослеВыбора", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", "МестоХранения");
ПараметрыФормы.Вставить("РежимРаботыСКлючами", РежимРаботыСКлючами);
ПараметрыФормы.Вставить("ТолькоПросмотр", ЗапретитьИзменение);
ПараметрыФормы.Вставить("УчетнаяЗаписьОблачнойПодписи", СвойствоОблачнойПодписи.УчетнаяЗапись);
ПараметрыФормы.Вставить("СерверОблачнойПодписи", СвойствоОблачнойПодписи.ИдентификаторСервера);
ПараметрыФормы.Вставить("Логин", ?(ПустаяСтрока(СвойствоОблачнойПодписи.НовыйЛогин), ИНН, СвойствоОблачнойПодписи.НовыйЛогин));
ПараметрыФормы.Вставить("Организация", Организация);
ПараметрыФормы.Вставить("СпособПодтвержденияКриптоопераций", СпособПодтвержденияКриптоопераций);
ПараметрыФормы.Вставить("ВключатьЛицензиюКриптоПроВСертификат", ВключатьЛицензиюКриптоПроВСертификат);
ПараметрыФормы.Вставить("ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат", ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат);
ПараметрыФормы.Вставить("ПервичноеЗаявление", Истина);
КонтекстЭДОКлиент.ВключаемыйСертификатНажатие(ЭтотОбъект, ОповещениеСледующее, ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМестоХраненияКлючаПослеВыбора(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если РезультатВыбора <> Неопределено И НЕ ЗапретитьИзменение Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(РезультатВыбора);
РежимРаботыСКлючами = ПолучитьМодельХраненияКлюча(МестоХраненияКлюча);
СпособПодтвержденияКриптоопераций = РезультатВыбора.СпособПодтвержденияКриптоопераций;
ВключатьЛицензиюКриптоПроВСертификат = РезультатВыбора.ВключатьЛицензиюКриптоПроВСертификат;
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
СвойствоОблачнойПодписи.УчетнаяЗапись = КриптографияЭДКОКлиентСервер.ПолучитьУчетнуюЗаписьПодписи(МестоХраненияКлюча);
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
Если НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
СвойствоОблачнойПодписи.ИдентификаторСервера = РезультатВыбора.СерверОблачнойПодписи;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Истина;
СвойствоОблачнойПодписи.НовыйЛогин = РезультатВыбора.Логин;
СвойствоОблачнойПодписи.НовыйЛогинПроверен = Истина;
Иначе
СвойствоОблачнойПодписи.НовыйЛогин = "";
СвойствоОблачнойПодписи.ИдентификаторСервера = "";
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Ложь;
СвойствоОблачнойПодписи.НовыйЛогинПроверен = Ложь;
КонецЕсли;
КонецЕсли;
ПриИзмененииРежимаРаботыСКлючами();
ИзменитьОформлениеМестаХраненияКлючей();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПанелиРекламыDSS(НовоеЗначение = Неопределено)
ИздатьНовый = СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СтатусОтображения = КонтекстЭДОСервер.ПоказатьПанельНовойКриптографии(НовоеЗначение, Истина);
Элементы.ГруппаНоваяКриптография.Видимость =
СтатусОтображения
И НЕ СертификатДолженБытьПолученОтГосУЦ
И ИздатьНовый
И НЕ ЭтоМультиРежим
И НЕ ЭтоОткрытиеСВыбраннойЭЦП;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНастройкиОблачнойПодписи(РезультатОбработки, ДополнительныеПараметры) Экспорт
Если РезультатОбработки = "ВключилиОпцию" Тогда
ИнициализацияДляОблачнойПодписи();
ИзменитьОформлениеМестаХраненияКлючей();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкорректироватьОрганыДляТарифов()
Если НЕ ЗначениеЗаполнено(ТарифОператораЭДО) Тогда
Возврат;
КонецЕсли;
СдаватьВРосстат = Ложь;
ПодатьЗаявкуНаСертификатДляФСРАР = Ложь;
ПодатьЗаявкуНаПодключениеРПН = Ложь;
ПодатьЗаявкуНаПодключениеФТС = Ложь;
СдаватьВЦБ = Ложь;
Если ТарифОператораЭДО = Перечисления.ТарифыОператораЭДО.КадровыеРешения Тогда
СдаватьВФНС = Ложь;
СдаватьВФСС = Истина;
СдаватьВПФР = Истина;
КонецЕсли;
Если ТарифОператораЭДО = Перечисления.ТарифыОператораЭДО.ПромоЕНС Тогда
СдаватьВФНС = Истина;
СдаватьВФСС = Ложь;
СдаватьВПФР = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыПравПользователя() Экспорт
Результат = Мультирежим.ПараметрыФормыПравПользователя(ЭтотОбъект);
Результат.Вставить("ТипЗаявления", Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Первичное);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ИнструкцияСканаПодтверждениеПравОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СохранитьЗаявление(Истина);
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.НапечататьПодтверждениеПраваАдмин(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНовогоВладельцаЭЦП_Завершение(Результат, ВходящийКонтекст) Экспорт
ПосоветоватьОбратитсяКАдминистраторуПриОтсутствииПрав();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораКЭПКогдаОрганизацияОпределена()
ОпределитьВладельцаПоСертификату();
ОбработкаЗаявленийАбонентаКлиент.СкорректироватьПризнакЭтоФизЛицо(ЭтотОбъект, ЭтотОбъект);
ПриИзмененииОрганизации();
КонецПроцедуры
&НаКлиенте
Процедура ЕстьКЭП_ПослеВыбораСертификата(Результат, ВходящийКонтекст) Экспорт
Если НЕ ЗначениеЗаполнено(ВключаемыйСертификат) Тогда
Возврат;
КонецЕсли;
ЭтоОткрытиеСВыбраннойЭЦП = Истина;
Результат = УдалосьОпределитьОрганизациюПоСертификату();
Если Результат.ОрганизацияНайдена Тогда
Организация = Результат.Организация;
ПослеВыбораКЭПКогдаОрганизацияОпределена();
ИначеЕсли Результат.НайденоНесколькоОрганизаций
ИЛИ Результат.ЭтоСертификатФизЛица Тогда
ПоказатьСтраницуСПустойОрганизацией();
Иначе
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(НСтр("ru = 'Перевыбрать'"));
Если ИспользуетсяРежимТестирования Тогда
Кнопки.Добавить(НСтр("ru = 'Создать'"));
КонецЕсли;
Кнопки.Добавить(НСтр("ru = 'Отмена'"));
ОписаниеОповещения = Новый ОписаниеОповещения(
"ЕстьКЭП_ПослеПредупрежденияЧтоОрганизацияНеНайдена",
ЭтотОбъект,
Кнопки);
Если СтрДлина(ИНН_ИзСертификата) = 12 Тогда
ТекстВопроса = НСтр("ru = 'В программе не найден ИП %1 (ИНН %2).
|Выбрите другой сертификат или создайте ИП в справочнике '");
ФИО_ИзСертификата = СокрЛП(ВладелецЭЦПФамилия_ИзСертификата + " " + ВладелецЭЦПИмя_ИзСертификата + " " + ВладелецЭЦПОтчество_ИзСертификата);
ТекстВопроса = СтрШаблон(ТекстВопроса, ФИО_ИзСертификата, ИНН_ИзСертификата);
Иначе
ТекстВопроса = НСтр("ru = 'В программе не найдена организация %1 (ИНН %2).
|Выбрите другой сертификат или создайте новую организацию в справочнике '");
ТекстВопроса = СтрШаблон(ТекстВопроса, КраткоеНаименование_ИзСертификата, ИНН_ИзСертификата);
КонецЕсли;
Ссылка = Новый ФорматированнаяСтрока(НСтр("ru = 'Организации'"),,,,"ОткрытьОрганизацииЗакрытьРодителя");
ТекстВопроса = Новый ФорматированнаяСтрока(
ТекстВопроса,
Ссылка,
".");
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ТекстВопроса", ТекстВопроса);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_НеНайденаОрганизация",
ДополнительныеПараметры,
,,,,
ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЕстьКЭП_ПослеПредупрежденияЧтоОрганизацияНеНайдена(Ответ, Кнопки) Экспорт
Если Ответ = НСтр("ru = 'Перевыбрать'") Тогда
ЕстьКЭП(Неопределено);
ИначеЕсли Ответ = НСтр("ru = 'ОткрытьСписокОрганизаций'") Тогда
ОткрытьФорму("Справочник.Организации.ФормаСписка",,,,,,,РежимОткрытияОкнаФормы.Независимый);
ИначеЕсли Ответ = НСтр("ru = 'Создать'") Тогда
СоздатьОрганизацию();
Если ЗначениеЗаполнено(Организация) Тогда
ПослеВыбораКЭПКогдаОрганизацияОпределена();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ШаблонПоискаОрганизацииПоСертификату()
Результат = Новый Структура();
Результат.Вставить("Организация", Неопределено);
Результат.Вставить("ОрганизацияНайдена", Ложь);
Результат.Вставить("ЭтоСертификатФизЛица", Ложь);
Результат.Вставить("НайденоНесколькоОрганизаций", Ложь);
Возврат Результат;
КонецФункции
&НаСервере
Функция УдалосьОпределитьОрганизациюПоСертификату()
Результат = ШаблонПоискаОрганизацииПоСертификату();
Если ЭтоБыстрыйСтарт И ЗначениеЗаполнено(Организация) Тогда
Результат.Организация = Организация;
Результат.ОрганизацияНайдена = Истина;
ИначеЕсли ЗначениеЗаполнено(ИНН_ИзСертификата) Тогда
Организации = ОрганизацииПоИНН(ИНН_ИзСертификата);
Если Организации.Количество() = 1 Тогда
Результат.Организация = Организации[0];
Результат.ОрганизацияНайдена = Истина;
Иначе
Результат.НайденоНесколькоОрганизаций = Организации.Количество() > 1;
КонецЕсли;
Иначе
Результат.ЭтоСертификатФизЛица = Истина;
ИнициализироватьОрганизацию();
Результат.ОрганизацияНайдена = ЗначениеЗаполнено(Организация);
Результат.Организация = Организация;
КонецЕсли;
РезультатПоискаОрганизацииИзСертификата = Новый ФиксированнаяСтруктура(Результат);
Возврат Результат;
КонецФункции
&НаСервере
Функция СоздатьОрганизацию()
ПараметрыСоздания = Новый Структура();
ПараметрыСоздания.Вставить("Наименование", КраткоеНаименование_ИзСертификата);
ПараметрыСоздания.Вставить("НаименованиеСокращенное", КраткоеНаименование_ИзСертификата);
ПараметрыСоздания.Вставить("ИНН", ИНН_ИзСертификата);
ПараметрыСоздания.Вставить("ОГРН", ОГРН_ИзСертификата);
НоваяОрганизация = Справочники.Организации.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НоваяОрганизация, ПараметрыСоздания);
НоваяОрганизация.Записать();
Организация = НоваяОрганизация.Ссылка;
КонецФункции
&НаСервере
Функция ОпределитьВладельцаПоСертификату()
Данные = ОбработкаЗаявленийАбонента.ИсходныйВладелецСертификатаПоФИОиСНИЛС(
Организация,
ВладелецЭЦПФамилия_ИзСертификата,
ВладелецЭЦПИмя_ИзСертификата,
ВладелецЭЦПОтчество_ИзСертификата,
ВладелецЭЦПСНИЛС_ИзСертификата);
ВладелецЭЦП_ИзСертификата = Данные.ВладелецЭЦПИсходный;
ВладелецЭЦПТип_ИзСертификата = Данные.ВладелецЭЦПТипИсходный;
ВладелецЭЦП = ВладелецЭЦП_ИзСертификата;
ВладелецЭЦПТип = ВладелецЭЦПТип_ИзСертификата;
КонецФункции
&НаСервере
Функция ОрганизацииПоИНН(ИНН) Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка КАК Организация,
| Организации.ИНН КАК ИНН
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ИНН ПОДОБНО ""%"" + &ИНН + ""%""
| И Организации.ПометкаУдаления = ЛОЖЬ");
Запрос.УстановитьПараметр("ИНН", ИНН);
Организации = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
Возврат Организации;
КонецФункции
&НаКлиенте
Процедура СообщитьОбОтсутствииПодходящихСертификатов(Форма) Экспорт
ОбработкаЗаявленийАбонентаКлиент.СообщитьОбОтсутствииПодходящихСертификатов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокЛокальныхСертификатовКалуги(ОповещениеОЗавершении) Экспорт
КонтекстЭДОКлиент.ОткрытьСписокЛокальныхСертификатовКалуги(ЭтотОбъект, ОповещениеОЗавершении);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Закрыть()
Модифицированность = Ложь;
ПрограммноеЗакрытие = Истина;
Закрыть();
КонецПроцедуры
&НаСервере
Процедура ПоказатьСтраницуСозданияКлюча()
Элементы.ТекстПриОжидании.Заголовок = НСтр("ru = 'Выполняется создание ключа...'");
АктивизироватьСтраницуБублика(ЭтотОбъект, Элементы.ДлительноеДействие);
КонецПроцедуры
&НаСервере
Процедура ПоказатьОшибкуСозданияКлюча()
Элементы.ЗаголовокКОшибке.Заголовок = НСтр("ru = 'Не удалось создать закрытый ключ по причине:'");
Элементы.ТекстОшибки.Заголовок = ПричинаОшибки;
БезЭлектроннойПодписиИзменитьВидимость(Ложь);
АктивизироватьСтраницуБублика(ЭтотОбъект, Элементы.ОписаниеОшибки);
КонецПроцедуры
&НаСервере
Процедура БезЭлектроннойПодписиИзменитьВидимость(Видимость)
Элементы.БезЭлектроннойПодписи.Видимость = Видимость;
Если Видимость Тогда
Элементы.КнопкаНазадНаОсновную.ЦветФона = Новый Цвет();
Элементы.КнопкаНазадНаОсновную.Заголовок = НСтр("ru = 'Назад'");
Иначе
Элементы.КнопкаНазадНаОсновную.ЦветФона = Новый Цвет(255, 225, 0);
Элементы.КнопкаНазадНаОсновную.Заголовок = НСтр("ru = 'Вернуться к заявлению'");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура АктивизироватьСтраницуБублика(Форма, ТекущаяСтраница)
ДокументооборотСКОКлиентСервер.АктивизироватьСтраницу(Форма.Элементы.Этапы, ТекущаяСтраница);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОшибкуОтправкиЗаявления()
БезЭлектроннойПодписиИзменитьВидимость(Истина);
ПричинаОшибки = СтрЗаменить(ПричинаОшибки, Символы.ПС + Символы.ПС, Символы.ПС);
Если СтрНайти(ПричинаОшибки, НСтр("ru = 'Не удалось выполнить подписание сертификатом'")) <> 0 Тогда
Ошибки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПричинаОшибки, Символы.Таб);
Элементы.ЗаголовокКОшибке.Заголовок = Ошибки[0];
Элементы.ТекстОшибки.Заголовок = Ошибки[1];
ТолькоПодписание = ПроверитьПодписьОблачногоСервиса(МестоХраненияКлюча, ДокументЗаявление);
Если ИспользоватьСуществующий(ЭтотОбъект) ИЛИ ТолькоПодписание Тогда
БезЭлектроннойПодписиИзменитьВидимость(Ложь);
Иначе
Элементы.РекомендацияКОшибке.Заголовок = НСтр("ru = '
|Попробуйте устранить причину или отправьте заявление без электронной подписи.'");
Элементы.БезЭлектроннойПодписи.КнопкаПоУмолчанию = ТолькоПодписание;
Элементы.ПустышкаДляВыравнивания.Видимость = Ложь;
КонецЕсли;
ИначеЕсли СтрНайти(ПричинаОшибки, НСтр("ru = 'ТикетАутентификацииНаПорталеПоддержки'")) <> 0 Тогда
Если ПричинаОшибки = "ТикетАутентификацииНаПорталеПоддержки.КодОшибки:ПревышеноКоличествоПопыток"
И КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча) Тогда
Элементы.ТекстОшибки.Заголовок = НСтр("ru = 'Не удалось авторизоваться на Портале 1С:ИТС.
|Ответ сервера: превышено количество попыток авторизации'");
Элементы.РекомендацияКОшибке.Заголовок = КонтекстЭДОКлиент.ТекстДляПревышеноКоличествоПопытокПолученияТикета();
ИначеЕсли ПричинаОшибки = "ТикетАутентификацииНаПорталеПоддержки.КодОшибки:НеверныйЛогинИлиПароль"
И КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча) Тогда
Элементы.ТекстОшибки.Заголовок = НСтр("ru = 'Не удалось авторизоваться на Портале 1С:ИТС'");
Элементы.РекомендацияКОшибке.Заголовок = Новый ФорматированнаяСтрока(
Символы.ПС,
НСтр("ru = 'Для отправки заявления необходимо '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'задать'"),,,,"задать логин и пароль от ИТС"),
НСтр("ru = ' логин и пароль от '"),
Новый ФорматированнаяСтрока(НСтр("ru = 'Портала 1С:ИТС'"),,,,"перейти на Портал ИТС"),
НСтр("ru = ' и повторить отправку.'"));
ИначеЕсли СокрЛП(ДокументЗаявление.НомерОсновнойПоставки1с) = "" Тогда
Элементы.ТекстОшибки.Заголовок = НСтр("ru = 'Не удалось авторизоваться на Портале 1С:ИТС'");
Элементы.РекомендацияКОшибке.Заголовок = НСтр("ru = '
|Для отправки заявления необходимо заполнить рег. номер программы в заявлении'");
Оповестить(НСтр("ru = 'Заполнить рег. номер'"), Истина, ДокументЗаявление);
Иначе
Элементы.ТекстОшибки.Заголовок = НСтр("ru = 'Не удалось авторизоваться на Портале 1С:ИТС'");
Элементы.РекомендацияКОшибке.Заголовок = НСтр("ru = '
|Обратитесь в службу поддержки или повторите попытку позже.'");
Оповестить(НСтр("ru = 'Заполнить рег. номер'"), Истина, ДокументЗаявление);
КонецЕсли;
БезЭлектроннойПодписиИзменитьВидимость(Ложь);
Элементы.ПустышкаДляВыравнивания.Видимость = Истина;
Иначе
Элементы.ЗаголовокКОшибке.Заголовок = НСтр("ru = 'Не удалось отправить заявление по причине:'");
Элементы.ТекстОшибки.Заголовок = ПричинаОшибки;
БезЭлектроннойПодписиИзменитьВидимость(Ложь);
Элементы.ПустышкаДляВыравнивания.Видимость = Истина;
КонецЕсли;
АктивизироватьСтраницуБублика(ЭтотОбъект, Элементы.ОписаниеОшибки);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьПодписьОблачногоСервиса(МестоХраненияКлюча, Заявление)
Результат = Ложь;
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча)
И Заявление.ТипЗаявления = Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение Тогда
СвойствоОблачнойПодписи = ОбработкаЗаявленийАбонентаКлиентСервер.СведенияОблачнойПодписиЗаявления(Заявление);
Результат = СвойствоОблачнойПодписи.ТребуетИзменения;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура УправлениеСтраницейБубликПриОткрытииНаСервере()
Если ПропуститьСтраницуИнструкцияПоСозданиюКлючаЭЦП() Тогда
ПоказатьСтраницуОтправкиЗаявления();
Иначе
ПоказатьСтраницуПодготовкиКСозданиюКлюча();
КонецЕсли;
Видимость =
УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦФНС
ИЛИ УЦ = Перечисления.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр;
Элементы.ПодсказкаПроТокен.Видимость = Видимость;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСтраницуОтправкиИНачатьОтправкуПриНеобходимости()
ОткрытьСтраницуОтправки();
Если ПропуститьСтраницуИнструкцияПоСозданиюКлючаЭЦП() Тогда
ОтправитьЗаявлениеИзВладельца();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСтраницуОтправки()
АктивизироватьСтраницу(ЭтотОбъект, Элементы.СтраницаОтправки_БС);
УправлениеСтраницейБубликПриОткрытииНаСервере();
КонецПроцедуры
&НаСервере
Функция ПропуститьСтраницуИнструкцияПоСозданиюКлючаЭЦП()
Возврат ОбработкаЗаявленийАбонента.ПропуститьСтраницуИнструкцияПоСозданиюКлючаЭЦП(ДокументЗаявление, МестоХраненияКлюча);
КонецФункции
&НаСервере
Процедура ПоказатьСтраницуПодготовкиКСозданиюКлюча()
АктивизироватьСтраницуБублика(ЭтотОбъект, Элементы.НачатьСозданиеКлюча);
КонецПроцедуры
&НаСервере
Процедура ПоказатьСтраницуОтправкиЗаявления()
Если КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
Элементы.ТекстПриОжидании.Заголовок = НСтр("ru = 'Выполняется отправка заявления...
|Обычно это занимает 1-2 минуты'");
Иначе
Элементы.ТекстПриОжидании.Заголовок = НСтр("ru = 'Выполняется отправка заявления...'");
КонецЕсли;
АктивизироватьСтраницуБублика(ЭтотОбъект, Элементы.ДлительноеДействие);
КонецПроцедуры
&НаКлиенте
Процедура БезЭлектроннойПодписи(Команда)
ОтправитьВБумажномВиде();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЗакрытыйКлюч(Команда)
ПоказатьСтраницуСозданияКлюча();
ОтправитьЗаявлениеИзВладельца();
КонецПроцедуры
&НаКлиенте
Процедура КнопкаНазадНаОсновную(Команда)
ПоказатьОсновнуюСтраницу();
КонецПроцедуры
&НаКлиенте
Процедура УспешнаяОтправка_ЗаявленияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Заявления = ДокументооборотСКОВызовСервера.ЗагрузитьНастройку("Облачная1СО_Заявления");
Если Заявления = Неопределено Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заявления не найдены'"));
Иначе
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МассивЗаявлений", Заявления);
ОткрытьФорму("Обработка.НачалоРаботыОблачной1СО.Форма.СписокЗаявлений", ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннаяПочтаОрганизации_ПриИзмененииТекстаРедактирования(Текст, ИзмененоВручную = Ложь)
Если ИзмененоВручную Тогда
Пауза = 1.5;
Иначе
Пауза = 0.1;
КонецЕсли;
ЭлектроннаяПочтаОрганизации = Текст;
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации");
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации", Пауза, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьЭлектроннаяПочтаОрганизации()
Если ЗначениеЗаполнено(ЭлектроннаяПочтаОрганизации) Тогда
Элементы.ЭлектроннаяПочтаОрганизации.ОбновитьТекстРедактирования();
КонецЕсли;
ИзменитьОформлениеЭлПочтыОрганизации();
КонецПроцедуры
&НаСервере
Функция ОтключенаИнтеграция() Экспорт
Возврат Облачная1СО.ОтключенаИнтеграцияСУчетнымиСистемами();
КонецФункции
&НаКлиенте
Процедура Подключаемый_ЗакрытьСПараметромЗакрытия()
ПрограммноеЗакрытие = Истина;
ЕстьПараметрЗакрытия = Истина;
ПараметрыЗакрытия = Новый Структура;
ПараметрыЗакрытия.Вставить("ОтправленоУспешно", ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено"));
Закрыть(ПараметрыЗакрытия);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьВыводСтатусовИВажныхСообщений_85()
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.УстановитьРазмещениеНаименованияЭтапаБРО_85(ЭтотОбъект);
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере() Экспорт
Если РегламентированнаяОтчетность.ДоступнаПодсистема85() Тогда
МодульЭДОСКонтролирующимиОрганами = ОбщегоНазначения.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганами");
МодульЭДОСКонтролирующимиОрганами.ВывестиСтатусыИВыжныеСообщенияНаФорму_85(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДетальноеОписаниеСтатусаПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат = "ОбновитьОтправку" Тогда
ОбновитьОтправку(Неопределено);
ИначеЕсли Результат = "ГиперссылкаПротокол" Тогда
ГиперссылкаПротоколНажатие(Неопределено);
ИначеЕсли Результат = "ЭтапыОтправки" Тогда
ЭтапыОтправкиНажатие(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВывестиСтатусыИВыжныеСообщенияНаФорму() Экспорт
ВывестиСтатусыИВыжныеСообщенияНаФормуНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНажатияКнопкиВВажномСообщении(Команда)
Если Команда.Имя = "ОтправитьНеотправленноеИзвещение" Тогда
ОтправитьНеотправленноеИзвещение(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиВВажномСообщении(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НРег(НавигационнаяСсылкаФорматированнойСтроки) = "критическиеошибки" Тогда
КритическиеОшибкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаЗакрытияВажногоСообщения(Команда)
МодульКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер");
МодульКлиентСервер.ЗакрытьВажноеСообщение(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьДействиеИнформационногоСообщения(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
МодульОбщегоНазначенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбщегоНазначенияКлиент");
МодульОбщегоНазначенияКлиент.ОбработатьДействиеИнформационногоСообщения(ЭтотОбъект, ЭлементИлиКоманда, НавигационнаяСсылка, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти