3_1_3_250

This commit is contained in:
Компания 1С committed 2020-08-25 12:45:00 +03:00
1 parent 5c7c3489ca
commit eff646d7ea
89 files changed
+7371 -4162

No files matched your search

@@ -11,13 +11,16 @@
// Только для внутреннего использования.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * ИспользоватьЭлектронныеПодписи - Булево
// * ИспользоватьШифрование - Булево
// * ПроверятьЭлектронныеПодписиНаСервере - Булево
// * СоздаватьЭлектронныеПодписиНаСервере - Булево
// * ЗаявлениеНаВыпускСертификатаДоступно - Булево
// * ОписанияПрограмм - Массив из см. ОписаниеПрограмм
// ФиксированнаяСтруктура:
// * ИспользоватьЭлектронныеПодписи - Булево
// * ИспользоватьШифрование - Булево
// * ПроверятьЭлектронныеПодписиНаСервере - Булево
// * СоздаватьЭлектронныеПодписиНаСервере - Булево
// * ЗаявлениеНаВыпускСертификатаДоступно - Булево
// * ОписанияПрограмм - ФиксированныйМассив из см. ОписаниеПрограммы
// * ОписанияПрограммПоСсылке - ФиксированноеСоответствие:
// ** Ключ - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// ** Значение - см. ОписаниеПрограммы
//
Функция ОбщиеНастройки() Экспорт
@@ -73,37 +76,62 @@
Выборка = Запрос.Выполнить().Выбрать();
ОписанияПрограмм = Новый Массив;
ОписанияПрограммПоСсылке = Новый Соответствие;
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
Пока Выборка.Следующий() Цикл
Отбор = Новый Структура("ИмяПрограммы, ТипПрограммы", Выборка.ИмяПрограммы, Выборка.ТипПрограммы);
Строки = ПоставляемыеНастройки.НайтиСтроки(Отбор);
Идентификатор = ?(Строки.Количество() = 0, "", Строки[0].Идентификатор);
Если Строки.Количество() = 0 Тогда
Идентификатор = "";
АлгоритмыПроверкиПодписи = Новый Массив;
Иначе
Идентификатор = Строки[0].Идентификатор;
АлгоритмыПроверкиПодписи = Строки[0].АлгоритмыПроверкиПодписи;
Если АлгоритмыПроверкиПодписи.Найти(Строки[0].АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Вставить(0, Строки[0].АлгоритмПодписи);
КонецЕсли;
Для Каждого АлгоритмПодписи Из Строки[0].АлгоритмыПодписи Цикл
Если АлгоритмыПроверкиПодписи.Найти(АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Добавить(АлгоритмПодписи);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Описание = ОписаниеПрограмм();
Описание = ОписаниеПрограммы();
ЗаполнитьЗначенияСвойств(Описание, Выборка);
Описание.Идентификатор = Идентификатор;
ОписанияПрограмм.Добавить(Новый ФиксированнаяСтруктура(Описание));
Описание.АлгоритмыПроверкиПодписи = АлгоритмыПроверкиПодписи;
ФиксированноеОписание = Новый ФиксированнаяСтруктура(Описание);
ОписанияПрограмм.Добавить(ФиксированноеОписание);
ОписанияПрограммПоСсылке.Вставить(Описание.Ссылка, ФиксированноеОписание);
КонецЦикла;
ОбщиеНастройки.Вставить("ОписанияПрограмм", Новый ФиксированныйМассив(ОписанияПрограмм));
ОбщиеНастройки.Вставить("ОписанияПрограммПоСсылке", Новый ФиксированноеСоответствие(ОписанияПрограммПоСсылке));
ОбщиеНастройки.Вставить("ПоставляемыеПутиКМодулямПрограмм",
Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеПутиКМодулямПрограмм());
ОбщиеНастройки.Вставить("ВерсияНастроек", Строка(Новый УникальныйИдентификатор));
Возврат Новый ФиксированнаяСтруктура(ОбщиеНастройки);
КонецФункции
// Возвращаемое значение:
// Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Наименование - Строка
// * ИмяПрограммы - Строка
// * ТипПрограммы - Число
// * АлгоритмПодписи - Строка
// * АлгоритмХеширования - Строка
// * АлгоритмШифрования - Строка
// * Идентификатор - Строка
// Структура:
// * Ссылка - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
// * Наименование - Строка
// * ИмяПрограммы - Строка
// * ТипПрограммы - Число
// * АлгоритмПодписи - Строка
// * АлгоритмХеширования - Строка
// * АлгоритмШифрования - Строка
// * Идентификатор - Строка
//
Функция ОписаниеПрограмм() Экспорт
Функция ОписаниеПрограммы() Экспорт
Описание = Новый Структура;
Описание.Вставить("Ссылка");
Описание.Вставить("Наименование");
@@ -113,7 +141,10 @@
Описание.Вставить("АлгоритмХеширования");
Описание.Вставить("АлгоритмШифрования");
Описание.Вставить("Идентификатор");
Описание.Вставить("АлгоритмыПроверкиПодписи");
Возврат Описание;
КонецФункции
Функция ТипыВладельцев(ТолькоСсылки = Ложь) Экспорт
@@ -150,4 +181,74 @@
КонецФункции
Функция ПутиКПрограммамНаСерверахLinux(ИмяКомпьютера) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИмяКомпьютера", ИмяКомпьютера);
Запрос.Текст =
"ВЫБРАТЬ
| ПутиКПрограмме.Программа,
| ПутиКПрограмме.ПутьКПрограмме
|ИЗ
| РегистрСведений.ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux КАК ПутиКПрограмме
|ГДЕ
| ПутиКПрограмме.ИмяКомпьютера = &ИмяКомпьютера";
ПутиКПрограммамНаСерверахLinux = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОписаниеПути = Новый Структура;
ОписаниеПути.Вставить("ПутьКПрограмме", Выборка.ПутьКПрограмме);
ОписаниеПути.Вставить("Существует", ОдинИзМодулейСуществует(Выборка.ПутьКПрограмме));
ПутиКПрограммамНаСерверахLinux.Вставить(Выборка.Программа, ОписаниеПути);
КонецЦикла;
ОбщиеНастройки = ЭлектроннаяПодпись.ОбщиеНастройки();
ТипПлатформыСтрокой = ЭлектроннаяПодписьСлужебныйКлиентСервер.ТипПлатформыСтрокой();
Для Каждого ОписаниеПрограммы Из ОбщиеНастройки.ОписанияПрограмм Цикл
Если ПутиКПрограммамНаСерверахLinux.Получить(ОписаниеПрограммы.Ссылка) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого ПутиКМодулямПрограмм Из ОбщиеНастройки.ПоставляемыеПутиКМодулямПрограмм Цикл
Если Не СтрНачинаетсяС(ОписаниеПрограммы.Идентификатор, ПутиКМодулямПрограмм.Ключ) Тогда
Продолжить;
КонецЕсли;
ПутиКМодулямПрограммы = ПутиКМодулямПрограмм.Значение.Получить(ТипПлатформыСтрокой);
Если ПутиКМодулямПрограммы = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПути = Новый Структура("ПутьКПрограмме, Существует", ПутиКМодулямПрограммы[0], Ложь);
ПутиКПрограммамНаСерверахLinux.Вставить(ОписаниеПрограммы.Ссылка, ОписаниеПути);
Для Каждого ПутиКМодулям Из ПутиКМодулямПрограммы Цикл
Если Не ОдинИзМодулейСуществует(ПутиКМодулям) Тогда
Продолжить;
КонецЕсли;
ОписаниеПути.ПутьКПрограмме = ПутиКМодулям;
ОписаниеПути.Существует = Истина;
Прервать;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Возврат Новый ФиксированноеСоответствие(ПутиКПрограммамНаСерверахLinux);
КонецФункции
Функция ОдинИзМодулейСуществует(ПутиКМодулям)
МодулиПрограммы = СтрРазделить(ПутиКМодулям, ":");
Результат = Ложь;
Для Каждого МодульПрограммы Из МодулиПрограммы Цикл
Файл = Новый Файл(МодульПрограммы);
Если Файл.Существует() Тогда
Результат = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти