КриптографияПриСозданииФормыНаСервере (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебный
БСП

Криптография при создании формы на сервере. Управляет видимостью элементов и команд в зависимости от наличия и

// Управляет видимостью элементов и команд в зависимости от наличия и
// использования электронной подписи и шифрования.
//
Процедура КриптографияПриСозданииФормыНаСервере(Форма, ЭтоФормаСписка = Истина, ТолькоКартинкаСтрок = Ложь) Экспорт
	
	Элементы = Форма.Элементы;
	
	ЭлектронноеПодписание = Ложь;
	Шифрование = Ложь;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
	
		МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
		Если МодульЭлектроннаяПодписьСлужебный.ИспользоватьИнтерактивноеДобавлениеЭлектронныхПодписейИШифрование() Тогда
			МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
			ЭлектронноеПодписание    = МодульЭлектроннаяПодпись.ИспользоватьЭлектронныеПодписи();
			Шифрование               = МодульЭлектроннаяПодпись.ИспользоватьШифрование();
		КонецЕсли;
		
	КонецЕсли;
	
	Если ЭтоФормаСписка Тогда
		Если ОбщегоНазначения.ЭтоСправочник(Метаданные.НайтиПоПолномуИмени(Форма.Список.ОсновнаяТаблица)) Тогда
			ТаблицаФайлов = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(Форма.Список.ОсновнаяТаблица);
			Доступна = ДоступнаЭлектроннаяПодпись(ТипЗнч(ТаблицаФайлов.ПустаяСсылка()));
		Иначе
			Доступна = Истина;
		КонецЕсли;
	Иначе
		Доступна = ДоступнаЭлектроннаяПодпись(ТипЗнч(Форма.Объект.Ссылка));
	КонецЕсли;
	Используется = (ЭлектронноеПодписание Или Шифрование) И Доступна;
	
	Если ЭтоФормаСписка Тогда
		Элементы.СписокНомерКартинкиПодписанЗашифрован.Видимость = Используется;
	КонецЕсли;
	
	Если Не ТолькоКартинкаСтрок Тогда
		Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Используется;
		
		Если ЭтоФормаСписка Тогда
			Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Используется;
		Иначе
			Элементы.ГруппаЭлектронныеПодписи.Видимость = ЭлектронноеПодписание;
			Элементы.ГруппаСертификатыШифрования.Видимость = Шифрование;
		КонецЕсли;
	КонецЕсли;
	
	Если Не Используется Тогда
		Возврат;
	КонецЕсли;
	
	Если Не ТолькоКартинкаСтрок Тогда
		Элементы.ФормаГруппаКомандЭлектроннаяПодпись.Видимость = ЭлектронноеПодписание;
		Элементы.ФормаГруппаКомандШифрование.Видимость = Шифрование;
		
		Если ЭтоФормаСписка Тогда
			Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодпись.Видимость = ЭлектронноеПодписание;
			Элементы.СписокКонтекстноеМенюГруппаКомандШифрование.Видимость = Шифрование;
		КонецЕсли;
	КонецЕсли;
	
	Если ЭлектронноеПодписание И Шифрование Тогда
		Заголовок = НСтр("ru = 'Электронная подпись и шифрование'");
		Подсказка = НСтр("ru = 'Наличие электронной подписи или шифрования'");
		Картинка  = БиблиотекаКартинок["ПодписанЗашифрованЗаголовок"];
	ИначеЕсли ЭлектронноеПодписание Тогда
		Заголовок = НСтр("ru = 'Электронная подпись'");
		Подсказка = НСтр("ru = 'Наличие электронной подписи'");
		Картинка  = БиблиотекаКартинок["ПодписанЭП"];
	Иначе // Шифрование
		Заголовок = НСтр("ru = 'Шифрование'");
		Подсказка = НСтр("ru = 'Наличие шифрования'");
		Картинка  = БиблиотекаКартинок["Зашифрован"];
	КонецЕсли;
	
	Если ЭтоФормаСписка Тогда
		Элементы.СписокНомерКартинкиПодписанЗашифрован.КартинкаШапки = Картинка;
		Элементы.СписокНомерКартинкиПодписанЗашифрован.Подсказка = Подсказка;
	КонецЕсли;
	
	Если Не ТолькоКартинкаСтрок Тогда
		Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Заголовок = Заголовок;
		Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Подсказка = Заголовок;
		Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Картинка  = Картинка;
		
		Если ЭтоФормаСписка Тогда
			Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Заголовок = Заголовок;
			Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Подсказка = Заголовок;
			Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Картинка  = Картинка;
		КонецЕсли;
	КонецЕсли;
	
	МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный");
	МодульЭлектроннаяПодписьСлужебный.ОформитьСписокПодписей(Форма, "ЭлектронныеПодписи");
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПриСозданииНаСервере (БСП)

ФормаЗадачиПриСозданииНаСервере (БСП)

ФормаЭлементаПриСозданииНаСервере (БСП)

МенеджерКриптографии (БСП)

УстановитьОформлениеЗадач (БСП)

УстановитьОформлениеБизнесПроцессов (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз