&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;
&НаКлиенте
Перем ПрисоединенныйФайлЗаявления;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Инициализация(Параметры);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытии_ПослеПолученияКонтекста", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если Модифицированность Тогда
Отказ = Истина;
ПодключитьОбработчикОжидания("Подключаемый_СпроситьПроСохранение", 0.1, Истина);
Возврат;
КонецЕсли;
Если Элементы.Закрыть.Заголовок = "Закрыть" Тогда
ПрограммноеЗакрытие = Истина;
КонецЕсли;
ТекстПредупреждения = НСтр("ru = 'Прервать работу помощника?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект,
Отказ,
ЗавершениеРаботы,
ТекстПредупреждения,
"ПрограммноеЗакрытие");
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если НЕ Открыта() Тогда
Возврат;
КонецЕсли;
Если ИмяСобытия = "Запись_Организации" Тогда
Если Источник = Организация ИЛИ Параметр = Организация Тогда
ОбработкаОповещенияЗаписиОрганизации();
КонецЕсли;
ИначеЕсли ИмяСобытия = "Запись_ФизическиеЛица"
ИЛИ ИмяСобытия = "Запись_ВладельцаИлиБухгалтера" Тогда
ОбработкаОповещенияЗаписиВладельца(ИмяСобытия, Параметр, Источник);
ИначеЕсли ИмяСобытия = "ПроверитьЧтоМастерФормированияЗаявкиНаПодключениеИлиИзменениеПодключенияОткрыт" И Источник = Организация Тогда
Параметр.ФормаМастераФормированияЗаявкиНаПодключениеИлиИзменениеПодключенияОткрыта = Истина;
ИначеЕсли ИмяСобытия = "ИсправитьОшибкиЛокальногоХраненияКлюча" Тогда
Если ТипЗнч(Параметр) = Тип("Структура") Тогда
Действие = Параметр.НавигационнаяСсылка;
Иначе
Действие = Параметр;
КонецЕсли;
ОповещениеОЗавершении = Новый ОписаниеОповещения(
"ИсправитьОшибкиЛокальногоХраненияКлюча_ПослеИсправления",
ЭтотОбъект,
Действие);
ОбработкаЗаявленийАбонентаКлиент.ИсправитьОшибкиЛокальногоХраненияКлюча(
ЭтотОбъект,
ОповещениеОЗавершении,
Параметр);
ИначеЕсли ИмяСобытия = НСтр("ru = 'Закрытие Мастер_ОтправкаЗаявления'") Тогда
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗаписиВладельца(ИмяСобытия, Параметр, Источник)
Если Параметр = ВладелецЭЦП ИЛИ Источник = ВладелецЭЦП И НЕ ЭтоМультиРежим Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОбновитьДанныеВладельцаИзОповещения();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеВладельцаИзОповещения()
ПеречитатьДанныеОСотруднике();
ОбработкаЗаявленийАбонента.ЗаполнитьДанныеСотрудника(ЭтотОбъект);
ПроверитьНеобходимостьУстановкиГалки_ИзменитьВладельцаСертификата();
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
СформироватьТаблицуДляПодтвержденияДанных();
Иначе
ИзменитьОформлениеВладельцаСертификата();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗаписиОрганизации()
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИнициализироватьНовыеРеквизитыОрганизации(Ложь);
ПриУстановкеРежимаТолькоСУЦ();
СравнитьРеквизитыОрганизацииСИсходными();
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьРеквизитыОрганизации();
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
СформироватьТаблицуДляПодтвержденияДанных();
КонецЕсли;
УправлениеФормой();
ЭтаФорма.Активизировать();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПодключениеЭДОНедоступноОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(СсылкаОписаниеСервисаЭДО) Тогда
ПерейтиПоНавигационнойСсылке(СсылкаОписаниеСервисаЭДО);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УдаленноПриИзменении(Элемент)
УЦ = ПредопределенноеЗначение("Перечисление.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр");
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ЛичноПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
СброситьФлагПодтверждения(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИнструкцияСканаПодтверждениеПравОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СохранитьЗаявление(Истина);
СтандартнаяОбработка = Ложь;
КонтекстЭДОКлиент.НапечататьПодтверждениеПраваАдмин(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьНажатие(Элемент)
ДругойСотрудник = Неопределено;
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПредупреждениеПроОтсутствиеПравОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
МультирежимКлиент.ПоказатьАдминистраторов(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВывестиОшибку(Элемент)
ПоказатьПредупреждение(, Элемент.Подсказка);
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаВыбратьПользователейНажатие(Элемент)
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоЛичныеНастройки Тогда
ЗаголовокФормы = НСтр("ru = 'Изменилось у пользователя'");
Иначе
ЗаголовокФормы = НСтр("ru = 'Изменения в пользователях'");
КонецЕсли;
ПоказатьИзменившиесяРеквизиты(
ИзмененныеНастройкиПользователей(),
ЗаголовокФормы);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьНастройкиПользователейПриИзменении(Элемент)
Если НЕ ИзменитьНастройкиПользователей Тогда
ВосстановитьГосОрганыПоПользователям();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ВосстановитьГосОрганыПоПользователям()
ЭтоМультиРежим = ЭтоМультиРежимИсходный;
ИнициализироватьПользователей(Истина);
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоЛичныеНастройки Тогда
ВладелецЭЦПРасширилСебеПрава = Ложь;
КонецЕсли;
МультирежимКлиентСервер.РасчитатьНаправленияУчетнойЗаписиПоТаблицеПользователей(ЭтотОбъект);
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьСоставКонтролирующихОрганов();
КонецПроцедуры
&НаКлиенте
Процедура ДоверенностьОбработкаНавигационнойСсылки(Элемент, Действие, СтандартнаяОбработка)
КонтекстЭДОКлиент.ДоверенностьОбработкаНавигационнойСсылки(
ЭтотОбъект,
Элемент,
Действие,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЭтоНотариусАдвокатИлиГКФХПриИзменении(Элемент) Экспорт
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
СравнитьРеквизитыОрганизацииСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ЭтоБюджетополучательПриИзменении(Элемент) Экспорт
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПриУстановкеРежимаТолькоСУЦНаСервере();
ОпределятьМестоХранения = Ложь;
СброситьСпособПолученияСертификата(ОпределятьМестоХранения, Истина);
ИнициализироватьВозможностьБезбумажногоПродления();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаИзменитьНастройкиУведомленийНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеРеквизитыУведомлений(),
НСтр("ru = 'Изменившиеся настройки уведомлений'"));
КонецПроцедуры
&НаКлиенте
Процедура КартинкаРеквизитыОрганизацииНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеРеквизитыОрганизации(),
НСтр("ru = 'Изменившиеся реквизиты организации'"));
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаВыбораМестаХраненияНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеНастройкиХраненияКлюча(),
НСтр("ru = 'Изменившиеся настройки хранения ключа'"));
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаИзменитьНаправленияНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеНаправления(),
НСтр("ru = 'Изменения в составе гос. органов'"));
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаИзменитьРеквизитыСертификатаНажатие(Элемент)
Реквизиты = ИзмененныеРеквизитыСертификата();
ПоказатьИзменившиесяРеквизиты(
Реквизиты,
НСтр("ru = 'Изменившиеся реквизиты сертификата'"));
КонецПроцедуры
&НаКлиенте
Процедура ЭлектроннойПодписьюПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПереключитьНаЭлектронноеПодписание(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ВБумажномВидеПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПереключитьНаБумажноеПодписание(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИнструкцияСканаЗаявленияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НапечататьЗаявление();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВсеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
КонтекстЭДОКлиент.ВыбратьВсеОбработкаНавигационнойСсылки(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СканОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеДобавленияСкана",
ЭтотОбъект);
КонтекстЭДОКлиент.ВыполнитьДействиеСФайлом(
ЭтотОбъект,
ОписаниеОповещения,
Элемент,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеДобавленияСкана(Результат, ВходящийКонтекст) Экспорт
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьСканНажатие(Элемент)
КонтекстЭДОКлиент.ОчиститьСканНажатие(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаИзменитьВладельцаНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеРеквизитыВладельца(),
НСтр("ru = 'Изменившиеся реквизиты владельца сертификата'"));
КонецПроцедуры
&НаКлиенте
Процедура НастройкиУведомленийНажатие(Элемент)
Если ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ПоказатьФормуВыбораТелефонаВКоробке();
ИначеЕсли ЭтоОблако(ЭтотОбъект) Тогда
ПоказатьФормуВыбораТелефонаИПочтыВОблаке();
Иначе
ПоказатьФормуВыбораТелефонаВКоробке();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодсказкаИзменитьРеквизитыПодключенияК1СОтчетностиНажатие(Элемент)
ПоказатьИзменившиесяРеквизиты(
ИзмененныеРеквизитыОрганизации(),
НСтр("ru = 'Изменившиеся реквизиты организации'"));
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьМестоХраненияПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
Если НЕ ИзменитьМестоХранения Тогда
ОпределятьМестоХранения = Истина;
ПриИзмененииМестаХранения(ОпределятьМестоХранения);
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораМестаХраненияНажатие(Элемент)
ПараметрыФормы =
"ПереиздатьСертификатЭДО,
|CryptoProCSPУстановлен,
|ViPNetCSPУстановлен,
|ВключатьЛицензиюКриптоПроВСертификат,
|ВыбранноеМестоХраненияКлюча,
|ДоступнаЭлектроннаяПодписьВМоделиСервиса,
|ЕстьВыборМестаХраненияКлючей,
|КомпонентаУстановлена,
|КриптопровайдерПредставление,
|НомерТелефонаПриПереходеВОблако,
|СпособПодтвержденияКриптоопераций,
|УчетнаяЗапись,
|ЭтоУчетнаяЗаписьВМоделиСервиса,
|ПредупреждатьПроНаличиеЛицензииКриптоПро,
|СпособПолученияСертификата,
|ЭтоПереходВОблако,
|ЭтоПереходВКоробку,
|ПроверенДоступДляТокена,
|ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат,
|СрокЛицензииКриптоПроКонечный,
|ЛицензияКриптоПроВключенаВСертификат,
|ТипКриптопровайдера,
|ТипКриптопровайдераИзменился,
|ТипКриптопровайдераИсходный,
|ЭтаУчетнаяЗаписьБылаСделанаДляОблака,
|ПереиздатьСертификат,
|ИзменитьМестоХранения,
|ДоступнаЭлектроннаяОблачнаяПодпись,
|Организация,
|СертификатДолженБытьПолученОтГосУЦ,
|ВозможноБесшовноеПолучениеСертификатаВДУЦ";
ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы);
ПараметрыФормы = ПараметрыФормы + ",
|Логин,
|УчетнаяЗаписьОблачнойПодписи,
|СерверОблачнойПодписи,
|ЛогинПроверен";
ДополнительныеПараметры.Вставить("Логин", ?(ПустаяСтрока(СвойствоОблачнойПодписи.НовыйЛогин), ИНН, СвойствоОблачнойПодписи.НовыйЛогин));
ДополнительныеПараметры.Вставить("УчетнаяЗаписьОблачнойПодписи", СвойствоОблачнойПодписи.УчетнаяЗапись);
ДополнительныеПараметры.Вставить("СерверОблачнойПодписи", СвойствоОблачнойПодписи.ИдентификаторСервера);
ДополнительныеПараметры.Вставить("ЛогинПроверен", СвойствоОблачнойПодписи.НовыйЛогинПроверен);
ДополнительныеПараметры.Вставить("ПараметрыФормы", ПараметрыФормы);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПоказатьФормуВыбораМестаХраненияНажатие_Завершение",
ЭтотОбъект);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ВыборМестаХранения",
ДополнительныеПараметры,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ФлагПереиздатьСертификатЭДОПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ФлагПодключитьЭДОПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРеквизитыПодключенияК1СОтчетностиПриИзменении(Элемент)
ИзмененныеРеквизиты = ИзмененныеРеквизитыОрганизации();
ЕстьИзменения = ИзмененныеРеквизиты.Количество() > 0;
Если НЕ ЕстьИзменения Тогда
ИзменитьРеквизитыПодключенияК1СОтчетности = Ложь;
Текст = НСтр("ru = 'Реквизиты организации не менялись. Чтобы отправить заявление на изменение реквизитов организации сначала отразите эти изменения в свойствах организации.'");
ПоказатьПредупреждение(, Текст);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьРеквизитыПодключенияК1СОтчетностиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияВладелецЭЦПНажатие(Элемент)
ОткрытьФормуВыбораВладельцаЭЦП();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
Если НужноПредложитьПервичное(ТекущийПользователь) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОрганизацияПриИзменении_ПриОтказеОтПервичного",
ЭтотОбъект);
СпроситьПроПервичное(ОписаниеОповещения, ТекущийПользователь);
Иначе
ИнициализироватьРеквизиты1СОтчетности(ДанныеЗаполнения, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении_ПриОтказеОтПервичного(Результат, ВходящийКонтекст) Экспорт
Организация = Неопределено;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПродлитьЛицензиюНа1СОтчетностьПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПродлитьЛицензиюНа1СОтчетностьПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПереиздатьСертификатПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПереиздатьСертификатПриИзмененииНаСервере();
Если УЦ = ПредопределенноеЗначение("Перечисление.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр")
И ВыбранноеМестоХраненияКлюча <> ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoPro")
И ПереиздатьСертификат
И НЕ ИспользоватьСуществующий(ЭтотОбъект) Тогда
ПереключитьНаЛокальноеХранение();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьМобильныйТелефонПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ПриИзмененииНастроекУведомленийНаСервере();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьВладельцаСертификатаПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьВладельцаСертификатаПриИзмененииНаСервере();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьСоставКонтролирующихОргановПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменитьСоставКонтролирующихОргановПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораМестаХраненияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ВыборМестаХранения" Тогда
ПоказатьФормуВыбораМестаХраненияНажатие(Элемент);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "НастройкиОблачнойПодписи" Тогда
ОткрытьНастрокиDSS();
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Описание" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://help.astral.ru/v/147062851");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияКриптопровайдерОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Подробнее" Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьНастройкиОблачнойПодписи", ЭтотОбъект);
КонтекстЭДОКлиент.ПоказатьИнформациюОбОблачнойПодписи(ЭтотОбъект, ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаУЦОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка)
ОбработкаЗаявленийАбонентаКлиент.ПроверкаУЦОбработкаНавигационнойСсылки(ЭтотОбъект, Ссылка, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УЦПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиент.УЦПриИзменении(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьВключаемыйСертификатНажатие(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура СпособПолученияСертификатаПриИзменении(Элемент)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ЗаполнитьМЧДВЗаявлении();
ЭтоСертификатДругогоУЦ = Ложь;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ВключаемыйСертификатНажатие(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораВключаемогоСертификата",
ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", "Сертификат");
ПараметрыФормы.Вставить("УчетнаяЗаписьОблачнойПодписи", СвойствоОблачнойПодписи.УчетнаяЗапись);
ПараметрыФормы.Вставить("Организация", Организация);
ПараметрыФормы.Вставить("ПервичноеЗаявление", Ложь);
ПараметрыФормы.Вставить("ИННФЛ", ВладелецЭЦПИНН);
Если ИгнорироватьКонфликт Тогда
ПараметрыФормы.Вставить("ВыбранноеМестоХраненияКлюча", ВыбранноеМестоХраненияКлюча);
ПараметрыФормы.Вставить("ИгнорироватьКонфликт", Истина);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УточнитьРежимРаботыСКлючами(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.ВключаемыйСертификатНажатие(ОписаниеОповещения, ЭтотОбъект, ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораМестаХраненияРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Описание" Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://help.astral.ru/v/147062851");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяПомощьНажатие(Элемент)
ФИО = СокрЛП(ВладелецЭЦПИмя + " " + ВладелецЭЦПОтчество);
ОбработкаЗаявленийАбонентаКлиент.ОткрытьФормуПомощи(
ЭтотОбъект,
ФИО,
ТелефонМобильный,
"https://its.1c.ru/db/elreps#content:52:hdoc");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
&НаКлиенте
Процедура ТаблицаДанныхЗаявленияНаПодключениеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элемент.ТекущиеДанные = Неопределено ИЛИ НЕ Элемент.ТекущиеДанные.РеквизитРедактируется Тогда
Возврат;
КонецЕсли;
ТекущийРеквизит = Элемент.ТекущиеДанные.ИзмененныйРеквизит;
НаименованиеРеквизита = Строка(ТекущийРеквизит);
Если Элемент.ТекущиеДанные.ЭтоРеквизитНеХранящийсяВБазе Тогда
Маска = Неопределено;
Если ТекущийРеквизит = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСНИЛС") Тогда
Маска = "999-999-999 99";
ИначеЕсли ТекущийРеквизит = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПКодПодразделения") Тогда
Маска = "999-999";
КонецЕсли;
ИмяРеквизита = ИмяПеречисленияПараметрыПодключенияК1СОтчетности(ТекущийРеквизит);
ЗадатьНовоеЗначениеРеквизиту(ИмяРеквизита, НаименованиеРеквизита, ЭтаФорма[ИмяРеквизита], Маска);
ИначеЕсли Элемент.ТекущиеДанные.СодержитОшибку Тогда
Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.ВладелецРеквизита) Тогда
Если Элемент.ТекущиеДанные.ИзмененныйРеквизит = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДолжность") Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ТаблицаДанныхЗаявленияНаПодключениеВыбор_ПослеЗаполненияДолжности",
ЭтотОбъект);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуРедактированияДолжности(Организация, ВладелецЭЦП, ОписаниеОповещения);
Иначе
ПоказатьЗначение(, Элемент.ТекущиеДанные.ВладелецРеквизита);
КонецЕсли;
Иначе
ТекстСообщения = НСтр("ru = 'Не удалось определить сотрудника-владельца сертификата.
|Укажите сотрудника-владельца сертификата на первом шаге помощника'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ИзменитьПользователя(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораПользователей",
ЭтотОбъект);
МультирежимКлиент.ОткрытьПраваПользователя(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УказатьНастройкиПользователей(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеВыбораПользователей",
ЭтотОбъект);
МультирежимКлиент.ОткрытьПраваПользователей(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройкиЭДО(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьНастройкиЭДО_Завершение",
ЭтотОбъект);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуНастроекРегистрацииЭДО(НастройкиДляЭДО, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокПартнеров1С(Команда)
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://www.1c.ru/rus/partners/onecrep.jsp");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСсылкуНаСтатьюПоПодключению(Команда)
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://its.1c.ru/bmk/elreps/settings");
КонецПроцедуры
&НаКлиенте
Процедура УказатьНаправления(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(
"УказатьНаправления_Завершение",
ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиент.УказатьНаправленияВЗаявлении(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура НапечататьЗаявление(Команда = Неопределено)
СохранитьЗаявлениеКлиент();
КонтекстЭДОКлиент.НапечататьЗаявлениеПо1СОтчетности(ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьМастер(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельМастерДалее(Команда = Неопределено)
ОчиститьСообщения();
МастерДалее = Истина;
ТекущаяСтраница = Элементы.ОсновнаяПанель.ТекущаяСтраница;
Если ТекущаяСтраница = Элементы.ОсновнаяСтраница Тогда
ПриНажатииДалееНаОсновнойСтранице(МастерДалее);
ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
ПриНажатииДалееНаСтраницеПроверкиЗаявления(МастерДалее);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КоманднаяПанельМастерНазад(Команда)
ПоказатьПредыдущуюСтраницу();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьДиректора(Команда)
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьГлБухгалтера(Команда)
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ГлавныйБухгалтер");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьСотрудника(Команда)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ДругойСотрудник = Неопределено;
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьЗаявлениеИОтправить_ПослеПолученияBase64(Результат, ВходящийКонтекст) Экспорт
Если Результат.Выполнено Тогда
МестоХраненияСертификата = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(СвойстваТекущегоСертификата);
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
СвойстваТекущегоСертификата = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ВключаемыйСертификат);
Иначе
СвойстваТекущегоСертификата = ВходящийКонтекст;
КонецЕсли;
ДвДанныеСертификата = Base64Значение(Результат.СтрокаBase64);
СвойстваТекущегоСертификата.Вставить("Сертификат", ДвДанныеСертификата);
КриптографияЭДКОКлиентСервер.ЗаполнитьМестоХраненияКлюча(МестоХраненияСертификата, СвойстваТекущегоСертификата);
СохранитьСертификатВДокумент("ПодписатьЗаявлениеИОтправить_ПослеПолученияBase64");
СравнитьРеквизитыСертификатов();
Иначе
СообщитьОНевозможностиПодписания(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкрытьИнформациюКриптопровайдера(Команда)
ИзменитьОформлениеПанелиРекламыDSS(Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проверки
&НаСервере
Функция ФизЛицоСоответствуетТекущемуПользователю()
Возврат Мультирежим.ФизЛицоСоответствуетТекущемуПользователю(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ПроверитьВозможностьОтправкиВторичныхЗаявлений(ВыполняемоеОповещение)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПроверитьВозможностьОтправкиВторичныхЗаявлений_ПослеПроверки",
ЭтотОбъект,
ДополнительныеПараметры);
КонтекстЭДОКлиент.ЕстьДанныеДляФормированияВторичногоЗаявления(
ОписаниеОповещения,
УчетнаяЗапись);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВозможностьОтправкиВторичныхЗаявлений_ПослеПроверки(Результат, ДополнительныеПараметры) Экспорт
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
ПоддерживаетсяВторичноеЗаявление = Истина;
ЕстьДанныеДляФормированияВторичногоЗаявления = Результат.ЕстьДанные;
УжеНастроенаУчетнаяЗаписьДокументооборота = ЗначениеЗаполнено(УчетнаяЗапись);
Если НЕ УжеНастроенаУчетнаяЗаписьДокументооборота
ИЛИ НЕ СпецоператорПоддерживаетВторичныеЗаявления
ИЛИ НЕ ЕстьДанныеДляФормированияВторичногоЗаявления Тогда
ПоддерживаетсяВторичноеЗаявление = Ложь;
Если НЕ УжеНастроенаУчетнаяЗаписьДокументооборота Тогда
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ПоказатьФормуПредложениеОформитьЗаявлениеНаПодключение(Организация);
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
ИначеЕсли НЕ СпецоператорПоддерживаетВторичныеЗаявления Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Оператор электронного документооборота не поддерживает отправку вторичных заявлений.
|Для изменения настроек подключения к 1С-Отчетности свяжитесь со службой поддержки оператора электронного документооборота'"));
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
ИначеЕсли НЕ ЕстьДанныеДляФормированияВторичногоЗаявления Тогда
ТекстОшибокДляМастераПодключенияК1СОтчетности = "";
ДополнительныеПараметры = Новый Структура("ТекстОшибокДляМастераПодключенияК1СОтчетности, УчетнаяЗапись, ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление", ТекстОшибокДляМастераПодключенияК1СОтчетности, УчетнаяЗапись, ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьВозможностьОтправкиВторичныхЗаявлений_ПовторнаяПопытка", ЭтотОбъект, ДополнительныеПараметры);
КонтекстЭДОКлиент.ЕстьДанныеДляФормированияВторичногоЗаявления(
ОписаниеОповещения,
УчетнаяЗапись,
ТекстОшибокДляМастераПодключенияК1СОтчетности);
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
КонецЕсли;
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВозможностьОтправкиВторичныхЗаявлений_ПовторнаяПопытка(Результат, ДополнительныеПараметры) Экспорт
ЕстьДанные = Результат.ЕстьДанные;
ТекстОшибокДляМастераПодключенияК1СОтчетности = Результат.ТекстОшибок;
УчетнаяЗапись = ДополнительныеПараметры.УчетнаяЗапись;
ВыполняемоеОповещение = ДополнительныеПараметры.ВыполняемоеОповещение;
ПоддерживаетсяВторичноеЗаявление = ДополнительныеПараметры.ПоддерживаетсяВторичноеЗаявление;
Если НЕ ЕстьДанные Тогда
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("УчетнаяЗапись", УчетнаяЗапись);
ПараметрыФормы.Вставить("ТекстОшибки", ТекстОшибокДляМастераПодключенияК1СОтчетности);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ПредупреждениеОНевозможностиПолучитьНастройкиУчетнойЗаписи", ПараметрыФормы);
КонецЕсли;
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, ПоддерживаетсяВторичноеЗаявление);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОшибкиЛокальногоХраненияКлюча_Завершение(Результат, ВходящийКонтекст) Экспорт
ОбработкаЗаявленийАбонентаКлиентСервер.УточнитьРежимРаботыСКлючами(ЭтотОбъект);
ТелефонМобильныйДляПаролей = ТелефонМобильныйДляПаролей;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКриптопровайдер_УстановитьКомпонентуИОпределитьКриптопровайдер(ВыполняемоеОповещение)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПроверитьКриптопровайдер_ПослеСозданияМенеджераКриптографии",
ЭтотОбъект,
ДополнительныеПараметры);
КриптографияЭДКОКлиент.СоздатьМенеджерКриптографии(ОписаниеОповещения, Ложь,, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКриптопровайдер_ПослеСозданияМенеджераКриптографии(Результат, ВходящийКонтекст) Экспорт
ЗапомнитьПризнакУстановкиКомпоненты(ЭтотОбъект, Результат.Выполнено);
ПроверитьКриптопровайдерИМестоХраненияКлючей(ВходящийКонтекст.ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗапомнитьПризнакУстановкиКомпоненты(Форма, Подключена)
Форма.КомпонентаДляРаботыСКриптографиейПодключена = Подключена;
Форма.КомпонентаУстановлена = Подключена;
КонецПроцедуры
&НаСервере
Процедура Проверить1СЭДОПоНовойСхеме(МастерДалее)
Если ПодключитьЭДО И Элементы.ГруппаПодключитьЭДО.Видимость Тогда
НастройкиКорректны = Неопределено;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ПроверитьНастройкиРегистрацииЭДО(НастройкиДляЭДО, НастройкиКорректны);
Если НЕ НастройкиКорректны Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Уточните настройки подключения 1С-ЭДО'"), ,"ПодключитьЭДО");
МастерДалее = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКриптопровайдерИМестоХраненияКлючей(ВыполняемоеОповещение, Принудительно = Ложь)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПроверитьКриптопровайдерИМестоХраненияКлючей_Завершение",
ЭтотОбъект,
ДополнительныеПараметры);
ПропуститьПроверкуКриптопровайдера =
НЕ Принудительно И (ЭтоПереходВОблако
ИЛИ ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ЭтоПереходВКоробку
ИЛИ ИспользоватьСуществующий(ЭтотОбъект) И ВключаемыйСертификатОблачный);
Если ПропуститьПроверкуКриптопровайдера Тогда
МастерДалее = ПроверитьТелефонИМестоХранения();
Если МастерДалее Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, Истина);
КонецЕсли;
Иначе
ПроверитьНаличиеКриптопровайдера(ОписаниеОповещения, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьТелефонИМестоХранения()
МастерДалее = Истина;
ПроверятьМестоХранения =
ЕстьВыборМестаХраненияКлючей
И НЕ ЗначениеЗаполнено(ВыбранноеМестоХраненияКлюча)
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
И ИзменитьМестоХранения;
Если ПроверятьМестоХранения Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите место хранения ключа'"), ,"ВыбранноеМестоХраненияКлюча");
МастерДалее = Ложь;
КонецЕсли;
Если НЕ ПодтверждениеКонтактовВыполнено() Тогда
Сообщение = НСтр("ru = 'Подтвердите контактные данные.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(Сообщение,,"НомерТелефонаПриПереходеВОблако");
МастерДалее = Ложь;
КонецЕсли;
Возврат МастерДалее;
КонецФункции
&НаКлиенте
Процедура ПроверитьКриптопровайдерИМестоХраненияКлючей_ПослеВопроса(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ПроверитьКриптопровайдер_УстановитьКомпонентуИОпределитьКриптопровайдер(ВходящийКонтекст.ВыполняемоеОповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКриптопровайдерИМестоХраненияКлючей_Завершение(Результат, ВходящийКонтекст) Экспорт
ВыбранCryptoPro = ВыбранноеМестоХраненияКлюча = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoPro");
ВыбранVipNet = ВыбранноеМестоХраненияКлюча = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.VipNet");
НеУстановленНиОдинКриптопровайдер = НЕ CryptoProCSPУстановлен И НЕ ViPNetCSPУстановлен;
УстановленыОбаКриптопровайдера =
(ВыбранCryptoPro ИЛИ ВыбранVipNet)
И CryptoProCSPУстановлен
И ViPNetCSPУстановлен
И НЕ ИгнорироватьКонфликт;
ВыбранНеустановленныйКриптопровайдер =
(ВыбранCryptoPro И НЕ CryptoProCSPУстановлен
ИЛИ ВыбранVipNet И НЕ ViPNetCSPУстановлен)
И НЕ ИспользоватьСуществующий(ЭтотОбъект);
МастерДалее = Истина;
Если НЕ КомпонентаУстановлена Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПроверитьКриптопровайдерИМестоХраненияКлючей_ПослеВопроса",
ЭтотОбъект,
ВходящийКонтекст);
ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Не удалось установить компоненту криптографии. Повторить попытку?'"),РежимДиалогаВопрос.ДаНетОтмена);
ИначеЕсли НеУстановленНиОдинКриптопровайдер Тогда
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ОтсуствиеКриптопровайдеров",,,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
МастерДалее = Ложь;
ИначеЕсли УстановленыОбаКриптопровайдера Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеПоказаПредупрежденияОКонфликте",
ЭтотОбъект);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("КриптопровайдерПриКонфликте", ВыбранноеМестоХраненияКлюча);
ДополнительныеПараметры.Вставить("ЭтоЗаявлениеНаИзменение", Истина);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_КонфликтКриптопровайдеров",
ДополнительныеПараметры,
,
,
,
,
ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
МастерДалее = Ложь;
ИначеЕсли ВыбранНеустановленныйКриптопровайдер Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выбранный криптопровайдер не установлен на рабочий компьютер'"), ,"ВыбранноеМестоХраненияКлюча");
МастерДалее = Ложь;
КонецЕсли;
Если МастерДалее Тогда
МастерДалее = ПроверитьТелефонИМестоХранения();
КонецЕсли;
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение, МастерДалее);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВладельцаЭП(МастерДалее)
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат)
И ЭтоРуководитель(ЭтотОбъект)
И НЕ ЗначениеЗаполнено(Руководитель) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите руководителя'"), ,"ДекорацияРуководитель");
МастерДалее = Ложь;
КонецЕсли;
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат)
И ЭтоБухгалтер(ЭтотОбъект)
И НЕ ЗначениеЗаполнено(ГлБухгалтер) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите бухгалтера'"), ,"ДекорацияГлБухгалтер");
МастерДалее = Ложь;
КонецЕсли;
ПроверитьНаличиеВладельца =
ПереиздатьСертификат
И НЕ ИзменитьВладельцаСертификата
И ЭтоДругойСотрудник(ЭтотОбъект)
И НЕ ЗначениеЗаполнено(ДругойСотрудник)
И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Если ПроверитьНаличиеВладельца Тогда
ТекстПредупреждения = НСтр("ru = 'Переиздание сертификата требует обязательного указания сотрудника-владельца сертификата.
|Установите флажок ""Изменение сотрудника-владельца сертификата"" и выберите владельца сертификата'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения,,"ИзменитьВладельцаСертификата");
МастерДалее = Ложь;
КонецЕсли;
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат)
И ВладелецЭЦП = ПредопределенноеЗначение("Справочник.ФизическиеЛица.ПустаяСсылка") Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите сотрудника-владельца сертификата'"), ,"ДругойСотрудник");
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтролирующиеОрганы(МастерДалее)
Если СдаватьВФНС И ПолучателиФНС.Количество()=0 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заполните коды ФНС'"), ,"СдаватьВФНС");
МастерДалее = Ложь;
КонецЕсли;
Если СдаватьВПФР Тогда
ПроверятьКодПФР = (ИспользоватьРегНомерСФР И ЗначениеЗаполнено(РегНомерПФР)) ИЛИ НЕ ИспользоватьРегНомерСФР;
КодПФРВОрганизации = КодПФР(ДанныеОрганизации);
Если ПроверятьКодПФР И ПустаяСтрока(СтрЗаменить(КодПФР,"-","")) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заполните поле ""Код отделения ПФР""'"), ,"СдаватьВПФР");
МастерДалее = Ложь;
ИначеЕсли ПроверятьКодПФР И СтрДлина(СокрЛП(КодПФР))<> 7 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Код отделения ПФР должен состоять из 6 цифр'"), ,"СдаватьВПФР");
МастерДалее = Ложь;
ИначеЕсли ПроверятьКодПФР И СокрЛП(КодПФР) <> КодПФРВОрганизации Тогда
ТекстСообщения = НСтр("ru = 'Код отделения ПФР не совпадает с кодом, указанным в организации (%1)'");
Если ПустаяСтрока(СтрЗаменить(КодПФРВОрганизации, "-", "")) Тогда
ТекстСообщения = СтрЗаменить(ТекстСообщения, "(%1)", "");
Иначе
ТекстСообщения = СтрЗаменить(ТекстСообщения, "(%1)", "(" + КодПФРВОрганизации + ")");
КонецЕсли;
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, ,"СдаватьВПФР");
МастерДалее = Ложь;
КонецЕсли;
Если ИспользоватьРегНомерСФР И НЕ ЗначениеЗаполнено(РегНомерПФР) И НЕ ЗначениеЗаполнено(РегНомерСФР) Тогда
ТекстСообщения = НСтр("ru = 'Заполните один из рег. номеров: рег. номер СФР (бывш. ПФР) или рег. номер СФР (новый)'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, ,"СдаватьВПФР");
МастерДалее = Ложь;
КонецЕсли;
КонецЕсли;
Если СдаватьВРосстат Тогда
Если ПолучателиФСГС.Количество() = 0 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заполните коды органа Росстата'"), ,"СдаватьВРосстат");
МастерДалее = Ложь;
ИначеЕсли ПолучателиФСГС.Количество() > 0 Тогда
Для каждого Получатель Из ПолучателиФСГС Цикл
Если ПустаяСтрока(СтрЗаменить(Получатель.КодПолучателя,"-","")) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заполните поле ""Код органа Росстата""'"), ,"СдаватьВРосстат");
МастерДалее = Ложь;
ИначеЕсли СтрДлина(СокрЛП(Получатель.КодПолучателя)) < 5 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Код органа Росстата должен состоять как минимум из 4 цифр'"), ,"СдаватьВРосстат");
МастерДалее = Ложь;
ИначеЕсли КонтекстЭДОКлиент.НайденыЗапрещенныеСимволы(Получатель.КодПолучателя, НСтр("ru = 'Код органа Росстата'"), "СдаватьВРосстат") Тогда
МастерДалее = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если НЕ (СдаватьВФНС ИЛИ СдаватьВПФР ИЛИ СдаватьВРосстат ИЛИ ПодатьЗаявкуНаСертификатДляФСРАР
ИЛИ ПодатьЗаявкуНаПодключениеРПН ИЛИ ПодатьЗаявкуНаПодключениеФТС ИЛИ СдаватьВЦБ) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Укажите хотя бы один контролирующий орган, в который будет сдаваться отчетность'")
, ,"ИзменитьСоставКонтролирующихОрганов");
МастерДалее = Ложь;
ИначеЕсли НЕ СдаватьВФНС И НЕ СдаватьВПФР Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Среди контролирующих органов, в которые будет сдаваться отчетность, должены быть ФНС или ПФР'")
, ,"ИзменитьСоставКонтролирующихОрганов");
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРеквизитыЗаявления(МастерДалее)
ПроверитьРеквизитыЗаявленияНаКлиенте(МастерДалее);
ПроверитьРеквизитыЗаявленияНаСервере(МастерДалее);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРеквизитыЗаявленияНаКлиенте(МастерДалее)
ПроверитьРеквизитыПриПереизданииСертификата(МастерДалее);
ПроверитьЧтоВыбраноХотяБыОдноДействие(МастерДалее);
КонецПроцедуры
&НаСервере
Процедура ПроверитьРеквизитыЗаявленияНаСервере(МастерДалее)
ПроверитьНаправления(МастерДалее);
ПроверитьТаблицуДанныхЗаявления(МастерДалее);
ПроверитьСертификат(МастерДалее);
КонецПроцедуры
&НаСервере
Процедура ПроверитьТаблицуДанныхЗаявления(МастерДалее)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Для каждого СтрокаТаблицы Из ТаблицаДанныхЗаявленияНаПодключение Цикл
ВыполнятьПроверку =
СтрокаТаблицы.ВыделятьСтрокуЖелтым
ИЛИ ПереиздатьСертификат;
Если НЕ ВыполнятьПроверку Тогда
Продолжить;
КонецЕсли;
Если СтрокаТаблицы.СодержитОшибку Тогда
ОбщегоНазначения.СообщитьПользователю(СтрокаТаблицы.ТекстОшибки);
МастерДалее = Ложь;
ИначеЕсли КонтекстЭДОСервер.ЗначениеЗаполненоШумом(СтрокаТаблицы.ЗначениеРеквизита) Тогда
ТекстОшибки = НСтр("ru = 'Значение ""%1"" в поле ""%2"" не несет в себе полезной информации'");
ТекстОшибки = СтрШаблон(ТекстОшибки, СтрокаТаблицы.ЗначениеРеквизита, СтрокаТаблицы.НазваниеРеквизита);
Индекс = ТаблицаДанныхЗаявленияНаПодключение.Индекс(СтрокаТаблицы);
Индекс = Формат(Индекс, "ЧГ=0");
Поле = "ТаблицаДанныхЗаявленияНаПодключение[" + Индекс + "].ЗначениеРеквизита";
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , Поле);
МастерДалее = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНаправления(МастерДалее)
Если НЕ ИзменитьСоставКонтролирующихОрганов Тогда
Возврат;
КонецЕсли;
Мультирежим.ПроверитьНаправленияПередОтправкой(ЭтотОбъект, МастерДалее);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьЧтоВыбраноХотяБыОдноДействие(МастерДалее)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ЭтотПараметрИзменился", Истина);
ПараметрыОтбора.Вставить("ВыделятьСтрокуЖелтым", Истина);
Если ТаблицаДанныхЗаявленияНаПодключение.НайтиСтроки(ПараметрыОтбора).Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не изменено ни одной настройки подключения к 1С-Отчетности'");
Поле = "ТаблицаДанныхЗаявленияНаПодключение[0].ЗначениеРеквизита";
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , Поле);
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьРеквизитыПриПереизданииСертификата(МастерДалее)
ПроверитьАдресОрганизацииЗаявленияНаСервере(МастерДалее);
КонецПроцедуры
&НаСервере
Процедура ПроверитьАдресОрганизацииЗаявленияНаСервере(МастерДалее)
Если ПереиздатьСертификат И ЭтоЮридическоеЛицо Тогда
ОбработкаЗаявленийАбонента.ПроверитьАдресОрганизацииЗаявления(
ЭтотОбъект,
АдресЮридическийЗначение,
"АдресЮридический",
НСтр("ru = 'Юридический адрес'"),
НСтр("ru = 'юридического адреса'"),
МастерДалее);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьКриптоПро(МастерДалее)
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонента.ПроверитьOIDЛицензииКриптоПро(ЭтотОбъект, МастерДалее);
АЦУЦТребуетКриптоПро =
ПереиздатьСертификат
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
И УЦ = ПредопределенноеЗначение("Перечисление.УдостоверяющиеЦентрыБРО.УЦАналитическийЦентр")
И КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча)
И ЭтоРуководитель(ЭтотОбъект)
И НЕ ИспользуетсяРежимТестирования;
Если АЦУЦТребуетКриптоПро Тогда
Текст = НСтр("ru = 'Получение нового сертификата в %1 возможно только при использовании КриптоПро CSP'");
Текст = СтрШаблон(Текст, УЦ);
ОбщегоНазначения.СообщитьПользователю(Текст);
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеКриптопровайдера(ВыполняемоеОповещение, ПредлагатьУстановкуРасширения) Экспорт
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПроверитьНаличиеКриптопровайдераЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
КонтекстЭДОКлиент.ПроверитьНаличиеКриптопровайдера(ОписаниеОповещения, ПредлагатьУстановкуРасширения);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеКриптопровайдераЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗапомнитьПризнакУстановкиКомпоненты(ЭтотОбъект, Результат.Выполнено);
CryptoProCSPУстановлен = Результат.CryptoProCSPУстановлен;
ViPNetCSPУстановлен = Результат.ViPNetCSPУстановлен;
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПоказаПредупрежденияОКонфликте(Результат, ВходящийКонтекст) Экспорт
Если ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("ИгнорироватьКонфликт")
И Результат.ИгнорироватьКонфликт Тогда
ИгнорироватьКонфликт = Истина;
ОтправитьВБумажномВиде();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьСертификат(МастерДалее)
Если ИспользоватьСуществующий(ЭтотОбъект) И ВключаемыйСертификат = Неопределено Тогда
ТекстОшибки = НСтр("ru = 'Не удалось прочитать сертификат. Вернитесь на первую страницу заявления и выберите существующий сертификат повторно.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПроверкаПереходногоПериода
&НаКлиенте
Процедура ПроверитьПереходныйПериод(МастерДалее)
ПроверитьОбмен =
ЭтоПереходВОблако
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
ИЛИ (НЕ ЭтаУчетнаяЗаписьБылаСделанаДляОблака
И КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча)
И НЕ ИспользоватьСуществующий(ЭтотОбъект));
Если НЕ ПредупредилиОПереходе И МастерДалее И ПроверитьОбмен Тогда
МастерДалее = ПроверитьТелефонИМестоХранения();
Если МастерДалее Тогда
МастерДалее = Ложь;
ПредупредилиОПереходе = Истина;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ОтпечатокСертификата", ОтпечатокСертификата);
ПараметрыФормы.Вставить("УчетнаяЗапись", УчетнаяЗапись);
ОповещениеСледующее = Новый ОписаниеОповещения("ПредупредитьОПереходеПослеОтвета", ЭтотОбъект);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ПроверкаПереходаВОблако", ПараметрыФормы, ЭтотОбъект, , , , ОповещениеСледующее);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредупредитьОПереходеПослеОтвета(Результат, ДополнительныеПараметры) Экспорт
Если Результат = "Продолжить" Тогда
ПриНажатииДалееНаОсновнойСтранице(Истина);
ИначеЕсли Результат = "Обновить" Тогда
ВсеОрганизации = Новый Массив;
ВсеОрганизации.Добавить(Организация);
ПараметрыДлительногоОбмена = ДлительнаяОтправкаКлиент.ПараметрыДлительногоОбмена();
ПараметрыДлительногоОбмена.Организации = ВсеОрганизации;
ПараметрыДлительногоОбмена.ЭтоОбменИзФормы1СОтчетность = Ложь;
Если НЕ ДлительнаяОтправкаКлиент.ПоказатьФормуДлительногоОбмена(ПараметрыДлительногоОбмена) Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОсуществитьОбменПоОрганизацииЗавершение",
ЭтотОбъект);
КонтекстЭДОКлиент.ОсуществитьОбменПоОрганизации(
ЭтаФорма,
Организация,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОсуществитьОбменПоОрганизацииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДлительнаяОтправкаКлиент.ОповеститьОЗавершенииОбмена();
ПриНажатииДалееНаОсновнойСтранице(Истина);
КонецПроцедуры
#КонецОбласти
#Область ПроверитьНаличиеИзменений
&НаСервере
Процедура ДополнитьРеквизитамиВлияющимиНаСертификат(Приемник, Источник)
Для каждого ТекущийРеквизит Из Источник Цикл
Если ТекущийРеквизит.ТребуетПереизданияСертификата Тогда
Приемник.Добавить(ТекущийРеквизит);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ИзмененныеРеквизитыСертификата(УчитыватьФлаг = Ложь)
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
ВсеИзмененныеРеквизиты = Новый Массив;
ИзмененныеРеквизиты = ИзмененныеРеквизитыОрганизации(УчитыватьФлаг);
ДополнитьРеквизитамиВлияющимиНаСертификат(ВсеИзмененныеРеквизиты, ИзмененныеРеквизиты);
ИзмененныеРеквизиты = ИзмененныеРеквизитыВладельца(УчитыватьФлаг);
ДополнитьРеквизитамиВлияющимиНаСертификат(ВсеИзмененныеРеквизиты, ИзмененныеРеквизиты);
ИзмененныеРеквизиты = ИзмененныеРеквизитыУведомлений(УчитыватьФлаг);
ДополнитьРеквизитамиВлияющимиНаСертификат(ВсеИзмененныеРеквизиты, ИзмененныеРеквизиты);
ИзмененныеРеквизиты = ИзмененныеНастройкиХраненияКлюча(УчитыватьФлаг);
ДополнитьРеквизитамиВлияющимиНаСертификат(ВсеИзмененныеРеквизиты, ИзмененныеРеквизиты);
ИзмененныеРеквизиты = ИзмененныеРеквизитыСамогоСертификата(УчитыватьФлаг);
ДополнитьРеквизитамиВлияющимиНаСертификат(ВсеИзмененныеРеквизиты, ИзмененныеРеквизиты);
Возврат ВсеИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция ИзмененныеРеквизитыСамогоСертификата(УчитыватьФлаг = Ложь)
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
УчитыватьРеквизитСертификата = ПереиздатьСертификат И УчитыватьФлаг ИЛИ НЕ УчитыватьФлаг;
ИзмененныеРеквизиты = Новый Массив;
Изменился = УчитыватьРеквизитСертификата И СертификатДоступен И СертификатПросрочен(ЭтотОбъект);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Срок действия'"),
Изменился,
ИзмененныеРеквизиты,
"",
НачалоДня(СертификатДействителенПо),
Рекомендовано);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Доступность сертификата'"),
НЕ СертификатДоступен,
ИзмененныеРеквизиты,
НСтр("ru = 'Доступен'"),
НСтр("ru = 'Недоступен'"),
Обязательно);
ЭтоРуководитель = ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоРуководитель(ЭтотОбъект);
ЭтоСертификатСотрудника =
НЕ ЭтоРуководитель
И СертификатДоступен
И ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоСертификатСотрудника(СвойстваСертификата.Владелец);
Если ЭтоСертификатСотрудника Тогда
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Срок действия'"),
ЭтоСертификатСотрудника,
ИзмененныеРеквизиты,
"",
НСтр("ru = 'Запрещено использовать с 01.09.2024 (ФЗ № 476-ФЗ от 27.12.2019)'"),
Обязательно);
КонецЕсли;
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция ИзмененныеНастройкиПользователей(УчитыватьФлаг = Ложь)
УчитыватьРеквизит = ИзменитьНастройкиПользователей И УчитыватьФлаг ИЛИ НЕ УчитыватьФлаг;
ИзмененныеРеквизиты = Новый Массив;
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
ТребуетЭлПодписания = ?(ЭтоМногопользовательскийРежим(ЭтотОбъект), 2, 0);
Если ЭтоЛичныеНастройки Тогда
Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, ВладелецЭЦП);
ИзмениласьРоль = ВладелецЭЦПЭтоАдминИсходный <> ВладелецЭЦПЭтоАдмин;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.НастройкиПользователей,
ИзмениласьРоль И УчитыватьРеквизит,
ИзмененныеРеквизиты,
МультирежимКлиентСервер.ПредставлениеРоли(ВладелецЭЦПЭтоАдминИсходный),
МультирежимКлиентСервер.ПредставлениеРоли(ВладелецЭЦПЭтоАдмин),
,,,
ТребуетЭлПодписания);
Иначе
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.МультиРежим,
(ЭтоМультиРежим <> ЭтоМультиРежимИсходный) И УчитыватьРеквизит,
ИзмененныеРеквизиты,
ЭтоМультиРежимИсходный,
ЭтоМультиРежим,
,,,
ТребуетЭлПодписания);
Изменений = Мультирежим.ИзменившиесяНастройкиПользователей(ЭтотОбъект, ТаблицаПользователей);
Представление = Мультирежим.ПредставлениеИзменившихсяНастроекПользователей(ЭтотОбъект, ТаблицаПользователей, Изменений);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.НастройкиПользователей,
Изменений И УчитыватьРеквизит,
ИзмененныеРеквизиты,
"",
Представление,
,,,
ТребуетЭлПодписания);
КонецЕсли;
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция ИзмененныеНаправления(УчитыватьФлаг = Ложь)
УчитыватьРеквизит = ИзменитьСоставКонтролирующихОрганов И УчитыватьФлаг ИЛИ НЕ УчитыватьФлаг;
ИзмененныеРеквизиты = Новый Массив;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФНС,
СдаватьВФНСИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
СдаватьВФНСИсходный,
СдаватьВФНС,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодыФНС,
КодыФНСИзменились И УчитыватьРеквизит,
ИзмененныеРеквизиты,
КодыФНСПрописьюИсходные,
ИтоговыеДанныеГосОрганы_КодыФНС(),
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВПФР,
СдаватьВПФРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
СдаватьВПФРИсходный,
СдаватьВПФР,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодПФР,
(СдаватьВПФРИсходный ИЛИ СдаватьВПФР) И КодПФРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
КодПФРИсходный,
КодПФР,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерПФР,
(СдаватьВПФРИсходный ИЛИ СдаватьВПФР) И РегНомерПФРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
РегНомерПФРИсходный,
РегНомерПФР,
,,,
Требует);
Если ИспользоватьРегНомерСФР Тогда
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерСФР,
(СдаватьВПФРИсходный ИЛИ СдаватьВПФР) И РегНомерСФРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
РегНомерСФРИсходный,
РегНомерСФР,
,,,
Требует);
КонецЕсли;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРосстат,
СдаватьВРосстатИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
СдаватьВРосстатИсходный,
СдаватьВРосстат,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодРосстата,
(СдаватьВРосстатИсходный ИЛИ СдаватьВРосстат) И КодыРосстатаИзменились И УчитыватьРеквизит,
ИзмененныеРеквизиты,
КодыРосстатПрописьюИсходные,
ИтоговыеДанныеГосОрганы_КодыРосстата(),
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСРАР,
ПодатьЗаявкуНаСертификатДляФСРАРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
ПодатьЗаявкуНаСертификатДляФСРАРИсходный,
ПодатьЗаявкуНаСертификатДляФСРАР,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодРегионаФСРАР,
(ПодатьЗаявкуНаСертификатДляФСРАРИсходный ИЛИ ПодатьЗаявкуНаСертификатДляФСРАР) И КодРегионаФСРАРИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
КодРегионаФСРАРИсходный,
КодРегионаФСРАР,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФТС,
ПодатьЗаявкуНаПодключениеФТСИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
ПодатьЗаявкуНаПодключениеФТСИсходный,
ПодатьЗаявкуНаПодключениеФТС,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРПН,
ПодатьЗаявкуНаПодключениеРПНИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
ПодатьЗаявкуНаПодключениеРПНИсходный,
ПодатьЗаявкуНаПодключениеРПН,
,,,
Требует);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВЦБ,
СдаватьВЦБИзменился И УчитыватьРеквизит,
ИзмененныеРеквизиты,
СдаватьВЦБИсходный,
СдаватьВЦБ,
,,,
Требует);
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоМультиРежим И ЭтоЛичныеНастройки И ЗначениеЗаполнено(ВладелецЭЦП) Тогда
Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, ВладелецЭЦП);
Если Строка <> Неопределено Тогда
ИзменилсяШифровальщик = Строка.ЭтоШифровальщикИсходный <> Строка.ЭтоШифровальщик;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.Шифровальщик,
ИзменилсяШифровальщик И УчитыватьРеквизит,
ИзмененныеРеквизиты,
Строка.ЭтоШифровальщикИсходный,
Строка.ЭтоШифровальщик,
,,,
Требует);
КонецЕсли;
КонецЕсли;
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция ИзмененныеНастройкиХраненияКлюча(УчитыватьФлаг = Ложь)
ИзмененныеРеквизиты = Новый Массив;
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
Возврат ИзмененныеРеквизиты;
КонецЕсли;
УчитыватьРеквизитМестаХранения = ИзменитьМестоХранения И УчитыватьФлаг ИЛИ НЕ УчитыватьФлаг;
Изменилось = ЭтоПереходВКоробку И УчитыватьРеквизитМестаХранения;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереходВКоробку,
Изменилось,
ИзмененныеРеквизиты,
Неопределено,
Изменилось,
Требует);
Изменилось = ЭтоПереходВОблако И УчитыватьРеквизитМестаХранения;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереходВОблако,
Изменилось,
ИзмененныеРеквизиты,
Неопределено,
Изменилось,
Требует);
Изменилось = ТипКриптопровайдераИзменился И НЕ ЭтоОблако(ЭтотОбъект) И УчитыватьРеквизитМестаХранения;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ИзменениеКриптопровайдера,
Изменилось,
ИзмененныеРеквизиты,
Неопределено,
Изменилось,
Требует);
Изменилось = ВключатьЛицензиюКриптоПроВСертификат И НЕ ЭтоОблако(ЭтотОбъект) И УчитыватьРеквизитМестаХранения;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Лицензия КриптоПро CSP'"),
Изменилось,
ИзмененныеРеквизиты,
Неопределено,
Изменилось,
Требует);
Изменилось =
СпособПодтвержденияКриптооперацийИзменился(ЭтотОбъект)
И УчитыватьРеквизитМестаХранения;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПодтверждениеОперацийСКлючом,
Изменилось,
ИзмененныеРеквизиты,
ПредставлениеСпособаПодтвержденияКриптоопераций(СпособПодтвержденияКриптооперацийИсходный),
ПредставлениеСпособаПодтвержденияКриптоопераций(СпособПодтвержденияКриптоопераций));
ИзмененныеНастройкиОблачнойПодписи(УчитыватьФлаг, ИзмененныеРеквизиты);
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция СпособПодтвержденияКриптооперацийИзменился(Форма)
Возврат ЭтоОблако(Форма) И Форма.СпособПодтвержденияКриптооперацийИсходный <> Форма.СпособПодтвержденияКриптоопераций;
КонецФункции
&НаСервере
Функция ИзмененныеРеквизитыВладельца(
УчитыватьФлаг_ВладелецСертификата = Ложь,
УчитыватьФлаг_Сертификат = Ложь)
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
УчитыватьРеквизитВладельца =
ИзменитьВладельцаСертификата И УчитыватьФлаг_ВладелецСертификата
ИЛИ НЕ УчитыватьФлаг_ВладелецСертификата;
УчитыватьРеквизитСертификата =
ПереиздатьСертификат И УчитыватьФлаг_Сертификат;
ИзмененныеРеквизиты = ИзмененныеРеквизитыПаспорта(
УчитыватьФлаг_ВладелецСертификата,
УчитыватьФлаг_Сертификат,
Истина);
ВладелецЭЦПСНИЛСИзменился = Форматировать(ВладелецЭЦПСНИЛС) <> Форматировать(ВладелецЭЦПСНИЛСИсходный);
Изменилось = ВладелецЭЦПСНИЛСИзменился И (УчитыватьРеквизитВладельца ИЛИ УчитыватьРеквизитСертификата);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСНИЛС,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПСНИЛСИсходный,
ВладелецЭЦПСНИЛС,
Требует,
Требует,
Препятствует);
Если ЭтоЮридическоеЛицо Тогда
ВладелецЭЦПИННИзменился =
Форматировать(ВладелецЭЦПИНН) <> Форматировать(ВладелецЭЦПИННИсходный)
И ЗначениеЗаполнено(Форматировать(ВладелецЭЦПИННИсходный));
Изменилось = ВладелецЭЦПИННИзменился И (УчитыватьРеквизитВладельца ИЛИ УчитыватьРеквизитСертификата);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПИНН,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПИННИсходный,
ВладелецЭЦПИНН,
Требует,
Требует,
Препятствует);
КонецЕсли;
ВладелецЭЦППодразделениеИзменилось =
СравниватьДолжностьИПодразделение()
И Форматировать(ВладелецЭЦППодразделение) <> Форматировать(ВладелецЭЦППодразделениеИсходное);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦППодразделение,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦППодразделениеИсходное,
ВладелецЭЦППодразделение);
ВладелецЭЦПДолжностьИзменилась =
СравниватьДолжностьИПодразделение()
И Форматировать(ВладелецЭЦПДолжность) <> Форматировать(ВладелецЭЦПДолжностьИсходная);
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДолжность,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПДолжностьИсходная,
ВладелецЭЦПДолжность);
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция СравниватьДолжностьИПодразделение()
Возврат
ЭтоЮридическоеЛицо
И НЕ ВладелецЭЦПЭтоФизЛицо
И НЕ ЭтоРуководитель(ЭтотОбъект)
КонецФункции
&НаСервере
Функция ИзмененныеРеквизитыПаспорта(УчитыватьФлаг_ВладелецСертификата, УчитыватьФлаг_Сертификат, ДобавитьФИО) Экспорт
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
ИзмененныеРеквизиты = Новый Массив;
Если ДобавитьФИО Тогда
ДобавитьИзмененныеЧастиФИО(ИзмененныеРеквизиты, УчитыватьФлаг_ВладелецСертификата, УчитыватьФлаг_Сертификат);
КонецЕсли;
УчитыватьРеквизитВладельца =
ИзменитьВладельцаСертификата И УчитыватьФлаг_ВладелецСертификата
ИЛИ НЕ УчитыватьФлаг_ВладелецСертификата;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ВладелецЭЦПВидДокументаКод = КонтекстЭДОСервер.ПолучитьКодВидаДокументаФизическогоЛица(ВладелецЭЦПВидДокумента);
Изменилось = Форматировать(ВладелецЭЦПВидДокументаКодИсходный) <> Форматировать(ВладелецЭЦПВидДокументаКод) И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПВидДокумента,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПВидДокументаКодИсходный,
ВладелецЭЦПВидДокументаКод);
Изменилось = ЦифрыИзСтроки(ВладелецЭЦПСерияДокументаИсходный) <> ЦифрыИзСтроки(ВладелецЭЦПСерияДокумента) И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСерияДокумента,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПСерияДокументаИсходный,
ВладелецЭЦПСерияДокумента);
Изменилось = ЦифрыИзСтроки(ВладелецЭЦПНомерДокументаИсходный) <> ЦифрыИзСтроки(ВладелецЭЦПНомерДокумента) И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПНомерДокумента,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПНомерДокументаИсходный,
ВладелецЭЦПНомерДокумента);
Изменилось = ВладелецЭЦПДатаВыдачиДокументаИсходный <> ВладелецЭЦПДатаВыдачиДокумента И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДатаВыдачиДокумента,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПДатаВыдачиДокументаИсходный,
ВладелецЭЦПДатаВыдачиДокумента);
Изменилось = Форматировать(ВладелецЭЦПКемВыданДокументИсходный) <> Форматировать(ВладелецЭЦПКемВыданДокумент) И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПКемВыданДокумент,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПКемВыданДокументИсходный,
ВладелецЭЦПКемВыданДокумент);
Изменилось = Форматировать(ВладелецЭЦПКодПодразделенияИсходный) <> Форматировать(ВладелецЭЦПКодПодразделения) И УчитыватьРеквизитВладельца;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПКодПодразделения,
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПКодПодразделенияИсходный,
ВладелецЭЦПКодПодразделения);
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Функция ИзменилосьФИО()
ИзмененныеРеквизиты = Новый Массив;
ДобавитьИзмененныеЧастиФИО(ИзмененныеРеквизиты, Ложь, Ложь);
Изменилось = ИзмененныеРеквизиты.Количество() > 0;
Возврат Изменилось;
КонецФункции
&НаСервере
Процедура ДобавитьИзмененныеЧастиФИО(ИзмененныеРеквизиты, УчитыватьФлаг_ВладелецСертификата, УчитыватьФлаг_Сертификат) Экспорт
УчитыватьРеквизитВладельца =
ИзменитьВладельцаСертификата И УчитыватьФлаг_ВладелецСертификата
ИЛИ НЕ УчитыватьФлаг_ВладелецСертификата;
УчитыватьРеквизитСертификата =
ПереиздатьСертификат И УчитыватьФлаг_Сертификат;
Изменилось =
Форматировать(ВладелецЭЦПФамилияИсходный) <> Форматировать(ВладелецЭЦПФамилия)
И (УчитыватьРеквизитВладельца ИЛИ УчитыватьРеквизитСертификата);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Фамилия'"),
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПФамилияИсходный,
ВладелецЭЦПФамилия,
Требует,
Требует,
Препятствует);
Изменилось =
Форматировать(ВладелецЭЦПИмяИсходный) <> Форматировать(ВладелецЭЦПИмя)
И (УчитыватьРеквизитВладельца ИЛИ УчитыватьРеквизитСертификата);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Имя'"),
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПИмяИсходный,
ВладелецЭЦПИмя,
Требует,
Требует,
Препятствует);
Изменилось =
Форматировать(ВладелецЭЦПОтчествоИсходный) <> Форматировать(ВладелецЭЦПОтчество)
И (УчитыватьРеквизитВладельца ИЛИ УчитыватьРеквизитСертификата);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Отчество'"),
Изменилось,
ИзмененныеРеквизиты,
ВладелецЭЦПОтчествоИсходный,
ВладелецЭЦПОтчество,
Требует,
Требует,
Препятствует);
КонецПроцедуры
&НаСервере
Функция НеобходимостьПереизданияСертификата()
ИзмененныеРеквизиты = ИзмененныеРеквизитыСертификата(Истина);
МаксимальнаяНеобходимость = НеТребуется;
Для каждого ИзмененныйРеквизиты Из ИзмененныеРеквизиты Цикл
МаксимальнаяНеобходимость = Макс(
ИзмененныйРеквизиты.ТребуетПереизданияСертификата,
МаксимальнаяНеобходимость);
КонецЦикла;
Возврат МаксимальнаяНеобходимость;
КонецФункции
&НаСервере
Функция ТаблицаИзменилась(Таблица1, Таблица2) Экспорт
Возврат ОбработкаЗаявленийАбонента.ТаблицаИзменилась(ЭтотОбъект, Таблица1, Таблица2);
КонецФункции
&НаСервере
Процедура СравнитьНаправленияИКодыСдачиОтчетностиСИсходными() Экспорт
СдаватьВФНСИзменился = СдаватьВФНС <> СдаватьВФНСИсходный;
КодыФНСИзменились = ТаблицаИзменилась("ПолучателиФНС", "ПолучателиФНСИсходные");
СдаватьВПФРИзменился = СдаватьВПФР <> СдаватьВПФРИсходный;
КодПФРИзменился = Форматировать(КодПФР) <> Форматировать(КодПФРИсходный);
РегНомерПФРИзменился = Форматировать(РегНомерПФР) <> Форматировать(РегНомерПФРИсходный);
РегНомерСФРИзменился = Форматировать(РегНомерСФР) <> Форматировать(РегНомерСФРИсходный) И ЗначениеЗаполнено(РегНомерСФР);
СдаватьВРосстатИзменился = СдаватьВРосстат <> СдаватьВРосстатИсходный;
КодыРосстатаИзменились = ТаблицаИзменилась("ПолучателиФСГС", "ПолучателиФСГСИсходные");
ПодатьЗаявкуНаСертификатДляФСРАРИзменился = ПодатьЗаявкуНаСертификатДляФСРАР <> ПодатьЗаявкуНаСертификатДляФСРАРИсходный;
КодРегионаФСРАРИзменился = Форматировать(КодРегионаФСРАР) <> Форматировать(КодРегионаФСРАРИсходный);
ПодатьЗаявкуНаПодключениеРПНИзменился = ПодатьЗаявкуНаПодключениеРПН <> ПодатьЗаявкуНаПодключениеРПНИсходный;
ПодатьЗаявкуНаПодключениеФТСИзменился = ПодатьЗаявкуНаПодключениеФТС <> ПодатьЗаявкуНаПодключениеФТСИсходный;
СдаватьВЦБИзменился = СдаватьВЦБ <> СдаватьВЦБИсходный И ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует();
КонецПроцедуры
&НаСервере
Процедура СравнитьРеквизитыОрганизацииСИсходными() Экспорт
КраткоеНаименованиеИзменилось = ЭтоЮридическоеЛицо
И Форматировать(КраткоеНаименование) <> Форматировать(КраткоеНаименованиеИсходное);
КППИзменился = Форматировать(КПП) <> Форматировать(КППИсходный);
ОГРНИзменился = Форматировать(ОГРН) <> Форматировать(ОГРНИсходный)
И НЕ ЭтоИностраннаяОрганизация;
ТелефонОсновнойИзменился =
ФорматироватьТелефон(ТелефонОсновной) <> ФорматироватьТелефон(ТелефонОсновнойИсходный);
ЭлектроннаяПочтаОрганизацииИзменилась =
Форматировать(ЭлектроннаяПочтаОрганизации) <> Форматировать(ЭлектроннаяПочтаОрганизацииИсходная);
Сравнивать = СравниватьАдрес(ЭтотОбъект);
Если Сравнивать Тогда
ОбластьИзменилась = НЕ ДокументооборотСКОКлиентСервер.ЗначенияСовпадают(
Форматировать(Область),
Форматировать(ОбластьИсходная));
Иначе
ОбластьИзменилась = Ложь;
КонецЕсли;
Если Сравнивать И НЕ ЭтоРуководитель(ЭтотОбъект) Тогда
ГородИзменился = НЕ ДокументооборотСКОКлиентСервер.ЗначенияСовпадают(
Форматировать(Город),
Форматировать(ГородИсходный));
УлицаИзменилась = Форматировать(Улица) <> Форматировать(УлицаИсходная);
Иначе
ГородИзменился = Ложь;
УлицаИзменилась = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СравниватьАдрес(Форма)
ЭтоСУЦ = Форма.ЭтоСертификатДругогоУЦИсходный
ИЛИ Форма.ПереиздатьСертификат И Форма.ЭтоСертификатДругогоУЦ;
Сравнивать = НЕ ЭтоСУЦ
И НЕ Форма.ВладелецЭЦПЭтоФизЛицо
И Форма.ВладелецЭЦПТип = Форма.ВладелецЭЦПТипИсходный;
Возврат Сравнивать;
КонецФункции
&НаСервере
Функция ИзмененныеРеквизитыОрганизации(
УчитыватьФлаг_РеквизитыОрганизации = Ложь,
УчитыватьФлаг_Сертификат = Ложь)
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
ТребуетЕслиНеФизЛицо = ?(ВладелецЭЦПЭтоФизЛицо, НеТребуется, Требует);
ИзмененныеРеквизиты = Новый Массив;
УчитыватьФлагОрганизации =
ИзменитьРеквизитыПодключенияК1СОтчетности И УчитыватьФлаг_РеквизитыОрганизации
ИЛИ НЕ УчитыватьФлаг_РеквизитыОрганизации;
УчитыватьРеквизитСертификата =
ПереиздатьСертификат И УчитыватьФлаг_Сертификат;
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.КраткоеНаименование"),
КраткоеНаименованиеИзменилось И (УчитыватьФлагОрганизации ИЛИ УчитыватьРеквизитСертификата),
ИзмененныеРеквизиты,
КраткоеНаименованиеИсходное,
КраткоеНаименование,
Рекомендовано И НЕ ВладелецЭЦПЭтоФизЛицо);
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.КПП"),
КППИзменился И УчитыватьФлагОрганизации,
ИзмененныеРеквизиты,
КППИсходный,
КПП,
,,,
ТребуетЕслиНеФизЛицо);
Если НЕ ЭтоИностраннаяОрганизация Тогда
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ОГРН"),
ОГРНИзменился И (УчитыватьФлагОрганизации ИЛИ УчитыватьРеквизитСертификата),
ИзмененныеРеквизиты,
ОГРНИсходный,
ОГРН,
ТребуетЕслиНеФизЛицо,
ТребуетЕслиНеФизЛицо,
Препятствует);
КонецЕсли;
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.Область"),
ОбластьИзменилась И (УчитыватьФлагОрганизации ИЛИ УчитыватьРеквизитСертификата),
ИзмененныеРеквизиты,
ОбластьИсходная,
Область,
ТребуетЕслиНеФизЛицо,
ТребуетЕслиНеФизЛицо,
Препятствует);
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.Город"),
ГородИзменился И УчитыватьФлагОрганизации,
ИзмененныеРеквизиты,
ГородИсходный,
Город,
ТребуетЕслиНеФизЛицо);
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.Улица"),
УлицаИзменилась И УчитыватьФлагОрганизации,
ИзмененныеРеквизиты,
УлицаИсходная,
Улица,
ТребуетЕслиНеФизЛицо);
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ТелефонОсновной"),
ТелефонОсновнойИзменился И УчитыватьФлагОрганизации,
ИзмененныеРеквизиты,
ТелефонОсновнойИсходный,
ТелефонОсновной);
ДополнитьИзменившиесяРеквизиты(
ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаОрганизации"),
ЭлектроннаяПочтаОрганизацииИзменилась И УчитыватьФлагОрганизации,
ИзмененныеРеквизиты,
ЭлектроннаяПочтаОрганизацииИсходная,
ЭлектроннаяПочтаОрганизации);
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Процедура ОпределитьУЦИзСертификата() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ЭтоСертификатДругогоУЦИсходный = КонтекстЭДОСервер.ЭтоСертификатСУЦ(СвойстваСертификата);
ЭтоСертификатФНС = ОбработкаЗаявленийАбонента.ЭтоСертификатФНС(СвойстваСертификата);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСведенияИзСертификата()
Если ЭтоУчетнаяЗаписьВМоделиСервиса Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СвойстваСертификата = КонтекстЭДОСервер.ПолучитьСвойстваСертификатаПоОтпечаткуНаСервере(ОтпечатокСертификата(), "MY");
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
СвойстваСертификата = КриптографияЭДКО.НайтиОблачныйСертификат(Новый Структура("Отпечаток", ОтпечатокСертификата()), Ложь, Истина);
КонецЕсли;
Если СвойстваСертификата = Неопределено Тогда
СерийныйНомер = "";
СертификатДействителенПо = Неопределено;
Иначе
СертификатДействителенПо = СвойстваСертификата.ДействителенПо;
СекундВОдномДне = 24 * 60 * 60;
СертификатДействителенПо = СертификатДействителенПо + СекундВОдномДне;
СертификатДействителенПоМестноеВремя = СвойстваСертификата.ДействителенПо;
ОсталосьДней = (НачалоДня(СертификатДействителенПо) - НачалоДня(ТекущаяДатаСервер))/СекундВОдномДне;
ПродлитьСертификатИсходный = ОсталосьДней <= ТридцатьДней;
СерийныйНомер = СвойстваСертификата.СерийныйНомер;
КонецЕсли;
СертификатДоступен = ЗначениеЗаполнено(СертификатДействителенПо);
КонецПроцедуры
&НаСервере
Функция ЗапрещеноУдаленноеПереизданиеСертификата() Экспорт
Запрещено = ПричиныЗапретаУдаленногоПереизданияСертификата().Количество() > 0;
Возврат Запрещено;
КонецФункции
&НаСервере
Функция ПричиныЗапретаУдаленногоПереизданияСертификата() Экспорт
Ошибки = Новый Массив;
Если НЕ СертификатДоступен Тогда
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.ТекстОшибки = НСтр("ru = '- Ваш текущий сертификат недоступен'");
Ошибки.Добавить(РезультатПроверки);
КонецЕсли;
Если СертификатДействителенПоМестноеВремя - ТекущаяДатаСеанса() < 48*60*60 Тогда
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
Если СертификатДействителенПоМестноеВремя - ТекущаяДатаСеанса() < 0 Тогда
ТекстОшибки = НСтр("ru = '- Ваш текущий сертификат уже истек (%1)'");
Иначе
ТекстОшибки = НСтр("ru = '- Ваш текущий сертификат истечет менее чем через 48 часа (%1)'");
КонецЕсли;
ТекстОшибки = СтрШаблон(ТекстОшибки, Строка(СертификатДействителенПоМестноеВремя));
РезультатПроверки.ТекстОшибки = ТекстОшибки;
Ошибки.Добавить(РезультатПроверки);
КонецЕсли;
Если ЭтоНотариусАдвокатИлиГКФХ Тогда
РезультатПроверки = ДокументооборотСКОКлиентСервер.РезультатПроверкиРеквизитов();
РезультатПроверки.ТекстОшибки = НСтр("ru = '- Не поддерживается для адвокатов и нотариусов'");
Ошибки.Добавить(РезультатПроверки);
КонецЕсли;
Возврат Ошибки;
КонецФункции
&НаСервере
Функция ТекстПричиныЗапретаУдаленногоПереизданияСертификата() Экспорт
Причины = ПричиныЗапретаУдаленногоПереизданияСертификата();
Текст = "";
Если Причины.Количество() > 0 Тогда
Текст = НСтр("ru = 'Удаленное переиздание сертификата невозможно, поскольку:'");
Для каждого Причина Из Причины Цикл
Текст = Текст + Символы.ПС + Причина.ТекстОшибки;
КонецЦикла;
КонецЕсли;
Возврат Текст;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеУдаленногоПереизданияСертификата() Экспорт
Элементы.ГруппаУдаленноИлиЛично.Видимость = ОбработкаЗаявленийАбонентаКлиентСервер.ДоступенВыборСпособаПереизданияСертификата(ЭтотОбъект);
Элементы.ГруппаОсознаюУсловияОтправкиРасписки.Видимость = ЭтоУдаленноеПереизданиеСертификата И ЭтоЭлектронноеПодписание = Истина;
Запрещено = ЗапрещеноУдаленноеПереизданиеСертификата();
Элементы.ГруппаУдаленно.Доступность = НЕ Запрещено;
Элементы.ПояснениеКУдаленномуПереизданию.Видимость = Запрещено;
Если Запрещено Тогда
Ошибка = ТекстПричиныЗапретаУдаленногоПереизданияСертификата();
Элементы.ПояснениеКУдаленномуПереизданию.РасширеннаяПодсказка.Заголовок = Ошибка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастройкиОблачнойПодписи_Завершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ИзменилисьНастрокиDSS() Тогда
ПроверитьНеобходимостьУстановкиГалки_ИзменитьВладельцаСертификата();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьРеквизитыОрганизации();
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаСервере
Функция ИзменилисьНастрокиDSS() Экспорт
Результат = Ложь;
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) И ИзменитьМестоХранения Тогда
Сведения = ОбработкаЗаявленийАбонентаКлиентСервер.СведенияОблачнойПодписиЗаявления(СвойствоОблачнойПодписи);
Если НЕ СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
Результат = Сведения.ТребуетИзменения;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ИзмененныеНастройкиОблачнойПодписи(УчитыватьЗначениеФлага = Ложь, ИзмененныеРеквизиты = Неопределено)
Если ИзмененныеРеквизиты = Неопределено Тогда
ИзмененныеРеквизиты = Новый Массив;
КонецЕсли;
УчитыватьРеквизитМестаХранения = ИзменитьМестоХранения И УчитыватьЗначениеФлага ИЛИ НЕ УчитыватьЗначениеФлага;
Если НЕ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) ИЛИ НЕ УчитыватьРеквизитМестаХранения Тогда
Возврат ИзмененныеРеквизиты;
КонецЕсли;
Изменилось = СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложения ИЛИ СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Получить новый ключ в мобильном приложении'"),
Изменилось,
ИзмененныеРеквизиты,
Ложь,
Изменилось);
Изменилось = СвойствоОблачнойПодписи.ОтправкаКодаАктивации;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Получить код активации'"),
Изменилось,
ИзмененныеРеквизиты,
Ложь,
Изменилось);
Изменилось = СвойствоОблачнойПодписи.ОтправкаКлючаМобильногоПриложения;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Получить QR-код и код активации'"),
Изменилось,
ИзмененныеРеквизиты,
Ложь,
Изменилось);
Изменилось = СвойствоОблачнойПодписи.СменитьПароль;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Получить новый пароль от учетной записи 1С:DSS'"),
Изменилось,
ИзмененныеРеквизиты,
Ложь,
Изменилось);
Изменилось = Ложь;
ТелефонДляКодов = СвойствоОблачнойПодписи.Телефон;
Если ЗначениеЗаполнено(ТелефонДляКодов) Тогда
Изменилось = Истина;
ИначеЕсли НЕ ЗначениеЗаполнено(ТелефонДляКодов)
И СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись
И ИзменитьНастройкиУведомлений Тогда
ТелефонДляКодов = КриптографияЭДКОКлиентСервер.ТелефонПодтвержденияОпераций(ТелефонМобильный);
Изменилось = Истина;
КонецЕсли;
Если Изменилось И ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись)
И НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.ИсходныйТелефон) Тогда
ВсеНастройки = КриптографияЭДКО.ДополнительныеНастройкиОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
СвойствоОблачнойПодписи.ИсходныйТелефон = ВсеНастройки.Телефон;
КонецЕсли;
ТекущийНомер = ПолучитьПредставлениеТелефона(СвойствоОблачнойПодписи.ИсходныйТелефон);
ТелефонДляКодов = ПолучитьПредставлениеТелефона(ТелефонДляКодов);
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Изменить контакты для получения кодов'"),
Изменилось,
ИзмененныеРеквизиты,
ТекущийНомер,
ТелефонДляКодов);
Изменилось = СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Создание новой учетной записи 1С:DSS'"),
Изменилось,
ИзмененныеРеквизиты,
Неопределено,
СвойствоОблачнойПодписи.НовыйЛогин,
Обязательно);
Изменилось = Ложь;
Если НЕ СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
Изменилось = СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись <> СвойствоОблачнойПодписи.УчетнаяЗапись;
КонецЕсли;
ДополнитьИзменившиесяРеквизиты(
НСтр("ru = 'Смена учетной записи 1С:DSS'"),
Изменилось,
ИзмененныеРеквизиты,
СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись,
СвойствоОблачнойПодписи.УчетнаяЗапись,
Обязательно);
Возврат ИзмененныеРеквизиты;
КонецФункции
#КонецОбласти
#Область КопированиеИзИсходногоЗаявления
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_Криптография()
СкопироватьРеквизитыИзИсходногоЗаявления_МестоХранения();
СкопироватьРеквизитыИзИсходногоЗаявления_СертификатИСпособПолученияСертификата();
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_СертификатИСпособПолученияСертификата()
ЭтоУдаленноеПереизданиеСертификата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Реквизит, "ЭтоУдаленноеПереизданиеСертификата");
СпособПолученияСертификата = Реквизит.СпособПолученияСертификата;
СкопироватьВключаемыйСертификатИзИсходногоЗаявления();
ОпределятьМестоХранения = Ложь;
ПриИзмененииСпособаПолученияСертификата(ОпределятьМестоХранения);
СкопироватьРеквизитыИзИсходногоЗаявления_ЭПВОблаке();
КонецПроцедуры
&НаСервере
Процедура ОпределитьЧтоЭтаУчетнаяЗаписьБылаСделанаДляОблака()
Сертификат = Мультирежим.СертификатПользователя(УчетнаяЗапись, "ЭлектроннаяПодписьВМоделиСервиса, МодельХраненияЗакрытогоКлюча");
Если Сертификат.Найден Тогда
ЭтаУчетнаяЗаписьБылаСделанаДляОблака =
Сертификат.ЭлектроннаяПодписьВМоделиСервиса
ИЛИ Сертификат.МодельХраненияЗакрытогоКлюча = Перечисления.МодельХраненияЗакрытогоКлюча.ОблачнаяПодпись
ИЛИ Сертификат.МодельХраненияЗакрытогоКлюча = Перечисления.МодельХраненияЗакрытогоКлюча.ВМоделиСервиса;
Иначе
ЭтаУчетнаяЗаписьБылаСделанаДляОблака = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_ЭПВОблаке()
ОпределитьЧтоЭтаУчетнаяЗаписьБылаСделанаДляОблака();
Если ИспользоватьСуществующий(ЭтотОбъект) И ВключаемыйСертификатОблачный Тогда
СпособПодтвержденияКриптоопераций = Реквизит.СпособПодтвержденияКриптоопераций;
ИнициализироватьТокен = Ложь;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен, ВключаемыйСертификат);
ИначеЕсли Реквизит.ЭлектроннаяПодписьВМоделиСервиса Тогда
СпособПодтвержденияКриптоопераций = Реквизит.СпособПодтвержденияКриптоопераций;
ЭтоПереходВОблако = ЭтотПараметрИзменился(
Реквизит.ИзменившиесяРеквизитыВторичногоЗаявления,
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереходВОблако);
Если ЭтоПереходВОблако Тогда
ИнициализироватьПроверкиДляОблака(ЭтотОбъект);
ПроверкаТелефонДляПаролей.ИсходноеЗначение = Реквизит.ТелефонМобильныйДляАвторизации;
ПроверкаТелефонДляПаролей.ЗначениеВведено = ЗначениеЗаполнено(ПолучитьПредставлениеТелефона(ПроверкаТелефонДляПаролей.ИсходноеЗначение));
ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено = ПроверкаТелефонДляПаролей.ЗначениеВведено;
ПроверкаТелефонДляПаролей.ИдентификаторПроверки = Реквизит.ИдентификаторПроверкиТелефонаДляПаролей;
ТелефонМобильныйДляПаролей = Реквизит.ТелефонМобильныйДляАвторизации;
ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение = Реквизит.ЭлектроннаяПочта;
ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено = ЗначениеЗаполнено(ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение);
ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено = ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено;
ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки = Реквизит.ИдентификаторПроверкиЭлектроннойПочтыДляПаролей;
ЭлектроннаяПочтаДляПаролей = Реквизит.ЭлектроннаяПочта;
Иначе
ИнициализироватьТокен = Ложь;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен);
ПроверкаТелефонДляПаролей.ИдентификаторПроверки = Реквизит.ИдентификаторПроверкиТелефонаДляПаролей;
ТелефонМобильныйДляПаролей = Реквизит.ТелефонМобильныйДляАвторизации;
ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки = Реквизит.ИдентификаторПроверкиЭлектроннойПочтыДляПаролей;
ЭлектроннаяПочтаДляПаролей = Реквизит.ЭлектроннаяПочта;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_МестоХранения()
СвойствоОблачнойПодписи = ОбработкаЗаявленийАбонентаКлиентСервер.СведенияОблачнойПодписиЗаявления(Реквизит);
СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись = СвойствоОблачнойПодписи.УчетнаяЗапись;
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.СвойстваМестаХраненияКлюча(Реквизит.МодельХраненияЗакрытогоКлюча, СвойствоОблачнойПодписи.УчетнаяЗапись);
Если Реквизит.ЭлектроннаяПодписьВМоделиСервиса ИЛИ КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
ВыбранноеМестоХраненияКлюча = Перечисления.МодельРаботыСКлючами.ВМоделиСервиса;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
Если ДоступнаЭлектроннаяОблачнаяПодпись Тогда
ВыбранноеМестоХраненияКлюча = Перечисления.ТипыКриптоПровайдеров.CryptoProDSS;
Иначе
ВыбранноеМестоХраненияКлюча = Перечисления.ТипыКриптоПровайдеров.CryptoPro;
КонецЕсли;
Иначе
ВыбранноеМестоХраненияКлюча = Реквизит.ТипКриптопровайдера;
КонецЕсли;
Если ВыбранноеМестоХраненияКлюча = Перечисления.МодельРаботыСКлючами.ВМоделиСервиса Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Истина);
ИначеЕсли ВыбранноеМестоХраненияКлюча <> Перечисления.ТипыКриптоПровайдеров.CryptoProDSS Тогда
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_Организация()
ТелефонОсновной = Реквизит.ТелефонОсновной;
ОГРН = Реквизит.ОГРН;
СкопироватьРеквизитыИзИсходногоЗаявления_КодыРегиона();
ЭлектроннаяПочтаОрганизации = Реквизит.ЭлектроннаяПочтаОрганизации;
ЭтоБюджетополучатель = Реквизит.ЭтоБюджетополучатель;
ЭтоНотариусАдвокатИлиГКФХ = Реквизит.ЭтоНотариусАдвокатИлиГКФХ;
ИнициализироватьРеквизиты1СОтчетности_ОбработатьПрочитанноеИзБД_Сервер();
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_КодыРегиона()
КодРегиона = Реквизит.КодРегионаФСРАР;
КодРегионаФСРАР = Реквизит.КодРегионаФСРАР;
Если НЕ ЗначениеЗаполнено(КодРегиона) И НЕ ЗначениеЗаполнено(КодРегионаФСРАР) Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КодРегионаФСРАР = КонтекстЭДОСервер.КодРегионаФСРАР(АдресЮридическийЗначение);
КодРегиона = КодРегионаФСРАР;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_Владелец()
ОбработкаЗаявленийАбонента.СкопироватьРеквизитыВладельцаИзИсходногоЗаявления(ЭтотОбъект, Реквизит);
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_ГосОрганы()
Если ЭтоОткрытиеЗаявления Тогда
ПодатьЗаявкуНаСертификатДляФСРАР = Реквизит.ПодатьЗаявкуНаСертификатДляФСРАР;
ПодатьЗаявкуНаПодключениеРПН = Реквизит.ПодатьЗаявкуНаПодключениеРПН;
ПодатьЗаявкуНаПодключениеФТС = Реквизит.ПодатьЗаявкуНаПодключениеФТС;
СкопироватьРеквизитыИзИсходногоЗаявления_КодыРегиона();
СкопироватьНаправленияИзИсходногоЗаявления();
Иначе
СделатьНаправленияСдачиОтчетностиРавнымиИсходным();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьРеквизитыИзИсходногоЗаявления_Пользователи()
ОбработкаЗаявленийАбонента.ЗаполнитьТаблицуПользователейИзКопии(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СкопироватьВключаемыйСертификатИзИсходногоЗаявления()
Если ИспользоватьСуществующий(Реквизит) Тогда
ВключаемыйСертификат = Реквизит.Сертификат.Получить();
ВключаемыйСертификатОблачный = Реквизит.ЭлектроннаяПодписьВМоделиСервиса;
ЭтоСертификатДругогоУЦ = Реквизит.ЭтоСертификатДругогоУЦ;
ЗалогироватьВключаемыйСертификат("СкопироватьВключаемыйСертификатИзИсходногоЗаявления1");
ИначеЕсли ЗначениеЗаполнено(НовыйСертификат) Тогда
СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИспользоватьСуществующий;
Если ЗначениеЗаполнено(НовыйСертификат.НовыйСертификат) Тогда
ВключаемыйСертификат = НовыйСертификат.НовыйСертификат;
ЗалогироватьВключаемыйСертификат("СкопироватьВключаемыйСертификатИзИсходногоЗаявления2");
Результат = МенеджерСервисаКриптографии.ПоискСертификатаПоОтпечаткуИлиСерийномуНомеру(
НовыйСертификат.НовыйСертификат.Отпечаток,
,
Ложь);
Если Результат.Выполнено И Результат.Сертификаты.Количество() > 0 Тогда
ВключаемыйСертификатОблачный = Истина;
ВключаемыйСертификат = Неопределено;
Иначе
ВключаемыйСертификатОблачный = Ложь;
Конецесли;
ЗалогироватьВключаемыйСертификат("СкопироватьВключаемыйСертификатИзИсходногоЗаявления3");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЭтотПараметрИзменился(СписокИзмененныхРеквизитов, Реквизит)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ЭтотПараметрИзменился(СписокИзмененныхРеквизитов, Реквизит);
КонецФункции
&НаСервере
Процедура СкопироватьФлажкиИзИсходногоЗаявления()
СкопироватьФлажкиИзИсходногоЗаявления_ВосстановитьФлаги();
СкопироватьФлажкиИзИсходногоЗаявления_ВосстановитьИзмененияИзИзмененныхРеквизитов();
СкопироватьФлажкиИзИсходногоЗаявления_ПроверитьФлагиСТремяСостояниями();
КОнецПроцедуры
&НаСервере
Процедура СкопироватьФлажкиИзИсходногоЗаявления_ПроверитьФлагиСТремяСостояниями()
Если ИзменитьНастройкиУведомлений = Рекомендовано Тогда
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
Если ИзменитьНастройкиУведомлений = НеТребуется Тогда
ИзменитьНастройкиУведомлений = Рекомендовано;
КонецЕсли;
КонецЕсли;
Если ПереиздатьСертификат = Рекомендовано Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
Если ПереиздатьСертификат = НеТребуется Тогда
ПереиздатьСертификат = Рекомендовано;
КонецЕсли;
КонецЕсли;
КОнецПроцедуры
&НаСервере
Процедура СкопироватьФлажкиИзИсходногоЗаявления_ВосстановитьИзмененияИзИзмененныхРеквизитов()
ПараметрыПодключения = Перечисления.ПараметрыПодключенияК1СОтчетности;
ИзменившиесяРеквизиты = Реквизит.ИзменившиесяРеквизитыВторичногоЗаявления;
ИзменитьРеквизитыПодключенияК1СОтчетности =
ИзменитьРеквизитыПодключенияК1СОтчетности
ИЛИ БылиИзменененыРеквизитыПодключенияК1СОтчетности();
ИзменитьСоставКонтролирующихОрганов =
ИзменитьСоставКонтролирующихОрганов
ИЛИ БылИзмененСоставКонтролирующихОрганов(ИзменившиесяРеквизиты);
ИзменитьВладельцаСертификата = ИзменитьВладельцаСертификата
ИЛИ ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ВладелецЭЦП);
ПродлитьЛицензиюНа1СОтчетность = ПродлитьЛицензиюНа1СОтчетность
ИЛИ ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ПродлениеЛицензии);
ПереиздатьСертификат = ПереиздатьСертификат
ИЛИ ?(ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ПереизданиеСертификата), Требует, НеТребуется);
ЭтоПереходВКоробку = ЭтоПереходВКоробку
ИЛИ ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ПереходВКоробку);
ЭтоПереходВОблако = ЭтоПереходВОблако
ИЛИ ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ПереходВОблако);
ПодтверждениеОперацийСКлючомИзменилось = ЭтотПараметрИзменился(ИзменившиесяРеквизиты, ПараметрыПодключения.ПодтверждениеОперацийСКлючом);
ИзменитьМестоХранения =
ИзменитьМестоХранения
ИЛИ ЭтоПереходВКоробку
ИЛИ ЭтоПереходВОблако
ИЛИ ПодтверждениеОперацийСКлючомИзменилось;
КОнецПроцедуры
&НаСервере
Процедура СкопироватьФлажкиИзИсходногоЗаявления_ВосстановитьФлаги()
Значения = Метаданные.Перечисления.ФлагиЗаявленияНаИзменение.ЗначенияПеречисления;
Для каждого Значение Из Значения Цикл
Имя = Значение.Имя;
ЭтотОбъект[Имя] = Ложь;
КонецЦикла;
Для каждого Строка Из Реквизит.ФлагиЗаявленияНаИзменение Цикл
Имя = ОбщегоНазначения.ИмяЗначенияПеречисления(Строка.Флаг);
ЭтотОбъект[Имя] = Истина;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция БылиИзменененыРеквизитыПодключенияК1СОтчетности() Экспорт
ТабличнаяЧасть = Реквизит.ИзменившиесяРеквизитыВторичногоЗаявления;
Возврат ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КраткоеНаименование)
ИЛИ ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КПП)
ИЛИ ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.ОГРН)
ИЛИ ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонОсновной)
ИЛИ ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаОрганизации);
КонецФункции
&НаСервере
Функция БылИзмененСоставКонтролирующихОрганов(ТабличнаяЧасть) Экспорт
СдаватьВФНСИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФНС);
КодыФНСИзменились = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КодыФНС);
СдаватьВПФРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВПФР)
ИЛИ ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСС);
КодПФРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КодПФР);
РегНомерПФРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерПФР);
РегНомерСФРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерСФР);
СдаватьВРосстатИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРосстат);
КодРосстатаИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КодРосстата);
СдаватьВФСРАРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСРАР);
КодРегионаФСРАРИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.КодРегионаФСРАР);
СдаватьВРПНИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРПН);
СдаватьВФТСИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФТС);
СдаватьВЦБИзменился = ЭтотПараметрИзменился(ТабличнаяЧасть, Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВЦБ);
Возврат
СдаватьВФНСИзменился ИЛИ КодыФНСИзменились
ИЛИ СдаватьВПФРИзменился ИЛИ КодПФРИзменился ИЛИ РегНомерПФРИзменился ИЛИ РегНомерСФРИзменился
ИЛИ СдаватьВРосстатИзменился ИЛИ КодРосстатаИзменился
ИЛИ СдаватьВФСРАРИзменился ИЛИ КодРегионаФСРАРИзменился
ИЛИ СдаватьВРПНИзменился ИЛИ СдаватьВФТСИзменился ИЛИ СдаватьВЦБИзменился;
КонецФункции
&НаСервере
Процедура СкопироватьИдентификаторИзИсходногоЗаявления()
Если ЭтоОткрытиеЗаявления Тогда
ЗначениеВРеквизитФормы(Реквизит.ПолучитьОбъект(), "ДокументЗаявление");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьНаправленияИзИсходногоЗаявления()
Для каждого СтрокаНаправления Из Реквизит.Получатели Цикл
Если СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФНС") Тогда
СдаватьВФНС = Истина;
НоваяСтрокаНаправления = ПолучателиФНС.Добавить();
НоваяСтрокаНаправления.ТипПолучателя = СтрокаНаправления.ТипПолучателя;
НоваяСтрокаНаправления.КодПолучателя = СтрокаНаправления.КодПолучателя;
НоваяСтрокаНаправления.КПП = СтрокаНаправления.КПП;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ПФР")
ИЛИ СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСС") Тогда
Если СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ПФР") Тогда
КодПФР = СтрокаНаправления.КодПолучателя;
КонецЕсли;
СдаватьВФСС = Истина;
СдаватьВПФР = Истина;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСГС") Тогда
СдаватьВРосстат = Истина;
НоваяСтрокаНаправления = ПолучателиФСГС.Добавить();
НоваяСтрокаНаправления.ТипПолучателя = СтрокаНаправления.ТипПолучателя;
НоваяСтрокаНаправления.КодПолучателя = СтрокаНаправления.КодПолучателя;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.РПН") Тогда
ПодатьЗаявкуНаПодключениеРПН = Истина;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ФСРАР") Тогда
ПодатьЗаявкуНаСертификатДляФСРАР = Истина;
ИначеЕсли СтрокаНаправления.ТипПолучателя = ПредопределенноеЗначение("Перечисление.ТипыКонтролирующихОрганов.ЦБ") Тогда
СдаватьВЦБ = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область УстановитьГалку
&НаКлиенте
Процедура ПриИзмененииНастроекУведомленийНаСервере()
Необходимо = НеобходимоИзменитьНастрокиУведомлений();
Если Необходимо Тогда
ИзменитьНастройкиУведомлений = Обязательно;
Иначе
ИзменитьНастройкиУведомлений = ИзменитьНастройкиУведомлений % 2;
КонецЕсли;
ИзменилисьУведомленияВОблаке =
ЭтоОблако(ЭтотОбъект)
И (ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено
ИЛИ ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено);
ИзменилисьУведомленияВКоробке =
НЕ ЭтоОблако(ЭтотОбъект)
И (ТелефонМобильныйИзменился() ИЛИ ЭлектроннаяПочтаИзменилась());
ПерепроверитьСертификат =
ИзменитьНастройкиУведомлений
И (ИзменилисьУведомленияВОблаке
ИЛИ ИзменилисьУведомленияВКоробке);
Если ПерепроверитьСертификат Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений() Экспорт
Если ИзменилисьНастрокиDSS() Тогда
ИзменитьНастройкиУведомлений = НеТребуется;
Возврат;
КонецЕсли;
Необходимо = НеобходимоИзменитьНастрокиУведомлений();
Если Необходимо Тогда
ИзменитьНастройкиУведомлений = Обязательно;
Иначе
Изменились = ИзмененныеРеквизитыУведомлений().Количество() > 0;
Если Изменились Тогда
ИзменитьНастройкиУведомлений = Рекомендовано;
Иначе
ИзменитьНастройкиУведомлений = НеТребуется;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиПользователей()
Если НЕ ЭтоМультиРежим Тогда
Возврат;
КонецЕсли;
Результат = Мультирежим.ОформлениеПользователей(ЭтотОбъект);
Изменений = Мультирежим.ИзменившиесяНастройкиПользователей(ЭтотОбъект, ТаблицаПользователей);
ЕстьИзменения =
ЗначениеЗаполнено(Результат.ТекстОшибки)
ИЛИ Изменений > 0
ИЛИ ВладелецЭЦПРасширилСебеПрава;
Если ЕстьИзменения И НЕ ИзменитьНастройкиПользователей Тогда
ИзменитьНастройкиПользователей = ЕстьИзменения;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НеобходимоИзменитьНастрокиУведомлений()
Заполнены = УведомленияЗаполнены();
Возврат
НЕ Заполнены И ИзменитьМестоХранения И ЭтоПереходВКоробку
ИЛИ ИзменитьМестоХранения И ЭтоПереходВОблако
ИЛИ ИзменитьМестоХранения И КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча)
ИЛИ НЕ Заполнены И ПереиздатьСертификат;
КонецФункции
&НаСервере
Функция ИзмененныеРеквизитыУведомлений(УчитыватьФлаг = Ложь)
Если ИзменилисьНастрокиDSS() Тогда
Возврат Новый Массив;
КонецЕсли;
ИзмененныеРеквизиты = Новый Массив;
УчитыватьРеквизит = ИзменитьНастройкиУведомлений И УчитыватьФлаг ИЛИ НЕ УчитыватьФлаг;
Если ЭтоОблако(ЭтотОбъект) Тогда
Изменилось =
ТелефонМобильныйДляПаролейИзменился()
И УчитыватьРеквизит;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонМобильныйДляПаролей,
Изменилось,
ИзмененныеРеквизиты,
ПроверкаТелефонДляПаролей.ИсходноеЗначение,
ТелефонМобильныйДляПаролей,
,,,
Требует);
Изменилось =
ЭлектроннаяПочтаДляПаролейИзменена()
И УчитыватьРеквизит;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаДляПаролей,
Изменилось,
ИзмененныеРеквизиты,
ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение,
ЭлектроннаяПочтаДляПаролей,
,,,
Требует);
Иначе
Изменилось =
ЭлектроннаяПочта <> ЭлектроннаяПочтаИсходная
И УчитыватьРеквизит;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочта,
Изменилось,
ИзмененныеРеквизиты,
ЭлектроннаяПочтаИсходная,
ЭлектроннаяПочта,
,,,
Требует);
КонецЕсли;
ТелефонМобильныйПредставление = ПолучитьПредставлениеТелефона(ТелефонМобильный);
ТелефонМобильныйИсходныйПредставление = ПолучитьПредставлениеТелефона(ТелефонМобильныйИсходный);
Изменилось =
ТелефонМобильныйПредставление <> ТелефонМобильныйИсходныйПредставление
И УчитыватьРеквизит;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонМобильный,
Изменилось,
ИзмененныеРеквизиты,
ТелефонМобильныйИсходныйПредставление,
ТелефонМобильныйПредставление,
,,,
Требует);
Изменилось =
ПолучатьСМСУведомления <> ПолучатьСМСУведомленияИсходный
И УчитыватьРеквизит;
ДополнитьИзменившиесяРеквизиты(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПолучатьСМСУведомления,
Изменилось,
ИзмененныеРеквизиты,
ПолучатьСМСУведомленияИсходный,
ПолучатьСМСУведомления);
Возврат ИзмененныеРеквизиты;
КонецФункции
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат()
ПереиздатьСертификат = НеобходимостьПереизданияСертификата();
Если ПереиздатьСертификат = НеТребуется
И НЕ СертификатДоступен Тогда
ПереиздатьСертификат = Рекомендовано;
КонецЕсли;
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
Если НЕ ЗаявлениеСозданоКопированием Тогда
ОбработкаЗаявленийАбонента.ЗаполнитьМЧДВЗаявлении(ЭтотОбъект);
КонецЕсли;
ИнициализироватьВозможностьБезбумажногоПродления();
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ИзменитьСоставКонтролирующихОрганов() Экспорт
ИзменитьСоставКонтролирующихОрганов =
ИзмененныеНаправления().Количество() > 0;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ИзменитьРеквизитыОрганизации() Экспорт
Если ИзменилисьНастрокиDSS() Тогда
ИзменитьРеквизитыПодключенияК1СОтчетности = Ложь;
Возврат;
КонецЕсли;
ИзменитьРеквизитыПодключенияК1СОтчетности =
ИзмененныеРеквизитыОрганизации().Количество() > 0;
КОнецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ИзменитьВладельцаСертификата() Экспорт
Если ИзменилисьНастрокиDSS() Тогда
ИзменитьВладельцаСертификата = Ложь;
ИначеЕсли НЕ ЗначениеЗаполнено(ВладелецЭЦПИсходный) И НЕ ЗначениеЗаполнено(ВладелецЭЦП) Тогда
ИзменитьВладельцаСертификата = Истина;
ИначеЕсли НЕ ЗначениеЗаполнено(ВладелецЭЦП) Тогда
ИзменитьВладельцаСертификата = Истина;
Иначе
ИзмененныеРеквизитыВладельца = ИзмененныеРеквизитыВладельца();
ИзменитьВладельцаСертификата =
ИзмененныеРеквизитыВладельца.Количество() > 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ФлагПодключитьЭДО()
ПодключитьЭДО =
НЕ ЭтоУчетнаяЗаписьВМоделиСервиса
И НЕ ЭтоПереходВОблако
И ПодключениеЭДОВозможно
И ЕстьПравоНастройкиЭДО
И НЕ ИзменилисьНастрокиDSS()
И НЕ ЭтоМультиРежим;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНеобходимостьУстановкиГалки_ФлагПереиздатьСертификатЭДО()
ПереиздатьСертификатЭДО =
НЕ ЭтоУчетнаяЗаписьВМоделиСервиса
И НЕ ЭтоПереходВОблако
И НЕ ЭтоПереходВКоробку
И ПереизданиеСертификатаЭДОВозможно
И ЕстьПравоНастройкиЭДО
И НЕ ИзменилисьНастрокиDSS()
И НЕ ЭтоМультиРежим;
КонецПроцедуры
#КонецОбласти
#Область ВладелецЭП
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_ПаспортныеДанные(ДопРеквизитыУчетнойЗаписи)
ВладелецЭЦПВидДокументаКодИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПВидДокументаКод;
ВладелецЭЦПСерияДокументаИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПСерияДокумента;
ВладелецЭЦПНомерДокументаИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПНомерДокумента;
ВладелецЭЦПДатаВыдачиДокументаИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПДатаВыдачиДокумента;
ВладелецЭЦПКемВыданДокументИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПКемВыданДокумент;
ВладелецЭЦПКодПодразделенияИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПКодПодразделения;
КонецПроцедуры
&НаСервере
Функция ВладелецПоТипу()
Если ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ПустаяСсылка() И ЭтоЮридическоеЛицо Тогда
Возврат Неопределено;
ИначеЕсли ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.Руководитель
ИЛИ ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ПустаяСсылка() И НЕ ЭтоЮридическоеЛицо Тогда
Возврат Руководитель;
ИначеЕсли ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ГлавныйБухгалтер Тогда
Возврат ГлБухгалтер;
ИначеЕсли ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник Тогда
Возврат ДругойСотрудник;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанныеСотрудника(ПеречитатьДанныеОСотруднике = Истина)
ЗаполнитьВладельцаЭЦППоТипу();
Если НЕ ЗначениеЗаполнено(ВладелецЭЦП) Тогда
Возврат;
КонецЕсли;
Если ПеречитатьДанныеОСотруднике Тогда
ПеречитатьДанныеОСотруднике();
КонецЕсли;
Если ЗаявлениеСозданоКопированием Тогда
СкопироватьРеквизитыИзИсходногоЗаявления_Пользователи();
КонецЕсли;
ОбработкаЗаявленийАбонента.ЗаполнитьДанныеСотрудника(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВладельцаЭЦППоТипу()
НетДанныхДляЗаполненияВладельца =
НЕ ЗначениеЗаполнено(Организация)
ИЛИ ВладелецЭЦПТип = Перечисления.ТипыВладельцевЭЦП.ПустаяСсылка() И ЭтоЮридическоеЛицо;
Если НетДанныхДляЗаполненияВладельца Тогда
Возврат;
КонецЕсли;
ВладелецЭЦП = ВладелецПоТипу();
КонецПроцедуры
&НаСервере
Процедура ПеречитатьДанныеОСотруднике()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ЗаполнитьДанныеОрганизации(СтруктураРеквизитов);
ДанныеЗаполнения = КонтекстЭДОСервер.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(СтруктураРеквизитов);
Если ДанныеЗаполнения.Свойство("СтруктураДанныхОрганизации") Тогда
ДанныеОрганизации = ДанныеЗаполнения.СтруктураДанныхОрганизации;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриУстановкеРежимаТолькоСУЦ(ПриОткрытии = Ложь)
ПриУстановкеРежимаТолькоСУЦНаСервере(ПриОткрытии);
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьНеобходимостьУстановкиГалки_ВключатьЛицензиюКриптоПроВСертификат(ЭтотОбъект);
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиПользователей();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ПриУстановкеРежимаТолькоСУЦНаСервере(ПриОткрытии = Ложь)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОбработкаЗаявленийАбонента.ПриУстановкеРежимаТолькоСУЦНаСервере(ЭтотОбъект);
ИнициализироватьСпособПолученияСертификата(ЭтотОбъект);
ПересчитатьМестоХранения(ПриОткрытии,,ПриОткрытии);
Если НЕ ПриОткрытии Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
ИнициализироватьВозможностьБезбумажногоПродления();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ПеренестиЭлементыПриМультирежиме()
ЭтоПодключениеМультирежима = МультирежимКлиентСервер.ЭтоПодключениеМультирежима(ЭтотОбъект);
ЭтоОтключениеМультирежима = МультирежимКлиентСервер.ЭтоОтключениеМультирежима(ЭтотОбъект);
ПереноситьВОтдельнуюГруппу =
ЭтоМультиРежим
И НЕ ЭтоПодключениеМультирежима
И НЕ ЭтоОтключениеМультирежима;
Если ПереноситьВОтдельнуюГруппу Тогда
Группа = Элементы.ГруппаМультирежима;
Иначе
Группа = Элементы.ГруппаНастройки;
КонецЕсли;
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоЛичныеНастройки Тогда
ИмяЭлемента = "ГруппаНастройкиПользователя";
Иначе
ИмяЭлемента = "ГруппаНастройкиПользователей";
Конецесли;
Элемент = Группа.ПодчиненныеЭлементы.Найти(ИмяЭлемента);
Если Элемент = Неопределено Тогда
Элементы.Переместить(
Элементы[ИмяЭлемента],
Группа);
Элементы.Переместить(
Элементы.ГруппаИзменитьСоставНалоговыхОрганов,
Группа,
Элементы[ИмяЭлемента]);
КонецЕсли;
Элементы.ГруппаМультирежима.Видимость = ПереноситьВОтдельнуюГруппу;
Если ПереноситьВОтдельнуюГруппу Тогда
ЭтоКонтролыАдмина =
ВладелецЭЦПЭтоАдмин
ИЛИ МультирежимКлиентСервер.ЭтоСаморазрегистрацияАдмина(ЭтотОбъект)
ИЛИ МультирежимКлиентСервер.ТекущийПользовательБылАдминомСталПользователем(ЭтотОбъект);
Если ЭтоКонтролыАдмина Тогда
Элементы.ГруппаМультирежима.Заголовок = НСтр("ru = 'Управление доступом:'");
Иначе
Элементы.ГруппаМультирежима.Заголовок = НСтр("ru = 'Назначено администратором:'");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьМестоХранения(ПриОткрытии, ПринудительнаяМодель = Неопределено, ЭтоВыборСертификата = Ложь)
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
Возврат;
КонецЕсли;
МестоХраненияПредыдущее = ВыбранноеМестоХраненияКлюча;
Если ЗаявлениеСозданоКопированием Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьВыбранноеМестоХраненияКлюча(ЭтотОбъект, МестоХраненияПредыдущее);
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьВыбранноеМестоХраненияКлюча(ЭтотОбъект, ПринудительнаяМодель);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьИзменениеВМестеХраненияКлючей(ЭтотОбъект);
Если НЕ ЭтоВыборСертификата Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
КонецЕсли;
ИзменилосьМестоХранения = МестоХраненияПредыдущее <> ВыбранноеМестоХраненияКлюча;
Если ИзменилосьМестоХранения Тогда
Если ЭтоОблако(ЭтотОбъект) Тогда
ИнициализироватьТокен = Истина;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен);
КонецЕсли;
БылаОблачнаяПодпись = МестоХраненияПредыдущее = Перечисления.ТипыКриптоПровайдеров.CryptoProDSS;
ОпределятьМестоХранения = Ложь;
ПриИзмененииМестаХранения(ОпределятьМестоХранения, ЭтоВыборСертификата, БылаОблачнаяПодпись);
ИнициализироватьПараметрыЭДО(ПриОткрытии);
ИзменитьМестоХранения = ИзменилосьМестоХранения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИзменилосьМестоХранения(Форма)
ВМоделиСервиса = ПредопределенноеЗначение("Перечисление.МодельРаботыСКлючами.ВМоделиСервиса");
ЭтоОблако =
ЭтоОблако(Форма)
ИЛИ Форма.ВыбранноеМестоХраненияКлюча = ВМоделиСервиса
ИЛИ ЭтоОблачнаяПодпись(Форма);
СвойствоОблачнойПодписи = Форма.СвойствоОблачнойПодписи;
ИзмениласьОблачнаяПодпись = КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Форма.МестоХраненияКлюча)
И СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись <> СвойствоОблачнойПодписи.УчетнаяЗапись
И ЗначениеЗаполнено(СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись);
Изменилось =
Форма.ЭтаУчетнаяЗаписьБылаСделанаДляОблака <> ЭтоОблако
ИЛИ Форма.ЭтаУчетнаяЗаписьБылаСделанаДляОблака И НЕ Форма.ДоступнаЭлектроннаяПодписьВМоделиСервиса
ИЛИ СпособПодтвержденияКриптооперацийИзменился(Форма)
ИЛИ Форма.ВключатьЛицензиюКриптоПроВСертификат И НЕ ЭтоОблако
ИЛИ ИзмениласьОблачнаяПодпись;
Возврат Изменилось;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОбновитьДанныеРуководителя()
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеРуководителя");
НовыйРуководитель = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.Руководитель(Организация);
Если Руководитель = НовыйРуководитель Тогда
Возврат;
КонецЕсли;
Руководитель = НовыйРуководитель;
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.Руководитель");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьДанныеГлБухгалтера()
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеГлБухгалтера");
НовыйГлБухгалтер = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.ГлБухгалтер(Организация);
Если ГлБухгалтер = НовыйГлБухгалтер Тогда
Возврат;
КонецЕсли;
ГлБухгалтер = НовыйГлБухгалтер;
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ГлавныйБухгалтер");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеВладельцаДляМультирежима() Экспорт
Если ЗначениеЗаполнено(ВладелецЭЦП) И ЭтоМультиРежим Тогда
Мультирежим.ЗаполнитьДанныеВладельцаДляМультирежима(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца) Экспорт
ДанныеДоСмены = Новый Структура();
ДанныеДоСмены.Вставить("ВладелецЭЦПТип", ВладелецЭЦПТип);
ДанныеДоСмены.Вставить("ВладелецЭЦП", ВладелецЭЦП);
ДанныеДоСмены.Вставить("ДругойСотрудник", ДругойСотрудник);
ВладелецЭЦПТип = НовыйТипВладельца;
ЗаполнитьВладельцаЭЦППоТипу();
Если НужноПредложитьПервичное(ВладелецЭЦП) ИЛИ ВладелецЭЦПРасширилСебеПрава Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"УстановитьНовогоВладельцаЭЦП_ПриОтказеОтПервичного",
ЭтотОбъект,
ДанныеДоСмены);
СпроситьПроПервичное(ОписаниеОповещения, ВладелецЭЦП);
Возврат;
КонецЕсли;
Результат = ФизЛицоСоответствуетТекущемуПользователю();
Если НЕ Результат.Корректно Тогда
ВладелецЭЦП = Результат.ПравильныйВладелецЭЦП;
ВладелецЭЦПТип = Результат.ПравильныйВладелецЭЦПТип;
КонецЕсли;
УстановитьНовогоВладельцаЭЦПНаСервере(ВладелецЭЦПТип);
ПриУстановкеРежимаТолькоСУЦ();
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
СформироватьТаблицуДляПодтвержденияДанных();
КонецЕсли;
УправлениеФормой();
Если НЕ Результат.Корректно Тогда
МультирежимКлиент.ПредупредитьОНеобходимостиСменитьПользователя(ЭтотОбъект, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНовогоВладельцаЭЦП_ПриОтказеОтПервичного(Результат, ДанныеДоСмены) Экспорт
ВладелецЭЦПТип = ДанныеДоСмены.ВладелецЭЦПТип;
ВладелецЭЦП = ДанныеДоСмены.ВладелецЭЦП;
ДругойСотрудник = ДанныеДоСмены.ДругойСотрудник;
ЗаполнитьДанныеВладельцаДляМультирежима();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура УстановитьНовогоВладельцаЭЦПНаСервере(НовыйВладелецЭЦПТип)
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ОчиститьДанныеВладельца();
ВладелецЭЦПТип = НовыйВладелецЭЦПТип;
ЗаполнитьДанныеСотрудника(Истина);
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ОпределятьМестоХранения = Ложь;
СброситьСпособПолученияСертификата(ОпределятьМестоХранения, Ложь);
ПроверитьНеобходимостьУстановкиГалки_ИзменитьВладельцаСертификата();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
ЗаполнитьМЧДВЗаявлении();
КонецПроцедуры
&НаСервере
Процедура ОчиститьДанныеВладельца() Экспорт
ОбработкаЗаявленийАбонента.ОчиститьДанныеВладельца(ЭтотОбъект);
ВключенЛокальныйСертификат = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
ОбновитьКонтакты =
ВладелецЭЦП <> ВладелецЭЦПИсходный
И ЭтоУчетнаяЗаписьВМоделиСервиса
И НЕ ВключенЛокальныйСертификат;
Если ОбновитьКонтакты Тогда
ОчиститьТелефонИПочтуДляОблака();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуРуководителя()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуРуководителя(Организация);
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеРуководителя",1);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуГлБухгалтера()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ОткрытьФормуГлБухгалтера(Организация);
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеГлБухгалтера",1);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораВладельцаЭЦП()
Если ЭтоРуководитель(ЭтотОбъект) Тогда
Если ЭтоЮридическоеЛицо Тогда
ОткрытьФормуРуководителя();
Иначе
Если ЗначениеЗаполнено(ВладелецЭЦП) Тогда
ПоказатьЗначение(, ВладелецЭЦП);
Иначе
ОткрытьФормуРуководителя();
КонецЕсли;
КонецЕсли;
ИначеЕсли ЭтоБухгалтер(ЭтотОбъект) Тогда
ОткрытьФормуГлБухгалтера();
ИначеЕсли ЭтоДругойСотрудник(ЭтотОбъект) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьФормуВыбораСотрудникаЗавершение", ЭтотОбъект);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентПереопределяемый.ПолучитьИсполнителя(
Организация,
ДругойСотрудник,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораСотрудникаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ДругойСотрудник = Результат;
НовыйТипВладельца = ПредопределенноеЗначение("Перечисление.ТипыВладельцевЭЦП.ДругойСотрудник");
УстановитьНовогоВладельцаЭЦП(НовыйТипВладельца);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Очистка
&НаСервере
Процедура ОчиститьРеквизитыФормы()
ОбработкаЗаявленийАбонента.ОчиститьРеквизитыЗаявления(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СброситьНаправленияСдачиОтчетности()
РеквизитыФормы = ПолучитьРеквизиты();
Для каждого РеквизитФормы Из РеквизитыФормы Цикл
Имя = РеквизитФормы.Имя;
Если ТипЗнч(ЭтотОбъект[Имя]) = Тип("ДанныеФормыКоллекция") Тогда
Продолжить;
КонецЕсли;
Если СтрНайти(Имя, "ФНС") > 0
ИЛИ СтрНайти(Имя, "ПФР") > 0
ИЛИ СтрНайти(Имя, "Росстат") > 0
ИЛИ СтрНайти(Имя, "ФСС") > 0
ИЛИ СтрНайти(Имя, "ФТС") > 0
ИЛИ СтрНайти(Имя, "РПН") > 0
ИЛИ СтрНайти(Имя, "ЦБ") > 0 Тогда
ЭтотОбъект[Имя] = Неопределено;
КонецЕсли;
КонецЦикла;
ПолучателиФНС.Очистить();
ПолучателиФСГС.Очистить();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СброситьВсеФлажки(Форма)
Форма.ИзменитьВладельцаСертификата = Ложь;
Форма.ПродлитьЛицензиюНа1СОтчетность = Ложь;
Форма.ИзменитьСоставКонтролирующихОрганов = Ложь;
Форма.ИзменитьРеквизитыПодключенияК1СОтчетности = Ложь;
Форма.ИзменитьНастройкиУведомлений = Форма.НеТребуется;
Форма.ПереиздатьСертификат = Форма.НеТребуется;
Форма.ИзменитьМестоХранения = Ложь;
Форма.ИзменитьНастройкиПользователей = Ложь;
КонецПроцедуры
&НаСервере
Процедура ОчиститьИсходныеЗначенияИПризнакИзменения()
РеквизитыФормы = ПолучитьРеквизиты();
Для каждого РеквизитФормы Из РеквизитыФормы Цикл
Имя = РеквизитФормы.Имя;
Если ТипЗнч(ЭтотОбъект[Имя]) = Тип("ДанныеФормыКоллекция") Тогда
Продолжить;
КонецЕсли;
Если СтрНайти(Имя, "Исход") > 0
ИЛИ СтрНайти(Имя, "Изменил") > 0 Тогда
ЭтотОбъект[Имя] = Неопределено;
КонецЕсли;
КонецЦикла;
ЭтоНотариусАдвокатИлиГКФХ = Ложь;
ЭтоИностраннаяОрганизация = Ложь;
ЭтоБюджетополучатель = Ложь;
ПолучателиФНС.Очистить();
ПолучателиФСГС.Очистить();
КонецПроцедуры
#КонецОбласти
#Область СделатьРавнымИсходному
&НаСервере
Процедура СделатьНехранящиесяВБазеРеквизитыРавнымиИсходным()
Если ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ТелефонМобильный")) Тогда
ТелефонМобильный = ТелефонМобильныйИсходный;
КонецЕсли;
Если ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ТелефонОсновной")) Тогда
ТелефонОсновной = ТелефонОсновнойИсходный;
КонецЕсли;
Если ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочта")) Тогда
ЭлектроннаяПочтаОрганизации = ЭлектроннаяПочтаОрганизацииИсходная;
КонецЕсли;
Если ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСНИЛС")) Тогда
ВладелецЭЦПСНИЛС = ВладелецЭЦПСНИЛСИсходный;
КонецЕсли;
ПродлитьЛицензиюНа1СОтчетность = ПродлитьЛицензиюНа1СОтчетностьИсходный;
КонецПроцедуры
&НаСервере
Процедура СделатьНаправленияСдачиОтчетностиРавнымиИсходным()
СдаватьВФНС = СдаватьВФНСИсходный;
СкопироватьИзОднойТаблицыВДругую(ПолучателиФНСИсходные, ПолучателиФНС);
КодыФНСПрописью = КодыФНСПрописьюИсходные;
СдаватьВПФР = СдаватьВПФРИсходный;
КодПФР = КодПФР(ДанныеОрганизации);
РегНомерПФР = ДанныеОрганизации.РегНомПФР;
РегРегНомерСФР = ДанныеОрганизации.РегНомерСФР;
СдаватьВФСС = СдаватьВФССИсходный;
СдаватьВРосстат = СдаватьВРосстатИсходный;
СкопироватьИзОднойТаблицыВДругую(ПолучателиФСГСИсходные, ПолучателиФСГС);
КодыРосстатПрописью = КодыРосстатПрописьюИсходные;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ПодатьЗаявкуНаСертификатДляФСРАР = ПодатьЗаявкуНаСертификатДляФСРАРИсходный;
КодРегионаФСРАР = КонтекстЭДОСервер.КодРегионаФСРАР(АдресЮридическийЗначение);
ПодатьЗаявкуНаПодключениеРПН = ПодатьЗаявкуНаПодключениеРПНИсходный;
ПодатьЗаявкуНаПодключениеФТС = ПодатьЗаявкуНаПодключениеФТСИсходный;
СдаватьВЦБ = СдаватьВЦБИсходный;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходногоВладельцаЭЦП()
Если ЭтоМультиРежим Тогда
Результат = Мультирежим.ВладелецЭЦПТипПоФорме(ЭтотОбъект);
ВладелецЭЦПТипИсходный = Результат.ВладелецЭЦПТип;
ВладелецЭЦПИсходный = Результат.ВладелецЭЦП;
Иначе
Результат = ОбработкаЗаявленийАбонента.ИсходныйВладелецСертификатаПоФИОиСНИЛС(
Организация,
ВладелецЭЦПФамилияИсходный,
ВладелецЭЦПИмяИсходный,
ВладелецЭЦПОтчествоИсходный,
ВладелецЭЦПСНИЛСИсходный);
ВладелецЭЦПТипИсходный = Результат.ВладелецЭЦПТипИсходный;
ВладелецЭЦПИсходный = Результат.ВладелецЭЦПИсходный;
КонецЕсли;
Если ВладелецЭЦПТипИсходный = Перечисления.ТипыВладельцевЭЦП.ДругойСотрудник Тогда
ДругойСотрудникИсходный = ВладелецЭЦПИсходный;
ДругойСотрудник = ВладелецЭЦПИсходный;
КонецЕсли;
Если НЕ ЗаявлениеСозданоКопированием Тогда
ВладелецЭЦПТип = ВладелецЭЦПТипИсходный;
ЗаполнитьДанныеСотрудника(Истина);
КонецЕсли;
Если ЭтоМультиРежим Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ДопРеквизиты = КонтекстЭДОСервер.ДополнительныеРеквизитыУчетнойЗаписи(УчетнаяЗапись, ВладелецЭЦП);
Если ЗначениеЗаполнено(ДопРеквизиты) Тогда
ИнициализироватьИсходныеРеквизиты1СОтчетности_ВладелецЭП(ДопРеквизиты);
КонецЕсли;
КонецЕсли;
Если НЕ ЗаявлениеСозданоКопированием Тогда
ВладелецЭЦПЭтоФизЛицо = ВладелецЭЦПЭтоФизЛицоИсходный;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Направления
&НаСервере
Процедура ИнициализироватьДоступностьНаправлений()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ОпределитьПодключаемыеНаправленияСдачиОтчетности(ЭтотОбъект, ЗаявлениеСозданоКопированием);
КонецПроцедуры
&НаКлиенте
Процедура УказатьНаправления_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено ИЛИ НЕ Результат.Модифицированность Тогда
Возврат;
КонецЕсли;
ОбработатьВыбранныеНаправленияСервер(Результат);
КонецПроцедуры
&НаСервере
Процедура ОбработатьВыбранныеНаправленияСервер(Результат)
Мультирежим.ОбработатьВыбранныеНаправленияИзГлавногоОкна(ЭтотОбъект, Результат);
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиПользователей();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыНаправленийСервер() Экспорт
Возврат Мультирежим.ПараметрыОткрытияФормыНаправленийИзГлавногоОкна(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ПараметрыФормыНаправленийУчетнойЗаписиСервер() Экспорт
Возврат Мультирежим.ПараметрыФормыНаправленийУчетнойЗаписи(ЭтотОбъект);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СкопироватьИзОднойТаблицыВДругую(ТаблицаИсточник, ТаблицаПриемник)
ТаблицаПриемник.Очистить();
Для Каждого СтрокаНаправлений Из ТаблицаИсточник Цикл
НоваяСтрока = ТаблицаПриемник.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаНаправлений);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КодПФР(ДанныеОрганизации)
ПолученыйКодПФР = "";
Если ДанныеОрганизации = Неопределено
ИЛИ ПустаяСтрока(ДанныеОрганизации.КодОрганаПФР)
ИЛИ СтрДлина(ДанныеОрганизации.КодОрганаПФР) < 7 Тогда
ПолученыйКодПФР = Лев(ДанныеОрганизации.КодОрганаПФР,7);
Иначе
ПолученыйКодПФР = ДанныеОрганизации.КодОрганаПФР;
КонецЕсли;
Возврат ПолученыйКодПФР;
КонецФункции
#КонецОбласти
#Область Навигация
&НаКлиенте
Процедура ПоказатьДругуюСтраницу(Вперед = Истина)
ТекущаяСтраница = Элементы.ОсновнаяПанель.ТекущаяСтраница;
Страницы = Элементы.ОсновнаяПанель.ПодчиненныеЭлементы;
ИндексТекущейСтраницы = Страницы.Индекс(ТекущаяСтраница);
Пока Страницы.Индекс(ТекущаяСтраница) < Страницы.Количество() - 1 Цикл
Если Вперед Тогда
ИндексНовойСтраницы = Страницы.Индекс(ТекущаяСтраница) + 1;
Иначе
ИндексНовойСтраницы = Страницы.Индекс(ТекущаяСтраница) - 1;
КонецЕсли;
Страница = Страницы.Получить(ИндексНовойСтраницы);
Если Страница.Видимость Тогда
Элементы.ОсновнаяПанель.ТекущаяСтраница = Страница;
Прервать;
Иначе
ТекущаяСтраница = Страница;
КонецЕсли;
КонецЦикла;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСледующуюСтраницу()
ПоказатьДругуюСтраницу(Истина);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеКнопокНавигации()
ТекущаяСтраница = Элементы.ОсновнаяПанель.ТекущаяСтраница;
КнопкаДалее = Элементы.Далее;
КнопкаНазад = Элементы.Назад;
КнопкаЗакрыть = Элементы.Закрыть;
КнопкаДалее.Заголовок = НСтр("ru = 'Далее>'");
Если ТекущаяСтраница = Элементы.ОсновнаяСтраница Тогда
УстановитьСвойстваКнопок(Ложь, Истина, Истина);
ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
УстановитьСвойстваКнопок(Истина, Истина, Истина);
Если ЭтоЭлектронноеПодписание Тогда
КнопкаДалее.Заголовок = НСтр("ru = 'Подписать и отправить'");
Иначе
КнопкаДалее.Заголовок = НСтр("ru = 'Отправить заявление'");
КонецЕсли;
ИначеЕсли ТекущаяСтраница = Элементы.РезультатОтправки Тогда
Если ДокументЗаявление.Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено
ИЛИ ДокументЗаявление.Статус = Перечисления.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено Тогда
КнопкаЗакрыть.Заголовок = НСтр("ru = 'Закрыть'");
УстановитьСвойстваКнопок(Ложь, Ложь, Истина);
ПрограммноеЗакрытие = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваКнопок(ВидимостьНазад, ВидимостьДалее, ВидимостьЗакрыть)
Элементы.Назад.Видимость = ВидимостьНазад;
Элементы.Далее.Видимость = ВидимостьДалее;
Элементы.Закрыть.Видимость = ВидимостьЗакрыть;
Элементы.Далее.КнопкаПоУмолчанию = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьПредыдущуюСтраницу()
ПоказатьДругуюСтраницу(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНаСтраницеУспешнойОтправки()
Оповестить(НСтр("ru = 'Упрощенное заявление. Успешная отправки заявления'"), , ДокументЗаявление.Ссылка);
Если ЗаявлениеОдобреноБезОтправки() Тогда
Элементы.РезультатыОтправки.ТекущаяСтраница = Элементы.ГруппаБезОтправки;
Иначе
Элементы.РезультатыОтправки.ТекущаяСтраница = Элементы.ГруппаОтправленоИПринято;
КонецЕсли;
РазблокироватьКнопку();
ПоказатьСледующуюСтраницу();
ПрограммноеЗакрытие = Истина;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьРезультатОтправки()
РазблокироватьКнопку();
ПоказатьСтраницуУспешнойОтправки =
ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено")
ИЛИ ЗаявлениеОдобреноБезОтправки();
Если ПоказатьСтраницуУспешнойОтправки Тогда
УведомитьПартнераОЗаявлении();
ОткрытьФормуНаСтраницеУспешнойОтправки();
ИначеЕсли СтрНайти(ТекстОшибокОтправки, "Отказ от ввода пароля") <> 0 Тогда
Оповестить(НСтр("ru = 'Упрощенное заявление. Отказ от ввода пароля'"), "", ДокументЗаявление.Ссылка);
Иначе
Оповестить(НСтр("ru = 'Упрощенное заявление. Ошибка отправки заявления'"), ТекстОшибокОтправки, ДокументЗаявление.Ссылка);
КонецЕсли;
ЭтаФорма.Активизировать();
КонецПроцедуры
&НаСервере
Процедура УведомитьПартнераОЗаявлении()
ОбработкаЗаявленийАбонента.УведомитьПартнераОЗаявлении(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Функция ЗаявлениеОдобреноБезОтправки()
Результат =
ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено")
И (ЭтоТолькоСменаТелефонаИлиПочтыВОблаке() ИЛИ ЭтоИзменениеПользователейБезОтправкиЗаявления());
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура КоманднаяПанельМастерДалее_ВыборДействия_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат Тогда
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
СформироватьТаблицуДляПодтвержденияДанных();
ПоказатьСледующуюСтраницу();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриНажатииДалееНаОсновнойСтранице(МастерДалее)
МастерДалее = Истина;
Если НЕ ЗначениеЗаполнено(Организация) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Заполните поле ""Организация""'"), ,"Организация");
МастерДалее = Ложь;
КонецЕсли;
Если ИзменитьСоставКонтролирующихОрганов Тогда
ПроверитьКонтролирующиеОрганы(МастерДалее);
КонецЕсли;
ПроверитьВладельцаЭП(МастерДалее);
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьВключаемыйСертификат(ЭтотОбъект, МастерДалее);
Если НЕ УстановленХотяБыОдинФлаг(ЭтотОбъект) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Вы не выбрали никакого действия'"), ,"");
МастерДалее = Ложь;
КонецЕсли;
ПроверитьКриптоПро(МастерДалее);
Проверить1СЭДОПоНовойСхеме(МастерДалее);
ПроверитьДоступДляТокена(МастерДалее);
КонтекстЭДОКлиент.ПроверитьСканыДокументов(ЭтотОбъект, МастерДалее);
ПроверитьПереходныйПериод(МастерДалее);
ПроверитьОблачнуюПодпись(МастерДалее);
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьУЦ(ЭтотОбъект, МастерДалее);
ПроверитьПользователей(МастерДалее);
Результат = ФизЛицоСоответствуетТекущемуПользователю();
Если НЕ Результат.Корректно Тогда
МультирежимКлиент.ПредупредитьОНеобходимостиСменитьПользователя(ЭтотОбъект, Результат);
МастерДалее = Ложь;
КонецЕсли;
ПроверитьУсловияУдаленногоПолученияСертификата(МастерДалее);
Если МастерДалее Тогда
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"КоманднаяПанельМастерДалее_ВыборДействия_Завершение",
ЭтотОбъект);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, МастерДалее);
ИначеЕсли ЭтоУдаленноеПереизданиеСертификата Тогда
ПослеСравненияРеквизитовПоЕГРЮЛ();
Иначе
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПослеСравненияРеквизитовПоЕГРЮЛ",
ЭтотОбъект);
СравнитьРеквизитыПоЕГРЮЛ(ОписаниеОповещения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьУсловияУдаленногоПолученияСертификата(МастерДалее)
ВыбраноУдаленноеПолучениеСертификата
= ОбработкаЗаявленийАбонентаКлиентСервер.ДоступенВыборСпособаПереизданияСертификата(ЭтотОбъект)
И ЭтоУдаленноеПереизданиеСертификата;
Если НЕ ВыбраноУдаленноеПолучениеСертификата Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтоЭлектронноеПодписание Тогда
Текст = НСтр("ru = 'Удаленное получение сертификата возможно только при подписании эл. подписью'");
ОбщегоНазначенияКлиент.СообщитьПользователю(Текст,,"СпособПодписания");
МастерДалее = Ложь;
Возврат;
КонецЕсли;
Если Элементы.ГруппаОсознаюУсловияОтправкиРасписки.Видимость
И НЕ ОсознаюУсловияОтправкиРасписки Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Вы не поставили флаг подтверждения'"),,"ОсознаюУсловияОтправкиРасписки");
МастерДалее = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыПоЕГРЮЛ(ОповещениеОЗавершении)
ОписаниеОповещения = Новый ОписаниеОповещения(
"СравнитьРеквизитыПоЕГРЮЛ_Завершение",
ЭтотОбъект,
ОповещениеОЗавершении);
ОбработкаЗаявленийАбонентаКлиент.СравнитьЗаявлениеПоЕГРЮЛ(ЭтотОбъект, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыПоЕГРЮЛ_Завершение(Исправить, ОповещениеОЗавершении) Экспорт
Если Исправить = Истина Тогда
ИсправитьОшибкиЕГРЮЛСервер();
ИначеЕсли Исправить = Ложь Тогда
ВыполнитьОбработкуОповещения(ОповещениеОЗавершении);
КонецЕсли;
РазблокироватьКнопку();
КонецПроцедуры
&НаКлиенте
Процедура ПослеСравненияРеквизитовПоЕГРЮЛ(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения(
"КоманднаяПанельМастерДалее_ВыборДействия_Завершение",
ЭтотОбъект);
ПроверитьКриптопровайдерИМестоХраненияКлючей(ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Процедура ИсправитьОшибкиЕГРЮЛСервер() Экспорт
ОбработкаЗаявленийАбонента.ИсправитьОшибкиЕГРЮЛ(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьПользователей(МастерДалее)
Мультирежим.ПроверитьПользователей(
ЭтотОбъект,
МастерДалее);
КонецПроцедуры
&НаКлиенте
Процедура ПриНажатииДалееНаСтраницеПроверкиЗаявления(МастерДалее)
ЗаблокироватьКнопку();
ОчиститьСообщения();
СохранитьЗаявлениеКлиент();
ПроверитьРеквизитыЗаявления(МастерДалее);
Если НЕ МастерДалее Тогда
РазблокироватьКнопку();
Возврат;
КонецЕсли;
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеГлБухгалтера");
ОтключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеРуководителя");
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
СформироватьИОтправитьЗаявление();
КонецПроцедуры
&НаКлиенте
Функция ЭтоИзменениеПользователейБезОтправкиЗаявления()
ИзмененныеРеквизиты = ДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления;
НастройкиПользователей = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.НастройкиПользователей");
Результат =
ЭтоОднопользовательскийРежим(ЭтотОбъект)
И ИзмененныеРеквизиты.Количество() = 1
И ИзмененныеРеквизиты[0].ИзмененныйРеквизит = НастройкиПользователей;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОдобритьЗаявлениеБезОтправки()
ОбработкаЗаявленийАбонентаВызовСервера.ДобавитьПользователей1ПРежимаВУчетнуюЗаписьИзЗаявления(
ДокументЗаявление.Ссылка,
УчетнаяЗапись);
ЗаписатьСостояниеЗаявления();
ЭтотОбъект.Прочитать();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОднопользовательскийРежим(Форма)
Результат = НЕ ЭтоМногопользовательскийРежим(Форма);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоМногопользовательскийРежим(Форма)
Результат = Форма.ЭтоМультиРежим
ИЛИ МультирежимКлиентСервер.ЭтоПодключениеМультирежима(Форма)
ИЛИ МультирежимКлиентСервер.ЭтоОтключениеМультирежима(Форма);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область Таблица
#Область ИтоговыеДанные
&НаСервере
Функция ИтоговыеДанныеОрганизации_Адрес(ЕстьИзменение, НовоеЗначение, ИсходноеЗначение)
Изменилось = ИзменитьРеквизитыПодключенияК1СОтчетности И ЕстьИзменение
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось,
НовоеЗначение,
ИсходноеЗначение);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_КраткоеНаименование()
Изменилось =
ИзменитьРеквизитыПодключенияК1СОтчетности И КраткоеНаименованиеИзменилось
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось,
КраткоеНаименование,
КраткоеНаименованиеИсходное);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_КПП()
Возврат ?(ИзменитьРеквизитыПодключенияК1СОтчетности И КППИзменился, КПП, КППИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_ОГРН()
Изменилось = ИзменитьРеквизитыПодключенияК1СОтчетности И ОГРНИзменился
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось,
ОГРН,
ОГРНИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_РегНомерПФР() Экспорт
Возврат ?(ИзменитьСоставКонтролирующихОрганов И (РегНомерПФРИзменился ИЛИ СдаватьВПФРИзменился), РегНомерПФР, РегНомерПФРИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_РегНомерСФР() Экспорт
Возврат ?(ИзменитьСоставКонтролирующихОрганов И (РегНомерСФРИзменился ИЛИ СдаватьВПФРИзменился), РегНомерСФР, РегНомерСФРИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_КодРегионаФСРАР() Экспорт
Возврат ?(ИзменитьСоставКонтролирующихОрганов И КодРегионаФСРАРИзменился, КодРегионаФСРАР, КодРегионаФСРАРИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_ТелефонОсновной()
Возврат ?(ИзменитьРеквизитыПодключенияК1СОтчетности И ТелефонОсновнойИзменился, ТелефонОсновной, ТелефонОсновнойИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеОрганизации_ЭлектроннаяПочтаОрганизации()
Возврат ?(ИзменитьРеквизитыПодключенияК1СОтчетности И ЭлектроннаяПочтаОрганизацииИзменилась, ЭлектроннаяПочтаОрганизации, ЭлектроннаяПочтаОрганизацииИсходная);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ЭлектроннаяПочта()
ПереиздаетсяСертификат = ПереиздатьСертификат;
Если ЭтоОблако(ЭтотОбъект) Тогда
Изменилась =
(ИзменитьНастройкиУведомлений ИЛИ ПереиздаетсяСертификат)
И ЭлектроннаяПочтаДляПаролейИзменена();
Возврат ?(Изменилась,
ЭлектроннаяПочтаДляПаролей,
ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение);
Иначе
Изменилась =
(ИзменитьНастройкиУведомлений ИЛИ ПереиздаетсяСертификат)
И ЭлектроннаяПочтаИзменилась();
Возврат ?(Изменилась,
ЭлектроннаяПочта,
ЭлектроннаяПочтаИсходная);
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ВладелецЭЦП()
Изменилось = ИзменитьВладельцаСертификата И ИзменилосьФИО()
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось, ВладелецЭЦП, ВладелецЭЦПИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ПолучатьСМСУведомления()
Результат =
?(ИзменитьНастройкиУведомлений И ПолучатьСМСУведомления <> ПолучатьСМСУведомленияИсходный,
ПолучатьСМСУведомления,
ПолучатьСМСУведомленияИсходный);
Возврат Результат;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ВладелецЭЦПДолжность()
Если СравниватьДолжностьИПодразделение() И НЕ ЭтоУдаленноеПереизданиеСертификата Тогда
Изменилось = ИзменитьВладельцаСертификата И ВладелецЭЦПДолжностьИзменилась
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось, ВладелецЭЦПДолжность, ВладелецЭЦПДолжностьИсходная);
Иначе
Возврат ВладелецЭЦПДолжность;
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ВладелецЭЦППодразделение()
Если СравниватьДолжностьИПодразделение() Тогда
Изменилось = ИзменитьВладельцаСертификата И ВладелецЭЦППодразделениеИзменилось
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось, ВладелецЭЦППодразделение, ВладелецЭЦППодразделениеИсходное);
Иначе
Возврат ВладелецЭЦППодразделение;
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ВладелецЭЦПСНИЛС()
Изменилось = ИзменитьВладельцаСертификата И ВладелецЭЦПСНИЛСИзменился
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось, ВладелецЭЦПСНИЛС, ВладелецЭЦПСНИЛСИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ВладелецЭЦПИНН()
Изменилось = ИзменитьВладельцаСертификата И ВладелецЭЦПИННИзменился
ИЛИ ПереиздатьСертификат;
Возврат ?(Изменилось, ВладелецЭЦПИНН, ВладелецЭЦПИННИсходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеГосОрганы_СдаватьВОрган(Орган)
Исходный = ЭтотОбъект["СдаватьВ" + Орган+ "Исходный"];
Изменившийся = ЭтотОбъект["СдаватьВ" + Орган];
Изменился = ЭтотОбъект["СдаватьВ" + Орган+ "Изменился"];
Возврат ?(ИзменитьСоставКонтролирующихОрганов И Изменился, Изменившийся, Исходный);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеГосОрганы_КодыФНС()
Если ИзменитьСоставКонтролирующихОрганов Тогда
Если СдаватьВФНС Тогда
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьКодыФНСПрописью(ПолучателиФНС);
Иначе
Возврат "";
КонецЕсли;
Иначе
Возврат КодыФНСПрописьюИсходные;
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеГосОрганы_КодыРосстата()
КодыРосстатПрописью = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьКодыРосстатПрописью(ПолучателиФСГС);
Если ИзменитьСоставКонтролирующихОрганов Тогда
Если СдаватьВРосстат Тогда
Возврат КодыРосстатПрописью;
Иначе
Возврат "";
КонецЕсли;
Иначе
Возврат КодыРосстатПрописьюИсходные;
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеГосОрганы_КодПФР()
Если ИзменитьСоставКонтролирующихОрганов Тогда
Если СдаватьВПФР Тогда
Возврат КодПФР;
Иначе
Возврат "";
КонецЕсли;
Иначе
Возврат КодПФРИсходный;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область РезультатПроверки
&НаСервере
Функция РезультатПроверки_Шаблон()
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("СодержитОшибку", Ложь);
ДополнительныеПараметры.Вставить("РеквизитРедактируется", Ложь);
ДополнительныеПараметры.Вставить("ТекстОшибки", "");
Возврат ДополнительныеПараметры;
КонецФункции
&НаСервере
Функция РезультатПроверки_ТелефонМобильный()
Результат = РезультатПроверки_Шаблон();
ВключенЛокальныйСертификат = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
Если НЕ ЭтоУчетнаяЗаписьВМоделиСервиса ИЛИ ВключенЛокальныйСертификат Тогда
ТекстОшибки = "";
Если НЕ ОбработкаЗаявленийАбонентаКлиентСервер.МобильныйУказанКорректно(ЭтотОбъект, Истина, ТекстОшибки) Тогда
Результат.ТекстОшибки = ТекстОшибки;
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ТелефонМобильный_ДляПаролей()
Результат = РезультатПроверки_Шаблон();
ВключенЛокальныйСертификат = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
Если ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ВключенЛокальныйСертификат И ИзменитьНастройкиУведомлений Тогда
ПолучатьУведомленияИзменен =
ТелефонМобильныйЗаполнен(ТелефонМобильныйИсходный)
И Не ПолучатьСМСУведомления;
ТелефонДляПаролейЗаполнен = ТелефонМобильныйЗаполнен(ТелефонМобильныйДляПаролей);
ТелефонДляПаролейИзменен =
ПроверкаТелефонДляПаролей.ИсходноеЗначение <> ТелефонМобильныйДляПаролей
И ПроверкаТелефонДляПаролей.ЗначениеВведено;
Если Не ТелефонДляПаролейИзменен
И Не ЭлектроннаяПочтаДляПаролейИзменена()
И НЕ ПолучатьУведомленияИзменен
И НЕ ТелефонМобильныйИзменился()
ИЛИ НЕ ТелефонДляПаролейЗаполнен Тогда
Результат.ТекстОшибки = НСтр("ru = 'Укажите новый номер телефона или новую электронную почту, либо снимите флажок'");
Результат.СодержитОшибку = Истина;
ИначеЕсли ТелефонДляПаролейИзменен И Не ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено Тогда
Результат.ТекстОшибки = НСтр("ru = 'Подтвердите номер мобильного телефона'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ЭлектроннаяПочта_ДляПаролей()
Результат = РезультатПроверки_Шаблон();
ВключенЛокальныйСертификат = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
Если ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ВключенЛокальныйСертификат И ИзменитьНастройкиУведомлений Тогда
Если ЭлектроннаяПочтаДляПаролейИзменена()
И Не ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено
И ЗначениеЗаполнено(ЭлектроннаяПочтаДляПаролей) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Подтвердите адрес электронной почты'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПФИО()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
Если ПустаяСтрока(ВладелецЭЦПФамилия) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните фамилию сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Если ПустаяСтрока(ВладелецЭЦПИмя) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните имя сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПВидДокумента()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Если ПустаяСтрока(ВладелецЭЦПВидДокумента) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните документ, удостоверяющий личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
ИначеЕсли НЕ ЗначениеЗаполнено(КонтекстЭДОСервер.ПолучитьКодВидаДокументаФизическогоЛица(ВладелецЭЦПВидДокумента)) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните код вида документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПСерияДокумента()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ЭтоПаспортРФ = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоПаспортРФ(ВладелецЭЦПВидДокумента);
Если НЕ КонтекстЭДОСервер.ПроверитьСериюДокумента(ВладелецЭЦПВидДокумента, ВладелецЭЦПСерияДокумента, Истина) Тогда
Результат.СодержитОшибку = Истина;
Результат.ТекстОшибки = НСтр("ru = 'Проверьте корректность заполнения серии документа, удостоверяющего личность сотрудника-владельца ЭП'");
ИначеЕсли ПустаяСтрока(ВладелецЭЦПСерияДокумента)
И ЭтоПаспортРФ Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните серию документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПНомерДокумента()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
ЭтоПаспортРФ = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоПаспортРФ(ВладелецЭЦПВидДокумента);
Если ПустаяСтрока(ВладелецЭЦПНомерДокумента) И ЭтоПаспортРФ Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните номер документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Если НЕ ЭтоПаспортРФ И ПустаяСтрока(ВладелецЭЦПСерияДокумента) И ПустаяСтрока(ВладелецЭЦПНомерДокумента) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните серию либо номер документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ПроверятьДанныеВладельца()
Возврат ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПКемВыданДокумент()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
Если ПустаяСтрока(ВладелецЭЦПКемВыданДокумент) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните поле ""Кем выдан"" документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПДатаВыдачиДокумента()
Результат = РезультатПроверки_Шаблон();
Если ПроверятьДанныеВладельца() Тогда
Если НЕ ЗначениеЗаполнено(ВладелецЭЦПДатаВыдачиДокумента) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните дату выдачи документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
ИначеЕсли ВладелецЭЦПДатаВыдачиДокумента > ТекущаяДатаСервер ИЛИ Год(ВладелецЭЦПДатаВыдачиДокумента) < 1900 Тогда
Результат.ТекстОшибки = НСтр("ru = 'Некорректно указана дата выдачи документа, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПКодПодразделения()
Результат = РезультатПроверки_Шаблон();
ЭтоПаспортРФ = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоПаспортРФ(ВладелецЭЦПВидДокумента);
Если ПроверятьДанныеВладельца() И ЭтоПаспортРФ Тогда
КодПодразделенияБезТире = СтрЗаменить(ВладелецЭЦПКодПодразделения, "-","");
Если ПустаяСтрока(КодПодразделенияБезТире) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните код подразделения, выдавшего документ, удостоверяющего личность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
ИначеЕсли СтрДлина(ВладелецЭЦПКодПодразделения) <> 7
ИЛИ НЕ ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(КодПодразделенияБезТире, 6, Истина) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Некорректно указан код подразделения, выдавшего документ, удостоверяющего личность сотрудника-владельца ЭП.
|Не соответствует маске ХХХ-ХХХ, где X – любая цифра'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПМестоРождения()
Результат = РезультатПроверки_Шаблон();
Если НЕ ИспользоватьСуществующий(ЭтотОбъект)
И (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат)
И ПустаяСтрока(ВладелецЭЦПМестоРождения) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните место рождения сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПГражданство()
Результат = РезультатПроверки_Шаблон();
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат) И НЕ ЗначениеЗаполнено(ВладелецЭЦПГражданство) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните гражданство сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
ИначеЕсли (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат)
И НЕ ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.КодАльфа2Заполнен(ВладелецЭЦПГражданство)
И ВладелецЭЦПГражданство <> ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.СтраныМира.Россия") Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните код альфа-2 у страны, указанной в качестве гражданства сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦППол()
Результат = РезультатПроверки_Шаблон();
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат) И НЕ ЗначениеЗаполнено(ВладелецЭЦППол) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните пол сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ВладелецЭЦПДатаРождения()
Результат = РезультатПроверки_Шаблон();
Если (ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат) И НЕ ЗначениеЗаполнено(ВладелецЭЦПДатаРождения) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните дату рождения сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = ИзменитьВладельцаСертификата ИЛИ ПереиздатьСертификат;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_Должность()
Результат = РезультатПроверки_Шаблон();
Если ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата Тогда
Если ЭтоЮридическоеЛицо И ПустаяСтрока(ВладелецЭЦПДолжность) И НЕ ВладелецЭЦПЭтоФизЛицо Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните должность сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Результат.РеквизитРедактируется = ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ЭлектроннаяПочта()
Результат = РезультатПроверки_Шаблон();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СодержитОшибку = НЕ КонтекстЭДОСервер.ЭлектроннаяПочтаВведенаКорректно(
ИтоговыеДанныеВладельца_ЭлектроннаяПочта(),
Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение,
Ложь);
Если СодержитОшибку Тогда
Результат.ТекстОшибки = НСтр("ru = 'Эл. почта содержит ошибки или не заполнена'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = ИзменитьНастройкиУведомлений И ЭлектроннаяПочтаИзменилась();
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ЭлектроннаяПочтаОрганизации()
Результат = РезультатПроверки_Шаблон();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СодержитОшибку = НЕ КонтекстЭДОСервер.ЭлектроннаяПочтаВведенаКорректно(
ИтоговыеДанныеОрганизации_ЭлектроннаяПочтаОрганизации(),
Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение,
Ложь);
Если СодержитОшибку Тогда
Результат.ТекстОшибки = НСтр("ru = 'Эл. почта организации содержит ошибки или не заполнена'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = ИзменитьРеквизитыПодключенияК1СОтчетности И ЭлектроннаяПочтаОрганизацииИзменилась;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ТелефонОсновной()
Результат = РезультатПроверки_Шаблон();
Если ТелефонОсновнойИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности Тогда
Если СтрДлина(СокрЛП(ТелефонОсновной)) = 0 Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните телефон организации'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
Результат.РеквизитРедактируется = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ИНН()
Результат = РезультатПроверки_Шаблон();
Если ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат Тогда
Если ПустаяСтрока(ИНН) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните ИНН'");
Результат.СодержитОшибку = Истина;
Возврат Результат;
КонецЕсли;
Длина = ?(ЭтоЮридическоеЛицо, 10, 12);
Если НЕ ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(ИНН,Длина) Тогда
Результат.ТекстОшибки = СтрШаблон(НСтр("ru = 'ИНН должен состоять из %1 цифр'"), Длина);
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_КПП()
Результат = РезультатПроверки_Шаблон();
Если КППИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности И ЭтоЮридическоеЛицо Тогда
Если ПустаяСтрока(КПП) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните КПП'");
Результат.СодержитОшибку = Истина;
ИначеЕсли НЕ (ДокументооборотСКОКлиентСервер.ПроверитьКПП(КПП)) Тогда
Результат.ТекстОшибки = НСтр("ru = 'КПП должен состоять из 9 цифр'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ОГРН()
Результат = РезультатПроверки_Шаблон();
Если ОГРНИзменился И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат) Тогда
Если ПустаяСтрока(ОГРН) И НЕ ЭтоНотариусАдвокатИлиГКФХ Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните ОГРН'");
Результат.СодержитОшибку = Истина;
Возврат Результат;
КонецЕсли;
Длина = ?(ЭтоЮридическоеЛицо, 13, 15);
Если НЕ ПустаяСтрока(ОГРН) И НЕ (ДокументооборотСКОКлиентСервер.ПроверитьЦифровойКодЗаданнойДлины(ОГРН, Длина)) Тогда
Результат.ТекстОшибки = НСтр("ru = 'ОГРН должен состоять из 13 цифр'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_СНИЛС()
Результат = РезультатПроверки_Шаблон();
Если ВладелецЭЦПСНИЛСИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности
ИЛИ ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата Тогда
Если ПустаяСтрока(СтрЗаменить(ВладелецЭЦПСНИЛС, "-","")) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Заполните СНИЛС сотрудника-владельца ЭП'");
Результат.СодержитОшибку = Истина;
Иначе
Если НЕ ДокументооборотСКОКлиентСервер.ПроверитьСНИЛС(ВладелецЭЦПСНИЛС) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Некорректно указан СНИЛС сотрудника. Не соответствует маске ХХХ-ХХХ-ХХХ ХХ, где X - любая цифра'");
Результат.СодержитОшибку = Истина;
ИначеЕсли НЕ ДокументооборотСКОКлиентСервер.ПроверитьСНИЛС(ВладелецЭЦПСНИЛС, Ложь, Истина) Тогда
Результат.ТекстОшибки = НСтр("ru = 'Некорректно указан СНИЛС сотрудника. Не сошлось контрольное число (СНИЛС не существует)'");
Результат.СодержитОшибку = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Результат.РеквизитРедактируется = ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата;
Возврат Результат;
КонецФункции
&НаСервере
Функция РезультатПроверки_ИННФЛ()
РезультатПроверки = РезультатПроверки_Шаблон();
Если ВладелецЭЦПИННИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности
ИЛИ ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата Тогда
РезультатПроверки = ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьИННВладельцаЭПВТихомРежиме(ЭтотОбъект);
СодержитОшибку = ЗначениеЗаполнено(РезультатПроверки.ТекстОшибки);
РезультатПроверки.Вставить("СодержитОшибку", СодержитОшибку);
КонецЕсли;
РезультатПроверки.Вставить("РеквизитРедактируется", ПереиздатьСертификат ИЛИ ИзменитьВладельцаСертификата);
Возврат РезультатПроверки;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура ТаблицаДанныхЗаявленияНаПодключениеВыбор_ПослеЗаполненияДолжности(Результат, ВходящийКонтекст) Экспорт
ОбработкаОповещения("Запись_ФизическиеЛица", ВладелецЭЦП, ВладелецЭЦП);
КонецПроцедуры
&НаСервере
Функция ИмяПеречисленияПараметрыПодключенияК1СОтчетности(ЭлементПеречисления)
ИмяПеречисления = ЭлементПеречисления.Метаданные().Имя;
ИндексЗначенияПеречисления = Перечисления.ПараметрыПодключенияК1СОтчетности.Индекс(ЭлементПеречисления);
Возврат Метаданные.Перечисления.ПараметрыПодключенияК1СОтчетности.ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;
КонецФункции
&НаСервере
Функция ПредставлениеКриптопровайдера()
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ПредставлениеКриптопровайдера = НСтр("ru = 'В программе (сервис 1С:DSS)'");
ИначеЕсли ЭтоПереходВОблако
ИЛИ ИспользоватьСуществующий(ЭтотОбъект) И ВключаемыйСертификатОблачный
ИЛИ ВыбранноеМестоХраненияКлюча = Перечисления.МодельРаботыСКлючами.ВМоделиСервиса Тогда
ПредставлениеКриптопровайдера = НСтр("ru = 'Встроенный криптопровайдер'");
Иначе
ПредставлениеКриптопровайдера = КриптографияЭДКОКлиентСервер.СвойстваКриптопровайдераПоУмолчанию(
ВыбранноеМестоХраненияКлюча).Представление;
КонецЕсли;
Возврат ПредставлениеКриптопровайдера;
КонецФункции
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_Криптография()
ДобавитьЗаголовокВТаблицу("Общие сведения");
ИспользоватьСуществующий = ИспользоватьСуществующий(ЭтотОбъект);
Если ИспользоватьСуществующий Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ИспользованиеСуществующегоСертификата,
Истина,
Истина);
ИначеЕсли ПереиздатьСертификат Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереизданиеСертификата,
Истина,
Истина);
КонецЕсли;
Если ЭтоПереходВКоробку И НЕ ИспользоватьСуществующий Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереходВКоробку,
Истина,
Истина);
КонецЕсли;
Если ЭтоПереходВОблако И НЕ ИспользоватьСуществующий Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПереходВОблако,
Истина,
Истина);
КонецЕсли;
Если ЭтоПереходВКоробку ИЛИ ЭтоПереходВОблако ИЛИ ТипКриптопровайдераИзменился Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ИзменениеКриптопровайдера,
ПредставлениеКриптопровайдера(),
Истина);
КонецЕсли;
Если (ЭтоПереходВОблако ИЛИ ЭтоУчетнаяЗаписьВМоделиСервиса) И НЕ ИспользоватьСуществующий Тогда
ЭтоДолговременныйТокен = СпособПодтвержденияКриптоопераций = Перечисления.СпособыПодтвержденияКриптоопераций.ДолговременныйТокен;
Изменился = ПроверенДоступДляТокена И ЭтоДолговременныйТокен;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПодтверждениеОперацийСКлючом,
ПредставлениеСпособаПодтвержденияКриптоопераций(СпособПодтвержденияКриптоопераций),
Изменился);
КонецЕсли;
Если НЕ ЭтоОблако(ЭтотОбъект) И НЕ ИспользоватьСуществующий И ВключатьЛицензиюКриптоПроВСертификат И ПереиздатьСертификат И НЕ ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Добавить лицензию КриптоПро CSP в сертификат'"),
ВключатьЛицензиюКриптоПроВСертификат,
Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПредставлениеСпособаПодтвержденияКриптоопераций(Способ)
Если Способ = Перечисления.СпособыПодтвержденияКриптоопераций.ДолговременныйТокен Тогда
ЗаголовокПодтверждения = НСтр("ru = 'Не подтверждать'");
ИначеЕсли Способ = Перечисления.СпособыПодтвержденияКриптоопераций.СессионныйТокен Тогда
ЗаголовокПодтверждения = НСтр("ru = 'Подтверждать'");
Иначе
ЗаголовокПодтверждения = НСтр("ru = 'Не выбран'");
КонецЕсли;
Возврат ЗаголовокПодтверждения;
КонецФункции
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_ДанныеОрганизации()
ДобавитьЗаголовокВТаблицу("Сведения об организации");
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КраткоеНаименование,
ИтоговыеДанныеОрганизации_КраткоеНаименование(),
КраткоеНаименованиеИзменилось И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат),
Организация);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ИНН,
ИНН,
Ложь,
Организация,
РезультатПроверки_ИНН());
Если ЭтоЮридическоеЛицо Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КПП,
ИтоговыеДанныеОрганизации_КПП(),
КППИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности,
Организация,
РезультатПроверки_КПП());
КонецЕсли;
Если НЕ ВладелецЭЦПЭтоФизЛицо Тогда
Если ЭтоУдаленноеПереизданиеСертификата Тогда
ИтоговоеЗначение = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_8(АдресЮридический_JSON);
Иначе
ИтоговоеЗначение = ИтоговыеДанныеОрганизации_Адрес(ОбластьИзменилась, Область, ОбластьИсходная);
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.Область,
ИтоговоеЗначение,
ОбластьИзменилась И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат),
Организация,
РезультатПроверки_Шаблон());
Если ЭтоУдаленноеПереизданиеСертификата Тогда
ИтоговоеЗначение = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_7(АдресЮридический_JSON);
Иначе
ИтоговоеЗначение = ИтоговыеДанныеОрганизации_Адрес(ГородИзменился, Город, ГородИсходный);
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.Город,
ИтоговоеЗначение,
ГородИзменился И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат),
Организация,
РезультатПроверки_Шаблон());
Если ЭтоУдаленноеПереизданиеСертификата Тогда
ИтоговоеЗначение = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_9(АдресЮридический_JSON);
Иначе
ИтоговоеЗначение = ИтоговыеДанныеОрганизации_Адрес(УлицаИзменилась, Улица, УлицаИсходная);
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.Улица,
ИтоговоеЗначение,
УлицаИзменилась И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат),
Организация,
РезультатПроверки_Шаблон());
КонецЕсли;
Если НЕ ЭтоИностраннаяОрганизация Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ОГРН,
ИтоговыеДанныеОрганизации_ОГРН(),
ОГРНИзменился И (ИзменитьРеквизитыПодключенияК1СОтчетности ИЛИ ПереиздатьСертификат),
Организация,
РезультатПроверки_ОГРН());
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонОсновной,
ИтоговыеДанныеОрганизации_ТелефонОсновной(),
ТелефонОсновнойИзменился И ИзменитьРеквизитыПодключенияК1СОтчетности,
Организация,
РезультатПроверки_ТелефонОсновной());
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаОрганизации,
ИтоговыеДанныеОрганизации_ЭлектроннаяПочтаОрганизации(),
ЭлектроннаяПочтаОрганизацииИзменилась И ИзменитьРеквизитыПодключенияК1СОтчетности,
Организация,
РезультатПроверки_ЭлектроннаяПочтаОрганизации());
КонецПроцедуры
&НаСервере
Процедура ДобавитьВТаблицу_ЭлектроннаяПочта()
ИспользоватьСуществующий = ИспользоватьСуществующий(ЭтотОбъект);
ИздатьНовый = ПереиздатьСертификат И НЕ ИспользоватьСуществующий;
ВладелецРеквизита = ИтоговыеДанныеВладельца_ВладелецЭЦП();
Изменилась =
(ИзменитьНастройкиУведомлений ИЛИ ИздатьНовый)
И ЭлектроннаяПочтаИзменилась();
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочта,
ИтоговыеДанныеВладельца_ЭлектроннаяПочта(),
Изменилась,
ВладелецРеквизита,
РезультатПроверки_ЭлектроннаяПочта());
КонецПроцедуры
&НаСервере
Процедура ДобавитьВТаблицу_ТелефонМобильный()
Если ОператорПоддерживаетСМСУведомление Тогда
ВладелецРеквизита = ИтоговыеДанныеВладельца_ВладелецЭЦП();
Изменился = ИзменитьНастройкиУведомлений И ТелефонМобильныйИзменился();
Получать = ИтоговыеДанныеВладельца_ПолучатьСМСУведомления();
Если Получать Тогда
Значение = ИтоговыеДанныеВладельца_ТелефонМобильный() + НСтр("ru = ' (получать уведомления)'");
Иначе
Значение = ИтоговыеДанныеВладельца_ТелефонМобильный() + НСтр("ru = ' (не получать уведомления)'");
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонМобильный,
СокрЛП(Значение),
Изменился,
ВладелецРеквизита,
РезультатПроверки_ТелефонМобильный());
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИтоговыеДанныеВладельца_ТелефонМобильный()
Если ОператорПоддерживаетСМСУведомление Тогда
Изменился = ИзменитьНастройкиУведомлений И ТелефонМобильныйИзменился();
Возврат ?(Изменился, ТелефонМобильный, ТелефонМобильныйИсходный);
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ТелефонМобильный_ДляПаролей()
Изменился = ТелефонМобильныйДляПаролейИзменился();
Возврат ?(Изменился, ТелефонМобильныйДляПаролей, ПроверкаТелефонДляПаролей.ИсходноеЗначение);
КонецФункции
&НаСервере
Функция ИтоговыеДанныеВладельца_ЭлектроннаяПочта_ДляПаролей()
Изменился = ЭлектроннаяПочтаДляПаролейИзменена();
Возврат ?(Изменился, ЭлектроннаяПочтаДляПаролей, ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ТелефонМобильныйЗаполнен(Телефон)
Возврат ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ТелефонМобильныйЗаполнен(Телефон);
КонецФункции
&НаСервере
Функция ЭлектроннаяПочтаДляПаролейИзменена()
Изменилась = КонтактДляОблакаИзменился(ЭлектроннаяПочтаДляПаролей, ПроверкаЭлектроннаяПочтаДляПаролей);
Возврат Изменилась;
КонецФункции
&НаСервере
Функция ТелефонМобильныйДляПаролейИзменился()
Изменился = КонтактДляОблакаИзменился(ТелефонМобильныйДляПаролей, ПроверкаТелефонДляПаролей);
Возврат Изменился;
КонецФункции
&НаСервере
Функция КонтактДляОблакаИзменился(Значение, Проверка)
Изменилась =
Проверка <> Неопределено
И (КонтактВФорматеДляСравнение(Проверка.ИсходноеЗначение) <> КонтактВФорматеДляСравнение(Значение)
И (Проверка.ЗначениеВведено ИЛИ НЕ ЗначениеЗаполнено(Значение))
ИЛИ НЕ ЗначениеЗаполнено(Проверка.ИсходноеЗначение)
ИЛИ НЕ ПодтверждениеКонтактаВыполнено(Проверка));
Возврат Изменилась;
КонецФункции
&НаСервере
Функция ПодтверждениеКонтактаВыполнено(Проверка)
Возврат
ЭтоОблако(ЭтотОбъект)
И (Проверка<> Неопределено
И Проверка.ПодтверждениеВыполнено);
КонецФункции
&НаСервере
Функция КонтактВФорматеДляСравнение(Контакт)
Если СтрНайти(Контакт, "@") Тогда
Возврат Контакт;
Иначе
Возврат ПолучитьПредставлениеТелефона(Контакт);
КонецЕсли;
КонецФункции
&НаСервере
Функция ЭлектроннаяПочтаИзменилась()
Изменилась =
Форматировать(ЭлектроннаяПочта) <> Форматировать(ЭлектроннаяПочтаИсходная)
ИЛИ НЕ ЗначениеЗаполнено(ЭлектроннаяПочта)
ИЛИ НЕ ЗначениеЗаполнено(ЭлектроннаяПочтаИсходная);
Возврат Изменилась;
КонецФункции
&НаСервере
Функция ТелефонМобильныйИзменился()
Изменился = Ложь;
Если ОператорПоддерживаетСМСУведомление Тогда
ТелефонМобильныйБезРазделителей = ТелефонМобильныйБезРазделителей(ТелефонМобильный);
ТелефонМобильныйИсходныйБезРазделителей = ТелефонМобильныйБезРазделителей(ТелефонМобильныйИсходный);
Изменился =
ТелефонМобильныйБезРазделителей <> ТелефонМобильныйИсходныйБезРазделителей
ИЛИ НЕ ЗначениеЗаполнено(ТелефонМобильныйБезРазделителей)
ИЛИ НЕ ЗначениеЗаполнено(ТелефонМобильныйИсходныйБезРазделителей);
КонецЕсли;
Возврат Изменился;
КонецФункции
&НаСервере
Процедура ДобавитьВТаблицу_ТелефонМобильный_ДляПаролей()
ВключаемыйСертификатЛокальный = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
Если НЕ ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ИзменитьНастройкиУведомлений
И (ВключаемыйСертификатЛокальный ИЛИ НЕ ИспользоватьСуществующий(ЭтотОбъект)) Тогда
Возврат;
КонецЕсли;
ВладелецРеквизита = ИтоговыеДанныеВладельца_ВладелецЭЦП();
Изменился = ТелефонМобильныйДляПаролейИзменился();
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ТелефонМобильныйДляПаролей,
?(Изменился, ТелефонМобильныйДляПаролей, ПроверкаТелефонДляПаролей.ИсходноеЗначение),
Изменился,
ВладелецРеквизита,
РезультатПроверки_ТелефонМобильный_ДляПаролей());
КонецПроцедуры
&НаСервере
Процедура ДобавитьВТаблицу_ЭлектроннаяПочта_ДляПаролей()
ВключаемыйСертификатЛокальный = ИспользоватьСуществующий(ЭтотОбъект) И НЕ ВключаемыйСертификатОблачный;
Если НЕ ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ИзменитьНастройкиУведомлений
И (ВключаемыйСертификатЛокальный ИЛИ НЕ ИспользоватьСуществующий(ЭтотОбъект)) Тогда
Возврат;
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаДляПаролей,
ЭлектроннаяПочтаДляПаролей,
ЭлектроннаяПочтаДляПаролейИзменена(),
Организация,
РезультатПроверки_ЭлектроннаяПочта_ДляПаролей());
КонецПроцедуры
&НаСервере
Функция ВладелецЭЦПФИО()
ФИО = Новый Массив;
ФИО.Добавить(СокрЛП(ВладелецЭЦПФамилия));
ФИО.Добавить(СокрЛП(ВладелецЭЦПИмя));
ФИО.Добавить(СокрЛП(ВладелецЭЦПОтчество));
ФИО = СтрСоединить(ФИО, " ");
Возврат ФИО;
КонецФункции
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_Пользователи()
ДобавитьЗаголовокВТаблицу("Сведения о пользователях");
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.МультиРежим,
ЭтоМультиРежим,
ЭтоМультиРежим <> ЭтоМультиРежимИсходный И ИзменитьНастройкиПользователей,
Неопределено);
Изменений = Мультирежим.ИзменившиесяНастройкиПользователей(ЭтотОбъект, ТаблицаПользователей);
Представление = Мультирежим.ПредставлениеИзменившихсяНастроекПользователей(ЭтотОбъект, ТаблицаПользователей, Изменений);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.НастройкиПользователей,
Представление,
Изменений И ИзменитьНастройкиПользователей,
Неопределено,
РезультатПроверки_НастройкиПользователей());
КонецПроцедуры
&НаСервере
Функция РезультатПроверки_НастройкиПользователей()
Результат = РезультатПроверки_Шаблон();
Возврат Результат;
КонецФункции
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_Владелец()
ДобавитьЗаголовокВТаблицу("Сведения о владельце электронной подписи");
БудетПереизданСертификат = ПереиздатьСертификат И НЕ ИспользоватьСуществующий(ЭтотОбъект);
ВладелецРеквизита = ИтоговыеДанныеВладельца_ВладелецЭЦП();
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПФИО,
ВладелецЭЦПФИО(),
ИзменилосьФИО() И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат),
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПФИО());
Если СравниватьДолжностьИПодразделение() ИЛИ ЭтоУдаленноеПереизданиеСертификата Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДолжность,
ИтоговыеДанныеВладельца_ВладелецЭЦПДолжность(),
ВладелецЭЦПДолжностьИзменилась И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат),
ВладелецРеквизита,
РезультатПроверки_Должность());
КонецЕсли;
Если СравниватьДолжностьИПодразделение() Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦППодразделение,
ИтоговыеДанныеВладельца_ВладелецЭЦППодразделение(),
ВладелецЭЦППодразделениеИзменилось И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат),
ВладелецРеквизита,
РезультатПроверки_Шаблон());
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСНИЛС,
ИтоговыеДанныеВладельца_ВладелецЭЦПСНИЛС(),
ВладелецЭЦПСНИЛСИзменился И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат),
ВладелецРеквизита,
РезультатПроверки_СНИЛС());
Если ЭтоЮридическоеЛицо Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПИНН,
ИтоговыеДанныеВладельца_ВладелецЭЦПИНН(),
ВладелецЭЦПИННИзменился И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат),
ВладелецРеквизита,
РезультатПроверки_ИННФЛ());
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДатаРождения,
Формат(ВладелецЭЦПДатаРождения, "ДЛФ=D"),
Ложь,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПДатаРождения());
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦППол,
ВладелецЭЦППол,
Ложь,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦППол());
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПГражданство,
ВладелецЭЦПГражданство,
Ложь,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПГражданство());
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ВладелецЭЦПВидДокументаКод = КонтекстЭДОСервер.ПолучитьКодВидаДокументаФизическогоЛица(ВладелецЭЦПВидДокумента);
Изменился =
Форматировать(ВладелецЭЦПВидДокументаКодИсходный) <> Форматировать(ВладелецЭЦПВидДокументаКод)
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПВидДокумента,
ВладелецЭЦПВидДокумента,
Изменился,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПВидДокумента());
Изменилось =
Форматировать(ВладелецЭЦПСерияДокументаИсходный) <> Форматировать(ВладелецЭЦПСерияДокумента)
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПСерияДокумента,
Строка(ВладелецЭЦПСерияДокумента),
Изменилось,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПСерияДокумента());
Изменилось =
Форматировать(ВладелецЭЦПНомерДокументаИсходный) <> Форматировать(ВладелецЭЦПНомерДокумента)
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПНомерДокумента,
Строка(ВладелецЭЦПНомерДокумента),
Изменилось,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПНомерДокумента());
Изменилось =
Форматировать(ВладелецЭЦПКемВыданДокументИсходный) <> Форматировать(ВладелецЭЦПКемВыданДокумент)
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПКемВыданДокумент,
ВладелецЭЦПКемВыданДокумент,
Изменилось,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПКемВыданДокумент());
Изменилось =
ВладелецЭЦПДатаВыдачиДокументаИсходный <> ВладелецЭЦПДатаВыдачиДокумента
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПДатаВыдачиДокумента,
Формат(ВладелецЭЦПДатаВыдачиДокумента, "ДЛФ=D"),
Изменилось,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПДатаВыдачиДокумента());
Если ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЭтоПаспортРФ(ВладелецЭЦПВидДокумента) Тогда
Изменилось =
Форматировать(ВладелецЭЦПКодПодразделенияИсходный) <> Форматировать(ВладелецЭЦПКодПодразделения)
И (ИзменитьВладельцаСертификата ИЛИ БудетПереизданСертификат);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПКодПодразделения,
ВладелецЭЦПКодПодразделения,
Изменилось,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПКодПодразделения());
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ВладелецЭЦПМестоРождения,
ВладелецЭЦПМестоРождения,
Ложь,
ВладелецРеквизита,
РезультатПроверки_ВладелецЭЦПМестоРождения());
ДобавитьВТаблицу_ТелефонМобильный();
Если ЭтоОблако(ЭтотОбъект) Тогда
ДобавитьВТаблицу_ТелефонМобильный_ДляПаролей();
ДобавитьВТаблицу_ЭлектроннаяПочта_ДляПаролей();
Иначе
ДобавитьВТаблицу_ЭлектроннаяПочта();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_ГосОрганы()
ДобавитьЗаголовокВТаблицу("Сведения о контролирующих органах");
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФНС,
ИтоговыеДанныеГосОрганы_СдаватьВОрган("ФНС"),
СдаватьВФНСИзменился И ИзменитьСоставКонтролирующихОрганов);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодыФНС,
ИтоговыеДанныеГосОрганы_КодыФНС(),
СдаватьВФНС И КодыФНСИзменились И ИзменитьСоставКонтролирующихОрганов);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВПФР,
ИтоговыеДанныеГосОрганы_СдаватьВОрган("ПФР"),
(СдаватьВПФРИзменился ИЛИ СдаватьВФССИзменился) И ИзменитьСоставКонтролирующихОрганов);
СдаватьВСФР = СдаватьВПФР ИЛИ СдаватьВФСС;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодПФР,
ИтоговыеДанныеГосОрганы_КодПФР(),
СдаватьВСФР И КодПФРИзменился И ИзменитьСоставКонтролирующихОрганов);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерПФР,
ИтоговыеДанныеОрганизации_РегНомерПФР(),
СдаватьВСФР И РегНомерПФРИзменился И ИзменитьСоставКонтролирующихОрганов,
Организация);
Если ИспользоватьРегНомерСФР Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.РегНомерСФР,
ИтоговыеДанныеОрганизации_РегНомерСФР(),
СдаватьВСФР И РегНомерСФРИзменился И ИзменитьСоставКонтролирующихОрганов,
Организация);
КонецЕсли;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРосстат,
ИтоговыеДанныеГосОрганы_СдаватьВОрган("Росстат"),
СдаватьВРосстатИзменился И ИзменитьСоставКонтролирующихОрганов);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодРосстата,
ИтоговыеДанныеГосОрганы_КодыРосстата(),
СдаватьВРосстат И КодыРосстатаИзменились И ИзменитьСоставКонтролирующихОрганов);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФСРАР,
ПодатьЗаявкуНаСертификатДляФСРАР,
ИзменитьСоставКонтролирующихОрганов И ПодатьЗаявкуНаСертификатДляФСРАРИзменился);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.КодРегионаФСРАР,
ИтоговыеДанныеОрганизации_КодРегионаФСРАР(),
ПодатьЗаявкуНаСертификатДляФСРАР И КодРегионаФСРАРИзменился И ИзменитьСоставКонтролирующихОрганов,
Организация);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВРПН,
ПодатьЗаявкуНаПодключениеРПН,
ИзменитьСоставКонтролирующихОрганов И ПодатьЗаявкуНаПодключениеРПНИзменился);
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВФТС,
ПодатьЗаявкуНаПодключениеФТС,
ИзменитьСоставКонтролирующихОрганов И ПодатьЗаявкуНаПодключениеФТСИзменился);
Если ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() Тогда
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.СдаватьВЦБ,
СдаватьВЦБ,
ИзменитьСоставКонтролирующихОрганов И СдаватьВЦБИзменился);
КонецЕсли;
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоМультиРежим и ЭтоЛичныеНастройки И ЗначениеЗаполнено(ВладелецЭЦП) Тогда
Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, ВладелецЭЦП);
Если Строка <> Неопределено Тогда
ИзменилсяШифровальщик = Строка.ЭтоШифровальщикИсходный <> Строка.ЭтоШифровальщик;
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.Шифровальщик,
Строка.ЭтоШифровальщик,
ИзменилсяШифровальщик);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_ЭДО()
Если ПоказатьЭлементыПодключенияЭДО(ЭтотОбъект) И ПодключитьЭДО Тогда
ДобавитьЗаголовокВТаблицу("Подключение к сервису 1С-ЭДО");
ДобавитьВТаблицуПроверки("Подключиться к сервису 1С-ЭДО", Истина, Истина);
КонецЕсли;
Если ПоказатьЭлементыПереизданияЭДО(ЭтотОбъект) И ПереиздатьСертификатЭДО Тогда
ДобавитьЗаголовокВТаблицу("Обновление сертификата 1С-ЭДО");
ДобавитьВТаблицуПроверки("Обновить сертификат 1С-ЭДО", Истина, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_Лицензия()
Текст = ?(ПродлитьЛицензиюНа1СОтчетность, "Да (может потребоваться дополнительная оплата)", "Нет");
ДобавитьВТаблицуПроверки(
Перечисления.ПараметрыПодключенияК1СОтчетности.ПродлениеЛицензии,
Текст,
ПродлитьЛицензиюНа1СОтчетность);
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных() Экспорт
ПорядковыйНомерСтроки = 0;
ТаблицаДанныхЗаявленияНаПодключение.Очистить();
СформироватьТаблицуДляПодтвержденияДанных_Криптография();
СформироватьТаблицуДляПодтвержденияДанных_Лицензия();
СформироватьТаблицуДляПодтвержденияДанных_Пользователи();
СформироватьТаблицуДляПодтвержденияДанных_ДанныеОрганизации();
СформироватьТаблицуДляПодтвержденияДанных_Владелец();
СформироватьТаблицуДляПодтвержденияДанных_ГосОрганы();
СформироватьТаблицуДляПодтвержденияДанных_ЭДО();
СформироватьТаблицуДляПодтвержденияДанных_ОблачнаяПодпись();
ДобавитьЖелтыеСтроки();
ОтметитьНеХранящиесяРеквизиты();
КонецПроцедуры
&НаСервере
Процедура ОтметитьНеХранящиесяРеквизиты()
Для Каждого СтрокаТаблицы Из ТаблицаДанныхЗаявленияНаПодключение Цикл
Если ЭтоРеквизитНеХранящийсяВБазе(СтрокаТаблицы.ИзмененныйРеквизит) Тогда
СтрокаТаблицы.ЭтоРеквизитНеХранящийсяВБазе = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ДобавитьЖелтыеСтроки()
КоличествоСтрок = ТаблицаДанныхЗаявленияНаПодключение.Количество();
Отбор = Новый Структура();
Отбор.Вставить("ЭтотПараметрИзменился", Истина);
КоличествоИзмененныхСтрок = ТаблицаДанныхЗаявленияНаПодключение.НайтиСтроки(Отбор).Количество();
СтрокаТаблицыПодтверждения = ДобавитьЗаголовокВТаблицу("Изменяемые настройки подключения");
ПорядковыйНомерСтроки = 0;
СтрокаТаблицыПодтверждения.ПорядковыйНомерСтроки = 0;
Для сч = 0 По КоличествоСтрок - 1 Цикл
СтрокаТаблицаДанных = ТаблицаДанныхЗаявленияНаПодключение[сч];
Если СтрокаТаблицаДанных.ЭтотПараметрИзменился Тогда
РезультатПроверки = РезультатПроверки_Шаблон();
ЗаполнитьЗначенияСвойств(РезультатПроверки, СтрокаТаблицаДанных);
ДобавитьВТаблицуПроверки(
СтрокаТаблицаДанных.ИзмененныйРеквизит,
СтрокаТаблицаДанных.ЗначениеРеквизита,
СтрокаТаблицаДанных.ЭтотПараметрИзменился,
СтрокаТаблицаДанных.ВладелецРеквизита,
РезультатПроверки);
СтрокаТаблицаДанных.ВыделятьСтрокуЖелтым = Ложь;
КонецЕсли;
СтрокаТаблицаДанных.ПорядковыйНомерСтроки = СтрокаТаблицаДанных.ПорядковыйНомерСтроки + КоличествоИзмененныхСтрок + 1;
КонецЦикла;
СтрокаТаблицыПодтверждения = ДобавитьЗаголовокВТаблицу("", Ложь);
ПорядковыйНомерСтроки = ПорядковыйНомерСтроки - 1;
СтрокаТаблицыПодтверждения.ПорядковыйНомерСтроки = КоличествоИзмененныхСтрок + 1;
ТаблицаДанныхЗаявленияНаПодключение.Сортировать("ПорядковыйНомерСтроки");
КонецПроцедуры
&НаСервере
Функция ДобавитьЗаголовокВТаблицу(НазваниеРеквизита, ВыделятьСтрокуЖирным = Истина)
ПорядковыйНомерСтроки = ПорядковыйНомерСтроки + 1;
НоваяСтрока = ТаблицаДанныхЗаявленияНаПодключение.Добавить();
НоваяСтрока.НазваниеРеквизита = НазваниеРеквизита;
НоваяСтрока.ВыделятьСтрокуЖирным = ВыделятьСтрокуЖирным;
НоваяСтрока.ПорядковыйНомерСтроки = ПорядковыйНомерСтроки;
Возврат НоваяСтрока;
КонецФункции
&НаСервере
Процедура ДобавитьВТаблицуПроверки(
ИзмененныйРеквизит,
ЗначениеРеквизита = "",
ЭтотПараметрИзменился = Ложь,
ВладелецРеквизита = Неопределено,
РезультатПроверки = Неопределено)
ПорядковыйНомерСтроки = ПорядковыйНомерСтроки + 1;
НоваяСтрока = ТаблицаДанныхЗаявленияНаПодключение.Добавить();
НоваяСтрока.ИзмененныйРеквизит = ИзмененныйРеквизит;
НоваяСтрока.НазваниеРеквизита = Строка(ИзмененныйРеквизит);
НоваяСтрока.ЗначениеРеквизита = ЗначениеРеквизита;
НоваяСтрока.ЭтотПараметрИзменился = ЭтотПараметрИзменился;
НоваяСтрока.ВыделятьСтрокуЖелтым = ЭтотПараметрИзменился;
НоваяСтрока.ПорядковыйНомерСтроки = ПорядковыйНомерСтроки;
Если ВладелецРеквизита <> Неопределено Тогда
НоваяСтрока.ВладелецРеквизита = ВладелецРеквизита;
КонецЕсли;
Если РезультатПроверки <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(НоваяСтрока, РезультатПроверки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьНовоеЗначениеРеквизиту(ИмяРеквизита, НаименованиеРеквизита, ИзменяемыйРеквизит, МаскаРеквизита = Неопределено)
ОткрытьФормуРедактированияРеквизита(ИмяРеквизита, НаименованиеРеквизита, ИзменяемыйРеквизит, МаскаРеквизита);
КонецПроцедуры
&НаСервере
Функция ОписаниеТиповРеквизитаФормы(НаименованиеРеквизита)
ВсеРеквизитыФормы = ПолучитьРеквизиты();
Для каждого РеквизитФормы Из ВсеРеквизитыФормы Цикл
Если НРег(РеквизитФормы.Имя) = НРег(НаименованиеРеквизита) Тогда
Возврат РеквизитФормы.ТипЗначения;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура ОткрытьФормуРедактированияРеквизита(ИмяРеквизита, НаименованиеРеквизита, ИзменяемыйРеквизит, МаскаРеквизита = Неопределено)
ОписаниеТипаРеквизита = ОписаниеТиповРеквизитаФормы(ИмяРеквизита);
ДополнительныеПараметры = Новый Структура("ИмяРеквизита", ИмяРеквизита);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОткрытьФормуРедактированияРеквизитаЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ПараметрыОткрытияФормы = Новый Структура();
ПараметрыОткрытияФормы.Вставить("ИмяРеквизита", ИмяРеквизита);
ПараметрыОткрытияФормы.Вставить("НаименованиеРеквизита", НаименованиеРеквизита + ":");
ПараметрыОткрытияФормы.Вставить("ЗначениеРеквизита", ИзменяемыйРеквизит);
ПараметрыОткрытияФормы.Вставить("МаскаРеквизита", МаскаРеквизита);
ПараметрыОткрытияФормы.Вставить("ОписаниеТипаРеквизита", ОписаниеТипаРеквизита);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ФормаРедактированияРеквизита",
ПараметрыОткрытияФормы,
,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуРедактированияРеквизитаЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяРеквизита = ДополнительныеПараметры.ИмяРеквизита;
Если Результат <> Неопределено Тогда
ЭтаФорма[ИмяРеквизита] = Результат;
СравнитьРеквизитыОрганизацииСИсходными();
СформироватьТаблицуДляПодтвержденияДанных();
УправлениеФормой();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуДляПодтвержденияДанных_ОблачнаяПодпись()
Если НЕ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) ИЛИ НЕ ИзменитьМестоХранения Тогда
Возврат;
КонецЕсли;
ДобавитьЗаголовокВТаблицу("Настройки ЭП в программе");
Если СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложения ИЛИ СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Получить новый ключ в мобильном приложении'"),
Истина,
Истина);
КонецЕсли;
Если СвойствоОблачнойПодписи.ОтправкаКодаАктивации Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Получить код активации'"),
Истина,
Истина);
КонецЕсли;
Если СвойствоОблачнойПодписи.ОтправкаКлючаМобильногоПриложения Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Получить QR-код и код активации'"),
Истина,
Истина);
КонецЕсли;
Если СвойствоОблачнойПодписи.СменитьПароль Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Получить новый пароль от учетной записи 1С:DSS'"),
Истина,
Истина);
КонецЕсли;
Если ЗначениеЗаполнено(СвойствоОблачнойПодписи.Телефон) Тогда
ТелефонДляКодов = ПолучитьПредставлениеТелефона(СвойствоОблачнойПодписи.Телефон);
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Изменить контакты для получения кодов'"),
ТелефонДляКодов,
Истина);
КонецЕсли;
Если СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Новый логин учетной записи 1С:DSS'"),
СвойствоОблачнойПодписи.НовыйЛогин,
Истина);
КонецЕсли;
Изменилось = Ложь;
Если НЕ СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
Изменилось = СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись <> СвойствоОблачнойПодписи.УчетнаяЗапись;
КонецЕсли;
Если Изменилось Тогда
ДобавитьВТаблицуПроверки(
НСтр("ru = 'Смена учетной записи 1C:DSS'"),
СвойствоОблачнойПодписи.УчетнаяЗапись,
Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИзменитьОформлениеЭлементов
&НаСервере
Процедура ИзменитьОформлениеДобавляемыхФлагов()
ОбработкаЗаявленийАбонента.ИзменитьОформлениеДобавляемыхФлагов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеЗаголовкаФормы()
ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ДобавитьОрганизациюВЗаголовок(
ЭтотОбъект.Заголовок,
ИспользуетсяОднаОрганизация,
КраткоеНаименование,
НСтр("ru = 'Изменение настроек подключения к 1С-Отчетности'"));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформление1СЭДО(Форма)
ИзменитьОформление1СЭДО_Подключение(Форма);
ИзменитьОформление1СЭДО_Переиздание(Форма);
ИзменитьОформление1СЭДО_ПодсказкиНедоступногоЭДО(Форма);
ИзменитьОформление1СЭДО_Заголовок(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформление1СЭДО_Заголовок(Форма)
Элементы = Форма.Элементы;
Элементы.ГруппаЭДО.Видимость =
Элементы.ГруппаПодключитьЭДО.Видимость
ИЛИ Элементы.ФлагПереиздатьСертификатЭДО.Видимость
ИЛИ Элементы.ПодсказкаНедоступного1СЭДО.Видимость;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформление1СЭДО_Переиздание(Форма)
Элементы = Форма.Элементы;
ПоказатьЭлементыПереиздания = ПоказатьЭлементыПереизданияЭДО(Форма);
Элементы.ФлагПереиздатьСертификатЭДО.Доступность = Форма.ЕстьПравоНастройкиЭДО;
Элементы.ФлагПереиздатьСертификатЭДО.Видимость = ПоказатьЭлементыПереиздания;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформление1СЭДО_Подключение(Форма)
Элементы = Форма.Элементы;
ПоказатьЭлементыПодключения = ПоказатьЭлементыПодключенияЭДО(Форма);
Элементы.ФлагПодключитьЭДО.Доступность = Форма.ЕстьПравоНастройкиЭДО;
Элементы.ГруппаПодключитьЭДО.Видимость = ПоказатьЭлементыПодключения;
ИзменитьОформлениеНастроекПодключения1СЭДО(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформление1СЭДО_ПодсказкиНедоступногоЭДО(Форма)
Элементы = Форма.Элементы;
ПоказатьЭлементыПодключения = ПоказатьЭлементыПодключенияЭДО(Форма);
ПоказатьЭлементыПереиздания = ПоказатьЭлементыПереизданияЭДО(Форма);
Видимость =
НЕ Форма.ЕстьПравоНастройкиЭДО
И (ПоказатьЭлементыПодключения ИЛИ ПоказатьЭлементыПереиздания);
Элементы.ПодсказкаНедоступного1СЭДО.Видимость = Видимость;
Если Видимость Тогда
Если Форма.ЭтоПодключениеЭДО Тогда
Элементы.ПодсказкаНедоступного1СЭДО.Заголовок = НСтр("ru = 'У пользователя недостаточно прав для подключения к 1С-ЭДО'");
Иначе
Элементы.ПодсказкаНедоступного1СЭДО.Заголовок = НСтр("ru = 'У пользователя недостаточно прав для обновления сертификата 1С-ЭДО'");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеНастроекПодключения1СЭДО(Форма)
Элементы = Форма.Элементы;
ПоказатьЭлементыПодключения = ПоказатьЭлементыПодключенияЭДО(Форма);
Элементы.ОткрытьПараметрыПодключения.Видимость = ПоказатьЭлементыПодключения И Форма.ЕстьПравоНастройкиЭДО;
Если Форма.ЭтоПодключениеЭДО Тогда
Элементы.ОткрытьПараметрыПодключения.Доступность = Истина;
Если Форма.ПодключитьЭДО Тогда
НастройкиКорректны = Неопределено;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПроверитьНастройкиРегистрацииЭДО(Форма.НастройкиДляЭДО, НастройкиКорректны);
Если НастройкиКорректны = Ложь Тогда
Элементы.ОткрытьПараметрыПодключения.Заголовок = НСтр("ru = 'Уточнить настройки'");
Элементы.ОткрытьПараметрыПодключения.ЦветТекста = Форма.КрасныйЦвет;
Иначе
Элементы.ОткрытьПараметрыПодключения.Заголовок = НСтр("ru = 'Настройки'");
Элементы.ОткрытьПараметрыПодключения.ЦветТекста = Форма.СинийЦвет;
КонецЕсли;
Иначе
Элементы.ОткрытьПараметрыПодключения.Заголовок = НСтр("ru = 'Настройки'");
Элементы.ОткрытьПараметрыПодключения.ЦветТекста = Форма.СерыйЦвет;
Элементы.ОткрытьПараметрыПодключения.Доступность = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СкрытьГрупповоеДобавлениеДокументов(Форма)
Сч = 0;
ВидыДокументов = ОбработкаЗаявленийАбонентаКлиентСервер.ВидыДокументовПоФорме(Форма);
Для каждого ТекущийВидДокумента Из ВидыДокументов Цикл
Описание = ТекущийВидДокумента.Значение;
Если Описание.Видимость Тогда
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;
Элементы = Форма.Элементы;
ЕстьНесколькоДокументов = Сч > 1;
Элементы.ВыбратьВсе.Видимость = ЕстьНесколькоДокументов;
Элементы.ПодсказкаКСканКопиям.Видимость = ЕстьНесколькоДокументов;
КонецПроцедуры
&НаСервере
Функция ПредставлениеМестаХраненияКлючей()
Если ВыбранноеМестоХраненияКлюча = Перечисления.МодельРаботыСКлючами.ВМоделиСервиса
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
ЭтоДолговременныйТокен = СпособПодтвержденияКриптоопераций = Перечисления.СпособыПодтвержденияКриптоопераций.ДолговременныйТокен;
Если ЭтоДолговременныйТокен Тогда
Представление = НСтр("ru = 'В программе (операции не подтверждать)'");
Иначе
Представление = НСтр("ru = 'В программе'");
КонецЕсли;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
РазделительСсылок = Символы.ПС;
ОшибкаНастроек = Ложь;
ОшибкаЛогина = Ложь;
Представление = НСтр("ru = '<a %1 href = ""ВыборМестаХранения"">В программе (сервис 1С:DSS)</a>'");
Если ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) И СвойствоОблачнойПодписи.ПоставляемыйСервер
И СвойствоОблачнойПодписи.УчетнаяЗапись <> СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись Тогда
Представление = Представление + ": " + СокрЛП(СвойствоОблачнойПодписи.УчетнаяЗапись);
ИначеЕсли ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) И СвойствоОблачнойПодписи.ПоставляемыйСервер Тогда
Представление = Представление + ": " + СокрЛП(СвойствоОблачнойПодписи.УчетнаяЗапись)
+ РазделительСсылок + НСтр("ru = '<a href = ""НастройкиОблачнойПодписи"">Изменить настройки</a>'");
ИначеЕсли ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
Представление = Представление + ": " + СокрЛП(СвойствоОблачнойПодписи.УчетнаяЗапись);
ИначеЕсли ЗначениеЗаполнено(СвойствоОблачнойПодписи.НовыйЛогин) Тогда
Представление = Представление + ": новая учетная запись " + СвойствоОблачнойПодписи.НовыйЛогин
+ РазделительСсылок + НСтр("ru = '<a %2 href = ""НастройкиОблачнойПодписи"">Указать контакты</a>'");
ОшибкаНастроек = НЕ (ЗначениеЗаполнено(СвойствоОблачнойПодписи.Телефон) ИЛИ (ЗначениеЗаполнено(ТелефонМобильный) И ИзменитьНастройкиУведомлений));
ОшибкаЛогина = НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.ИдентификаторСервера);
ИначеЕсли НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
Представление = Представление + ": требует настройки";
ОшибкаЛогина = Истина;
КонецЕсли;
СтильОшибки = "style=""color: ЦветОшибкиПроверкиБРО""";
Если ОшибкаЛогина Тогда
Представление = СтрЗаменить(Представление, "%1", СтильОшибки);
Иначе
Представление = СтрЗаменить(Представление, "%1", "");
КонецЕсли;
Если ОшибкаНастроек Тогда
Представление = СтрЗаменить(Представление, "%2", СтильОшибки);
Иначе
Представление = СтрЗаменить(Представление, "%2", "");
КонецЕсли;
Представление = СтроковыеФункции.ФорматированнаяСтрока(Представление);
Иначе
Представление = Строка(ВыбранноеМестоХраненияКлюча);
КонецЕсли;
Если ВыбранноеМестоХраненияКлюча = Перечисления.ТипыКриптоПровайдеров.CryptoPro
И ВключатьЛицензиюКриптоПроВСертификат Тогда
Представление = Представление + НСтр("ru = ' (добавить лицензию в сертификат)'");
КонецЕсли;
Возврат Представление;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеМестаХраненияКлючей()
ИзменитьОформлениеМестаХраненияКлючей_Настройки();
ИзменитьОформлениеМестаХраненияКлючей_Картинка();
ИзменитьОформлениеМестаХраненияКлючей_Флаг();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеМестаХраненияКлючей_Картинка()
Элементы.ПодсказкаВыбораМестаХранения.Видимость = ИзмененныеНастройкиХраненияКлюча().Количество() > 0;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеМестаХраненияКлючей_Флаг()
Элементы.ИзменитьМестоХранения.Доступность = ДоступностьМестаХраненияКлючей();
КонецПроцедуры
&НаСервере
Функция ДоступностьМестаХраненияКлючей()
ДоступностьМестаХранения =
НЕ ИспользоватьСуществующий(ЭтотОбъект)
И НЕ СертификатДолженБытьПолученОтГосУЦ;
Возврат ДоступностьМестаХранения;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеМестаХраненияКлючей_Настройки()
Надпись = Элементы.ПоказатьФормуВыбораМестаХранения;
ПоказатьПодсказку = Ложь;
Если ЗначениеЗаполнено(ВыбранноеМестоХраненияКлюча) Тогда
Надпись.ЦветТекста = Новый Цвет;
Надпись.Заголовок = ПредставлениеМестаХраненияКлючей();
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
Надпись.Гиперссылка = Ложь;
ПоказатьПодсказку = Истина;
Иначе
Надпись.Гиперссылка = Истина;
КонецЕсли;
Иначе
Надпись.Заголовок = НСтр("ru = 'Заполнить'");
Надпись.ЦветТекста = КрасныйЦвет;
Надпись.Гиперссылка = Истина;
КонецЕсли;
Если ПоказатьПодсказку Тогда
Надпись.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Иначе
Надпись.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Надпись.Доступность = ДоступностьМестаХраненияКлючей() И ИзменитьМестоХранения;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаСертификата()
ИзменитьОформлениеВладельцаСертификата_Группа();
ИзменитьОформлениеВладельцаСертификата_Настройки();
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеВладельцаЭП(ЭтотОбъект);
ИзменитьОформлениеВладельцаСертификата_ДоступностьПриВключении();
ИзменитьОформлениеВладельцаСертификата_Картинка();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаСертификата_ДоступностьПриВключении()
Элементы.ГруппаВладелец.Доступность = ИзменитьВладельцаСертификата;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаСертификата_Картинка()
ИзмененныеРеквизиты = ИзмененныеРеквизитыВладельца();
Элементы.ПодсказкаИзменитьВладельца.Видимость =
ИзмененныеРеквизиты.Количество() > 0
И ЗначениеЗаполнено(ВладелецЭЦП);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаСертификата_Настройки()
ИзменитьОформлениеГиперссылки("ДекорацияВладелецЭЦП", Строка(ВладелецЭЦП), Истина, Истина);
Элементы.ОчиститьВладельца.Видимость =
ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоДругойСотрудник(ЭтотОбъект)
И ЗначениеЗаполнено(ВладелецЭЦП)
И НЕ ЗапретитьИзменение;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеВладельцаСертификата_Группа()
Элементы.ГруппаИзменитьВладельцаСертификата.Доступность = НЕ ИзменилисьНастрокиDSS();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПодсказкиДляГалкиПродлитьЛицензиюНа1СОтчетность()
Надпись = Элементы.ПодсказкаПоПродлениюЛицензии;
Надпись.ЦветТекста = Новый Цвет;
ТекстЗаголовка = "";
Если ПродлитьЛицензиюНа1СОтчетностьИсходный Тогда
КоличествоОставшегосяВремени = ОбработкаЗаявленийАбонентаКлиентСервер.ТекстЧерезСколькоЛетМесяцевНедельДней(ТекущаяДатаСервер, ЛицензияДатаОкончания, "", "");
Надпись.ЦветТекста = КрасныйЦвет;
Если КоличествоОставшегосяВремени = Неопределено Тогда
ТекстЗаголовка = НСтр("ru = 'Истекла %1'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%1", Формат(ЛицензияДатаОкончания,"ДЛФ=DD"));
Иначе
ТекстЗаголовка = НСтр("ru = 'Истекает через %1'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%1", КоличествоОставшегосяВремени);
КонецЕсли;
Иначе
ТекстЗаголовка = НСтр("ru = 'Действует до %1'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%1", Формат(ЛицензияДатаОкончания,"ДЛФ=DD"));
КонецЕсли;
Надпись.Заголовок = ТекстЗаголовка;
Надпись.Доступность = ПродлитьЛицензиюНа1СОтчетность;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРеквизитовОрганизации()
ИзмененныеРеквизиты = ИзмененныеРеквизитыОрганизации();
Элементы.ГруппаИзменитьРеквизитыПодключенияК1СОтчетности.Доступность = НЕ ИзменилисьНастрокиDSS();
ИзменитьОформлениеРеквизитовОрганизации_Настройки(ИзмененныеРеквизиты);
ИзменитьОформлениеРеквизитовОрганизации_Картинка(ИзмененныеРеквизиты);
ИзменитьОформлениеРеквизитовОрганизации_Интервал();
ИзменитьОформлениеДобавляемыхФлагов();
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеБюджетополучателя(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРеквизитовОрганизации_Интервал()
Если ЭтоЮридическоеЛицо Тогда
Элементы.ГруппаОрганизация.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет;
Иначе
Элементы.ГруппаОрганизация.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Половинный;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРеквизитовОрганизации_Картинка(ИзмененныеРеквизиты)
Элементы.КартинкаРеквизитыОрганизации.Видимость = ИзмененныеРеквизиты.Количество() > 0;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеРеквизитовОрганизации_Настройки(ИзмененныеРеквизиты)
ИзменитьОформлениеИзменившихсяРеквизитов(
Элементы.ПодсказкаИзменитьРеквизитыПодключенияК1СОтчетности,
ИзмененныеРеквизиты,
ИзменитьРеквизитыПодключенияК1СОтчетности);
КонецПроцедуры
&НаСервере
Процедура ПолучитьПодчиненныеЭлементыРекурсивно(Родительский, Подчиненные)
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Родительский, "ПодчиненныеЭлементы") Тогда
Для каждого ПодчиненныеРодительского Из Родительский.ПодчиненныеЭлементы Цикл
Подчиненные.Добавить(ПодчиненныеРодительского);
ПолучитьПодчиненныеЭлементыРекурсивно(ПодчиненныеРодительского, Подчиненные)
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеИзменившихсяРеквизитов(Надпись, ИзмененныеРеквизиты, ДоступностьРеквизита)
Если ИзмененныеРеквизиты.Количество() = 1 Тогда
Надпись.Заголовок = НСтр("ru = 'Изменился реквизит - '") + ИзмененныеРеквизиты[0].Представление;
ИначеЕсли ИзмененныеРеквизиты.Количество() = 1 Тогда
Надпись.Заголовок =
НСтр("ru = 'Изменились '")
+ ИзмененныеРеквизиты[0].Представление
+ НСтр("ru = ' и '")
+ ИзмененныеРеквизиты[1].Представление;
ИначеЕсли ИзмененныеРеквизиты.Количество() >= 2 Тогда
Представление = ДлительнаяОтправкаКлиентСервер.ЧислоИПредметИсчисления(
ИзмененныеРеквизиты.Количество(),
НСтр("ru = 'реквизит'"),
НСтр("ru = 'реквизита'"),
НСтр("ru = 'реквизитов'"),
"м");
Если СтрНайти(Представление, НСтр("ru = 'реквизитов'")) > 0
ИЛИ СтрНайти(Представление, НСтр("ru = 'реквизита'")) > 0 Тогда
Представление = НСтр("ru = 'Изменилось '") + Представление;
Иначе
Представление = НСтр("ru = 'Изменился '") + Представление;
КонецЕсли;
Надпись.Заголовок = Представление;
Иначе
Надпись.Заголовок = НСтр("ru = 'Реквизиты не менялись'");
КонецЕсли;
Надпись.Доступность = ДоступностьРеквизита;
Надпись.Гиперссылка = Ложь;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОблако(Форма) Экспорт
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоОблако(Форма);
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеУведомлений()
ИзменитьОформлениеУведомлений_Группа();
ИзменитьОформлениеУведомлений_Настройки();
ИзменитьОформлениеУведомлений_Картинка();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеУведомлений_Настройки()
Элементы.НастройкиУведомлений.Заголовок = ПредставлениеУведомлений();
Если НЕ УведомленияЗаполнены() ИЛИ НЕ ПодтверждениеКонтактовВыполнено() Тогда
Элементы.НастройкиУведомлений.ЦветТекста = КрасныйЦвет;
Иначе
Элементы.НастройкиУведомлений.ЦветТекста = СинийЦвет;
КонецЕсли;
Элементы.НастройкиУведомлений.Доступность = ИзменитьНастройкиУведомлений;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеУведомлений_Группа()
УведомляенияМожноНастраивать =
ОператорПоддерживаетСМСУведомление
ИЛИ ЭтоОблако(ЭтотОбъект) И НЕ ИспользоватьСуществующий(ЭтотОбъект)
ИЛИ ЭтоОблачнаяПодпись(ЭтотОбъект) И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Элементы.ГруппаИзмененитьКонтакты.Доступность = УведомляенияМожноНастраивать;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеУведомлений_Картинка()
Элементы.ПодсказкаИзменитьНастройкиУведомлений.Видимость = ИзмененныеРеквизитыУведомлений().Количество() > 0;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьПредставлениеТелефона(Телефон)
Возврат ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Телефон);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ФорматироватьТелефон(Телефон)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЦифрыИзСтроки(Телефон, Истина);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЦифрыИзСтроки(Телефон)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЦифрыИзСтроки(Телефон, Ложь);
КонецФункции
&НаСервере
Функция ПризнакПодключеныЛиУведомления()
Если ПолучатьСМСУведомления И ЗначениеЗаполнено(ТелефонМобильный) Тогда
Если ПолучатьСМСУведомления Тогда
ПризнакПодключеныЛиУведомления = НСтр("ru = ' (SMS подключены)'");
Иначе
ПризнакПодключеныЛиУведомления = НСтр("ru = ' (SMS не подключены)'");
КонецЕсли;
Иначе
ПризнакПодключеныЛиУведомления = "";
КонецЕсли;
Возврат ПризнакПодключеныЛиУведомления;
КонецФункции
&НаСервере
Функция ПредставлениеУведомлений()
Если НЕ УведомленияЗаполнены() Тогда
Представление = НСтр("ru = 'Заполнить'");
ИначеЕсли ЭтоОблако(ЭтотОбъект) Тогда
Представление = ПредставлениеУведомленийВОблаке();
Иначе
Представление = ПредставлениеУведомленийВКоробке();
КонецЕсли;
Представление = СокрЛП(Представление);
Возврат Представление;
КонецФункции
&НаСервере
Функция ПредставлениеУведомленийВКоробке()
Телефон = ИтоговыеДанныеВладельца_ТелефонМобильный();
Телефон = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Телефон);
Почта = ИтоговыеДанныеВладельца_ЭлектроннаяПочта();
Если ЗначениеЗаполнено(Телефон) Тогда
Представление =
ТелефонСПризнакомУведомлений(Телефон)
+ ", "
+ Почта;
Иначе
Представление = Почта;
КонецЕсли;
Представление = СокрЛП(Представление);
Возврат Представление;
КонецФункции
&НаСервере
Функция ТелефонСПризнакомУведомлений(Телефон)
Возврат Телефон + ПризнакПодключеныЛиУведомления();
КонецФункции
&НаСервере
Функция ПредставлениеУведомленийВОблаке()
Получать = ИтоговыеДанныеВладельца_ПолучатьСМСУведомления();
Телефон = ИтоговыеДанныеВладельца_ТелефонМобильный();
Телефон = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(Телефон);
ТелефонДляПаролей = ИтоговыеДанныеВладельца_ТелефонМобильный_ДляПаролей();
ТелефонДляПаролей = ЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ПолучитьПредставлениеТелефона(ТелефонДляПаролей);
ПочтаДляПаролей = ИтоговыеДанныеВладельца_ЭлектроннаяПочта_ДляПаролей();
УказанОтдельныйМобильныйТелефон =
Получать
И ЗначениеЗаполнено(Телефон)
И ТелефонДляПаролей <> Телефон;
Если НЕ ПодтверждениеКонтактовВыполнено() Тогда
Представление = НСтр("ru = 'Подтвердить'");
ИначеЕсли УказанОтдельныйМобильныйТелефон Тогда
Представление =
НСтр("ru = 'пароли: '")
+ ТелефонДляПаролей
+ ", "
+ ПочтаДляПаролей
+ Символы.ПС
+ НСтр("ru = 'уведомления: '")
+ ТелефонСПризнакомУведомлений(Телефон);
Иначе
Представление =
ТелефонСПризнакомУведомлений(ТелефонДляПаролей)
+ ", "
+ ПочтаДляПаролей;
КонецЕсли;
Представление = СокрЛП(Представление);
Возврат Представление;
КонецФункции
&НаСервере
Функция ПодтверждениеКонтактовВыполнено()
Возврат
ПодтверждениеКонтактаВыполнено(ПроверкаТелефонДляПаролей)
И ПодтверждениеКонтактаВыполнено(ПроверкаЭлектроннаяПочтаДляПаролей)
ИЛИ НЕ ЭтоОблако(ЭтотОбъект);
КонецФункции
&НаСервере
Функция УведомленияЗаполнены()
Если ЭтоОблако(ЭтотОбъект) Тогда
Заполнены = ЗначениеЗаполнено(ТелефонМобильныйДляПаролей)
И ЗначениеЗаполнено(ЭлектроннаяПочтаДляПаролей);
Иначе
Заполнены = ЗначениеЗаполнено(ЭлектроннаяПочта);
КонецЕсли;
Возврат Заполнены;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеПодписания()
ВидноПодписание = УстановленХотяБыОдинФлаг(ЭтотОбъект);
Элементы.ГруппаПодписание.Видимость = ВидноПодписание;
Если ВидноПодписание Тогда
ВозможностьПодписания = ВозможностьПодписания();
ВозможноЭлектронное = ВозможностьПодписания.ВозможноЭлектронное;
ВозможноБумажное = ВозможностьПодписания.ВозможноБумажное;
ОписаниеОшибки = ВозможностьПодписания.ОписаниеОшибки;
Элементы.ЭлектроннойПодписью.Доступность = ВозможноЭлектронное;
Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
Элементы.ЭлектроннойПодписью.Подсказка = ОписаниеОшибки;
Элементы.ЭлектроннойПодписью.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
Иначе
Элементы.ЭлектроннойПодписью.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Элементы.ВБумажномВиде.Доступность = ВозможноБумажное;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеГиперссылки(ИмяЭлемента, Знач Значение, ОбязательныйДляЗаполнения, Доступно)
Элемент = Элементы[ИмяЭлемента];
ПроверяемоеЗначение = Строка(Значение);
ПроверяемоеЗначение = СтрЗаменить(ПроверяемоеЗначение,"-","");
ПроверяемоеЗначение = СтрЗаменить(ПроверяемоеЗначение,",","");
ПроверяемоеЗначение = СтрЗаменить(ПроверяемоеЗначение," ","");
ЗначениеЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение);
Элемент.Доступность = Доступно;
Если ЗначениеЗаполнено Тогда
Элемент.Заголовок = Строка(Значение);
Иначе
Элемент.Заголовок = "Заполнить";
КонецЕсли;
Если НЕ Доступно Тогда
Элемент.ЦветТекста = СерыйЦвет;
ИначеЕсли ЗначениеЗаполнено Тогда
Элемент.ЦветТекста = СинийЦвет;
Иначе
Элемент.ЦветТекста = ?(ОбязательныйДляЗаполнения, КрасныйЦвет, СинийЦвет);
КонецЕсли;
Элемент.Гиперссылка = Истина;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеДействияССертификатом()
ОбработкаЗаявленийАбонента.ИзменитьОформлениеВключаемогоСертификата(ЭтотОбъект);
ИзменитьОформлениеДействияССертификатом_ТекущийСертификат();
ИзменитьОформлениеДействияССертификатом_Картинка();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеДействияССертификатом_Картинка()
Надпись = Элементы.ПодсказкаИзменитьРеквизитыСертификата;
ИзмененныеРеквизиты = ИзмененныеРеквизитыСертификата();
Надпись.Видимость =
ИзмененныеРеквизиты.Количество() > 0
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
И СертификатДоступен
И НЕ СертификатДолженБытьПолученОтГосУЦ;
КонецПроцедуры
&НаСервере
Процедура УправлениеФормой() Экспорт
ОтобразитьНужнуюСтраницуЗаявления();
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат;
КонецЕсли;
ИзменитьОформлениеДействияССертификатом();
ИзменитьОформлениеМестаХраненияКлючей();
ИзменитьОформлениеПодсказкиДляГалкиПродлитьЛицензиюНа1СОтчетность();
ИзменитьОформлениеВладельцаСертификата();
ИзменитьОформлениеРеквизитовОрганизации();
ИзменитьОформлениеНаправлений();
ИзменитьОформлениеУведомлений();
ИзменитьОформление1СЭДО(ЭтотОбъект);
ИзменитьОформлениеДокументов(ЭтотОбъект);
ИзменитьОформлениеКнопокНавигации();
ИзменитьОформлениеЗаголовкаФормы();
ИзменитьОформлениеПодписания();
ИзменитьОформлениеПанелиРекламыDSS();
ИзменитьОформлениеПользователей();
МультирежимКлиентСервер.ИзменитьОформлениеПредупрежденияПроОтсутствиеПрав(ЭтотОбъект);
ПеренестиЭлементыПриМультирежиме();
ИзменитьОформлениеУЦ();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПользователей() Экспорт
ЭтоЛичныеНастройки = МультирежимКлиентСервер.ПоказыватьЛичныеНастройки(ЭтотОбъект);
Если ЭтоЛичныеНастройки Тогда
Элементы.ИзменитьПользователя.Доступность = ИзменитьНастройкиПользователей;
Оформление = Мультирежим.ОформлениеПравПользователя(ЭтотОбъект, ЭтоЛичныеНастройки);
ЗаполнитьЗначенияСвойств(Элементы.ИзменитьПользователя, Оформление);
Элементы.ПодсказкаВыбратьПользователя.Видимость =
ИзмененныеНастройкиПользователей().Количество() > 0;
Иначе
Оформление = Мультирежим.ОформлениеПравПользователей(ЭтотОбъект);
ЗаполнитьЗначенияСвойств(Элементы.ВыбратьПользователей, Оформление);
ОбработкаЗаявленийАбонентаКлиентСервер.ОтобразитьРезультатПроверки(
Элементы.ПроверкаПользователей,
Оформление);
Элементы.ВыбратьПользователей.Доступность = ИзменитьНастройкиПользователей;
Элементы.ПодсказкаВыбратьПользователей.Видимость =
ИзмененныеНастройкиПользователей().Количество() > 0;
Конецесли;
Элементы.ГруппаНастройкиПользователей.Видимость =
ТаблицаПользователей.Количество() > 0
И НЕ ЭтоЛичныеНастройки;
Элементы.ГруппаНастройкиПользователя.Видимость =
ТаблицаПользователей.Количество() > 0
И ЗначениеЗаполнено(ВладелецЭЦП)
И ЭтоЛичныеНастройки;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеНаправлений() Экспорт
Элементы.ИзменитьСоставКонтролирующихОрганов.Заголовок = Мультирежим.ЗаголовокГосОрганов(ЭтотОбъект);
ИзменитьОформлениеНаправлений_Настройки();
ИзменитьОформлениеНаправлений_Картинка();
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеНаправлений_Настройки()
Мультирежим.ИзменитьОформлениеНаправленийВГлавномОкне(ЭтотОбъект);
Элементы.УказатьНаправления.Доступность = ИзменитьСоставКонтролирующихОрганов;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеНаправлений_Картинка()
ИзмененныеРеквизиты = ИзмененныеНаправления();
Элементы.ПодсказкаИзменитьНаправления.Видимость =
ИзмененныеРеквизиты.Количество() > 0
И НЕ ИспользоватьСуществующий(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОблачнаяПодпись(Форма)
Если НЕ Форма.ДоступнаЭлектроннаяОблачнаяПодпись Тогда
Возврат Ложь;
КонецЕсли;
ЭтоОблако =
КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Форма.МестоХраненияКлюча)
ИЛИ ИспользоватьСуществующий(Форма) И КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Форма.ВключаемыйСертификат);
Возврат ЭтоОблако;
КонецФункции
&НаСервере
Процедура ИзменитьОформлениеДействияССертификатом_ТекущийСертификат()
Элемент = Элементы.ГруппаПереключатателейСертификата;
Если СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИздатьНовый Тогда
Элемент.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Надпись = Элемент.РасширеннаяПодсказка;
КоличествоОставшегосяВремени = ОбработкаЗаявленийАбонентаКлиентСервер.ТекстЧерезСколькоЛетМесяцевНедельДней(
ТекущаяДатаСервер,
СертификатДействителенПо,
"",
"");
СерыйЦвет = Новый Цвет(139, 139, 139);
Надпись.ЦветТекста = СерыйЦвет;
Если СвойстваСертификата = Неопределено ИЛИ НЕ СертификатДоступен Тогда
Надпись.Заголовок = НСтр("ru = 'Сертификат недоступен'");
ИначеЕсли ПродлитьСертификатИсходный И КоличествоОставшегосяВремени = Неопределено Тогда
ТекстЗаголовка = НСтр("ru = 'Сертификат истек %1'");
Надпись.Заголовок = СтрЗаменить(ТекстЗаголовка, "%1", Формат(СертификатДействителенПо, "ДЛФ=DD"));
ИначеЕсли ПродлитьСертификатИсходный Тогда
ТекстЗаголовка = НСтр("ru = 'Сертификат истекает через %1'");
Надпись.Заголовок = СтрЗаменить(ТекстЗаголовка, "%1", КоличествоОставшегосяВремени);
Иначе
Элемент.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Иначе
Элемент.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
ЕстьИзмененияМестаХранения =
ИзменитьМестоХранения
И ИзменилосьМестоХранения(ЭтотОбъект);
Заблокировать =
ЕстьИзмененияМестаХранения
И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Элементы.ГруппаСпособПолученияСертификата.Доступность = ПереиздатьСертификат И НЕ Заблокировать;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеУЦ()
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеУЦ(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьНужнуюСтраницуЗаявления()
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ОсновнаяСтраница Тогда
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Элементы.ВариантыОсновнойПанели.ТекущаяСтраница = Элементы.ОрганизацияНеЗаполнена;
ИначеЕсли ПоддерживаетсяВторичноеЗаявление Тогда
Элементы.ВариантыОсновнойПанели.ТекущаяСтраница = Элементы.ГруппаВыбораДействия;
Иначе
Элементы.ВариантыОсновнойПанели.ТекущаяСтраница = Элементы.ОтправкаЗапрещена;
КонецЕсли;
Элементы.ГруппаНижняяПанель.Видимость = ПоддерживаетсяВторичноеЗаявление И ЗначениеЗаполнено(Организация);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьОформлениеДокументов(Форма)
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеДокументов(Форма);
СкрытьГрупповоеДобавлениеДокументов(Форма);
КонецПроцедуры
#КонецОбласти
#Область Инициализация
&НаСервере
Процедура ВыполнитьДействияДляНовогоЗаявления()
СделатьНаправленияСдачиОтчетностиРавнымиИсходным();
ИнициализироватьПользователей();
ИнициализироватьИсходногоВладельцаЭЦП();
ЗаполнитьМЧДВЗаявлении();
СравнитьРеквизитыОрганизацииСИсходными();
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьСоставКонтролирующихОрганов();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьРеквизитыОрганизации();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьВладельцаСертификата();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
ПереопределитьГалкиНаОснованииВходящихФлаговМастера();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиПользователей();
КонецПроцедуры
&НаСервере
Процедура СкопироватьДанныеИзИсходногоЗаявления()
ВладелецЭЦПТип = Реквизит.ВладелецЭЦПТип;
ЗаполнитьДанныеСотрудника(Ложь);
СкопироватьФлажкиИзИсходногоЗаявления_ВосстановитьФлаги();
СкопироватьИдентификаторИзИсходногоЗаявления();
СкопироватьРеквизитыИзИсходногоЗаявления_Организация();
СкопироватьРеквизитыИзИсходногоЗаявления_Криптография();
СкопироватьРеквизитыИзИсходногоЗаявления_Владелец();
СкопироватьРеквизитыИзИсходногоЗаявления_ГосОрганы();
СкопироватьДокументыИзИсходногоЗаявления();
УЦ = Реквизит.УдостоверяющийЦентр;
СброситьВсеФлажки(ЭтотОбъект);
СравнитьРеквизитыОрганизацииСИсходными();
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
СкопироватьФлажкиИзИсходногоЗаявления();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьРеквизитыОператора()
СтруктураДанныхСпецоператорыСвязи = Новый Структура();
СтруктураДанныхСпецоператорыСвязи.Вставить("СпецоператорыСвязи", ДанныеЗаполнения.СпецоператорыСвязи);
СтруктураДанныхСпецоператорыСвязи.Вставить("Макет", ДанныеЗаполнения.МакетПараметрыСпецоператоровСвязи);
СтруктураДанныхСпецоператорыСвязи.Вставить("ТекстМакетаСоглашение", ДанныеЗаполнения.ТекстМакетаСоглашение);
СтруктураДанныхСпецоператорыСвязи.Вставить("ЗначениеЗаполненияСпецоператораСвязи", ДанныеЗаполнения.ЗначениеЗаполненияСпецоператораСвязи);
КонецПроцедуры
&НаСервере
Процедура СкопироватьДокументыИзИсходногоЗаявления()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ЗаполнитьДокументыИзСкопированногоЗаявления(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьВозможностьБезбумажногоПродления()
ЭлектронноеВозможно = ВозможностьПодписания().ВозможноЭлектронное;
Если ЭлектронноеВозможно Тогда
ПереключитьНаЭлектронноеПодписание(ЭтотОбъект);
Иначе
ПереключитьНаБумажноеПодписание(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИнициализироватьДанныеСпецоператора(
УчетнаяЗапись,
ОператорПоддерживаетСМСУведомление = Неопределено,
ОператорПоддерживаетФСРАР = Неопределено,
ОператорПоддерживаетРПН = Неопределено,
ОператорПоддерживаетФТС = Неопределено)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ОператорПоддерживаетСМСУведомление = (ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолучитьПараметрСпецоператора(УчетнаяЗапись.СпецоператорСвязи, "ПризнакПоддержкиСМС") = "Истина");
ОператорПоддерживаетФСРАРЗначение = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолучитьПараметрСпецоператора(УчетнаяЗапись.СпецоператорСвязи, "ФСРАРПризнак");
ОператорПоддерживаетФСРАР = (ОператорПоддерживаетФСРАРЗначение = Истина ИЛИ ОператорПоддерживаетФСРАРЗначение = "Истина");
ОператорПоддерживаетРПНЗначение = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолучитьПараметрСпецоператора(УчетнаяЗапись.СпецоператорСвязи, "РПНПризнак");
ОператорПоддерживаетРПН = (ОператорПоддерживаетРПНЗначение = Истина ИЛИ ОператорПоддерживаетРПНЗначение = "Истина");
ОператорПоддерживаетФТСЗначение = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ПолучитьПараметрСпецоператора(УчетнаяЗапись.СпецоператорСвязи, "ФТСПризнак");
ОператорПоддерживаетФТС = (ОператорПоддерживаетФТСЗначение = Истина ИЛИ ОператорПоддерживаетФТСЗначение = "Истина");
Возврат УчетнаяЗапись.СпецоператорСвязи;
КонецФункции
&НаСервере
Процедура ЗаполнитьИспользованиеДолговременногоТокена()
ОбработкаЗаявленийАбонента.ЗаполнитьИспользованиеДолговременногоТокена(ЭтотОбъект);
СпособПодтвержденияКриптооперацийИсходный = СпособПодтвержденияКриптоопераций;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьРеквизитыНеХранящиесяВБазе()
РеквизитыНеХранящиесяВБазе = Новый ФиксированныйМассив(ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.РеквизитыНеХранящиесяВБазе(Организация));
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьСписокВыбораОрганизаций()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Организации.Ссылка КАК Ссылка,
| """" КАК Представление
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.УчетнаяЗаписьОбмена <> ЗНАЧЕНИЕ(Справочник.УчетныеЗаписиДокументооборота.ПустаяСсылка)
| И Организации.ВидОбменаСКонтролирующимиОрганами = ЗНАЧЕНИЕ(Перечисление.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате)
|
|УПОРЯДОЧИТЬ ПО
| Организации.Ссылка";
Таблица = Запрос.Выполнить().Выгрузить();
Для каждого СтрокаТаблицы Из Таблица Цикл
СтрокаТаблицы.Представление = Строка(СтрокаТаблицы.Ссылка);
КонецЦикла;
Таблица.Сортировать("Представление");
Организации = Таблица.ВыгрузитьКолонку("Ссылка");
Элементы.Организация.СписокВыбора.ЗагрузитьЗначения(Организации);
КонецПроцедуры
&НаСервере
Процедура Инициализация(Параметры)
ИнициализироватьКонстантныеЗначения();
ИнициализироватьНастройкиРежимаОграниченнойФункциональности();
ИнициализацияПараметров(Параметры);
ИнициализацияРасчитываемыхЗначений();
ИнициализироватьСписокВыбораОрганизаций();
ИнициализироватьПараметрыОблачнойПодписи();
Если ЗначениеЗаполнено(Организация) Тогда
ПрединициализацияРеквизитовОрганизацииНаСервере(Истина);
КонецЕсли;
Элементы.ГруппаНижняяПанель.Видимость = Ложь;
Элементы.РамкаОрганизации.Видимость = НЕ ИспользуетсяОднаОрганизация;
ИзменитьОформлениеПанелиРекламыDSS();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьНастройкиРежимаОграниченнойФункциональности()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.УстановитьНастройкиРежимаОграниченнойФункциональности(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИнициализацияРасчитываемыхЗначений()
ЗаявлениеСозданоКопированием = ЗначениеЗаполнено(Реквизит);
ИнициализацияДляЭПВМоделиСервиса();
ИменаУЦКалуги = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ИменаУЦКалуги();
УчетнаяЗапись = УчетнаяЗаписьОрганизации(Организация);
ИнициализацияЭДО();
КонецПроцедуры
&НаСервере
Функция ИнициализацияДляЭПВМоделиСервиса() ЭКспорт
ДоступнаЭлектроннаяПодписьВМоделиСервиса = ОбработкаЗаявленийАбонента.ДоступнаЭлектроннаяПодписьВМоделиСервиса(ЭтотОбъект);
Если НЕ ДоступнаЭлектроннаяПодписьВМоделиСервиса Тогда
СпособПодтвержденияКриптоопераций = Неопределено;
ПроверенДоступДляТокена = Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ИнициализацияЭДО()
ЕстьПравоНастройкиЭДО = Истина;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ЕстьПравоНастройкиЭДО(ЕстьПравоНастройкиЭДО);
СсылкаОписаниеСервисаЭДО = "";
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.АдресСтраницыСУсловиямиПодключения(СсылкаОписаниеСервисаЭДО);
КонецПроцедуры
&НаСервере
Процедура ИнициализацияПараметров(Параметры)
Если Параметры.Свойство("АктивироватьФлагиМастера") Тогда
ВходящиеФлагиМастера = Параметры.АктивироватьФлагиМастера.ФлагиВМастер;
КонецЕсли;
Параметры.Свойство("ЛицензииКриптоПроИстекла", ЛицензииКриптоПроИстекла);
Реквизит = Параметры.Реквизит;
Организация = ИнициализироватьОрганизацию(Параметры);
Параметры.Свойство("ЭтоОткрытиеЗаявления", ЭтоОткрытиеЗаявления);
Параметры.Свойство("НовыйСертификат", НовыйСертификат);
ПриОткрытииЗапрошеноПродлениеСертификата = Параметры.ПриОткрытииЗапрошеноПродлениеСертификата;
ПриОткрытииЗапрошеноПродлениеЛицензии = Параметры.ПриОткрытииЗапрошеноПродлениеЛицензии;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности(УчетнаяЗапись)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ДопРеквизитыУчетнойЗаписи = КонтекстЭДОСервер.ДополнительныеРеквизитыУчетнойЗаписи(УчетнаяЗапись);
Если НЕ ЗначениеЗаполнено(ДопРеквизитыУчетнойЗаписи) Тогда
Возврат;
КонецЕсли;
Мультирежим.ИнициализироватьМультирежим(ЭтотОбъект);
ОбработкаЗаявленийАбонента.ЗаполнитьДанныеЕГРЮЛДляСравнения(ЭтотОбъект);
ИнициализироватьПараметрыОблачнойПодписи();
ИнициализироватьИсходныеРеквизиты1СОтчетности_Организация(ДопРеквизитыУчетнойЗаписи);
Если НЕ ЭтоМультиРежим Тогда
ИнициализироватьИсходныеРеквизиты1СОтчетности_ВладелецЭП(ДопРеквизитыУчетнойЗаписи);
КонецЕсли;
ИнициализироватьИсходныеРеквизиты1СОтчетности_ПризнакИностраннойОрганизации();
ИнициализироватьИсходныеРеквизиты1СОтчетности_Лицензия(УчетнаяЗапись, ДопРеквизитыУчетнойЗаписи);
ИнициализироватьДоступностьНаправлений();
ИнициализироватьИсходныеРеквизиты1СОтчетности_ГосОрганы(ДопРеквизитыУчетнойЗаписи);
ИнициализироватьИсходныеРеквизиты1СОтчетности_Криптография(ДопРеквизитыУчетнойЗаписи);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПользователей(ИзРегистра = Ложь)
Мультирежим.ИнициализироватьПользователей(
ЭтотОбъект,
ТаблицаПользователей,
УчетнаяЗапись,
ИзРегистра);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_Криптография(ДопРеквизитыУчетнойЗаписи)
ТипКриптопровайдераИсходный = ДопРеквизитыУчетнойЗаписи.ТипКриптопровайдера;
ЛицензияКриптоПроВключенаВСертификат= ДопРеквизитыУчетнойЗаписи.ЛицензияКриптоПроВключенаВСертификат;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_Организация(ДопРеквизитыУчетнойЗаписи)
КраткоеНаименованиеИсходное = ДопРеквизитыУчетнойЗаписи.КраткоеНаименование;
КППИсходный = ДопРеквизитыУчетнойЗаписи.КПП;
ОГРНИсходный = ДопРеквизитыУчетнойЗаписи.ОГРН;
ЭтоНотариусАдвокатИлиГКФХ = ДопРеквизитыУчетнойЗаписи.ЭтоНотариусАдвокатИлиГКФХ;
УлицаИсходная = ДопРеквизитыУчетнойЗаписи.Улица;
ГородИсходный = ДопРеквизитыУчетнойЗаписи.Город;
ОбластьИсходная = ДопРеквизитыУчетнойЗаписи.Область;
Если УлицаИсходная = "" И ГородИсходный = "" И ОбластьИсходная = "" Тогда
ИнициализироватьИсходныеРеквизиты1СОтчетности_АдресИзСертификата();
КонецЕсли;
ИнициализироватьИсходныеРеквизиты1СОтчетности_ОрганизацияКонтакты(ДопРеквизитыУчетнойЗаписи);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_ОрганизацияКонтакты(ДопРеквизитыУчетнойЗаписи)
ТелефонОсновнойИсходный = ДопРеквизитыУчетнойЗаписи.ТелефонОсновной;
ЭлектроннаяПочтаОрганизацииИсходная = ДопРеквизитыУчетнойЗаписи.ЭлектроннаяПочтаОрганизации;
ЗаполнитьКонтактыОрганизацииИсходными();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКонтактыОрганизацииИсходными()
Если НЕ ЗначениеЗаполнено(ТелефонОсновной) Тогда
ТелефонОсновной = ТелефонОсновнойИсходный;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЭлектроннаяПочтаОрганизации) Тогда
ЭлектроннаяПочтаОрганизации = ЭлектроннаяПочтаОрганизацииИсходная;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_АдресИзСертификата()
Если ЭтоОблако(ЭтотОбъект) Тогда
ДанныеСертификата = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
Субъект = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеСертификата, "Субъект");
Если Субъект <> Неопределено Тогда
Субъект.Свойство("ST", ОбластьИсходная);
Субъект.Свойство("L", ГородИсходный);
Субъект.Свойство("STREET", УлицаИсходная);
КонецЕсли;
ИначеЕсли ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ДанныеСертификата = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.НайтиСертификатОблачнойПодписиПоОрганизации(Организация);
Субъект = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеСертификата, "Субъект");
Если Субъект <> Неопределено Тогда
Субъект.Свойство("ST", ОбластьИсходная);
Субъект.Свойство("L", ГородИсходный);
Субъект.Свойство("STREET", УлицаИсходная);
КонецЕсли;
ИначеЕсли ДвДанныеЛокальногоСертификата <> Неопределено Тогда
ДанныеСертификата = Новый СертификатКриптографии(ДвДанныеЛокальногоСертификата);
Субъект = ДанныеСертификата.Субъект;
Субъект.Свойство("OID2_5_4_8", ОбластьИсходная);
Субъект.Свойство("OID2_5_4_7", ГородИсходный);
Субъект.Свойство("OID2_5_4_9", УлицаИсходная);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_Лицензия(УчетнаяЗапись, ДопРеквизитыУчетнойЗаписи)
ЛицензияНаименование = УчетнаяЗапись.ЛицензияНаименование;
ЛицензияДатаНачала = УчетнаяЗапись.ЛицензияДатаНачала;
ЛицензияДатаОкончания = УчетнаяЗапись.ЛицензияДатаОкончания + 24*60*60;
ЛицензияТребуетсяНапоминаниеОбОкончанииСрокаДействия = УчетнаяЗапись.ЛицензияТребуетсяНапоминаниеОбОкончанииСрокаДействия;
СекундВОдномДне = 24 * 60 * 60;
КоличествоДнейДоОкончанияЛицензии = (НачалоДня(ЛицензияДатаОкончания) - НачалоДня(ТекущаяДатаСервер))/СекундВОдномДне;
ПродлитьЛицензиюНа1СОтчетностьИсходный = КоличествоДнейДоОкончанияЛицензии <= ТридцатьДней;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_ВладелецЭП(ДопРеквизитыУчетнойЗаписи)
ВладелецЭЦПФамилияИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПФамилия;
ВладелецЭЦПИмяИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПИмя;
ВладелецЭЦПОтчествоИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПОтчество;
ВладелецЭЦППодразделениеИсходное = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦППодразделение;
ВладелецЭЦПСНИЛСИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПСНИЛС;
ВладелецЭЦПДолжностьИсходная = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПДолжность;
ЭлектроннаяПочтаИсходная = ДопРеквизитыУчетнойЗаписи.ЭлектроннаяПочта;
ВладелецЭЦПЭтоФизЛицоИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПЭтоФизЛицо;
ВладелецЭЦПИННИсходный = ДопРеквизитыУчетнойЗаписи.ВладелецЭЦПИНН;
ПолучатьСМСУведомления = ДопРеквизитыУчетнойЗаписи.ПолучатьСМСУведомления;
ПолучатьСМСУведомленияИсходный = ДопРеквизитыУчетнойЗаписи.ПолучатьСМСУведомления;
ТелефонМобильныйИсходный = ПреобразоватьНомерТелефонаКМаскеСервер(ДопРеквизитыУчетнойЗаписи.ТелефонМобильный);
Если ЭтоУчетнаяЗаписьВМоделиСервиса ИЛИ ПолучатьСМСУведомленияИсходный ИЛИ НЕ ЗначениеЗаполнено(ТелефонМобильный) Тогда
ТелефонМобильный = ПолучитьПредставлениеТелефона(ТелефонМобильныйИсходный);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЭлектроннаяПочта) Тогда
ЭлектроннаяПочта = ЭлектроннаяПочтаИсходная;
КонецЕсли;
ИнициализироватьИсходныеРеквизиты1СОтчетности_ПаспортныеДанные(ДопРеквизитыУчетнойЗаписи);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_ГосОрганы(ДопРеквизитыУчетнойЗаписи)
Результат = ОбработкаЗаявленийАбонента.ИнициализироватьИсходныеГосОрганыУчетнойЗаписи(
ЭтотОбъект,
ПолучателиФНСИсходные,
ПолучателиФСГСИсходные);
КодРегионаФСРАРИсходный = Результат.КодРегионаФСРАР;
СдаватьВФНСИсходный = Результат.СдаватьВФНС;
Если Результат.СдаватьВПФР ИЛИ Результат.СдаватьВФСС Тогда
СдаватьВПФРИсходный = Результат.СдаватьВПФР;
СдаватьВФССИсходный = Результат.СдаватьВФСС;
КонецЕсли;
КодПФРИсходный = Результат.КодПФР;
РегНомерПФРИсходный = Результат.РегНомерПФР;
РегНомерСФРИсходный = Результат.РегНомерСФР;
СдаватьВРосстатИсходный = Результат.СдаватьВРосстат;
СдаватьВЦБИсходный = Результат.СдаватьВЦБ;
ПодатьЗаявкуНаСертификатДляФСРАРИсходный = Результат.ПодатьЗаявкуНаСертификатДляФСРАР;
ПодатьЗаявкуНаПодключениеРПНИсходный = Результат.ПодатьЗаявкуНаПодключениеРПН;
ПодатьЗаявкуНаПодключениеФТСИсходный = Результат.ПодатьЗаявкуНаПодключениеФТС;
КодыФНСПрописьюИсходные = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьКодыФНСПрописью(ПолучателиФНСИсходные);
КодыРосстатПрописьюИсходные = ОбработкаЗаявленийАбонентаКлиентСервер.ПолучитьКодыРосстатПрописью(ПолучателиФСГСИсходные);
КонецПроцедуры
&НаСервере
Процедура ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен, Сертификат = Неопределено, БылаОблачнаяПодпись = Ложь)
ОчиститьПеременныеДляОблака();
Если ДоступнаЭлектроннаяПодписьВМоделиСервиса Тогда
ЭтоПодписьСервиса = Истина;
Если Сертификат = Неопределено Тогда
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
ЭтоПодписьСервиса = КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(Сертификат);
КонецЕсли;
Если ЭтоПереходВОблако Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.СкопироватьНастройкиПаролейВОблакеИзКоробки(ЭтотОбъект);
ИначеЕсли ЭтоПодписьСервиса Тогда
ПолучитьНастройкиПаролейВОблакеССервера(Сертификат);
Если НЕ ПроверкаТелефонДляПаролей.ЗначениеВведено И НЕ ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.СкопироватьНастройкиПаролейВОблакеИзКоробки(ЭтотОбъект);
КонецЕсли;
ИначеЕсли БылаОблачнаяПодпись Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.СкопироватьНастройкиПаролейВОблакеИзКоробки(ЭтотОбъект);
КонецЕсли;
Если ИнициализироватьТокен Тогда
ЗаполнитьИспользованиеДолговременногоТокена();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОчиститьПеременныеДляОблака()
ОчиститьТелефонИПочтуДляОблака();
ЭтоУчетнаяЗаписьВМоделиСервиса = Ложь;
ЭтаУчетнаяЗаписьБылаСделанаДляОблака = Ложь;
КонецПроцедуры
&НаСервере
Процедура ОчиститьТелефонИПочтуДляОблака()
ИнициализироватьПроверкиДляОблака(ЭтотОбъект);
ТелефонМобильныйДляПаролей = "";
ЭлектроннаяПочтаДляПаролей = "";
КонецПроцедуры
&НаСервере
Процедура ПолучитьНастройкиПаролейВОблакеССервера(Сертификат) Экспорт
Если ЗначениеЗаполнено(Сертификат) И Сертификат.Свойство("Идентификатор") Тогда
НастройкиПолученияВременныхПаролей = ОбработкаЗаявленийАбонента.ИнициализироватьСпособыДоставкиПаролей(Сертификат.Идентификатор);
ПроверкаТелефонДляПаролей.ИсходноеЗначение = НастройкиПолученияВременныхПаролей.Телефон;
ПроверкаТелефонДляПаролей.ЗначениеВведено = ЗначениеЗаполнено(ПолучитьПредставлениеТелефона(ПроверкаТелефонДляПаролей.ИсходноеЗначение));
ПроверкаТелефонДляПаролей.ПодтверждениеВыполнено = ПроверкаТелефонДляПаролей.ЗначениеВведено;
ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение = НастройкиПолученияВременныхПаролей.ЭлектроннаяПочта;
ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено = ЗначениеЗаполнено(ПроверкаЭлектроннаяПочтаДляПаролей.ИсходноеЗначение);
ПроверкаЭлектроннаяПочтаДляПаролей.ПодтверждениеВыполнено = ПроверкаЭлектроннаяПочтаДляПаролей.ЗначениеВведено;
ТелефонМобильныйДляПаролей = НастройкиПолученияВременныхПаролей.Телефон;
ЭлектроннаяПочтаДляПаролей = НастройкиПолученияВременныхПаролей.ЭлектроннаяПочта;
ЭтоУчетнаяЗаписьВМоделиСервиса = ЗначениеЗаполнено(НастройкиПолученияВременныхПаролей.Телефон);
ОпределитьЧтоЭтаУчетнаяЗаписьБылаСделанаДляОблака();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметрыУЦ()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ИнициализироватьПараметрыУЦ(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметрыЭДО(ПриОткрытии = Ложь)
ЭтоПодключениеЭДО = Ложь;
ЭтоПереизданиеСертификатаЭДО = Ложь;
ПодключениеЭДОВозможно = Ложь;
ПереизданиеСертификатаЭДОВозможно = Ложь;
ЭтоОткрытиеРанееСозданногоЗаявления = ЗаявлениеСозданоКопированием И ПриОткрытии И ЭтоОткрытиеЗаявления;
ТребуетсяПодключение = Неопределено;
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ТребуетсяПодключениеЭДО(Организация, ТребуетсяПодключение);
ТребуетсяПереиздание = Неопределено;
Если ДвДанныеЛокальногоСертификата <> Неопределено Тогда
ПереиздаваемыйСертификат = Новый СертификатКриптографии(ДвДанныеЛокальногоСертификата);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ТребуетсяПереизданиеСертификатаЭДО(
Организация,
ПереиздаваемыйСертификат,
ТребуетсяПереиздание);
КонецЕсли;
Если ЭтоОткрытиеРанееСозданногоЗаявления
И ЗначениеЗаполнено(Реквизит.НастройкиЭДО)
И (Реквизит.ПодключитьЭДО ИЛИ Реквизит.ПереиздатьСертификатЭДО) Тогда
НастройкиДляЭДО = Реквизит.НастройкиЭДО;
ПереиздатьСертификатЭДО = Реквизит.ПереиздатьСертификатЭДО;
ЭтоПереизданиеСертификатаЭДО = ПереиздатьСертификатЭДО;
Если ЭтоПереизданиеСертификатаЭДО И НЕ ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ЭтоПереходВОблако И НЕ ЭтоМультиРежим Тогда
ПереизданиеСертификатаЭДОВозможно = Истина;
КонецЕсли;
ПодключитьЭДО = Реквизит.ПодключитьЭДО И ЕстьПравоНастройкиЭДО И НЕ ЭтоМультиРежим;
ПодключениеЭДОВозможно = НЕ ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ЭтоПереходВОблако И НЕ ЭтоМультиРежим;
ЭтоПодключениеЭДО = НЕ ЭтоПереизданиеСертификатаЭДО И НЕ ЭтоМультиРежим;
СсылкаОписаниеСервисаЭДО = "";
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.АдресСтраницыСУсловиямиПодключения(СсылкаОписаниеСервисаЭДО);
Иначе
Если ТребуетсяПодключение = Истина Тогда
НастройкиДляЭДО = Неопределено;
КодФНС = СокрЛП(РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Организация, , "КодНО").КодНО);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ИнициализироватьНастройкиПодключенияЭДО(Организация, КодФНС, НастройкиДляЭДО);
Если НастройкиДляЭДО <> Неопределено Тогда
ПодключениеЭДОВозможно = НЕ ЭтоМультиРежим;
ЭтоПодключениеЭДО = НЕ ЭтоМультиРежим;
Если ЗаявлениеСозданоКопированием ИЛИ ЭтоОткрытиеРанееСозданногоЗаявления Тогда
ПодключитьЭДО = Реквизит.ПодключитьЭДО И ЕстьПравоНастройкиЭДО И НЕ ЭтоМультиРежим;
Иначе
ПроверитьНеобходимостьУстановкиГалки_ФлагПодключитьЭДО();
КонецЕсли;
КонецЕсли;
СсылкаОписаниеСервисаЭДО = "";
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.АдресСтраницыСУсловиямиПодключения(СсылкаОписаниеСервисаЭДО);
ИначеЕсли ДвДанныеЛокальногоСертификата <> Неопределено Тогда
Если ТребуетсяПереиздание = Истина Тогда
НастройкиДляЭДО = Неопределено;
КодФНС = СокрЛП(РегламентированнаяОтчетностьВызовСервера.ПолучитьСведенияОбОрганизации(Организация, , "КодНО").КодНО);
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ИнициализироватьНастройкиПереизданияСертификатаЭДО(Организация, КодФНС, ПереиздаваемыйСертификат, НастройкиДляЭДО);
Если НастройкиДляЭДО <> Неопределено Тогда
ПереизданиеСертификатаЭДОВозможно = НЕ ЭтоМультиРежим;
ЭтоПереизданиеСертификатаЭДО = НЕ ЭтоМультиРежим;
Если ЗаявлениеСозданоКопированием ИЛИ ЭтоОткрытиеРанееСозданногоЗаявления Тогда
ПереиздатьСертификатЭДО = Реквизит.ПереиздатьСертификатЭДО И ЕстьПравоНастройкиЭДО;
Иначе
ПроверитьНеобходимостьУстановкиГалки_ФлагПереиздатьСертификатЭДО();
КонецЕсли;
КонецЕсли;
СсылкаОписаниеСервисаЭДО = "";
ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.АдресСтраницыСУсловиямиПодключения(СсылкаОписаниеСервисаЭДО);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьКонстантныеЗначения()
ТекущаяДатаСервер = ТекущаяДатаСеанса();
ПоддерживаетсяМультирежим = Мультирежим.ПоддерживаетсяМультирежим();
ТекущийПользователь = Пользователи.ТекущийПользователь();
ИспользуетсяРежимТестирования = ДокументооборотСКОВызовСервера.ИспользуетсяРежимТестирования();
ИспользоватьРегНомерСФР = ДокументооборотСКОВызовСервера.СобытиеНаступилоИспользоватьРегНомерСФР();
ЭтоРежимОблачной1СО = ДокументооборотСКОПовтИсп.ЭтоРежимОблачной1СО();
ЭтоРежимОграниченнойФункциональности = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЭтоРежимОграниченнойФункциональности();
ЭтоРежимБесплатнойНулевойОтчетности = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ЭтоРежимБесплатнойНулевойОтчетности();
Рекомендовано = 1;
Обязательно = 2;
Требует = 2;
НеТребуется = 0;
Препятствует = Истина;
ЧерныйЦвет = Новый Цвет(65, 48, 3);
СерыйЦвет = Новый Цвет(87, 87, 87);
СинийЦвет = Новый Цвет(28, 85, 174);
КрасныйЦвет = Новый Цвет(178,34, 34);
ЦветТекстаФормы = Новый Цвет(65, 48, 3);
Требования = ОбработкаЗаявленийАбонентаКлиентСервер.ТребованияВложениямЗаявления();
ДопустимыеТипыФайлов = Требования.ДопустимыеТипыФайлов;
МаксимальныйРазмерФайла = Требования.МаксимальныйРазмерФайла;
ТелефонСлужбыПоддержки = "8-800-700-86-68";
АдресЭлектроннойПочтыСлужбыПоддержки = "1c@astralnalog.ru";
ТридцатьДней = 30;
ПрограммноеЗакрытие = Ложь;
КонецПроцедуры
&НаСервере
Функция ИнициализироватьОрганизацию(Параметры)
Организация = Параметры.Организация;
Реквизит = Параметры.Реквизит;
ИспользуетсяОднаОрганизация = РегламентированнаяОтчетностьВызовСервера.ИспользуетсяОднаОрганизация();
Если ИспользуетсяОднаОрганизация Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("Справочники.Организации");
Организация = Модуль.ОрганизацияПоУмолчанию();
Иначе
Если НЕ ЗначениеЗаполнено(Организация) И ЗначениеЗаполнено(Реквизит) Тогда
Организация = Реквизит.Организация;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Организация = ЭлектронныйДокументооборотСКонтролирующимиОрганамиПереопределяемый.ОсновнаяОрганизация();
КонецЕсли;
КонецЕсли;
Возврат Организация;
КонецФункции
&НаКлиенте
Процедура ИнициализироватьРеквизиты1СОтчетности(ДанныеЗаполнения, ПриОткрытии, ВыполняемоеОповещение = Неопределено)
ЭтоСменаОрганизации = НЕ ПриОткрытии;
Если ЭтоСменаОрганизации Тогда
ПрединициализацияРеквизитовОрганизацииНаСервере(ПриОткрытии);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ПриОткрытии", ПриОткрытии);
ДополнительныеПараметры.Вставить("УчетнаяЗапись", УчетнаяЗапись);
ДополнительныеПараметры.Вставить("ВыполняемоеОповещение", ВыполняемоеОповещение);
ДополнительныеПараметры.Вставить("ДанныеЗаполнения", ДанныеЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ИнициализироватьРеквизиты1СОтчетности_ПослеПроверкиПоддержкиВторичногоЗаявления",
ЭтотОбъект,
ДополнительныеПараметры);
ПроверитьВозможностьОтправкиВторичныхЗаявлений(ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Процедура ОчиститьРеквизиты1СОтчетностиЕслиЭтоСменаОрганизации(Форма)
ОчиститьДанныеВладельца();
ОчиститьИсходныеЗначенияИПризнакИзменения();
ОчиститьРеквизитыФормы();
СброситьНаправленияСдачиОтчетности();
СброситьВсеФлажки(Форма);
КонецПроцедуры
&НаСервере
Процедура ПрединициализацияРеквизитовОрганизацииНаСервере(ПриОткрытии)
ИспользуетсяОднаОрганизация = РегламентированнаяОтчетностьВызовСервера.ИспользуетсяОднаОрганизация();
Если НЕ ПриОткрытии Тогда
ОчиститьРеквизиты1СОтчетностиЕслиЭтоСменаОрганизации(ЭтотОбъект);
КонецЕсли;
УчетнаяЗапись = УчетнаяЗаписьОрганизации(Организация);
ИнициализироватьТокен = Истина;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен);
ИнициализироватьРеквизитыНеХранящиесяВБазе();
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Настройки = КонтекстЭДОСервер.НастройкиУчетнойЗаписиОрганизации(Организация);
Если Настройки <> Неопределено Тогда
НастройкиУчетнойЗаписи = Новый ФиксированнаяСтруктура(Настройки);
КонецЕсли;
ОператорПоддерживаетСМСУведомление = Ложь;
ОператорПоддерживаетФСРАР = Ложь;
ОператорПоддерживаетРПН = Ложь;
ОператорПоддерживаетФТС = Ложь;
СпецоператорПоддерживаетВторичныеЗаявления = КонтекстЭДОСервер.ПоддерживаетсяВторичноеЗаявление(Организация);
Спецоператор = ИнициализироватьДанныеСпецоператора(
УчетнаяЗапись,
ОператорПоддерживаетСМСУведомление,
ОператорПоддерживаетФСРАР,
ОператорПоддерживаетРПН,
ОператорПоддерживаетФТС);
ИнициализироватьПараметрыУЦ();
КонецПроцедуры
&НаКлиенте
Процедура ИнициализироватьРеквизиты1СОтчетности_ПослеПроверкиПоддержкиВторичногоЗаявления(ПоддерживаетсяВторичноеЗаявление, ДополнительныеПараметры) Экспорт
Если НЕ ПоддерживаетсяВторичноеЗаявление Тогда
СброситьВсеФлажки(ЭтотОбъект);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ВыполняемоеОповещение);
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ИнициализироватьРеквизиты1СОтчетности_ПослеПолученияBase64",
ЭтотОбъект,
ДополнительныеПараметры);
ПолучитьДанныеЛокальногоСертификатаОрганизации(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ИнициализироватьРеквизиты1СОтчетности_ПослеПолученияBase64(Результат, ВходящийКонтекст) Экспорт
Если Результат <> Неопределено Тогда
ДвДанныеЛокальногоСертификата = Base64Значение(Результат);
КонецЕсли;
ПостинициализацияРеквизитовОрганизацииНаСервере(ВходящийКонтекст.ПриОткрытии);
ПриУстановкеРежимаТолькоСУЦ(ВходящийКонтекст.ПриОткрытии);
ВыполнитьОбработкуОповещения(ВходящийКонтекст.ВыполняемоеОповещение)
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьДанныеЛокальногоСертификатаОрганизации(ВыполняемоеОповещение) Экспорт
ЭтоОблачныйСертификат =
ЭтоУчетнаяЗаписьВМоделиСервиса
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча);
Если ЭтоОблачныйСертификат ИЛИ НЕ КомпонентаУстановлена Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, Неопределено);
КонецЕсли;
Если НастройкиУчетнойЗаписи = Неопределено Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, Неопределено);
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПолучитьДанныеЛокальногоСертификатаОрганизации_ПослеПоискаСертификатаПоОтпечатку",
ЭтотОбъект,
ВыполняемоеОповещение);
Отпечаток = ОтпечатокСертификата();
КриптографияЭДКОКлиент.НайтиСертификатПоОтпечатку(ОписаниеОповещения, Отпечаток, "MY",, Ложь);
КонецПроцедуры
&НаСервере
Функция ОтпечатокСертификата()
Возврат Мультирежим.ОтпечатокСертификатаПользователя(УчетнаяЗапись);
КонецФункции
&НаКлиенте
Процедура ПолучитьДанныеЛокальногоСертификатаОрганизации_ПослеПоискаСертификатаПоОтпечатку(Результат, ВыполняемоеОповещение) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПолучитьДанныеЛокальногоСертификатаОрганизации_ПослеПолученияBase64",
ЭтотОбъект,
ВыполняемоеОповещение);
Если Результат.Выполнено И Результат.СертификатНайден Тогда
СвойстваСертификата = Результат.СвойстваСертификата;
КриптографияЭДКОКлиент.ЭкспортироватьСертификатВBase64(ОписаниеОповещения, СвойстваСертификата, Ложь);
Иначе
Результат = Новый Структура();
Результат.Вставить("Выполнено", Ложь);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьДанныеЛокальногоСертификатаОрганизации_ПослеПолученияBase64(Результат, ВыполняемоеОповещение) Экспорт
Если Результат.Выполнено Тогда
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, Результат.СтрокаBase64);
Иначе
ВыполнитьОбработкуОповещения(ВыполняемоеОповещение, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПостинициализацияРеквизитовОрганизацииНаСервере(ПриОткрытии)
ИнициализироватьНовыеРеквизитыОрганизации(ПриОткрытии);
ИнициализироватьИсходныеРеквизиты1СОтчетности(УчетнаяЗапись);
СделатьНехранящиесяВБазеРеквизитыРавнымиИсходным();
ИнициализироватьМестоХраненияКлюча();
ИнициализироватьРеквизитыОператора();
ИнициализироватьКриптографию();
Если ЗаявлениеСозданоКопированием Тогда
ВыполнитьДействияДляСкопированногоЗаявления();
Иначе
ВыполнитьДействияДляНовогоЗаявления();
КонецЕсли;
ПостинициализацияЭПВОблакеСервер();
НужноИнициализировать = НужноИнициализироватьСпособПолученияСертификата(ПриОткрытии);
Если НужноИнициализировать Тогда
ИнициализироватьСпособПолученияСертификатаПриСменеОрганизации();
КонецЕсли;
ИнициализироватьВозможностьБезбумажногоПродления();
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ИзменитьОформлениеПанелиРекламыDSS(Ложь);
КонецЕсли;
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьДействияДляСкопированногоЗаявления()
ИнициализироватьПользователей();
ИнициализироватьИсходногоВладельцаЭЦП();
СкопироватьДанныеИзИсходногоЗаявления();
КонецПроцедуры
&НаСервере
Функция НужноИнициализироватьСпособПолученияСертификата(ПриОткрытии)
ВыбраноИздатьНовый = СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИздатьНовый;
ПересчитатьДляСтарого =
ПриОткрытии
И НЕ ЭтоОткрытиеЗаявления
И СертификатДолженБытьПолученОтГосУЦ
И (ВыбраноИздатьНовый ИЛИ ЭтоОблако(ЭтотОбъект));
ПересчитатьПриСменеОрганизации = НЕ ПриОткрытии;
Инициализировать = ПересчитатьДляСтарого ИЛИ ПересчитатьПриСменеОрганизации;
Возврат Инициализировать;
КонецФункции
&НаСервере
Процедура ПостинициализацияЭПВОблакеСервер() Экспорт
ИнициализироватьТокен = Истина;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен);
ЭтоСуществующийСертификатВМоделиСервиса =
ИспользоватьСуществующий(ЭтотОбъект)
И ЗаявлениеСозданоКопированием
И ДоступнаЭлектроннаяПодписьВМоделиСервиса
И ВключаемыйСертификат <> Неопределено
И ВключаемыйСертификатОблачный;
Если ЭтоСуществующийСертификатВМоделиСервиса Тогда
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.НайтиСертификатВХранилищеПоОтпечатку(ВключаемыйСертификат.Отпечаток);
ПолучитьНастройкиПаролейВОблакеССервера(Сертификат);
КонецЕсли;
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьКриптографию()
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьВыбранноеМестоХраненияКлюча(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьИзменениеВМестеХраненияКлючей(ЭтотОбъект);
ОпределитьУЦИзСертификата();
ПолучитьСведенияИзСертификата();
Если НЕ ЭтоОблако(ЭтотОбъект) И НЕ ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьНеобходимостьУстановкиГалки_ВключатьЛицензиюКриптоПроВСертификат(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьНовыеРеквизитыОрганизации(ПриОткрытии)
Если ДанныеЗаполнения = Неопределено Тогда
ДанныеЗаполнения = Новый Структура();
КонецЕсли;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СтруктураРеквизитов = Новый Структура("Организация, ПриОткрытии", Организация, НЕ ДанныеЗаполнения = Неопределено);
Если ДанныеЗаполнения <> Неопределено Тогда
СтруктураРеквизитов.Вставить("АдресЮридический",);
СтруктураРеквизитов.Вставить("АдресФактический",);
КонецЕсли;
КонтекстЭДОСервер.ЗаполнитьДанныеОрганизации(СтруктураРеквизитов);
ДанныеЗаполнения = КонтекстЭДОСервер.ДополнитьДанныеОрганизацииДаннымиПоОтветственнымЛицам(СтруктураРеквизитов);
ДанныеОрганизации = ДанныеЗаполнения.СтруктураДанныхОрганизации;
ИнициализироватьРеквизиты1СОтчетности_ПрочитатьИзБД(ДанныеЗаполнения);
ИнициализироватьРеквизиты1СОтчетности_ОбработатьПрочитанноеИзБД_Сервер();
ИнициализироватьПараметрыЭДО(ПриОткрытии);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьРеквизиты1СОтчетности_ОбработатьПрочитанноеИзБД_Сервер()
ИПИспользуетТрудНаемныхРаботников = РегламентированнаяОтчетность.ИПИспользуетТрудНаемныхРаботников(Организация);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьРеквизиты1СОтчетности_ПрочитатьИзБД(ДанныеЗаполнения)
Руководитель = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.Руководитель(Организация);
ГлБухгалтер = ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервераПереопределяемый.ГлБухгалтер(Организация);
ЭтоЮридическоеЛицо = ДанныеОрганизации.ТипОрганизации;
КраткоеНаименование = ДанныеОрганизации.КраткоеНаименование;
ИНН = ДанныеОрганизации.ИННЮЛ;
КПП = ДанныеОрганизации.КППЮЛ;
ОГРН = ДанныеОрганизации.ОГРН;
РегНомерПФР = ДанныеОрганизации.РегНомПФР;
РегНомерСФР = ДанныеОрганизации.РегНомСФР;
Если НЕ ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ТелефонОсновной")) Тогда
ТелефонОсновной = ДанныеОрганизации.ТелОрганизации;
КонецЕсли;
Если НЕ ЭтоРеквизитНеХранящийсяВБазе(ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочта")) Тогда
ЭлектроннаяПочтаОрганизации = ДанныеОрганизации.ЭлектроннаяПочта;
КонецЕсли;
ЗаполнитьКонтактыОрганизацииИсходными();
АдресЮридический_JSON = ДанныеЗаполнения.АдресЮридический_JSON;
АдресЮридическийЗначение = ДанныеЗаполнения.АдресЮридическийЗначение;
АдресЮридическийПредставление = ДанныеЗаполнения.АдресЮридическийПредставление;
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Область = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_8(АдресЮридическийЗначение);
Город = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_7(АдресЮридическийЗначение);
Улица = ОбработкаЗаявленийАбонента.ПолеСертификата_2_5_4_9(АдресЮридическийЗначение);
Если ЭтоЮридическоеЛицо Тогда
ПризнакОбособленногоПодразделения = ДанныеОрганизации.ПризнакОбособленногоПодразделения;
ЭтоБюджетополучатель = ДанныеОрганизации.ЭтоБюджетополучатель;
НаименованиеПолное = ДанныеОрганизации.НаимЮЛПол;
КонецЕсли;
ИнициализироватьИсходныеРеквизиты1СОтчетности_ПризнакИностраннойОрганизации();
КодРегионаФСРАР = КонтекстЭДОСервер.КодРегионаФСРАР(АдресЮридическийЗначение);
КодРегиона = КодРегионаФСРАР;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьСпособПолученияСертификатаПриСменеОрганизации()
ОпределятьМестоХранения = Истина;
СброситьСпособПолученияСертификата(ОпределятьМестоХранения, Истина);
СертификатыОрганизацииПоИНН.Очистить();
КонецПроцедуры
&НаСервере
Процедура СброситьСпособПолученияСертификата(
ОпределятьМестоХранения,
ОпределятьНеобходимостьПереизданияСертификата)
ИнициализироватьСпособПолученияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.ОчиститьВключаемыйСертификат(ЭтотОбъект);
ПриИзмененииСпособаПолученияСертификата(ОпределятьМестоХранения);
Если ОпределятьНеобходимостьПереизданияСертификата Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьИсходныеРеквизиты1СОтчетности_ПризнакИностраннойОрганизации()
ЭтоИностраннаяОрганизация = ИнтерфейсыВзаимодействияБРО.ЭтоИностраннаяОрганизацияПоИНН(Организация);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПараметрыОблачнойПодписи()
ДоступнаЭлектроннаяОблачнаяПодпись = ОбработкаЗаявленийАбонента.ИспользованиеОблачнойПодписиВЗаявленииВозможно(ЭтотОбъект);
СвойствоОблачнойПодписи = ОбработкаЗаявленийАбонентаКлиентСервер.СведенияОблачнойПодписиЗаявления();
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
КонецПроцедуры
&НаСервере
Функция ИнициализацияОблачнойПодписи()
Результат = Ложь;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Ложь;
СвойствоОблачнойПодписи.НовыйЛогин = "";
СвойствоОблачнойПодписи.ИдентификаторСервера = "";
СвойствоОблачнойПодписи.УчетнаяЗапись = Неопределено;
СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически = Ложь;
СвойствоОблачнойПодписи.ПоставляемыйСервер = Ложь;
СвойствоОблачнойПодписи.ИсходныйТелефон = "";
Если ДоступнаЭлектроннаяОблачнаяПодпись Тогда
Если Сертификат = Неопределено Тогда
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.НайтиСертификатОблачнойПодписиПоОрганизации(Организация);
КонецЕсли;
Если Сертификат <> Неопределено Тогда
ЭтаУчетнаяЗаписьБылаСделанаДляОблака =
ЭтаУчетнаяЗаписьБылаСделанаДляОблака
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Сертификат);
КонецЕсли;
НоваяУчетнаяЗапись = КриптографияЭДКОКлиентСервер.ПолучитьУчетнуюЗаписьПодписи(МестоХраненияКлюча);
СвойствоОблачнойПодписи.УчетнаяЗапись = НоваяУчетнаяЗапись;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись);
Если ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
Результат = Истина;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Ложь;
СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически = СменитьКлючМобильногоПриложенияАвтоматически(СвойствоОблачнойПодписи.УчетнаяЗапись, ИспользоватьСуществующий(ЭтотОбъект), ПереиздатьСертификат);
СвойствоОблачнойПодписи.НовыйЛогин = "";
СвойствоОблачнойПодписи.ИдентификаторСервера = "";
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
Иначе
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Истина;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ЭтоПоставляемыйСерверОблачнойПодписи(УчетнаяЗаписьОблачнойПодписи)
Результат = ОбработкаЗаявленийАбонентаВызовСервера.ЭтоПоставляемыйСерверОблачнойПодписи(УчетнаяЗаписьОблачнойПодписи);
Возврат Результат;
КонецФункции
&НаСервере
Процедура ИнициализироватьМестоХраненияКлюча(СменаОрганизации = Истина)
МестоХраненияКлючаОрганизации = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Организация);
ЭтаУчетнаяЗаписьБылаСделанаДляОблака =
ЭтаУчетнаяЗаписьБылаСделанаДляОблака
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлючаОрганизации);
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Если СменаОрганизации Тогда
ИнициализироватьПараметрыОблачнойПодписи();
ТекущееСостояние = КонтекстЭДОСервер.ОпределитьСостояниеОблачнойПодписиОрганизации(Организация);
МестоХраненияКлюча = ТекущееСостояние.МестоХраненияКлюча;
Иначе
ТекущееСостояние = КонтекстЭДОСервер.ОпределитьСостояниеОблачнойПодписиОрганизации(Организация, , СвойствоОблачнойПодписи.НовыйЛогин, СвойствоОблачнойПодписи.ИдентификаторСервера);
КонецЕсли;
СвойствоОблачнойПодписи = ОбработкаЗаявленийАбонентаКлиентСервер.СведенияОблачнойПодписиЗаявления();
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
Если ТекущееСостояние.РежимВосстановления Тогда
СвойствоОблачнойПодписи.УчетнаяЗаписьДляВосстановления = ТекущееСостояние.Логин;
КонецЕсли;
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(ТекущееСостояние.УчетнаяЗаписьОблачнойПодписи);
Если ЗначениеЗаполнено(ТекущееСостояние.УчетнаяЗаписьОблачнойПодписи) Тогда
СвойствоОблачнойПодписи.УчетнаяЗапись = ТекущееСостояние.УчетнаяЗаписьОблачнойПодписи;
Иначе
СвойствоОблачнойПодписи.НовыйЛогин = ТекущееСостояние.Логин;
СвойствоОблачнойПодписи.НовыйЛогинПроверен = ТекущееСостояние.ЛогинПроверен;
СвойствоОблачнойПодписи.ИдентификаторСервера = ТекущееСостояние.ИдентификаторСервера;
СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически = СменитьКлючМобильногоПриложенияАвтоматически(СвойствоОблачнойПодписи.УчетнаяЗапись, ИспользоватьСуществующий(ЭтотОбъект), ПереиздатьСертификат);
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Истина;
КонецЕсли;
СвойствоОблачнойПодписи.ИсходнаяУчетнаяЗапись = СвойствоОблачнойПодписи.УчетнаяЗапись;
Иначе
СвойствоОблачнойПодписи.ИдентификаторСервера = ТекущееСостояние.ИдентификаторСервера;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СменитьКлючМобильногоПриложенияАвтоматически(УчетнаяЗапись, ИспользоватьСуществующий, ПереиздатьСертификат)
Результат = Ложь;
ДатаЗаявления = ТекущаяДатаСеанса();
Если НЕ ИспользоватьСуществующий
И ПереиздатьСертификат <> 0
И ЗначениеЗаполнено(УчетнаяЗапись) Тогда
ВсеНастройки = КриптографияЭДКО.ДополнительныеНастройкиОблачнойПодписи(УчетнаяЗапись);
Если ВсеНастройки.Существует Тогда
СрокДействия = ВсеНастройки.СрокДействияКлюча;
Иначе
СрокДействия = ДатаЗаявления;
КонецЕсли;
Результат = ДобавитьМесяц(ДатаЗаявления, 13) > СрокДействия;
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область ЗаполнениеИзДиагностики
&НаСервере
Процедура ПереопределитьГалкиНаОснованииВходящихФлаговМастера()
Если ТипЗнч(ВходящиеФлагиМастера) = Тип("Структура") Тогда
ПереопределитьГалкиНаОснованииВходящихФлаговМастера_ИзДиагностики();
ИначеЕсли ПриОткрытииЗапрошеноПродлениеСертификата
ИЛИ ПриОткрытииЗапрошеноПродлениеЛицензии Тогда
ПереопределитьГалкиНаОснованииВходящихФлаговМастера_ИзНастроекОбмена();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПереопределитьГалкиНаОснованииВходящихФлаговМастера_ИзНастроекОбмена()
Если ПриОткрытииЗапрошеноПродлениеСертификата Тогда
ПереиздатьСертификат = Рекомендовано;
ПереиздатьСертификатПриИзмененииНаСервере();
КонецЕсли;
Если ПриОткрытииЗапрошеноПродлениеЛицензии Тогда
ПродлитьЛицензиюНа1СОтчетность = Рекомендовано;
ПродлитьЛицензиюНа1СОтчетностьПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПереопределитьГалкиНаОснованииВходящихФлаговМастера_ИзДиагностики()
УстановитьФлаг =
ПереиздатьСертификат = НеТребуется
И (ВходящиеФлагиМастера.ПродлитьСертификат
ИЛИ ВходящиеФлагиМастера.ИзменитьРеквизитыПодключенияК1СОтчетности);
Если УстановитьФлаг Тогда
ПереиздатьСертификат = Рекомендовано;
ПереиздатьСертификатПриИзмененииНаСервере();
КонецЕсли;
Если ВходящиеФлагиМастера.ИзменитьРеквизитыПодключенияК1СОтчетности
И НЕ ИзменитьРеквизитыПодключенияК1СОтчетности Тогда
ИзменитьРеквизитыПодключенияК1СОтчетности = Истина;
ИзменитьРеквизитыПодключенияК1СОтчетностиПриИзмененииНаСервере();
КонецЕсли;
Если ВходящиеФлагиМастера.ПродлитьЛицензиюНа1СОтчетность
И НЕ ПродлитьЛицензиюНа1СОтчетность Тогда
ПродлитьЛицензиюНа1СОтчетность = Рекомендовано;
ПродлитьЛицензиюНа1СОтчетностьПриИзмененииНаСервере();
КонецЕсли;
Если ВходящиеФлагиМастера.Свойство("ПодключаемоеНаправление") Тогда
ВключитьНаправление(ВходящиеФлагиМастера.ПодключаемоеНаправление);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВключитьНаправление(ПодключаемоеНаправление)
ЗапрещеноМенятьНаправления = Мультирежим.ЭтоМультиРежим(УчетнаяЗапись) И НЕ ВладелецЭЦПЭтоАдмин;
Если ЗапрещеноМенятьНаправления Тогда
Возврат;
КонецЕсли;
Если ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ФНС И НЕ СдаватьВФНС Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
СдаватьВФНС = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ПФР И НЕ СдаватьВПФР
ИЛИ ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ФСС И НЕ СдаватьВФСС Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
СдаватьВПФР = Истина;
СдаватьВФСС = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ФСГС И НЕ СдаватьВРосстат Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
СдаватьВРосстат = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ФСРАР
И НЕ ПодатьЗаявкуНаСертификатДляФСРАР Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
ПодатьЗаявкуНаСертификатДляФСРАР = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.РПН
И НЕ ПодатьЗаявкуНаПодключениеРПН Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
ПодатьЗаявкуНаПодключениеРПН = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ФТС
И НЕ ПодатьЗаявкуНаПодключениеФТС Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
ПодатьЗаявкуНаПодключениеФТС = Истина;
ИначеЕсли ПодключаемоеНаправление = Перечисления.ТипыКонтролирующихОрганов.ЦБ И НЕ СдаватьВЦБ Тогда
ИзменитьСоставКонтролирующихОрганов = Истина;
СдаватьВЦБ = Истина;
КонецЕсли;
Если ИзменитьСоставКонтролирующихОрганов Тогда
ИзменитьСоставКонтролирующихОргановПриИзмененииНаСервере();
КонецЕсли;
ДобавитьНаправлениеВладельцу = Мультирежим.ЭтоМультиРежим(УчетнаяЗапись) И ВладелецЭЦПЭтоАдмин;
Если ДобавитьНаправлениеВладельцу Тогда
ИмяРеквизита = МультирежимКлиентСервер.РеквизитПоОргану(ПодключаемоеНаправление);
Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, ВладелецЭЦП);
Строка[ИмяРеквизита] = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ТелефонИЭлПочта
&НаКлиенте
Процедура ПоказатьФормуВыбораТелефонаИПочтыВОблаке()
ВыполняемоеОповещение = Новый ОписаниеОповещения(
"ПоказатьФормуВыбораТелефонаИПочтыВОблаке_Завершение",
ЭтотОбъект);
КонтекстЭДОКлиент.ПоказатьФормуВыбораТелефонаИПочтыВОблаке(ЭтотОбъект, ВыполняемоеОповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораТелефонаИПочтыВОблаке_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = "Телефон недоступен" Тогда
ОткрытьФормуИнструкцииПоСменеТелефона();
Возврат;
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуИнструкцииПоСменеТелефона()
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
ПараметрыФормы = Новый Структура("Сертификат, НовыйТелефон", Сертификат, ТелефонМобильныйДляПаролей);
ОткрытьФорму(
"ОбщаяФорма.ИзменениеНомераТелефона",
ПараметрыФормы,
Неопределено);
ПодключитьОбработчикОжидания("Подключаемый_ЗакрытьФормуСЗадержкой", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораТелефонаВКоробке()
ПараметрыФормы =
"ПолучатьСМСУведомления,
|ТелефонМобильный,
|ЭлектроннаяПочта";
ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы);
ДополнительныеПараметры.Вставить("ПараметрыФормы", ПараметрыФормы);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПоказатьФормуВыбораТелефонаВКоробке_Завершение",
ЭтотОбъект);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_СМС_ЛокальнаяУчетнаяЗапись",
ДополнительныеПараметры,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ТелефонМобильныйБезРазделителей(Телефон)
Возврат ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.ТелефонМобильныйБезРазделителей(Телефон);
КонецФункции
&НаКлиенте
Процедура ПоказатьФормуВыбораТелефонаВКоробке_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено ИЛИ НЕ Результат.Модифицированность Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ЭлектроннаяПочтаДоИзменения = ЭлектроннаяПочта;
ПараметрыФормы = Результат.ПараметрыФормы;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Результат, ПараметрыФормы, "ПараметрыФормы");
Если ЭлектроннаяПочтаДоИзменения <> ЭлектроннаяПочта Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПреобразоватьНомерТелефонаКМаскеСервер(НомерТелефона)
КодВСкобках = Сред(НомерТелефона, 2,3);
ПервыйБлокЧисел = Сред(НомерТелефона, 5,3);
ВторойБлокЧисел = Сред(НомерТелефона, 8,2);
ТретийБлокЧисел = Сред(НомерТелефона, 10,2);
Результат = "";
Если НЕ ПустаяСтрока(СтрЗаменить(НомерТелефона, "-", "")) Тогда
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"+7 (%1) %2-%3-%4",
КодВСкобках,
ПервыйБлокЧисел,
ВторойБлокЧисел,
ТретийБлокЧисел)
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ЗакрытьФормуСЗадержкой()
Если Открыта() Тогда
ПрограммноеЗакрытие = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДоступДляТокена(МастерДалее)
ЭтоЭПВОблакеИНеПереходВКоробку = ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ЭтоПереходВКоробку И КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча);
ДолговременныйТокен = ПредопределенноеЗначение("Перечисление.СпособыПодтвержденияКриптоопераций.ДолговременныйТокен");
ОтключитьПодтвержденияКриптоопераций =
НЕ ПроверенДоступДляТокена
И МастерДалее
И ЭтоЭПВОблакеИНеПереходВКоробку
И ПереиздатьСертификат
И НЕ ИзменитьНастройкиУведомлений
И СпособПодтвержденияКриптоопераций = ДолговременныйТокен
И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Если ОтключитьПодтвержденияКриптоопераций Тогда
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
МастерДалее = Ложь;
ПараметрыФормы = Новый Структура("ТолькоПроверка, СпособПодтвержденияКриптоопераций", Истина, СпособПодтвержденияКриптоопераций);
ОбработчикОповещения = Новый ОписаниеОповещения("ПроверитьДоступДляТокенаПослеПроверки", ЭтотОбъект);
ЭлектроннаяПодписьВМоделиСервисаКлиент.ОтключитьПодтвержденияКриптоопераций(Сертификат, ОбработчикОповещения, ПараметрыФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДоступДляТокенаПослеПроверки(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатВыбора) = Тип("Структура") Тогда
ПроверенДоступДляТокена = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВыбора, "Выполнено", Ложь);
Иначе
ПроверенДоступДляТокена = Ложь;
КонецЕсли;
Если ПроверенДоступДляТокена Тогда
ПриНажатииДалееНаОсновнойСтранице(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИнициализироватьПроверкиДляОблака(Форма)
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьПроверкиДляОблака(Форма);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтактыОблачнойПодписи(ТелефонИзменился = Ложь, ПочтаИзменилась = Ложь)
Если ТелефонИзменился ИЛИ НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.Телефон) Тогда
СвойствоОблачнойПодписи.Телефон = КриптографияЭДКОКлиентСервер.ТелефонПодтвержденияОпераций(ТелефонМобильный);
КонецЕсли;
Если ПочтаИзменилась ИЛИ НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.ЭлектроннаяПочта) Тогда
СвойствоОблачнойПодписи.ЭлектроннаяПочта = ЭлектроннаяПочта;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Отправка
#Область СравнениеРеквизитовСертификатаИЗаявления
&НаКлиенте
Процедура СравнитьРеквизитыСертификатов()
ОписаниеОповещения = Новый ОписаниеОповещения(
"СравнитьРеквизитыСертификатов_ПослеПолученияОтвета",
ЭтотОбъект);
КонтекстЭДОКлиент.СравнитьРеквизитыСертификатов(ЭтотОбъект, "Сертификат", ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыСертификатов_ПослеПолученияОтвета(Результат, ВходящийКонтекст) Экспорт
Если Результат.Выполнено Тогда
ЗалогироватьСертификатДокумента("СравнитьРеквизитыСертификатов_ПослеПолученияОтвета");
ПоказатьБубликОтправки();
ИначеЕсли Результат.Действие = НСтр("ru = 'В бумажном виде'") Тогда
ОтправитьВБумажномВиде();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ТолькоСменаТелефонаИлиПочтыДляПаролей
&НаКлиенте
Процедура ПодтвердитьПаролемСменуТелефона(Оповещение)
Сертификат = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Сертификат", Сертификат);
ПараметрыФормы.Вставить("Телефон", ?(ТелефонМобильныйДляПаролейИзменился(), ПроверкаТелефонДляПаролей.ИдентификаторПроверки, Неопределено));
ПараметрыФормы.Вставить("ЭлектроннаяПочта", ?(ЭлектроннаяПочтаДляПаролейИзменена(), ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки, Неопределено));
ОткрытьФорму(
"Обработка.ДокументооборотСКонтролирующимиОрганами.Форма.ВводВременногоПароля",
ПараметрыФормы,
ЭтаФорма,,,,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СменитьТелефонИлиПочтуБезОтправкиЗаявления()
Оповещение = Новый ОписаниеОповещения("ПослеПодтвержденияСменыТелефонаИПочты",
ЭтотОбъект);
ПодтвердитьПаролемСменуТелефона(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияСменыТелефонаИПочты(Результат, ВходящийКонтекст) Экспорт
Если Результат = КодВозвратаДиалога.ОК Тогда
ЭтотОбъект.Прочитать();
ЗаписатьСостояниеЗаявления();
ПоказатьРезультатОтправки();
КонецЕсли;
РазблокироватьКнопку();
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияСменыТелефона(Результат, Контекст) Экспорт
Если Результат = КодВозвратаДиалога.ОК Тогда
ЭтоАвтоматическаяОбработка = ТипЗнч(Контекст) = Тип("Структура")
И Контекст.Свойство("СостояниеОтправки")
И Контекст.СостояниеОтправки = "Заявление отправлено в автоматическую обработку";
Если ТипЗнч(Контекст) = Тип("Структура") Тогда
Контекст.ВыполняемоеОповещение.ДополнительныеПараметры.Вставить("ЭтоАвтоматическаяОбработка", ЭтоАвтоматическаяОбработка);
Контекст.ВыполняемоеОповещение.ДополнительныеПараметры.Вставить("ТелефонБылПодтвержден", Истина);
КонецЕсли;
КонтекстЭДОКлиент.СформироватьИОтправитьЗаявление(Контекст);
Иначе
ТекстОшибокОтправки = НСтр("ru = 'Изменение номера телефона не было подтверждено'");
ПоказатьРезультатОтправки();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура СформироватьИОтправитьЗаявление_СПодписанием()
ЗалогироватьВключаемыйСертификат("СформироватьИОтправитьЗаявление_СПодписанием1");
ИспользоватьСуществующий = ИспользоватьСуществующий(ЭтотОбъект);
Если ИспользоватьСуществующий И ПереиздатьСертификат И КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(ВключаемыйСертификат) Тогда
ТекущееМестоХранения = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(ВключаемыйСертификат);
МассивСертификатов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ВключаемыйСертификат);
НашлиСертификаты = КриптографияЭДКОСлужебныйВызовСервера.НайтиСертификатыОблачнойПодписи(МассивСертификатов, Ложь);
Если НашлиСертификаты.Сертификаты.Количество() > 0 Тогда
СвойстваТекущегоСертификата = НашлиСертификаты.Сертификаты[0];
Иначе
СвойстваТекущегоСертификата = Новый Структура("Отпечаток", ВключаемыйСертификат.Отпечаток);
КонецЕсли;
КриптографияЭДКОКлиентСервер.ЗаполнитьМестоХраненияКлюча(ТекущееМестоХранения, СвойстваТекущегоСертификата);
ИначеЕсли ИспользоватьСуществующий И ПереиздатьСертификат Тогда
СвойстваТекущегоСертификата = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.НайтиСертификатВХранилищеПоОтпечатку(ВключаемыйСертификат.Отпечаток);
Иначе
СвойстваТекущегоСертификата = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.ПолучитьСертификатПоОрганизации(Организация);
КонецЕсли;
ПропуститьПолучениеСертификата =
ЭтоУчетнаяЗаписьВМоделиСервиса И НЕ ИспользоватьСуществующий
ИЛИ ИспользоватьСуществующий И ВключаемыйСертификатОблачный
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча);
СохранитьСертификатВДокумент("СформироватьИОтправитьЗаявление_СПодписанием2");
Если ПропуститьПолучениеСертификата Тогда
СравнитьРеквизитыСертификатов();
Иначе
ПолучитьСертификатПередПодписанием();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьОшибкиОтправки(Результат) Экспорт
Если Результат.Свойство("ТекстОшибки") Тогда
ПолученныйТекстОшибокОтправки = Результат.ТекстОшибки;
ИначеЕсли Результат.Свойство("ОписаниеОшибки") Тогда
ПолученныйТекстОшибокОтправки = Результат.ОписаниеОшибки;
КонецЕсли;
Если ТекстОшибокОтправки <> ПолученныйТекстОшибокОтправки Тогда
ТекстОшибокОтправки = ПолученныйТекстОшибокОтправки;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление(СохранятьЗаявление = Истина) Экспорт
Если ЗапретитьИзменение Тогда
Возврат;
КонецЕсли;
ЭтотОбъект.Прочитать();
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
ОбработкаЗаявленийАбонента.СохранитьЗаявление_Очистка(ЭтотОбъект, НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.СохранитьЗаявление_ДанныеУЦ(ЭтотОбъект, НовыйДокументЗаявление);
СохранитьЗаявление_ДанныеОрганизации(НовыйДокументЗаявление);
СохранитьЗаявление_Владелец(НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.СохранитьЗаявление_СлужебныеРеквизиты(ЭтотОбъект, НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.СохранитьЗаявление_ГосОрганы(ЭтотОбъект, НовыйДокументЗаявление);
СохранитьЗаявление_ИзменившиесяРеквизитыВТЧ(НовыйДокументЗаявление);
СохранитьЗаявление_Флаги(НовыйДокументЗаявление);
СохранитьЗаявление_ЭДО(НовыйДокументЗаявление);
СохранитьЗаявление_ПрисоединенныеФайлы(НовыйДокументЗаявление, СохранятьЗаявление);
СохранитьЗаявление_Криптография(НовыйДокументЗаявление, СохранятьЗаявление);
СохранитьЗаявление_Документы(НовыйДокументЗаявление);
СохранитьЗаявление_ОблачнаяПодпись(НовыйДокументЗаявление);
СохранитьЗаявление_Пользователи(НовыйДокументЗаявление);
ОбработкаЗаявленийАбонента.УдалитьПробелы(НовыйДокументЗаявление);
НовыйДокументЗаявление.Записать();
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Пользователи(НовыйДокументЗаявление)
ОбработкаЗаявленийАбонента.СохранитьПользователей(ЭтотОбъект, НовыйДокументЗаявление);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьЗаявлениеКлиент(СохранятьЗаявление = Истина) Экспорт
СохранитьЗаявление(СохранятьЗаявление);
Оповестить("Запись_ЗаявлениеАбонентаСпецоператораСвязи", , ДокументЗаявление.Ссылка);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Документы(НовыйДокументЗаявление)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.СохранитьДокументыЗаявления(ЭтотОбъект, НовыйДокументЗаявление);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ДанныеОрганизации(НовыйДокументЗаявление)
НовыйДокументЗаявление.Организация = Организация;
НовыйДокументЗаявление.ТипОрганизации = ЭтоЮридическоеЛицо;
НовыйДокументЗаявление.ИНН = ИНН;
НовыйДокументЗаявление.КПП = ИтоговыеДанныеОрганизации_КПП();
НовыйДокументЗаявление.КраткоеНаименование = ИтоговыеДанныеОрганизации_КраткоеНаименование();
НовыйДокументЗаявление.ПризнакОбособленногоПодразделения = ПризнакОбособленногоПодразделения;
НовыйДокументЗаявление.ЭтоНотариусАдвокатИлиГКФХ = ЭтоНотариусАдвокатИлиГКФХ;
НовыйДокументЗаявление.АдресЮридический = АдресЮридическийЗначение;
НовыйДокументЗаявление.АдресЮридический_JSON = АдресЮридический_JSON;
НовыйДокументЗаявление.ТелефонОсновной = ИтоговыеДанныеОрганизации_ТелефонОсновной();
НовыйДокументЗаявление.ЭлектроннаяПочтаОрганизации = ИтоговыеДанныеОрганизации_ЭлектроннаяПочтаОрганизации();
НовыйДокументЗаявление.ЭтоБюджетополучатель = ЭтоБюджетополучатель;
Если НЕ ЭтоИностраннаяОрганизация И НЕ ЭтоНотариусАдвокатИлиГКФХ Тогда
НовыйДокументЗаявление.ОГРН = ИтоговыеДанныеОрганизации_ОГРН();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Владелец(НовыйДокументЗаявление)
ОбработкаЗаявленийАбонента.СохранитьВладельцаВЗаявление(
ЭтотОбъект,
НовыйДокументЗаявление,
ИтоговыеДанныеВладельца_ВладелецЭЦП(),
ИтоговыеДанныеВладельца_ВладелецЭЦПСНИЛС(),
ИтоговыеДанныеВладельца_ВладелецЭЦПИНН(),
ИтоговыеДанныеВладельца_ВладелецЭЦПДолжность(),
ИтоговыеДанныеВладельца_ВладелецЭЦППодразделение());
НовыйДокументЗаявление.ЭлектроннаяПочта = ИтоговыеДанныеВладельца_ЭлектроннаяПочта();
НовыйДокументЗаявление.ТелефонМобильный = ИтоговыеДанныеВладельца_ТелефонМобильный();
НовыйДокументЗаявление.ПолучатьСМСУведомления = ИтоговыеДанныеВладельца_ПолучатьСМСУведомления();
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Криптография(НовыйДокументЗаявление, СохранятьЗаявление)
СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление, СохранятьЗаявление, "СохранитьЗаявление_Криптография");
Если ВыбранноеМестоХраненияКлюча = Перечисления.МодельРаботыСКлючами.ВМоделиСервиса Тогда
НовыйДокументЗаявление.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoPro;
Иначе
НовыйДокументЗаявление.ТипКриптопровайдера = ВыбранноеМестоХраненияКлюча;
КонецЕсли;
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
НовыйДокументЗаявление.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoProDSS;
НовыйДокументЗаявление.МодельХраненияЗакрытогоКлюча = Перечисления.МодельХраненияЗакрытогоКлюча.ОблачнаяПодпись;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
НовыйДокументЗаявление.ТипКриптопровайдера = Перечисления.ТипыКриптоПровайдеров.CryptoPro;
НовыйДокументЗаявление.МодельХраненияЗакрытогоКлюча = Перечисления.МодельХраненияЗакрытогоКлюча.ВМоделиСервиса;
Иначе
НовыйДокументЗаявление.ТипКриптопровайдера = ВыбранноеМестоХраненияКлюча;
НовыйДокументЗаявление.МодельХраненияЗакрытогоКлюча = Перечисления.МодельХраненияЗакрытогоКлюча.ЛокальныйКлюч;
КонецЕсли;
НовыйДокументЗаявление.СпособПодтвержденияКриптоопераций = СпособПодтвержденияКриптоопераций;
НовыйДокументЗаявление.УчетнаяЗапись = УчетнаяЗапись;
НовыйДокументЗаявление.ПодписатьЭП = ЭтоЭлектронноеПодписание;
НовыйДокументЗаявление.ТребуетсяВстречаСПартнером = ТребуетсяВстречаСПартнером();
НовыйДокументЗаявление.ЭтоУдаленноеПереизданиеСертификата =
ОбработкаЗаявленийАбонентаКлиентСервер.ДоступенВыборСпособаПереизданияСертификата(ЭтотОбъект)
И ЭтоУдаленноеПереизданиеСертификата;
Если ЗначениеЗаполнено(СпособПолученияСертификата) И ПереиздатьСертификат Тогда
НовыйДокументЗаявление.СпособПолученияСертификата = СпособПолученияСертификата;
Иначе
НовыйДокументЗаявление.СпособПолученияСертификата = Перечисления.СпособПолученияСертификата.ИздатьНовый;
КонецЕсли;
НовыйДокументЗаявление.ВключитьЛицензиюКриптоПро = ВключатьЛицензиюКриптоПроВСертификат И ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат;
СохранитьЗаявление_ЭПВОблаке(НовыйДокументЗаявление);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление, СохранятьЗаявление, Действие)
Если СвойстваТекущегоСертификата <> Неопределено Тогда
ЗалогироватьСертификат(СвойстваТекущегоСертификата, Действие + "(СвойстваТекущегоСертификата)");
НовыйДокументЗаявление.Сертификат = Новый ХранилищеЗначения(СвойстваТекущегоСертификата);
ИначеЕсли ИспользоватьСуществующий(ЭтотОбъект) Тогда
ЗалогироватьВключаемыйСертификат(Действие);
НовыйДокументЗаявление.Сертификат = Новый ХранилищеЗначения(ВключаемыйСертификат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ПрисоединенныеФайлы(НовыйДокументЗаявление, СохранятьЗаявление)
Если СохранятьЗаявление Тогда
Если НовыйДокументЗаявление.ЭтоНовый() Тогда
СсылкаНаЗаявление = Документы.ЗаявлениеАбонентаСпецоператораСвязи.ПолучитьСсылку(Новый УникальныйИдентификатор);
Иначе
СсылкаНаЗаявление = НовыйДокументЗаявление.Ссылка;
КонецЕсли;
Если ЗначениеЗаполнено(ФайлСканПаспорт) Тогда
ПараметрыФайла = Новый Структура;
ПараметрыФайла.Вставить("Автор", Неопределено);
ПараметрыФайла.Вставить("ВладелецФайлов", СсылкаНаЗаявление);
ПараметрыФайла.Вставить("ИмяБезРасширения", ФайлСканПаспорт.ИмяБезРасширения);
ПараметрыФайла.Вставить("РасширениеБезТочки", ФайлСканПаспорт.Расширение);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное", Неопределено);
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ФайлСканПаспорт.Адрес);
НоваяСтрока = НовыйДокументЗаявление.ЭлектронныеДокументы.Добавить();
НоваяСтрока.Документ = "Паспорт";
НоваяСтрока.Файл = ПрисоединенныйФайл;
КонецЕсли;
Если НовыйДокументЗаявление.ЭтоНовый() Тогда
НовыйДокументЗаявление.УстановитьСсылкуНового(СсылкаНаЗаявление);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ЭПВОблаке(НовыйДокументЗаявление)
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = ВключаемыйСертификатОблачный;
ИначеЕсли ЭтоПереходВОблако И КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = Истина;
ИначеЕсли ЭтоПереходВКоробку Тогда
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = Ложь;
Иначе
НовыйДокументЗаявление.ЭлектроннаяПодписьВМоделиСервиса = КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча);
КонецЕсли;
НовыйДокументЗаявление.ИдентификаторПроверкиТелефонаДляПаролей = ПроверкаТелефонДляПаролей.ИдентификаторПроверки;
НовыйДокументЗаявление.ИдентификаторПроверкиЭлектроннойПочтыДляПаролей = ПроверкаЭлектроннаяПочтаДляПаролей.ИдентификаторПроверки;
НовыйДокументЗаявление.ТелефонМобильныйДляАвторизации = ТелефонМобильныйДляПаролей;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ИзменившиесяРеквизитыВТЧ(НовыйДокументЗаявление)
НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Очистить();
Для каждого СтрокаТаблицыПодтверждения Из ТаблицаДанныхЗаявленияНаПодключение Цикл
Если СтрокаТаблицыПодтверждения.ЭтотПараметрИзменился И СтрокаТаблицыПодтверждения.ВыделятьСтрокуЖелтым Тогда
Если ТипЗнч(СтрокаТаблицыПодтверждения.ИзмененныйРеквизит) <> Тип("Строка") Тогда
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = СтрокаТаблицыПодтверждения.ИзмененныйРеквизит;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПереиздатьСертификат И (ЭтоСертификатДругогоУЦИсходный ИЛИ ЭтоСертификатДругогоУЦ) Тогда
НоваяСтрока = НовыйДокументЗаявление.ИзменившиесяРеквизитыВторичногоЗаявления.Добавить();
НоваяСтрока.ИзмененныйРеквизит = Перечисления.ПараметрыПодключенияК1СОтчетности.УдостоверяющийЦентр;
Если ЭтоСертификатДругогоУЦ Тогда
НовыйДокументЗаявление.ЭтоСертификатДругогоУЦ = ЭтоСертификатДругогоУЦ;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_Флаги(НовыйДокументЗаявление)
Значения = Метаданные.Перечисления.ФлагиЗаявленияНаИзменение.ЗначенияПеречисления;
Для каждого Значение Из Значения Цикл
Имя = Значение.Имя;
Если ЭтотОбъект[Имя] Тогда
ОбработкаЗаявленийАбонента.СохранитьФлаг(НовыйДокументЗаявление, Имя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ЭДО(НовыйДокументЗаявление)
НовыйДокументЗаявление.ПодключитьЭДО = Ложь;
НовыйДокументЗаявление.ПереиздатьСертификатЭДО = Ложь;
НовыйДокументЗаявление.НастройкиЭДО = Неопределено;
Если ПодключитьЭДО И Элементы.ГруппаПодключитьЭДО.Видимость Тогда
НовыйДокументЗаявление.ПодключитьЭДО = Истина;
НовыйДокументЗаявление.НастройкиЭДО = НастройкиДляЭДО;
КонецЕсли;
Если ПереиздатьСертификатЭДО И Элементы.ФлагПереиздатьСертификатЭДО.Видимость Тогда
НовыйДокументЗаявление.ПереиздатьСертификатЭДО = Истина;
НовыйДокументЗаявление.НастройкиЭДО = НастройкиДляЭДО;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПрисоединитьФайлЗаявления(АдресТекстаОтправляемогоЗаявления, Имя, Расширение)
Возврат ОбработкаЗаявленийАбонента.ПрисоединитьФайлЗаявления(ЭтотОбъект, АдресТекстаОтправляемогоЗаявления, Имя, Расширение);
КонецФункции
&НаКлиенте
Процедура ЗаписатьТОГСВОрганизацию()
Если ДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Отправлено")
И ИзменитьСоставКонтролирующихОрганов
И ПолучателиФСГС.Количество() = 1
И СокрЛП(ПолучателиФСГС[0].КодПолучателя) <> ДанныеОрганизации.КодОрганаФСГС Тогда
ЭлектронныйДокументооборотСКонтролирующимиОрганамиВызовСервера.ЗадатьКодОрганаФСГСВОрганизации(
Организация,
СокрЛП(ПолучателиФСГС[0].КодПолучателя));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОЗавершенииОтправки(Результат)
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
Оповестить("Завершение отправки заявления", Результат, ДокументЗаявление.Ссылка);
ЭтаФорма.Активизировать();
КонецПроцедуры
&НаКлиенте
Процедура АнализРезультатовОтправки(Результат, ДополнительныеПараметры) Экспорт
ЭтотОбъект.Прочитать();
ПрочитатьОшибкиОтправки(Результат);
ОповеститьОЗавершенииОтправки(Результат);
ЗаписатьТОГСВОрганизацию();
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура")
И ДополнительныеПараметры.Свойство("ТелефонБылПодтвержден") Тогда
Если ДополнительныеПараметры.Свойство("ЭтоАвтоматическаяОбработка")
И ДополнительныеПараметры.ЭтоАвтоматическаяОбработка Тогда
Элементы.ГруппаПодсказок1.Видимость = Ложь;
Элементы.ПодсказкаПоРезультатам.Заголовок = НСтр("ru = 'Ваше заявление успешно отправлено в автоматическую обработку'");
КонецЕсли;
КонецЕсли;
ПоказатьРезультатОтправки();
КонецПроцедуры
&НаСервере
Процедура НачатьОпределениеТекстаЗаявленияНаСервере(Алгоритм)
АдресЗаданияПоПолучениюТекстаЗаявления = ПоместитьВоВременноеХранилище("", ЭтаФорма.УникальныйИдентификатор);
ДополнительныеПараметры = Новый Массив();
ДополнительныеПараметры.Добавить(АдресЗаданияПоПолучениюТекстаЗаявления);
ДополнительныеПараметры.Добавить(ДокументЗаявление.Ссылка);
ДополнительныеПараметры.Добавить(Алгоритм);
ФоновыеЗадания.Выполнить("ЭлектронныйДокументооборотСКонтролирующимиОрганами.НачатьОпределениеТекстаЗаявления", ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьБубликОтправки()
ПодключитьОбработчикОжидания("Подключаемый_ПоказатьБубликОтправки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПоказатьБубликОтправки()
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Заявление", ДокументЗаявление.Ссылка);
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_ОтправкаЗаявления", ДополнительныеПараметры, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НачатьОпределениеТекстаЗаявления()
АлгоритмКонтейнераКлючей = КонтекстЭДОКлиент.ЗаявлениеОпределитьАлгоритмДляСозданияКонтейнераКлючей(ДокументЗаявление);
НачатьОпределениеТекстаЗаявленияНаСервере(АлгоритмКонтейнераКлючей);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьСостояниеЗаявления()
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
НовыйДокументЗаявление.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявленияАбонентаСпецоператораСвязи.Одобрено");
НовыйДокументЗаявление.НастройкаЗавершена = Истина;
НовыйДокументЗаявление.Записать();
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
КонецПроцедуры
&НаКлиенте
Процедура СформироватьИОтправитьЗаявление()
Если ЭтоУдаленноеПереизданиеСертификата Тогда
Если НужноПредложитьСвязатьсяСПартнером() Тогда
ПредложитьСвязатьсяСПартнером();
Иначе
СравнитьРеквизитыПоЕГРЮЛпередПереизданием();
КонецЕсли;
Иначе
СформироватьИОтправитьЗаявление_ПослеПолученияБланковЗаявлений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредложитьСвязатьсяСПартнером()
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПредложитьСвязатьсяСПартнером_Завершение",
ЭтотОбъект);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("СертификатДействителенПоМестноеВремя", СертификатДействителенПоМестноеВремя);
ДополнительныеПараметры.Вставить("СвойстваСертификата", СвойстваСертификата);
ОткрытьФорму(
"Документ.ЗаявлениеАбонентаСпецоператораСвязи.Форма.ПроконсультируйтесьСОбслуживающейОрганизацией",
ДополнительныеПараметры,,,,,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПредложитьСвязатьсяСПартнером_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = "Продолжить" Тогда
СравнитьРеквизитыПоЕГРЮЛпередПереизданием();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СравнитьРеквизитыПоЕГРЮЛпередПереизданием()
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьСерийныйНомер",
ЭтотОбъект);
СравнитьРеквизитыПоЕГРЮЛ(ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Функция СерийныйНомерДляПодписания()
Текст = НРег(СтрЗаменить(СерийныйНомер, " ", ""));
Адрес = ОбработкаЗаявленийАбонента.ТекстВАдресДляПодписания(Текст, УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
&НаКлиенте
Процедура ПодписатьСерийныйНомер(Результат = Неопределено, ВходящийКонтекст = Неопределено) Экспорт
Оповещение = Новый ОписаниеОповещения("ПодписатьСерийныйНомер_ПослеПодписания", ЭтотОбъект);
КриптографияЭДКОКлиент.ПодписатьPKCS7(
Оповещение,
СвойстваСертификата,
СерийныйНомерДляПодписания(),
Истина,
ПоместитьВоВременноеХранилище(, УникальныйИдентификатор),
Ложь);
КонецПроцедуры
&НаСервере
Функция НужноПредложитьСвязатьсяСПартнером()
Предложить =
ОбработкаЗаявленийАбонентаВызовСервера.ОтправкаРаспискиМожетВыпастьНаНерабочиеДни()
ИЛИ ОбработкаЗаявленийАбонентаВызовСервера.СертификатСкороИстекает(СертификатДействителенПоМестноеВремя);
Возврат Предложить;
КонецФункции
&НаКлиенте
Процедура ПодписатьСерийныйНомер_ПослеПодписания(Результат, ВходящийКонтекст) Экспорт
Если НЕ Результат.Выполнено Тогда
ТекстОшибки = Результат.ОписаниеОшибки;
ПоказатьОшибкуПолученияБланкаДЛ();
Иначе
Успешно = ПолучитьБланкиИНомерЗаявленияИзАЦУЦ(Результат.ФайлПодписи);
Если Успешно Тогда
СохранитьБланки_и_ИД_ДЛ();
СформироватьИОтправитьЗаявление_ПослеПолученияБланковЗаявлений();
Иначе
ПоказатьОшибкуПолученияБланкаДЛ();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОшибкуПолученияБланкаДЛ()
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПоказатьОшибкуПолученияБланкаДЛ_Завершение",
ЭтотОбъект);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ТекстОшибки", ТекстОшибки);
ОткрытьФорму(
"Документ.ЗаявлениеАбонентаСпецоператораСвязи.Форма.НеУдалосьПолучитьБланкиДЛ",
ДополнительныеПараметры,
ЭтотОбъект,,,,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОшибкуПолученияБланкаДЛ_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = "Повторить" Тогда
СформироватьИОтправитьЗаявление();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьИОтправитьЗаявление_ПослеПолученияБланковЗаявлений()
Если ЭтоИзменениеПользователейБезОтправкиЗаявления() Тогда
РазблокироватьКнопку();
ОдобритьЗаявлениеБезОтправки();
ПоказатьРезультатОтправки();
ИначеЕсли ЭтоТолькоСменаТелефонаИлиПочтыВОблаке() Тогда
СменитьТелефонИлиПочтуБезОтправкиЗаявления()
ИначеЕсли ЭтоЭлектронноеПодписание Тогда
СформироватьИОтправитьЗаявление_СПодписанием();
Иначе
ПоказатьБубликОтправки();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СертификатПросрочен(Форма)
Просрочен = ЗначениеЗаполнено(Форма.СертификатДействителенПо)
И НачалоДня(Форма.СертификатДействителенПо) < НачалоДня(Форма.ТекущаяДатаСервер);
Возврат Просрочен
КонецФункции
&НаСервере
Функция СертификатНедействителен(Форма)
Если СвойстваСертификата = Неопределено Тогда
Возврат Ложь;
Иначе
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.СертификатНедействителен(
СвойстваСертификата.Поставщик,
СвойстваСертификата.ДействителенС);
КонецЕсли;
КонецФункции
&НаСервере
Функция ВозможностьПодписания()
ВозможноЭлектронное = Ложь;
ВозможноБумажное = Истина;
ОписаниеОшибки = "";
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
ОписаниеОшибки = НСтр("ru = 'Обязательно при использовании сертификата из другой программы'");
ИначеЕсли ИзменилисьНастрокиDSS() Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
ОписаниеОшибки = НСтр("ru = 'Обязательно при изменении настроек DSS'");
Иначе
Если НЕ СертификатДоступен Тогда
ОписаниеОшибки = НСтр("ru = 'Невозможно при недоступном сертификате'");
ИначеЕсли СертификатПросрочен(ЭтотОбъект) Тогда
ОписаниеОшибки = НСтр("ru = 'Недоступно при истекшем сертификате'");
ИначеЕсли СертификатНедействителен(ЭтотОбъект) Тогда
ОписаниеОшибки = НСтр("ru = 'В связи с истечением срока аккредитации УЦ АО ""Калуга Астрал"" ваш сертификат больше нельзя использовать для подписания'");
ИначеЕсли ТипКриптопровайдераИзменился И НЕ ЭтоПереходНаЛокальнуюКриптографиюВоФреше() Тогда
ОписаниеОшибки = НСтр("ru = 'Недоступно при изменении криптопровайдера'");
ИначеЕсли ЭлПодписаниеНевозможно() Тогда
Реквизиты = РеквизитыПрепятствующиеЭлПодписанию();
Реквизиты = СтрСоединить(Реквизиты, Символы.ПС);
ОписаниеОшибки = НСтр("ru = 'Подписание электронной подписью невозможно, т.к. изменился ключевой реквизит сертификата:'") + Символы.ПС + Реквизиты;
ИначеЕсли ПереиздатьСертификат И ВозможноБесшовноеПолучениеСертификатаВДУЦ И НЕ ЭтоУдаленноеПереизданиеСертификата Тогда
ОписаниеОшибки = ОбработкаЗаявленийАбонентаКлиентСервер.ОшибкаПриПолученииСертификатаЧерезДУЦ();
ИначеЕсли МультирежимКлиентСервер.ЭтоПодключениеМультирежима(ЭтотОбъект) Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
ОписаниеОшибки = НСтр("ru = 'Включение многопользовательского режима в целях безопасности требует эл. подписания'");
ИначеЕсли МультирежимКлиентСервер.ЭтоОтключениеМультирежима(ЭтотОбъект) Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
ОписаниеОшибки = НСтр("ru = 'Отключение многопользовательского режима в целях безопасности требует эл. подписания'");
ИначеЕсли ТребуетЭлПодписанияВМультирежиме() Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
Реквизиты = РеквизитыТребующиеЭлПодписанияВМультирежиме();
Реквизиты = СтрСоединить(Реквизиты, Символы.ПС);
ОписаниеОшибки = НСтр("ru = 'В многопользовательском режиме в целях безопасности требуется подписание, поскольку изменились:'") + Символы.ПС + Реквизиты;
ИначеЕсли ОбработкаЗаявленийАбонентаКлиентСервер.ДоступенВыборСпособаПереизданияСертификата(ЭтотОбъект)
И ЭтоУдаленноеПереизданиеСертификата Тогда
ВозможноЭлектронное = Истина;
ВозможноБумажное = Ложь;
ОписаниеОшибки = НСтр("ru = 'Удаленное переиздание сертификата требует обязательного подписания эл. подписью'");
ИначеЕсли ТребуетсяВстречаСПартнером() Тогда
ВозможноЭлектронное = Истина;
Реквизиты = РеквизитыТребующиеВстречиСПартнером();
Если Реквизиты.Количество() = 0 И НЕ ЭтоЭлектронноеПодписание Тогда
ОписаниеОшибки = НСтр("ru = 'Потребуется встреча с партнером для оформления документов, поскольку выбрана отправка без подписания'");
Иначе
Реквизиты = СтрСоединить(Реквизиты, Символы.ПС);
ОписаниеОшибки = НСтр("ru = 'Потребуется встреча с партнером для оформления документов, поскольку изменились:'") + Символы.ПС + Реквизиты;
КонецЕсли;
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ВозможноЭлектронное = Истина;
МассивРеквизитов = ИзмененныеНастройкиОблачнойПодписи();
Если МассивРеквизитов.Количество() > 0 И НЕ СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
ВозможноБумажное = Ложь;
КонецЕсли;
Иначе
ВозможноЭлектронное = Истина;
КонецЕсли;
КонецЕсли;
Если НЕ ВозможноБумажное Тогда
ПереключитьНаЭлектронноеПодписание(ЭтотОбъект);
КонецЕсли;
Если НЕ ВозможноЭлектронное Тогда
ПереключитьНаБумажноеПодписание(ЭтотОбъект);
КонецЕсли;
Результат = Новый Структура();
Результат.Вставить("ВозможноЭлектронное", ВозможноЭлектронное);
Результат.Вставить("ВозможноБумажное", ВозможноБумажное);
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
Возврат Результат;
КонецФункции
&НаСервере
Функция ЭтоПереходНаЛокальнуюКриптографиюВоФреше()
Возврат
ИзменитьМестоХранения
И ЭтаУчетнаяЗаписьБылаСделанаДляОблака
И ДоступнаЭлектроннаяПодписьВМоделиСервиса
И ЭтоПереходВКоробку;
КонецФункции
&НаСервере
Функция ТребуетсяВстречаСПартнером()
Реквизиты = РеквизитыТребующиеВстречиСПартнером();
ТребуетсяВстреча = Реквизиты.Количество() > 0 И НЕ ИспользоватьСуществующий(ЭтотОбъект);
Возврат ТребуетсяВстреча ИЛИ НЕ ЭтоЭлектронноеПодписание;
КонецФункции
&НаСервере
Функция ЭлПодписаниеНевозможно()
Реквизиты = РеквизитыПрепятствующиеЭлПодписанию();
Возврат Реквизиты.Количество() > 0;
КонецФункции
&НаСервере
Функция РеквизитыТребующиеВстречиСПартнером()
Реквизиты = РеквизитыПоУсловию("ТребуетВстречиСПартнером", Требует);
Возврат Реквизиты;
КонецФункции
&НаСервере
Функция РеквизитыПрепятствующиеЭлПодписанию()
Возврат РеквизитыПоУсловию("ПрепятствуетЭлПодписанию", Препятствует);
КонецФункции
&НаСервере
Функция ТребуетЭлПодписанияВМультирежиме()
Если НЕ ЭтоМногопользовательскийРежим(ЭтотОбъект) Тогда
Возврат Ложь;
КонецЕсли;
Реквизиты = РеквизитыТребующиеЭлПодписанияВМультирежиме();
ТребуетсяПодписание = Реквизиты.Количество() > 0
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
И НЕ ПереиздатьСертификат;
Возврат ТребуетсяПодписание;
КонецФункции
&НаСервере
Функция РеквизитыТребующиеЭлПодписанияВМультирежиме()
Возврат РеквизитыПоУсловию("ТребуетЭлПодписания", Требует);
КонецФункции
&НаСервере
Функция РеквизитыПоУсловию(ИмяРеквизита, Значение)
РеквизитыПоУсловию = Новый Массив;
ВсеРеквизиты = Новый Массив;
Реквизиты = ИзмененныеРеквизитыВладельца(Истина, Истина);
ДобавитьВМассив(ВсеРеквизиты, Реквизиты);
Реквизиты = ИзмененныеРеквизитыОрганизации(Истина, Истина);
ДобавитьВМассив(ВсеРеквизиты, Реквизиты);
Реквизиты = ИзмененныеНастройкиПользователей(Истина);
ДобавитьВМассив(ВсеРеквизиты, Реквизиты);
Реквизиты = ИзмененныеНаправления(Истина);
ДобавитьВМассив(ВсеРеквизиты, Реквизиты);
Реквизиты = ИзмененныеРеквизитыУведомлений(Истина);
ДобавитьВМассив(ВсеРеквизиты, Реквизиты);
Для каждого ТекущийРеквизит Из ВсеРеквизиты Цикл
Если ТекущийРеквизит[ИмяРеквизита] = Значение Тогда
РеквизитыПоУсловию.Добавить("- " + ТекущийРеквизит.Представление);
КонецЕсли;
КонецЦикла;
Возврат РеквизитыПоУсловию;
КонецФункции
&НаСервере
Процедура ДобавитьВМассив(Массив, Добавляемое)
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Массив, Добавляемое);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьСертификатПередПодписанием()
Отпечаток = СвойстваТекущегоСертификата.Отпечаток;
Если ТипЗнч(Отпечаток) = Тип("ДвоичныеДанные") Тогда
Отпечаток = НРег(ПолучитьHexСтрокуИзДвоичныхДанных(Отпечаток));
Иначе
Отпечаток = НРег(Отпечаток);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Отпечаток", Отпечаток);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьЗаявлениеИОтправить_ПослеПоискаСертификатаПоОтпечатку",
ЭтотОбъект,
ДополнительныеПараметры);
КриптографияЭДКОКлиент.ПолучитьСертификаты(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодписатьЗаявлениеИОтправить_ПослеПоискаСертификатаПоОтпечатку(Результат, ВходящийКонтекст) Экспорт
Найден = Ложь;
Если Результат.Выполнено Тогда
Для каждого Сертификат Из Результат.Сертификаты Цикл
Если Сертификат.Отпечаток = ВходящийКонтекст.Отпечаток Тогда
Найден = Истина;
СвойстваСертификата = Сертификат;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Найден Тогда
ЗалогироватьСертификат(СвойстваСертификата, "ПодписатьЗаявлениеИОтправить_ПослеПоискаСертификатаПоОтпечатку(СвойстваСертификата)");
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПодписатьЗаявлениеИОтправить_ПослеПолученияBase64",
ЭтотОбъект,
СвойстваСертификата);
КриптографияЭДКОКлиент.ЭкспортироватьСертификатВBase64(ОписаниеОповещения, СвойстваСертификата, Ложь);
Иначе
Если НЕ Результат.Свойство("ОписаниеОшибки")
ИЛИ Результат.Свойство("ОписаниеОшибки") И НЕ ЗначениеЗаполнено(Результат.ОписаниеОшибки) Тогда
Текст = НСтр("ru = 'На компьютере не удалось найти сертификат, которым выполняется подписание'");
Результат.Вставить("ОписаниеОшибки", Текст);
КонецЕсли;
СообщитьОНевозможностиПодписания(Результат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АдресТаблицыСравненияРеквизитов() Экспорт
ТаблицаЗначенийСравненияРеквизитов = РеквизитФормыВЗначение("ТаблицаСравненияРеквизитов");
Возврат ПоместитьВоВременноеХранилище(ТаблицаЗначенийСравненияРеквизитов, Новый УникальныйИдентификатор);
КонецФункции
&НаСервере
Функция СохранитьСертификатВДокумент(Действие) Экспорт
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
СохранитьЗаявление_СохранитьСертификат(НовыйДокументЗаявление, Истина, Действие);
НовыйДокументЗаявление.Записать();
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
КонецФункции
&НаКлиенте
Процедура СообщитьОНевозможностиПодписания(Результат)
Оповещение = Новый ОписаниеОповещения("СообщитьОНевозможностиПодписания_Завершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Продление с использованием электронной подписи невозможно по причине:
|%1
|
|Отправить заявление без подписания?'");
ТекстВопроса = СтрШаблон(ТекстВопроса, Результат.ОписаниеОшибки);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОНевозможностиПодписания_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ОтправитьВБумажномВиде();
Иначе
РазблокироватьКнопку();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьВБумажномВиде() Экспорт
ПереключитьНаБумажноеПодписание(ЭтотОбъект);
УправлениеФормой();
КоманднаяПанельМастерДалее();
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеИзКонтейнера()
ИдентификаторАбонента = КонтекстЭДОКлиент.ИдентификаторАбонентаПоОрганизации(Организация);
ОписаниеОповещения = Новый ОписаниеОповещения("АнализРезультатовОтправки", ЭтотОбъект, Новый Структура);
Контекст = КонтекстЭДОКлиент.ПараметрыПроцедурыСформироватьИОтправитьЗаявление();
Контекст.ДокументЗаявление = ДокументЗаявление;
Контекст.ИдентификаторАбонента = ИдентификаторАбонента;
Контекст.ВызовИзМастераПодключенияК1СОтчетности = Истина;
Контекст.ВыполняемоеОповещение = ОписаниеОповещения;
Контекст.АдресТекстаОтправленногоЗаявления = АдресТекстаОтправляемогоЗаявления;
Контекст.ПрисоединенныйФайлЗаявления = ПрисоединенныйФайлЗаявления;
Контекст.ФормироватьЗакрытыйКлючИЗапросНаСертификат = КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча)
И НЕ ИспользоватьСуществующий(ЭтотОбъект)
И ПереиздатьСертификат <> НеТребуется
ИЛИ КонтекстЭДОКлиент.ФормироватьЗапросНаСертификатОблачнойПодписи(МестоХраненияКлюча)
И ПереиздатьСертификат <> НеТребуется;
Если ВключатьЛицензиюКриптоПроВСертификат И ПоказыватьФлагВключатьЛицензиюКриптоПроВСертификат Тогда
Контекст.OIDЛицензииКриптоПро = OIDЛицензииКриптоПро;
КонецЕсли;
Если НужноПодтвердитьПаролемСменуТелефона() Тогда
Оповещение = Новый ОписаниеОповещения(
"ПослеПодтвержденияСменыТелефона",
ЭтотОбъект,
Контекст);
ПодтвердитьПаролемСменуТелефона(Оповещение);
Иначе
ЗалогироватьСертификатДокумента("ОтправитьЗаявлениеИзКонтейнера");
КонтекстЭДОКлиент.СформироватьИОтправитьЗаявление(Контекст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтправитьЗаявлениеПослеПоказаБублика() Экспорт
ОтправитьЗаявлениеПослеПоказаБублика();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьТекстЗаявления() Экспорт
Если ЭтоАдресВременногоХранилища(АдресЗаданияПоПолучениюТекстаЗаявления) Тогда
Результат = ПолучитьИзВременногоХранилища(АдресЗаданияПоПолучениюТекстаЗаявления);
Если ЗначениеЗаполнено(Результат) Тогда
ОтключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления");
Если Результат.Выполнено Тогда
ТекстОтправляемогоЗаявления = Результат.ТекстОтправляемогоЗаявления;
АдресТекстаОтправляемогоЗаявления = ПоместитьВоВременноеХранилище(ТекстОтправляемогоЗаявления, Новый УникальныйИдентификатор);
ПрисоединенныйФайлЗаявления = ПрисоединитьФайлЗаявления(АдресТекстаОтправляемогоЗаявления, "Заявление_на_изменение", "xml");
ОтправитьЗаявлениеИзКонтейнера();
Иначе
АнализРезультатовОтправки(Результат, Неопределено);
РазблокироватьКнопку();
КонецЕсли;
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
КонецЕсли;
Иначе
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьТекстЗаявления", 1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьЗаявлениеИзВладельца() Экспорт
ПодключитьОбработчикОжидания("Подключаемый_ОтправитьЗаявлениеПослеПоказаБублика", 0.1, Истина);
КонецПроцедуры
&НаСервере
Процедура СохранитьЗаявление_ОблачнаяПодпись(НовыйДокументЗаявление)
НовыйДокументЗаявление.ПараметрыПодключенияОблачнойПодписи.Очистить();
Если НЕ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "УчетнаяЗапись", СвойствоОблачнойПодписи.УчетнаяЗапись);
Если НЕ ИзменитьМестоХранения Тогда
Возврат;
КонецЕсли;
Если СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "СоздатьНовуюУчетнуюЗапись", СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "Логин", СвойствоОблачнойПодписи.НовыйЛогин);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "ИдентификаторСервера", СвойствоОблачнойПодписи.ИдентификаторСервера);
Иначе
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "СменитьКлючМобильногоПриложения", СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложения);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "СменитьКлючМобильногоПриложенияАвтоматически", СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "СменитьПароль", СвойствоОблачнойПодписи.СменитьПароль);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "ПовторнаяОтправкаКлючаМобильногоПриложения", СвойствоОблачнойПодписи.ОтправкаКлючаМобильногоПриложения);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "ПовторнаяОтправкаКодаАвторизации", СвойствоОблачнойПодписи.ОтправкаКодаАктивации);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "Телефон", СвойствоОблачнойПодписи.Телефон);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьПараметрПодключения(НовыйДокументЗаявление, "ЭлектроннаяПочта", СвойствоОблачнойПодписи.ЭлектроннаяПочта);
КонецПроцедуры
&НаСервере
Функция ЗалогироватьВключаемыйСертификат(Действие) Экспорт
ЗалогироватьСертификат(ВключаемыйСертификат, Действие + "(ВключаемыйСертификат)");
КонецФункции
&НаСервере
Процедура ЗалогироватьСертификатДокумента(Действие)
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
СертификатИзЗаявления = НовыйДокументЗаявление.Сертификат.Получить();
ОбработкаЗаявленийАбонента.ЗалогироватьСертификат(СертификатИзЗаявления, Действие + "(Заявление.Сертификат)");
КонецПроцедуры
&НаСервере
Процедура ЗалогироватьСертификат(СохраняемыйСертификат, Действие)
ОбработкаЗаявленийАбонента.ЗалогироватьСертификат(СохраняемыйСертификат, Действие);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция РодительФлага() Экспорт
Группы = Новый Массив;
Группы.Добавить(Элементы.РамкаОрганизации);
Группы.Добавить(Элементы.ГруппаИзменитьРеквизитыПодключенияК1СОтчетности);
ГруппаРодитель = ОбработкаЗаявленийАбонента.РодительДобавляемогоФлага(Группы);
Возврат ГруппаРодитель;
КонецФункции
&НаКлиенте
Процедура ПоказатьИзменившиесяРеквизиты(ИзмененныеРеквизиты, ЗаголовокФормы)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ИзмененныеРеквизиты", ИзмененныеРеквизиты);
ДополнительныеПараметры.Вставить("Заголовок", ЗаголовокФормы);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.Мастер_СравнениеРеквизитовЗаявления",
ДополнительныеПараметры,
ЭтотОбъект,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПереключитьНаБумажноеПодписание(Форма)
Форма.СпособПодписания = 2;
Форма.ЭтоЭлектронноеПодписание = Ложь;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПереключитьНаЭлектронноеПодписание(Форма)
Форма.СпособПодписания = 1;
Форма.ЭтоЭлектронноеПодписание = Истина;
КонецПроцедуры
&НаСервере
Процедура СброситьГалкиНедоступныхНастроекПриИспользованииСуществующего()
ИзменитьНастройкиУведомлений = ВключаемыйСертификатОблачный;
ВключатьЛицензиюКриптоПроВСертификат = Ложь;
ИзменитьМестоХранения = ИзменилосьМестоХранения(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСпособаПолученияСертификата(ОпределятьМестоХранения)
ПриИзмененииВключаемогоСертификатаСервер(ОпределятьМестоХранения);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВключаемогоСертификатаСервер(ОпределятьМестоХранения)
Если ИспользоватьСуществующий(ЭтотОбъект) Тогда
ПриИзмененииВключаемогоСертификатаСервер_ПриИспользованииСуществующего();
Иначе
ПриИзмененииВключаемогоСертификатаСервер_ПриИспользованииНового(ОпределятьМестоХранения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВключаемогоСертификатаСервер_ПриИспользованииНового(ОпределятьМестоХранения)
СравнитьРеквизитыОрганизацииСИсходными();
Если ОпределятьМестоХранения Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьВыбранноеМестоХраненияКлюча(ЭтотОбъект);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьИзменениеВМестеХраненияКлючей(ЭтотОбъект);
Если ПереиздатьСертификат Тогда
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
Если НЕ ЭтоОблако(ЭтотОбъект) И НЕ ЭтоОблачнаяПодпись(ЭтотОбъект) Тогда
ОбработкаЗаявленийАбонентаКлиентСервер.ПроверитьНеобходимостьУстановкиГалки_ВключатьЛицензиюКриптоПроВСертификат(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВключаемогоСертификатаСервер_ПриИспользованииСуществующего()
СравнитьРеквизитыОрганизацииСИсходными();
Если ВключаемыйСертификатОблачный Тогда
ВыбранноеМестоХраненияКлюча = ПредопределенноеЗначение("Перечисление.МодельРаботыСКлючами.ВМоделиСервиса");
ИначеЕсли КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ВыбранноеМестоХраненияКлюча = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoProDSS");
Иначе
ВыбранноеМестоХраненияКлюча = ОбработкаЗаявленийАбонентаКлиентСервер.ВыбранныйКриптопровайдер(ЭтотОбъект);
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.ОпределитьИзменениеВМестеХраненияКлючей(ЭтотОбъект);
СброситьГалкиНедоступныхНастроекПриИспользованииСуществующего();
ПереиздатьСертификат = Рекомендовано;
ПереключитьНаЭлектронноеПодписание(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИзменившиесяРеквизиты(
ИзменившийсяРеквизит,
РеквизитИзменился,
ИзмененныеРеквизиты,
Было = Неопределено,
Стало = Неопределено,
ТребуетПереизданияСертификата = Ложь,
ТребуетВстречиСПартнером = Ложь,
ПрепятствуетЭлПодписанию = Ложь,
ТребуетЭлПодписания = Ложь)
Если РеквизитИзменился Тогда
Представление = Строка(ИзменившийсяРеквизит);
Описание = Новый Структура();
Описание.Вставить("Представление", Представление);
Описание.Вставить("Было", Было);
Описание.Вставить("Стало", Стало);
Описание.Вставить("ТребуетПереизданияСертификата", ТребуетПереизданияСертификата);
Описание.Вставить("ТребуетВстречиСПартнером", ТребуетВстречиСПартнером);
Описание.Вставить("ПрепятствуетЭлПодписанию", ПрепятствуетЭлПодписанию);
Описание.Вставить("ТребуетЭлПодписания", ТребуетЭлПодписания);
ИзмененныеРеквизиты.Добавить(Описание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция УчетнаяЗаписьОрганизации(Организация) Экспорт
ВидОбменаСКонтролирующимиОрганами = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "ВидОбменаСКонтролирующимиОрганами");
Если ВидОбменаСКонтролирующимиОрганами = Перечисления.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате
И ЗначениеЗаполнено(Организация.УчетнаяЗаписьОбмена) Тогда
УчетнаяЗапись = Организация.УчетнаяЗаписьОбмена;
ЕстьОшибкиСменыМоделиХраненияКлючей = УчетнаяЗапись.ЕстьОшибкиСменыМоделиХраненияКлючей;
Иначе
УчетнаяЗапись = Справочники.УчетныеЗаписиДокументооборота.ПустаяСсылка();
КонецЕсли;
Возврат УчетнаяЗапись;
КонецФункции
&НаКлиенте
Функция ЭтоТолькоСменаТелефонаИлиПочтыВОблаке()
НазваниеРеквизита = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ТелефонМобильныйДляПаролей");
НазваниеРеквизита = Строка(НазваниеРеквизита);
Отбор = Новый Структура();
Отбор.Вставить("НазваниеРеквизита", НазваниеРеквизита);
Отбор.Вставить("ЭтотПараметрИзменился", Истина);
Отбор.Вставить("ВыделятьСтрокуЖелтым", Истина);
НайденныеСтроки = ТаблицаДанныхЗаявленияНаПодключение.НайтиСтроки(Отбор);
ЕстьСменаТелефона = НайденныеСтроки.Количество() = 1 И ТелефонМобильныйДляПаролейИзменился();
НазваниеРеквизита = ПредопределенноеЗначение("Перечисление.ПараметрыПодключенияК1СОтчетности.ЭлектроннаяПочтаДляПаролей");
НазваниеРеквизита = Строка(НазваниеРеквизита);
Отбор = Новый Структура();
Отбор.Вставить("НазваниеРеквизита", НазваниеРеквизита);
Отбор.Вставить("ЭтотПараметрИзменился", Истина);
Отбор.Вставить("ВыделятьСтрокуЖелтым", Истина);
НайденныеСтроки = ТаблицаДанныхЗаявленияНаПодключение.НайтиСтроки(Отбор);
ЕстьСменаПочты = НайденныеСтроки.Количество() = 1 И ЭлектроннаяПочтаДляПаролейИзменена();
Отбор = Новый Структура();
Отбор.Вставить("ЭтотПараметрИзменился", Истина);
Отбор.Вставить("ВыделятьСтрокуЖелтым", Истина);
ВсегоИзменений = ТаблицаДанныхЗаявленияНаПодключение.НайтиСтроки(Отбор).Количество();
ПоменялсяТолькоТелефон = ЕстьСменаТелефона И НЕ ЕстьСменаПочты И ВсегоИзменений = 1;
ПоменяласьТолькоПочта = НЕ ЕстьСменаТелефона И ЕстьСменаПочты И ВсегоИзменений = 1;
ПоменялисьПочтаИТелефон = ЕстьСменаТелефона И ЕстьСменаПочты И ВсегоИзменений = 2;
ЭтоТолькоСменаТелефонаИлиПочты = ПоменялсяТолькоТелефон ИЛИ ПоменяласьТолькоПочта ИЛИ ПоменялисьПочтаИТелефон;
Возврат
ИзменитьНастройкиУведомлений
И ЭтоТолькоСменаТелефонаИлиПочты
И ЭтоУчетнаяЗаписьВМоделиСервиса;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция Форматировать(Значение) Экспорт
Возврат ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиентСервер.СтрокаВФорматеДляСравнения(Значение);
КонецФункции
&НаСервере
Функция ЭтоРеквизитНеХранящийсяВБазе(ПроверяемыйРеквизит)
Возврат РеквизитыНеХранящиесяВБазе.Найти(ПроверяемыйРеквизит) <> Неопределено;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИспользоватьСуществующий(Объект) Экспорт
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ИспользоватьСуществующий(Объект);
КонецФункции
#КонецОбласти
#Область ОтправкаЗаявленияВПФР
&НаКлиенте
Процедура ПоказатьСтраницуОшибкиОтправкиВПФР() Экспорт
КонецПроцедуры
&НаСервере
Процедура ДействияПередОтправкойЗаявленияВПФР() Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ДействияПередОтправкойЗаявленияВПФР(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ПриОткрытии
&НаКлиенте
Процедура ПриОткрытии_ПослеПолученияКонтекста(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
СрокЛицензииКриптоПроКонечный = КонтекстЭДОКлиент.СрокЛицензииКриптоПроКонечный();
СканированиеДоступно = ОбработкаЗаявленийАбонентаКлиент.ДоступноСканирование();
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_ПослеПроверкиКриптопровайдеров",
ЭтотОбъект);
ПроверитьНаличиеКриптопровайдера(ОписаниеОповещения, ДокументооборотСКОКлиент.ПредлагатьУстановкуРасширения());
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_ПослеПроверкиКриптопровайдеров(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
Если НЕ ЗначениеЗаполнено(Организация) Тогда
УправлениеФормой();
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПриОткрытии_Завершение",
ЭтотОбъект);
ДанныеЗаполнения = Новый Структура();
ИнициализироватьРеквизиты1СОтчетности(ДанныеЗаполнения, Истина, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии_Завершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ ПоддерживаетсяВторичноеЗаявление Тогда
Возврат;
КонецЕсли;
ЭтаФорма.Активизировать();
ЗаявлениеСозданоКопированием = Ложь;
Если НужноПредложитьПервичное(ТекущийПользователь) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения(
"ОрганизацияПриИзменении_ПриОтказеОтПервичного",
ЭтотОбъект);
СпроситьПроПервичное(ОписаниеОповещения, ТекущийПользователь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗавершениеДействия
&НаСервере
Процедура ПродлитьЛицензиюНа1СОтчетностьПриИзмененииНаСервере()
ИнициализироватьВозможностьБезбумажногоПродления();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ИзменитьРеквизитыПодключенияК1СОтчетностиПриИзмененииНаСервере()
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройкиЭДО_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
НастройкиДляЭДО = Результат;
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьФормуВыбораМестаХраненияНажатие_Завершение(Результат, ВходящийКонтекст) Экспорт
Если Результат = Неопределено ИЛИ НЕ Результат.Модифицированность Тогда
Возврат;
КонецЕсли;
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
ИзменилосьМестоХранения = ВыбранноеМестоХраненияКлюча <> Результат.ВыбранноеМестоХраненияКлюча;
БылаОблачнаяПодпись = ВыбранноеМестоХраненияКлюча = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoProDSS");
ПараметрыФормы = Результат.ПараметрыФормы;
ВсеПараметры = Новый Структура(ПараметрыФормы);
ВсеПараметры.Удалить("Организация");
ЗаполнитьЗначенияСвойств(ВсеПараметры, Результат);
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Результат);
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) Тогда
ИзменилосьМестоХранения = ИзменилосьМестоХранения
ИЛИ СвойствоОблачнойПодписи.УчетнаяЗапись <> ВсеПараметры.УчетнаяЗаписьОблачнойПодписи
ИЛИ СвойствоОблачнойПодписи.НовыйЛогин <> ВсеПараметры.Логин;
СвойствоОблачнойПодписи.УчетнаяЗапись = ВсеПараметры.УчетнаяЗаписьОблачнойПодписи;
СвойствоОблачнойПодписи.ИдентификаторСервера = ВсеПараметры.СерверОблачнойПодписи;
СвойствоОблачнойПодписи.НовыйЛогин = ВсеПараметры.Логин;
СвойствоОблачнойПодписи.НовыйЛогинПроверен = ВсеПараметры.ЛогинПроверен;
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Ложь;
СвойствоОблачнойПодписи.ПоставляемыйСервер = ЭтоПоставляемыйСерверОблачнойПодписи(СвойствоОблачнойПодписи.УчетнаяЗапись);
СвойствоОблачнойПодписи.ИсходныйТелефон = "";
Если НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.УчетнаяЗапись) Тогда
СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись = Истина;
СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически = Ложь;
КонецЕсли;
Если СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
СпособПолученияСертификата = ПредопределенноеЗначение("Перечисление.СпособПолученияСертификата.ИздатьНовый");
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ВсеПараметры);
Если ИзменилосьМестоХранения Тогда
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ОпределятьМестоХранения = Ложь;
ПриИзмененииМестаХранения(ОпределятьМестоХранения, , БылаОблачнаяПодпись);
КонецЕсли;
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ПереиздатьСертификатПриИзмененииНаСервере()
Необходимость = НеобходимостьПереизданияСертификата();
Если Необходимость = Обязательно Тогда
ПереиздатьСертификат = Обязательно;
Иначе
ПереиздатьСертификат = ПереиздатьСертификат % 2;
Если ПереиздатьСертификат = НеТребуется Тогда
ОпределятьМестоХранения = Истина;
СброситьСпособПолученияСертификата(ОпределятьМестоХранения, Ложь);
Если КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча) Тогда
ЗаполнитьИспользованиеДолговременногоТокена();
КонецЕсли;
КонецЕсли;
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
КонецЕсли;
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
ИнициализироватьВозможностьБезбумажногоПродления();
ЗаполнитьМЧДВЗаявлении();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СпроситьПроСохранение()
ТекстВопроса = НСтр("ru = 'Данные были изменены. Сохранить изменения?'");
ОписаниеОповещения = Новый ОписаниеОповещения(
"СпроситьПроСохранение_Завершение",
ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена);
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроСохранение_Завершение(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
СохранитьЗаявлениеКлиент();
Модифицированность = Ложь;
ПрограммноеЗакрытие = Истина;
ОповеститьОбИзменении(ДокументЗаявление.Ссылка);
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
Модифицированность = Ложь;
ПрограммноеЗакрытие = Истина;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да ИЛИ Ответ = КодВозвратаДиалога.Нет Тогда
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПриИзмененииФлагов
&НаСервере
Процедура ИзменитьВладельцаСертификатаПриИзмененииНаСервере()
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ИзменитьСоставКонтролирующихОргановПриИзмененииНаСервере()
Если НЕ ИзменитьСоставКонтролирующихОрганов Тогда
СделатьНаправленияСдачиОтчетностиРавнымиИсходным();
ВосстановитьГосОрганыВТаблицеПользователей();
КонецЕсли;
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиПользователей();
УправлениеФормой();
КонецПроцедуры
&НаСервере
Процедура ВосстановитьГосОрганыВТаблицеПользователей()
Если НЕ ВладелецЭЦПЭтоАдмин Тогда
Возврат;
КонецЕсли;
Для каждого Строка Из ТаблицаПользователей Цикл
Права = Мультирежим.ПраваНаУчетнуюЗапись(УчетнаяЗапись, Строка.ФизическоеЛицо);
Если Права.ЕстьДанные Тогда
Свойства =
"СдаватьВФНС,
|СдаватьВПФР,
|СдаватьВРосстат,
|СдаватьВФСС,
|ПодатьЗаявкуНаПодключениеРПН,
|ПодатьЗаявкуНаПодключениеФТС,
|ПодатьЗаявкуНаСертификатДляФСРАР,
|ЭтоШифровальщик";
ЗаполнитьЗначенияСвойств(Строка, Права, Свойства);
КонецЕсли;
КонецЦикла;
ПользователиИзменились = Мультирежим.ИзменилисьНастройкиПользователей(
ЭтотОбъект, ТаблицаПользователей);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииМестаХранения(ОпределятьМестоХранения, ЭтоВыборСертификата = Ложь, БылаОблачнаяПодпись = Ложь) Экспорт
Если НЕ ЭтоВыборСертификата Тогда
СброситьСпособПолученияСертификата(ОпределятьМестоХранения, Ложь);
КонецЕсли;
Если ОпределятьМестоХранения Тогда
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(ЭтотОбъект);
ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьУЦПоУмолчанию(ЭтотОбъект);
КонецЕсли;
ИнициализироватьВозможностьБезбумажногоПродления();
Если КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) И ОпределятьМестоХранения Тогда
ОчиститьПеременныеДляОблака();
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Организация);
ИнициализацияОблачнойПодписи();
ИнициализироватьКриптографию();
ИначеЕсли ЭтоОблако(ЭтотОбъект) Тогда
ИнициализироватьТокен = Истина;
ИнициализацияЭПВОблакеСервер(ИнициализироватьТокен, , БылаОблачнаяПодпись);
КонецЕсли;
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
ОбработкаЗаявленийАбонентаКлиентСервер.ИзменитьОформлениеУЦ(ЭтотОбъект);
ПересчитатьФлагПереиздатьСертификат =
НЕ ЭтоВыборСертификата
И (ПереиздатьСертификат = НеТребуется ИЛИ ПереиздатьСертификат = Обязательно);
Если ПересчитатьФлагПереиздатьСертификат Тогда
ПроверитьНеобходимостьУстановкиГалки_ПереиздатьСертификат();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПолучениеСертификатов2022
&НаКлиентеНаСервереБезКонтекста
Процедура ИнициализироватьСпособПолученияСертификата(Форма)
ОбработкаЗаявленийАбонентаКлиентСервер.ИнициализироватьСпособПолученияСертификата(
Форма,
Форма.ЗаявлениеСозданоКопированием);
ОпределитьДоступностьВыбораСпособаПереизданияСертификата(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоРуководитель(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоРуководитель(Форма);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоБухгалтер(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоБухгалтер(Форма);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоДругойСотрудник(Форма)
Возврат ОбработкаЗаявленийАбонентаКлиентСервер.ЭтоДругойСотрудник(Форма);
КонецФункции
&НаКлиенте
Процедура ПослеВыбораВключаемогоСертификата(Результат, ВходящийКонтекст) Экспорт
ПриИзмененииВключаемогоСертификатаСервер_ПриИспользованииСуществующего();
ЗаполнитьИННВладельцаИзСертификата();
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИННВладельцаИзСертификата()
Если ВладелецЭЦПИННИсходный = ""
И ЭтоЮридическоеЛицо
И ИспользоватьСуществующий(ЭтотОбъект)
И ТипЗнч(ВключаемыйСертификат) = Тип("Структура") Тогда
ВладелецСертификата = ДокументооборотСКОКлиентСервер.ВладелецСертификат(ВключаемыйСертификат);
ВладелецЭЦПИННИсходный = ДокументооборотСКОКлиентСервер.ИННИзСертификата(ВладелецСертификата, , Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаЛокальноеХранение() Экспорт
КриптоПро = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoPro");
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Ложь);
ИзменитьМестоХранения = Истина;
ПересчитатьМестоХранения(
Ложь,
КриптоПро,
Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаОблачноеХранение() Экспорт
ВМоделиСервиса = ПредопределенноеЗначение("Перечисление.МодельРаботыСКлючами.ВМоделиСервиса");
МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(Истина);
ИзменитьМестоХранения = Истина;
ПересчитатьМестоХранения(
Ложь,
ВМоделиСервиса,
Истина);
ПолучитьНастройкиПаролейВОблакеССервера(ВключаемыйСертификат);
ПроверитьНеобходимостьУстановкиГалки_ИзменитьНастройкиУведомлений();
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьНаОблачнуюПодпись(НовоеМестоХраненияКлюча = Неопределено) Экспорт
ТекущийВыбор = ПредопределенноеЗначение("Перечисление.ТипыКриптоПровайдеров.CryptoProDSS");
Если НовоеМестоХраненияКлюча <> Неопределено Тогда
МестоХраненияКлюча = НовоеМестоХраненияКлюча;
КонецЕсли;
ИзменитьМестоХранения = Истина;
ПересчитатьМестоХранения(
Ложь,
ТекущийВыбор,
Истина);
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция АдресТаблицы(Имя) Экспорт
Возврат Мультирежим.АдресТаблицы(ЭтотОбъект, Имя);
КонецФункции
&НаСервере
Функция ЗаполнитьМЧДВЗаявлении() Экспорт
ОбработкаЗаявленийАбонента.ЗаполнитьМЧДВЗаявлении(ЭтотОбъект);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция УстановленХотяБыОдинФлаг(Форма)
Возврат Форма.ПродлитьЛицензиюНа1СОтчетность
ИЛИ Форма.ИзменитьСоставКонтролирующихОрганов
ИЛИ Форма.ПереиздатьСертификат
ИЛИ Форма.ИзменитьВладельцаСертификата
ИЛИ Форма.ИзменитьНастройкиУведомлений
ИЛИ Форма.ИзменитьРеквизитыПодключенияК1СОтчетности
ИЛИ УстановленФлагОблачнойПодписи(Форма)
ИЛИ Форма.ИзменитьМестоХранения
ИЛИ Форма.ИзменитьНастройкиПользователей;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция УстановленФлагОблачнойПодписи(Форма)
Результат = Форма.СвойствоОблачнойПодписи.ОтправкаКлючаМобильногоПриложения
ИЛИ Форма.СвойствоОблачнойПодписи.ОтправкаКодаАктивации
ИЛИ Форма.СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложения
ИЛИ Форма.СвойствоОблачнойПодписи.СменитьКлючМобильногоПриложенияАвтоматически
ИЛИ Форма.СвойствоОблачнойПодписи.СменитьПароль
ИЛИ (ЗначениеЗаполнено(Форма.СвойствоОблачнойПодписи.НовыйЛогин) И Форма.СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись)
ИЛИ ЗначениеЗаполнено(Форма.СвойствоОблачнойПодписи.Телефон)
ИЛИ ЗначениеЗаполнено(Форма.СвойствоОблачнойПодписи.ЭлектроннаяПочта);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПоказатьЭлементыПодключенияЭДО(Форма)
ОблачнаяПодпись = КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Форма.МестоХраненияКлюча)
ИЛИ КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(Форма.МестоХраненияКлюча);
Возврат НЕ Форма.ЭтоПереизданиеСертификатаЭДО
И Форма.ЭтоПодключениеЭДО
И Форма.ПодключениеЭДОВозможно
И ЗначениеЗаполнено(Форма.Организация)
И Форма.ПоддерживаетсяВторичноеЗаявление
И НЕ Форма.ЭтоПереходВОблако
И НЕ Форма.ЭтоУчетнаяЗаписьВМоделиСервиса
И НЕ ОблачнаяПодпись
И (Форма.ПереиздатьСертификат
ИЛИ ИспользоватьСуществующий(Форма))
И НЕ Форма.ЭтоМультиРежим;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПоказатьЭлементыПереизданияЭДО(Форма)
ОблачнаяПодпись = КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(Форма.МестоХраненияКлюча);
Возврат Форма.ЭтоПереизданиеСертификатаЭДО
И НЕ Форма.ЭтоПодключениеЭДО
И Форма.ПереизданиеСертификатаЭДОВозможно
И ЗначениеЗаполнено(Форма.Организация)
И Форма.ПоддерживаетсяВторичноеЗаявление
И Форма.ПереиздатьСертификат
И НЕ Форма.ЭтоПереходВОблако
И НЕ Форма.ЭтоУчетнаяЗаписьВМоделиСервиса
И НЕ ОблачнаяПодпись
И НЕ Форма.ЭтоПереходВКоробку
И НЕ Форма.ЭтоМультиРежим;
КонецФункции
&НаКлиенте
Процедура ОтправитьЗаявлениеПослеПоказаБублика()
АдресТекстаОтправляемогоЗаявления = "";
НужноПредварительноПолучитьТекстЗаявления =
КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча)
И ДокументЗаявление.ПодписатьЭП;
Если НужноПредварительноПолучитьТекстЗаявления Тогда
НачатьОпределениеТекстаЗаявления();
Иначе
ОтправитьЗаявлениеИзКонтейнера();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция НужноПодтвердитьПаролемСменуТелефона()
Возврат КриптографияЭДКОКлиентСервер.ЭтоПодписьСервиса(МестоХраненияКлюча)
И (ТелефонМобильныйДляПаролейИзменился() ИЛИ ЭлектроннаяПочтаДляПаролейИзменена())
И ИзменитьНастройкиУведомлений
И НЕ ПереиздатьСертификат;
КонецФункции
&НаКлиенте
Процедура ОткрытьНастрокиDSS()
Если СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись Тогда
ПроверитьКонтактыОблачнойПодписи();
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("НастройкиОблачнойПодписи_Завершение", ЭтотОбъект);
КонтекстЭДОКлиент.ДополнительныеНастройкиОблачнойЗаписиВЗаявлении(ОписаниеОповещения, ЭтотОбъект, СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьОшибкиЛокальногоХраненияКлюча_ПослеИсправления(Результат, Действие) Экспорт
ПараметрыОповещения = КонтекстЭДОКлиент.ПараметрыОткрытияФормыВыбораСуществующегоСертификата(ЭтотОбъект);
ПроигнорироватьКонфликт =
ТипЗнч(Результат) = Тип("Структура")
И Результат.Свойство("КриптопровайдерПриКонфликте")
И Результат.Свойство("ИгнорироватьКонфликт");
Если ПроигнорироватьКонфликт Тогда
ВыбранноеМестоХраненияКлюча = Результат.КриптопровайдерПриКонфликте;
ИгнорироватьКонфликт = Результат.ИгнорироватьКонфликт;
ПараметрыОповещения.Вставить("ВыбранноеМестоХраненияКлюча", ВыбранноеМестоХраненияКлюча);
ПараметрыОповещения.Вставить("ИгнорироватьКонфликт", ИгнорироватьКонфликт);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ИсправитьОшибкиЛокальногоХраненияКлюча_Завершение",
ЭтотОбъект);
ПроверитьКриптопровайдерИМестоХраненияКлючей(ОписаниеОповещения, Истина);
КонецЕсли;
Оповестить("ИсправленыОшибкиЛокальногоХраненияКлюча", ПараметрыОповещения);
КонецПроцедуры
#Область ПроверитьОблачнуюПодпись
&НаКлиенте
Процедура ПроверитьОблачнуюПодпись(МастерДалее)
Если НЕ КриптографияЭДКОКлиентСервер.ЭтоОблачнаяПодпись(МестоХраненияКлюча) ИЛИ НЕ МастерДалее Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СвойствоОблачнойПодписи.Телефон)
И СвойствоОблачнойПодписи.СоздатьУчетнуюЗапись
И ИзменитьНастройкиУведомлений Тогда
СвойствоОблачнойПодписи.Телефон = КриптографияЭДКОКлиентСервер.ТелефонПодтвержденияОпераций(ТелефонМобильный);
КонецЕсли;
ОповещениеЗавершения = Новый ОписаниеОповещения("ПроверитьОблачнуюПодпись_Завершение", ЭтотОбъект);
КонтекстЭДОКлиент.ПроверитьНастройкиОблачнойПодписиПриОтправкеЗаявления(ЭтотОбъект, МастерДалее, Ложь, ОповещениеЗавершения);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьОблачнуюПодпись_Завершение(Выполнено, ДополнительныеПараметры) Экспорт
Если Выполнено = Истина Тогда
ПриНажатииДалееНаОсновнойСтранице(Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеПанелиРекламыDSS(НовоеЗначение = Неопределено)
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
СтатусОтображения = КонтекстЭДОСервер.ПоказатьПанельНовойКриптографии(НовоеЗначение);
Элементы.ГруппаНоваяКриптография.Видимость =
СтатусОтображения
И ДоступностьМестаХраненияКлючей()
И НЕ ЭтоМультиРежим;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНастройкиОблачнойПодписи(РезультатОбработки, ДополнительныеПараметры) Экспорт
Если РезультатОбработки = "ВключилиОпцию" Тогда
ИнициализироватьПараметрыОблачнойПодписи();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыПользователи() Экспорт
Результат = Мультирежим.ПараметрыФормыПользователи(ЭтотОбъект);
Результат.Вставить("ТипЗаявления", Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение);
Возврат Результат;
КонецФункции
&НаСервере
Процедура ТаблицаИзАдреса(Адрес, Имя) Экспорт
Мультирежим.ТаблицаИзАдреса(ЭтотОбъект, Адрес, Имя);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораПользователей(Результат, ВходящийКонтекст) Экспорт
МультирежимКлиентСервер.РасчитатьНаправленияУчетнойЗаписиПоТаблицеПользователей(ЭтотОбъект);
СравнитьНаправленияИКодыСдачиОтчетностиСИсходными();
ПроверитьНеобходимостьУстановкиГалки_ИзменитьСоставКонтролирующихОрганов();
Если ЭтоМультиРежим = ЭтоМультиРежимИсходный Тогда
УправлениеФормой();
Иначе
ИнициализироватьПараметрыЭДО();
ИнициализироватьПараметрыОблачнойПодписи();
УправлениеФормой();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция ПараметрыФормыПравПользователя() Экспорт
Результат = Мультирежим.ПараметрыФормыПравПользователя(ЭтотОбъект);
Результат.Вставить("ТипЗаявления", Перечисления.ТипыЗаявленияАбонентаСпецоператораСвязи.Изменение);
Возврат Результат;
КонецФункции
&НаСервере
Функция НужноПредложитьПервичное(Сотрудник)
Мультирежим.ИнициализироватьМультирежим(ЭтотОбъект);
Возврат
ЭтоМультиРежим
И ЗначениеЗаполнено(Организация)
И ЗначениеЗаполнено(Сотрудник)
И Мультирежим.ЭтоПодключениеПотенциальногоПользователя(ЭтотОбъект, Сотрудник);
КонецФункции
&НаКлиенте
Процедура СпроситьПроПервичное_Завершение(Ответ, ДействиеПриОтказе) Экспорт
Если Ответ = 1 Тогда
ОткрытьЗаявлениеНаПодключение();
Иначе
ВыполнитьОбработкуОповещения(ДействиеПриОтказе);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпроситьПроПервичное(ДействиеПриОтказе = Неопределено, Сотрудник)
ОписаниеОповещения = Новый ОписаниеОповещения(
"СпроситьПроПервичное_Завершение",
ЭтотОбъект,
ДействиеПриОтказе);
Если ТипЗнч(Сотрудник) = Тип("СправочникСсылка.Пользователи") Тогда
ТекстВопроса = "Поскольку Вы (%1) не подключены к 1С-Отчетности, Вам необходимо заполнить и отправить заявление на подключение.";
Иначе
ТекстВопроса = "Поскольку %1 не подключен к 1С-Отчетности, то сперва необходимо заполнить и отправить заявление на подключение.";
КонецЕсли;
ТекстВопроса = СтрШаблон(ТекстВопроса, Сотрудник);
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(1, НСтр("ru = 'Перейти к подключению'"));
Кнопки.Добавить(2, НСтр("ru = 'Отмена'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки,,Кнопки[0].Значение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьЗаявлениеНаПодключение()
ОбработкаЗаявленийАбонентаКлиентСервер.СнятьМодифицированность(ЭтотОбъект);
Первичное = ПредопределенноеЗначение("Перечисление.ТипыЗаявленияАбонентаСпецоператораСвязи.Первичное");
ДополнительныеПараметры = ДокументооборотСКОКлиентСервер.ПараметрыОткрытияМастера();
ДополнительныеПараметры.Вставить("Организация", Организация);
ДополнительныеПараметры.Вставить("ВидЗаявления", Первичное);
ПрограммноеЗакрытие = Истина;
Закрыть(ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Функция ПолучитьБланкиИНомерЗаявленияИзАЦУЦ(АдресПодписиСерийногоНомера)
Попытка
ТекстОшибки = "";
НомерЗаявкиУЦ = "";
БланкНаПереизданиеДЛ = Неопределено;
БланкНаОтзывДЛ = Неопределено;
Запрос = ЗапросБланковИНомераЗаявленияИзАЦУЦ(АдресПодписиСерийногоНомера);
XDTOРезультат = GetOsnovaniePreRequest(Запрос);
Если XDTOРезультат = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(XDTOРезультат);
ПостроительДОМ = Новый ПостроительDOM();
ДОМ = ПостроительДОМ.Прочитать(ЧтениеXML);
кодРезультата = ДОМ.ПолучитьЭлементыПоИмени("code")[0].ТекстовоеСодержимое;
Если кодРезультата = "0" Тогда
НомерЗаявкиУЦ = ДОМ.ПолучитьЭлементыПоИмени("RequestId")[0].ТекстовоеСодержимое;
БланкНаПереизданиеДЛ = ДОМ.ПолучитьЭлементыПоИмени("RequestApplication")[0].ТекстовоеСодержимое;
БланкНаОтзывДЛ = ДОМ.ПолучитьЭлементыПоИмени("RevokeApplication")[0].ТекстовоеСодержимое;
ЧтениеXML.Закрыть();
ЕстьОшибка =
НЕ ЗначениеЗаполнено(НомерЗаявкиУЦ)
ИЛИ НЕ ЗначениеЗаполнено(БланкНаПереизданиеДЛ)
ИЛИ НЕ ЗначениеЗаполнено(БланкНаОтзывДЛ);
Если ЕстьОшибка Тогда
ТекстОшибки = НСтр("ru = 'Номер заявки УЦ, бланк на переиздание сертификата или бланк на отзыв передан пустой'");
КонецЕсли;
Возврат НЕ ЕстьОшибка;
Иначе
ТекстОшибки = ДОМ.ПолучитьЭлементыПоИмени("errorMessage")[0].ТекстовоеСодержимое;
ЧтениеXML.Закрыть();
Возврат Ложь;
КонецЕсли;
Исключение
ДанныеОшибки = ИнформацияОбОшибке();
ДокументооборотСКО.ОбработатьИсключение(
ДанныеОшибки,
НСтр("ru = 'Получение бланков заявлений УЦ Основание (метод GetOsnovaniePreRequest)'"));
ТекстОшибки = КраткоеПредставлениеОшибки(ДанныеОшибки);
Возврат Ложь;
КонецПопытки;
КонецФункции
&НаСервере
Процедура СохранитьБланки_и_ИД_ДЛ()
ЭтотОбъект.Прочитать();
НовыйДокументЗаявление = РеквизитФормыВЗначение("ДокументЗаявление");
НовыйДокументЗаявление.НомерЗаявкиУЦ = НомерЗаявкиУЦ;
НовыйДокументЗаявление.Записать();
ЗначениеВРеквизитФормы(НовыйДокументЗаявление, "ДокументЗаявление");
Адрес = ПоместитьВоВременноеХранилище(Base64Значение(БланкНаПереизданиеДЛ), УникальныйИдентификатор);
ПрисоединитьФайлЗаявления(Адрес, "ЗаявлениеНаИзготовлениеСертификата", "pdf");
Адрес = ПоместитьВоВременноеХранилище(Base64Значение(БланкНаОтзывДЛ), УникальныйИдентификатор);
ПрисоединитьФайлЗаявления(Адрес, "ЗаявлениеНаОтзывСертификата", "pdf");
КонецПроцедуры
&НаСервере
Функция СоздатьОбъектXDTO(Сервис, ИмяТипа)
Возврат Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://regservice.keydisk.ru/", ИмяТипа));
КонецФункции
&НаСервере
Функция ЗапросВТекст(ОбъектXDTO)
Попытка
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
ТекстОбъектаXDTO = ЗаписьXML.Закрыть();
Возврат ТекстОбъектаXDTO;
Исключение
Возврат "";
КонецПопытки;
КонецФункции
&НаСервере
Процедура ЗаписатьЗапросВЖурнал(Запрос)
ТекстЗапроса = ЗапросВТекст(Запрос);
Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
ДвДанные = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса, "windows-1251", Истина);
Адрес = ПоместитьВоВременноеХранилище(ДвДанные, Новый УникальныйИдентификатор);
ПрисоединитьФайлЗаявления(Адрес, "GetOsnovaniePreRequest", "txt");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция GetOsnovaniePreRequest(Запрос)
СпецоператорСвязи = УчетнаяЗапись.СпецоператорСвязи;
Сервис = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОбменССерверомСоздатьСервис(
СпецоператорСвязи,,,,Ложь);
Попытка
XDTOРезультат = Сервис.GetOsnovaniePreRequest(Запрос);
ЗаписатьЗапросВЖурнал(Запрос);
Исключение
ТекстОшибки = "Не удалось обратиться к серверу Калуги Астрал. " + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
СостояниеОтправкиСообщения = ДокументооборотСКОВызовСервера.ДобавитьТекстОшибкиСертификатаКА(ТекстОшибки);
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Электронный документооборот с контролирующими органами. GetOsnovaniePreRequest'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Неопределено;
КонецПопытки;
Возврат XDTOРезультат;
КонецФункции
&НаСервере
Функция ЗапросБланковИНомераЗаявленияИзАЦУЦ(АдресПодписиСерийногоНомера)
СпецоператорСвязи = УчетнаяЗапись.СпецоператорСвязи;
Сервис = ЭлектронныйДокументооборотСКонтролирующимиОрганами.ОбменССерверомСоздатьСервис(
СпецоператорСвязи,,,,Ложь);
requestInfo = СоздатьОбъектXDTO(Сервис, "RequestInfo");
requestInfo.firstName = ВладелецЭЦПИмя;
requestInfo.middleName = ВладелецЭЦПОтчество;
requestInfo.lastName = ВладелецЭЦПФамилия;
requestInfo.company = КраткоеНаименование;
requestInfo.position = ВладелецЭЦПДолжность;
requestInfo.passportSerial = СтрЗаменить(ВладелецЭЦПСерияДокумента, " ", "");
requestInfo.passportNumber = ВладелецЭЦПНомерДокумента;
requestInfo.passportDate = Формат(ВладелецЭЦПДатаВыдачиДокумента, "ДФ=dd.MM.yyyy");
requestInfo.passportCode = ВладелецЭЦПКодПодразделения;
requestInfo.passportDivision = ВладелецЭЦПКемВыданДокумент;
Если ВладелецЭЦППол = Перечисления.ПолФизическогоЛица.Женский Тогда
requestInfo.gender = "F";
Иначе
requestInfo.gender = "M";
КонецЕсли;
requestInfo.birthDate = Формат(ВладелецЭЦПДатаРождения, "ДФ=dd.MM.yyyy");
requestInfo.inn = ИНН;
requestInfo.personInn = ВладелецЭЦПИНН;
requestInfo.snils = ОбработкаЗаявленийАбонентаКлиентСервер.СНИЛСБезРазделителей(ВладелецЭЦПСНИЛС);
Если ЭтоЮридическоеЛицо Тогда
requestInfo.kpp = КПП;
Если ЗначениеЗаполнено(НаименованиеПолное_БИП) Тогда
requestInfo.companyFull = НаименованиеПолное_БИП;
Иначе
requestInfo.companyFull = НаименованиеПолное;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(КодРегиона) Тогда
requestInfo.region = КодРегиона;
Иначе
requestInfo.region = КодРегиона_БИП;
КонецЕсли;
Заявление = РеквизитФормыВЗначение("ДокументЗаявление");
ПараметрыНовогоСертификата = Новый СписокЗначений;
ОбработкаЗаявленийАбонентаВызовСервера.ЗаявлениеСформироватьАдресДляЗапросаНаСертификатКвалифицированный(
Заявление,
ПараметрыНовогоСертификата);
requestInfo.city = ПараметрыНовогоСертификата.НайтиПоЗначению("2.5.4.7").Представление;
requestInfo.address = ПараметрыНовогоСертификата.НайтиПоЗначению("2.5.4.9").Представление;
requestInfo.ogrn = ОГРН;
Если ЭтоЮридическоеЛицо Тогда
requestInfo.type = "Juridical";
Иначе
requestInfo.OgrnIp = ОГРН;
requestInfo.type = "Individual";
КонецЕсли;
requestInfo.identificationKind = 1;
requestInfo.email = ЭлектроннаяПочта;
requestInfo.phone = ТелефонМобильный;
ДвДанные = ПолучитьИзВременногоХранилища(АдресПодписиСерийногоНомера);
signedSerialNumber = ДокументооборотСКОКлиентСервер.Base64СтрокаБезПереносов(ДвДанные);
Запрос = СоздатьОбъектXDTO(Сервис, "PreRequest");
Запрос.requestInfo = requestInfo;
Запрос.signedSerialNumber = signedSerialNumber;
Возврат Запрос;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОпределитьДоступностьВыбораСпособаПереизданияСертификата(Форма) Экспорт
Форма.ЭтоУдаленноеПереизданиеСертификата =
ОбработкаЗаявленийАбонентаКлиентСервер.ДоступенВыборСпособаПереизданияСертификата(Форма)
И НЕ Форма.ЗапрещеноУдаленноеПереизданиеСертификата();
СброситьФлагПодтверждения(Форма);
КОнецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СброситьФлагПодтверждения(Форма) Экспорт
Форма.ОсознаюУсловияОтправкиРасписки = Ложь;
КОнецПроцедуры
&НаКлиенте
Процедура СообщитьОбОтсутствииПодходящихСертификатов(Форма) Экспорт
ОбработкаЗаявленийАбонентаКлиент.СообщитьОбОтсутствииПодходящихСертификатов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокЛокальныхСертификатовКалуги(ОповещениеОЗавершении) Экспорт
КонтекстЭДОКлиент.ОткрытьСписокЛокальныхСертификатовКалуги(ЭтотОбъект, ОповещениеОЗавершении);
КонецПроцедуры
&НаКлиенте
Процедура ЗаблокироватьКнопку()
Если Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.ПроверкаЗаявления Тогда
Элементы.Далее.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазблокироватьКнопку()
Элементы.Далее.Доступность = Истина;
КонецПроцедуры
#КонецОбласти