&НаКлиенте
Перем КонтекстЭДОКлиент;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Продукт = "csp50r2_win";
ЗаполнитьРегистрационныеДанные();
Лицензия = "Приобретена";
ИзменитьОформлениеЛицензии();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(КонтактноеЛицо) И ЗначениеЗаполнено(ЭлектроннаяПочта) Тогда
ТекущийЭлемент = Элементы.СерийныйНомер;
КонецЕсли;
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindowsXP = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64)
И (СтрНайти(СистемнаяИнформация.ВерсияОС, "Windows XP") > 0
ИЛИ СтрНайти(СистемнаяИнформация.ИнформацияПрограммыПросмотра, "Windows NT 5.1") > 0);
Если НЕ ЭтоWindowsXP Тогда
Продукт = "csp50r3_win";
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если ЗначениеЗаполнено(ЭлектроннаяПочта)
И Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(ЭлектроннаяПочта) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректно заполнен адрес электронной почты.'"),, "ЭлектроннаяПочта",, Отказ);
КонецЕсли;
СимволыСерийнногоНомера = Новый Массив;
Если ЗначениеЗаполнено(СерийныйНомер) Тогда
Для Индекс = 1 По СтрДлина(СерийныйНомер) Цикл
ТекущийСимвол = ВРег(Сред(СерийныйНомер, Индекс, 1));
Код = КодСимвола(ТекущийСимвол);
Если (Код > 64 И Код < 91) ИЛИ (Код > 47 И Код < 58) Тогда
СимволыСерийнногоНомера.Добавить(ТекущийСимвол);
КонецЕсли;
КонецЦикла;
ЧистыйСерийныйНомер = СтрСоединить(СимволыСерийнногоНомера, "");
Если СтрДлина(ЧистыйСерийныйНомер) <> 25 Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректно заполнен серийный номер.'"),, "СерийныйНомер",, Отказ);
ИначеЕсли Лев(ЧистыйСерийныйНомер, 2) <> "39" И Лев(ЧистыйСерийныйНомер, 2) <> "40"
И Лев(ЧистыйСерийныйНомер, 2) <> "50" Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Серийный номер не соответствует продуктам CryptoPro CSP 3.9, CryptoPro CSP 4.0 и CryptoPro CSP 5.0.
|Автоматическая установка невозможна'"),, "СерийныйНомер",, Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЛицензияПриИзменении(Элемент)
ИзменитьОформлениеЛицензии();
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("КонтактноеЛицоПослеВыбора", ЭтотОбъект);
ПараметрыФормы = Новый Структура("РежимВыбора", Истина);
ОткрытьФорму("Справочник.ФизическиеЛица.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,,
Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПослеВыбора(РезультатВыбора, Параметры) Экспорт
Если РезультатВыбора = Неопределено Тогда
Возврат;
КонецЕсли;
КонтактноеЛицо = РезультатВыбора;
КонецПроцедуры
&НаКлиенте
Процедура СерийныйНомерПриИзменении(Элемент)
СерийныйНомер = СокрЛП(СерийныйНомер);
Если ЗначениеЗаполнено(СерийныйНомер) Тогда
Если Лев(СерийныйНомер, 2) = "39" Тогда
Продукт = "csp39";
ИначеЕсли Лев(СерийныйНомер, 2) = "40" Тогда
Продукт = "csp40";
ИначеЕсли Лев(СерийныйНомер, 2) = "50" Тогда
Продукт = ?(ЭтоWindowsXP, "csp50r2_win", "csp50r3_win");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Загрузить(Команда)
Если ПроверитьЗаполнение() Тогда
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("КонтактноеЛицо", СокрЛП(КонтактноеЛицо));
ПараметрыРегистрации.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта));
ПараметрыРегистрации.Вставить("СерийныйНомер", СокрЛП(СерийныйНомер));
ПараметрыРегистрации.Вставить("Продукт", Продукт);
ПараметрыРегистрации.Вставить("ВыполнятьКонтрольЦелостности", ВыполнятьКонтрольЦелостности);
Если НЕ ЗначениеЗаполнено(СерийныйНомер) И ЛицензияПриобретена() Тогда
Оповещение = Новый ОписаниеОповещения("ЗагрузитьПослеОтветаНаВопрос", ЭтотОбъект, ПараметрыРегистрации);
ОткрытьФорму(
КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ПодтверждениеЗагрузкиКриптоПроCSP",,,,,,
Оповещение);
Иначе
ЗагрузитьПослеОтветаНаВопрос(КодВозвратаДиалога.Да, ПараметрыРегистрации);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
Если КонтекстЭДОКлиент = Неопределено Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьПослеОтветаНаВопрос(Ответ, ВходящийКонтекст) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Закрыть(ВходящийКонтекст);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРегистрационныеДанные()
ТекущийПользователь = Пользователи.ТекущийПользователь();
КонтактноеЛицо = ТекущийПользователь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПользователиКонтактнаяИнформация.Представление
|ИЗ
| Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
|ГДЕ
| ПользователиКонтактнаяИнформация.Ссылка = &Ссылка
| И ПользователиКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailПользователя)";
Запрос.УстановитьПараметр("Ссылка", ТекущийПользователь);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Если ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Выборка.Представление) Тогда
ЭлектроннаяПочта = Выборка.Представление;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьОформлениеЛицензии()
Элементы.ГруппаСерийныйНомер.Видимость = ЛицензияПриобретена();
Если ОпределитьЛицензиюПозже() Тогда
Элементы.Лицензия.РасширеннаяПодсказка.Заголовок = НСтр("ru = 'Автоматически проверим наличие лицензии позже и сообщим, если ее необходимо приобрести'");
Элементы.Лицензия.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
ИначеЕсли ЛицензияПриобретена() Тогда
Элементы.Лицензия.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
ИначеЕсли ЛицензияВстроена() Тогда
Текст = НСтр("ru = 'Это можно уточнить в удостоверяющем центре, где Вы получали сертификат'");
Элементы.Лицензия.РасширеннаяПодсказка.Заголовок = Текст;
Элементы.Лицензия.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Иначе
Элементы.Лицензия.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОпределитьЛицензиюПозже()
Возврат Лицензия = "Позже";
КонецФункции
&НаСервере
Функция ЛицензияПриобретена()
Возврат Лицензия = "Приобретена";
КонецФункции
&НаСервере
Функция ЛицензияВстроена()
Возврат Лицензия = "Встроена";
КонецФункции
#КонецОбласти