#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РаботаСФайламиСлужебный.ФормаЭлементаПриСозданииНаСервере(
ЭтотОбъект, Отказ, СтандартнаяОбработка, Параметры, ТолькоПросмотр);
ПараметрыОтправки = ?(ЗначениеЗаполнено(Параметры.ПараметрыОтправки),
Параметры.ПараметрыОтправки, РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки());
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
КонецЕсли;
УстановитьДоступностьКнопок(ЭтотОбъект, Элементы);
ДоступнаПечатьСоШтампом = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись")
И (НРег(Объект.Расширение) = "mxl" Или НРег(Объект.Расширение) = "docx")
И Объект.ПодписанЭП;
Элементы.ПечатьСоШтампом.Видимость = ДоступнаПечатьСоШтампом;
Если Не ДоступнаПечатьСоШтампом Тогда
Элементы.ПодменюПечать.Вид = ВидГруппыФормы.ГруппаКнопок;
Элементы.Печать.Заголовок = НСтр("ru = 'Печать'");
КонецЕсли;
Элементы.ФормаУдалить.Видимость = (Объект.Автор = Пользователи.АвторизованныйПользователь());
ОбновитьЗаголовок();
ОбновитьПолныйПуть();
ОбновитьПояснениеОблачногоСервиса(Объект.Ссылка);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.Описание.Высота = 0;
Элементы.Наименование.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
Элементы.ГруппаСведенияЧасть1.ВыравниваниеЭлементовИЗаголовков =
ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево;
Элементы.ГруппаСведенияЧасть2.ВыравниваниеЭлементовИЗаголовков =
ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево;
Элементы.ГруппаХарактеристикиФайла.ВыравниваниеЭлементовИЗаголовков =
ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево;
КонецЕсли;
ИнтеграцияПодсистемБСП.ПриСозданииФормыЭлементаФайлов(ЭтотОбъект);
РаботаСФайламиПереопределяемый.ПриСозданииФормыЭлементаФайлов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НаименованиеДоЗаписи = Объект.Наименование;
УстановитьДоступностьКомандСпискаЭП();
УстановитьДоступностьКомандСпискаШифрования();
РаботаСФайламиСлужебныйКлиент.ПрочитатьСертификатыПодписей(ЭтотОбъект);
ОтображатьВкладкиДополнительныхДанных();
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
РазблокироватьОбъект(Объект.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант") И (ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи")
Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина);
КонецЕсли;
Если ИмяСобытия = "Запись_Файл" И Источник = Объект.Ссылка И Не Модифицированность Тогда
ОбновитьОбъект();
КонецЕсли;
Если ИмяСобытия = "Запись_Подпись" Тогда
ПриПолученииПодписей(Неопределено, Неопределено);
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.МашиночитаемыеДоверенности") Тогда
Если ВРег(ИмяСобытия) = ВРег("ИзмененРезультатПроверкиМЧД") И Источник = Объект.Ссылка Тогда
Найдено = ЭлектронныеПодписи.НайтиСтроки(Новый Структура("РезультатПроверкиПодписиПоМЧД", Параметр));
Если Найдено.Количество() = 0 Тогда
Возврат;
КонецЕсли;
УстановитьМодифицированность();
МодульМашиночитаемыеДоверенностиФНССлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
"МашиночитаемыеДоверенностиФНССлужебныйКлиент");
ИнформацияМЧД = МодульМашиночитаемыеДоверенностиФНССлужебныйКлиент.ИнформацияМЧД(Параметр);
ЗаполнитьЗначенияСвойств(Найдено[0], ИнформацияМЧД);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент");
Если МодульУправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ОтображатьВкладкиДополнительныхДанных();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
РаботаСФайламиСлужебный.ЗаполнитьСписокПодписей(ЭтотОбъект);
РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
ИзменениеФайлов = Пользователи.ЭтоПолноправныйПользователь();
УстановитьДоступностьКнопок(ЭтотОбъект, Элементы);
ОбновитьЗаголовок();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда
РаботаСФайламиСлужебный.ПеренестиРезультатыПроверкиПодписей(ЭлектронныеПодписи, ЗначениеКопирования);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
СертификатыИсточника = МодульЭлектроннаяПодпись.СертификатыШифрования(ЗначениеКопирования);
МодульЭлектроннаяПодпись.ЗаписатьСертификатыШифрования(ТекущийОбъект, СертификатыИсточника);
ПодписиОбъекта = МодульЭлектроннаяПодпись.ПодписиОбъекта(ЗначениеКопирования);
МодульЭлектроннаяПодпись.ДобавитьПодпись(ТекущийОбъект, ПодписиОбъекта);
КонецЕсли;
Иначе
РаботаСФайламиСлужебный.ПеренестиРезультатыПроверкиПодписей(ЭлектронныеПодписи, ТекущийОбъект.Ссылка);
КонецЕсли;
Если НаименованиеДоЗаписи <> ТекущийОбъект.Наименование Тогда
ТипХраненияФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект.ТекущаяВерсия, "ТипХраненияФайла");
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
РаботаСФайламиВТомахСлужебный.ПереименоватьФайл(ТекущийОбъект.ТекущаяВерсия,
ТекущийОбъект.Наименование, НаименованиеДоЗаписи, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда
СоздатьКопиюВерсии(ТекущийОбъект.Ссылка, ЗначениеКопирования);
ЗначениеКопирования = Справочники[ИмяСправочника].ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда
ОбновитьПолныйПуть();
КонецЕсли;
ТипВладельца = ТипЗнч(Объект.ВладелецФайла);
Элементы.ВладелецФайла.Заголовок = ТипВладельца;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "OpenJournal" Тогда
СтандартнаяОбработка = Ложь;
ПараметрыОтбора = ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись);
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыОтбора, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЭлектронныеПодписи
&НаКлиенте
Процедура ЭлектронныеПодписиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.ЭлектронныеПодписи.ТекущиеДанные;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
Если Поле.Имя = "ЭлектронныеПодписиРезультатПроверкиКраткий"
И ЗначениеЗаполнено(ТекущиеДанные.РезультатПроверки)
И (ЗначениеЗаполнено(ТекущиеДанные.РезультатПроверки.ОшибкаПроверкиДополнительныхАтрибутов)
Или ЗначениеЗаполнено(ТекущиеДанные.РезультатПроверки.ОшибкаМатематическойПроверкиПодписи)) Тогда
ДополнительныеПараметры = Новый Структура;
Если ЗначениеЗаполнено(ТекущиеДанные.АдресПодписи) Тогда
ДополнительныеПараметры.Вставить("ДанныеПодписи",
ТекущиеДанные.АдресПодписи);
Иначе
МодульЭлектроннаяПодписьКлиент.ОткрытьПодпись(ТекущиеДанные);
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Проверка подписи'"));
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ?(ЗначениеЗаполнено(ТекущиеДанные.РезультатПроверки.ОшибкаМатематическойПроверкиПодписи),
ТекущиеДанные.РезультатПроверки.ОшибкаМатематическойПроверкиПодписи,
ТекущиеДанные.РезультатПроверки.ОшибкаПроверкиДополнительныхАтрибутов));
ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина);
ПараметрыФормы.Вставить("ПоказатьИнструкцию", Истина);
Если ЗначениеЗаполнено(ТекущиеДанные.АдресСертификата) Тогда
ДополнительныеПараметры.Вставить("ДанныеСертификата",
ТекущиеДанные.АдресСертификата);
КонецЕсли;
ПараметрыФормы.Вставить("ДополнительныеДанные", ДополнительныеПараметры);
МодульЭлектроннаяПодписьКлиент.ОткрытьФормуРасширенногоПредставленияОшибки(ПараметрыФормы, ЭтотОбъект);
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент.ОткрытьПодпись(ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификатыШифрования
&НаКлиенте
Процедура СертификатыШифрованияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьСертификатШифрования(Неопределено);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область ОбработчикиКомандФайлов
&НаКлиенте
Процедура ПоказатьВСписке(Команда)
ОбъектФормы = ЭтотОбъект["Объект"];
СтандартныеПодсистемыКлиент.ПоказатьВСписке(ОбъектФормы.Ссылка, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьИзФайлаНаДиске(Команда)
Если ЭтоНовый()
ИЛИ Объект.Зашифрован
ИЛИ Объект.ПодписанЭП
ИЛИ ЗначениеЗаполнено(Объект.Редактирует) Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ВызовСервера");
Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеЗавершение", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ОбновитьИзФайлаНаДискеСОповещением(Обработчик, ДанныеФайла, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура СтандартнаяЗаписатьИЗакрыть(Команда)
Если ОбработатьКомандуЗаписиФайла() Тогда
Результат = Новый Структура();
Результат.Вставить("ТекстОшибки", "");
Результат.Вставить("ФайлДобавлен", Истина);
Результат.Вставить("ФайлСсылка", Объект.Ссылка);
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтандартнаяЗаписать(Команда)
ОбработатьКомандуЗаписиФайла();
КонецПроцедуры
&НаКлиенте
Процедура СтандартныеУстановитьПометкуУдаления(Команда)
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Если Объект.ПометкаУдаления Тогда
ТекстВопроса = НСтр(
"ru = 'Для выполнения действия запишите изменения файла.
|Записать изменения и снять пометку на удаление с файла
|""%1""?'");
Иначе
ТекстВопроса = НСтр(
"ru = 'Для выполнения действия запишите изменения файла.
|Записать изменения и пометить на удаление файл
|""%1""?'");
КонецЕсли;
Иначе
Если Объект.ПометкаУдаления Тогда
ТекстВопроса = НСтр("ru = 'Снять пометку на удаление с файла
|""%1""?'");
Иначе
ТекстВопроса = НСтр("ru = 'Пометить на удаление файл
|""%1""?'");
КонецЕсли;
КонецЕсли;
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстВопроса, Объект.Ссылка);
ОписаниеОповещения = Новый ОписаниеОповещения("СтандартныеУстановитьПометкуУдаленияОтветПолучен", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура СтандартныеУстановитьПометкуУдаленияОтветПолучен(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Объект.ПометкаУдаления = НЕ Объект.ПометкаУдаления;
ОбработатьКомандуЗаписиФайла();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент");
МодульУправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандЭПИШифрования
&НаКлиенте
Процедура ОтправитьНаПодписание(Команда)
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись")
Или Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.СервисМобильнойПодписи")
Тогда
Возврат;
КонецЕсли;
Если ЭтоНовый()
Или ЗначениеЗаполнено(Объект.Редактирует)
Или Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Записать();
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПриПолученииПодписи", ЭтотОбъект);
ДополнительныеПараметры = Новый Структура("ОбработкаРезультата", ОписаниеОповещения);
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
ПараметрыПодписания = МодульЭлектроннаяПодписьКлиент.НовыйТипПодписи();
ПараметрыПодписания.ВыборДоверенности = Истина;
РаботаСФайламиКлиент.ОтправитьФайлНаПодписание(Объект.Ссылка, УникальныйИдентификатор, ДополнительныеПараметры, ПараметрыПодписания);
КонецПроцедуры
&НаКлиенте
Процедура Подписать(Команда)
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
Если ЭтоНовый()
Или ЗначениеЗаполнено(Объект.Редактирует)
Или Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Записать();
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПриПолученииПодписи", ЭтотОбъект);
ДополнительныеПараметры = Новый Структура("ОбработкаРезультата", ОписаниеОповещения);
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
ПараметрыПодписания = МодульЭлектроннаяПодписьКлиент.НовыйТипПодписи();
ПараметрыПодписания.РазрешитьОтправкуНаПодписание = Истина;
ПараметрыПодписания.ВыборДоверенности = Истина;
РаботаСФайламиКлиент.ПодписатьФайл(Объект.Ссылка, УникальныйИдентификатор, ДополнительныеПараметры, ПараметрыПодписания);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьЭПИзФайла(Команда)
Если ЭтоНовый()
Или ЗначениеЗаполнено(Объект.Редактирует)
Или Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
ПрисоединенныйФайл = Объект.Ссылка;
РаботаСФайламиСлужебныйКлиент.ДобавитьПодписьИзФайла(
ПрисоединенныйФайл,
УникальныйИдентификатор,
Новый ОписаниеОповещения("ПриПолученииПодписей", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура СохранитьВместеСЭП(Команда)
Если ЭтоНовый()
ИЛИ ЗначениеЗаполнено(Объект.Редактирует)
ИЛИ Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
РаботаСФайламиКлиент.СохранитьВместеСЭП(
Объект.Ссылка,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура Зашифровать(Команда)
Если ЭтоНовый() Или ЗначениеЗаполнено(Объект.Редактирует) Или Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Записать();
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(Объект.Ссылка);
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
Обработчик = Новый ОписаниеОповещения("ЗашифроватьПослеШифрованияНаКлиенте", ЭтотОбъект, ПараметрыОбработчика);
РаботаСФайламиСлужебныйКлиент.Зашифровать(
Обработчик,
ДанныеФайла,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗашифроватьПослеШифрованияНаКлиенте(Результат, ПараметрыВыполнения) Экспорт
Если Не Результат.Успех Тогда
Возврат;
КонецЕсли;
ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя();
МассивФайловВРабочемКаталогеДляУдаления = Новый Массив;
ЗашифроватьСервер(
Результат.МассивДанныхДляЗанесенияВБазу,
Результат.МассивОтпечатков,
МассивФайловВРабочемКаталогеДляУдаления,
ИмяРабочегоКаталога);
РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании(
МассивФайловВРабочемКаталогеДляУдаления,
ПараметрыВыполнения.ДанныеФайла.Владелец,
Объект.Ссылка);
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
УстановитьДоступностьКомандСпискаШифрования();
КонецПроцедуры
&НаКлиенте
Процедура Расшифровать(Команда)
Если ЭтоНовый() Или Не Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(Объект.Ссылка);
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
Обработчик = Новый ОписаниеОповещения("РасшифроватьПослеРасшифровкиНаКлиенте", ЭтотОбъект, ПараметрыОбработчика);
РаботаСФайламиСлужебныйКлиент.Расшифровать(
Обработчик,
ДанныеФайла.Ссылка,
УникальныйИдентификатор,
ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура РасшифроватьПослеРасшифровкиНаКлиенте(Результат, ПараметрыВыполнения) Экспорт
Если Не Результат.Успех Тогда
Возврат;
КонецЕсли;
ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя();
РасшифроватьСервер(Результат.МассивДанныхДляЗанесенияВБазу, ИмяРабочегоКаталога);
РаботаСФайламиСлужебныйКлиент.ИнформироватьОРасшифровке(
ПараметрыВыполнения.ДанныеФайла.Владелец,
Объект.Ссылка);
ЗаполнитьСписокШифрованияНаСервере();
УстановитьДоступностьКомандСпискаШифрования();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокШифрованияНаСервере()
РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КомандаЭПСписокОткрытьПодпись(Команда)
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
МодульЭлектроннаяПодписьКлиент.ОткрытьПодпись(Элементы.ЭлектронныеПодписи.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьЭП(Команда)
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
Если Элементы.ЭлектронныеПодписи.ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект,
ДанныеФайла.СсылкаНаДвоичныеДанныеФайла,
Элементы.ЭлектронныеПодписи.ВыделенныеСтроки);
УстановитьМодифицированность();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВсе(Команда)
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект, ДанныеФайла.СсылкаНаДвоичныеДанныеФайла);
УстановитьМодифицированность();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьМодифицированность()
Если Элементы.ФормаЗаписатьИЗакрыть.Видимость И Элементы.ФормаЗаписатьИЗакрыть.Доступность Тогда
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродлитьДействиеПодписей(Команда)
ОбработчикПродолжения = Новый ОписаниеОповещения("ПриПолученииПодписей", ЭтотОбъект);
ПараметрыПродления = Новый Структура;
Структура = Новый Структура;
Структура.Вставить("ПодписанныйОбъект", Параметры.Ключ);
Структура.Вставить("ПорядковыйНомер", Неопределено);
ПараметрыПродления.Вставить("Подпись", Структура);
РаботаСФайламиСлужебныйКлиент.ПродлитьДействиеПодписей(ЭтотОбъект, ПараметрыПродления, ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ПроверенаВручную(Команда)
Если Элементы.ЭлектронныеПодписи.ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВводаОбоснованияДостоверностиПодписи",
ЭтотОбъект);
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
МодульЭлектроннаяПодписьКлиент.ВвестиОбоснованиеДостоверностиПодписи(ЭтотОбъект, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьПодпись(Команда)
Если Элементы.ЭлектронныеПодписи.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.ЭлектронныеПодписи.ТекущиеДанные;
Если ТекущиеДанные.Объект = Неопределено Или ТекущиеДанные.Объект.Пустая() Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
ИмяФайлаПодписи = ТекущиеДанные.ИмяФайлаПодписи;
Если Не ЗначениеЗаполнено(ИмяФайлаПодписи) Тогда
РасширениеДляФайловПодписи = МодульЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи;
МодульЭлектроннаяПодписьСлужебныйКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьСлужебныйКлиентСервер");
ИмяФайлаПодписи = МодульЭлектроннаяПодписьСлужебныйКлиентСервер.ИмяФайлаПодписи(Объект.Наименование,
ТекущиеДанные.КомуВыданСертификат, РасширениеДляФайловПодписи);
КонецЕсли;
МодульЭлектроннаяПодписьКлиент.СохранитьПодпись(ТекущиеДанные.АдресПодписи, ИмяФайлаПодписи);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьЭП(Команда)
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьЭПОтветПолучен", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Удалить выделенные подписи?'"), РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьЭПОтветПолучен(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Записать();
УдалитьИзСпискаПодписейИЗаписатьФайл();
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
УстановитьДоступностьКомандСпискаЭП();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСертификатШифрования(Команда)
ТекущиеДанные = Элементы.СертификатыШифрования.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
Если ПустаяСтрока(ТекущиеДанные.АдресСертификата) Тогда
МодульЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.Отпечаток);
Иначе
МодульЭлектроннаяПодписьКлиент.ОткрытьСертификат(ТекущиеДанные.АдресСертификата);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандСпискаЭП()
РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект, ЭтоНовый());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандСпискаШифрования()
РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаСертификатовШифрования(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандДляПоддержкиСовместнойРаботыСФайлами
&НаКлиенте
Процедура Занять(Команда)
Если Модифицированность И Не Записать() Тогда
Возврат;
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("ПрочитатьИУстановитьДоступностьЭлементовФормы", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, Объект.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура Редактировать(Команда)
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Редактирует)
И Объект.Редактирует <> ТекущийПользователь Тогда
Возврат;
КонецЕсли;
Если Модифицированность И Не Записать() Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ДляОткрытия");
ФайлРедактируется = ЗначениеЗаполнено(Объект.Редактирует);
РаботаСФайламиСлужебныйКлиент.РедактироватьФайл(Неопределено, ДанныеФайла, УникальныйИдентификатор);
Если Не ФайлРедактируется Тогда
ОбновитьОбъект();
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакончитьРедактирование(Команда)
Если ЭтоНовый()
Или Не ЗначениеЗаполнено(Объект.Редактирует)
Или Объект.Редактирует <> ТекущийПользователь Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ВызовСервера");
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакончитьРедактированиеВыполненоПомещение", ЭтотОбъект);
ПараметрыОбновленияФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОбновленияФайла(ОписаниеОповещения, ДанныеФайла.Ссылка, УникальныйИдентификатор);
ПараметрыОбновленияФайла.ХранитьВерсии = ДанныеФайла.ХранитьВерсии;
Если Не ВозможностьСоздаватьВерсииФайлов Тогда
ПараметрыОбновленияФайла.Вставить("СоздатьНовуюВерсию", Ложь);
КонецЕсли;
ПараметрыОбновленияФайла.ФайлРедактируетТекущийПользователь = ДанныеФайла.ФайлРедактируетТекущийПользователь;
ПараметрыОбновленияФайла.Редактирует = ДанныеФайла.Редактирует;
РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеСОповещением(ПараметрыОбновленияФайла);
КонецПроцедуры
&НаКлиенте
Процедура ЗакончитьРедактированиеВыполненоПомещение(ИнформацияОФайле, ДополнительныеПараметры) Экспорт
ОбновитьОбъект();
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Освободить(Команда)
Если ЭтоНовый()
Или Не ЗначениеЗаполнено(Объект.Редактирует)
Или Объект.Редактирует <> ТекущийПользователь Тогда
Возврат;
КонецЕсли;
ОсвободитьЗавершение = Новый ОписаниеОповещения("ОсвободитьЗавершение", ЭтотОбъект);
Если Модифицированность Тогда
ПоказатьВопрос(ОсвободитьЗавершение,
НСтр("ru = 'При отмене редактирования внесенные изменения будут утеряны. Продолжить?'"),
РежимДиалогаВопрос.ДаНет);
Иначе
ВыполнитьОбработкуОповещения(ОсвободитьЗавершение, КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОсвободитьЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОсвободитьФайл();
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла("РедактированиеОтменено");
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
РаботаСФайламиСлужебныйКлиент.ИзменитьКоличествоЗанятыхФайлов();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьИзменения(Команда)
Если Модифицированность Тогда
Записать();
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("ПрочитатьИУстановитьДоступностьЭлементовФормы", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.СохранитьИзмененияФайлаСОповещением(Обработчик,
Объект.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент");
МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент");
МодульУправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
Если ЗначениеЗаполнено(Объект.Ссылка) Или Записать() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка);
ПриОтправкеФайловПочтой(ПараметрыОтправки, Файлы, Объект.ВладелецФайла, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(Файлы, УникальныйИдентификатор, ПараметрыОтправки, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Печать(Команда)
Если ЗначениеЗаполнено(Объект.Ссылка) Или Записать() Тогда
Файлы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка);
РаботаСФайламиКлиент.НапечататьФайлы(Файлы, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПечатьСоШтампом(Команда)
Если ЗначениеЗаполнено(Объект.Ссылка) Или Записать() Тогда
РаботаСФайламиСлужебныйКлиент.НапечататьФайлСоШтампом(Объект.Ссылка, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Удалить(Команда)
РаботаСФайламиСлужебныйКлиент.УдалитьДанные(
Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект),
Объект.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьЗаголовок()
Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда
ТипФайла = НСтр("ru = 'Файл'");
Иначе
ТипФайла = НСтр("ru = 'Присоединенный файл'");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (%2)'"), Строка(Объект.Ссылка), ТипФайла);
Иначе
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (Создание)'"), ТипФайла);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтображатьВкладкиДополнительныхДанных()
Если Элементы.ГруппаДополнительныеРеквизиты.ПодчиненныеЭлементы.Количество() > 0 Тогда
ПустаяДекорация = Элементы.Найти("Свойства_ПустаяДекорация");
Если ПустаяДекорация <> Неопределено Тогда
ВидимостьДополнительныхРеквизитов = ПустаяДекорация.Видимость;
Иначе
ВидимостьДополнительныхРеквизитов = Истина;
КонецЕсли;
Иначе
ВидимостьДополнительныхРеквизитов = Ложь;
КонецЕсли;
ИспользоватьВкладки = ВидимостьДополнительныхРеквизитов Или Элементы.ГруппаЭлектронныеПодписи.Видимость Или Элементы.ГруппаСертификатыШифрования.Видимость;
Элементы.ГруппаДополнительныеДанныеСтраницы.ОтображениеСтраниц =
?(ИспользоватьВкладки , ОтображениеСтраницФормы.ЗакладкиСверху, ОтображениеСтраницФормы.Нет);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеФайла(Знач ПрисоединенныйФайл, Знач ИдентификаторФормы = Неопределено, Знач Режим = "")
РазблокироватьОбъект(ПрисоединенныйФайл, ИдентификаторФормы);
Если Режим = "ДляОткрытия" Тогда
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(
ПрисоединенныйФайл, Неопределено, ИдентификаторФормы);
ИначеЕсли Режим = "ДляСохранения" Тогда
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(
ПрисоединенныйФайл,, ИдентификаторФормы);
ИначеЕсли Режим = "ВызовСервера" Тогда
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Возврат РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ПрисоединенныйФайл,, ПараметрыДанныхФайла);
Иначе
ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
ПараметрыДанныхФайла.ПолучатьСсылкуНаДвоичныеДанные = Истина;
ПараметрыДанныхФайла.ИдентификаторФормы = ИдентификаторФормы;
Возврат РаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл, ПараметрыДанныхФайла);
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ОткрытьФайлДляПросмотра()
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ФайлРедактируется = ЗначениеЗаполнено(Объект.Редактирует)
И Объект.Редактирует = ТекущийПользователь;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ДляОткрытия");
РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла, ФайлРедактируется);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКаталогФайла()
Если ЭтоНовый()
ИЛИ Объект.Зашифрован Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ДляОткрытия");
РаботаСФайламиКлиент.ОткрытьКаталогФайла(ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКак()
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ДанныеФайла = ДанныеФайла(Объект.Ссылка, УникальныйИдентификатор, "ДляСохранения");
РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт
Закрыть();
КонецПроцедуры
&НаСервере
Процедура УдалитьИзСпискаПодписейИЗаписатьФайл()
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись");
ИндексыСтрок = Новый Массив;
Для Каждого НомерВыделеннойСтроки Из Элементы.ЭлектронныеПодписи.ВыделенныеСтроки Цикл
УдаляемаяСтрока = ЭлектронныеПодписи.НайтиПоИдентификатору(НомерВыделеннойСтроки);
Если ЗначениеЗаполнено(УдаляемаяСтрока.ПорядковыйНомер) Тогда
ИндексыСтрок.Добавить(УдаляемаяСтрока.ПорядковыйНомер);
Иначе
ИндексыСтрок.Добавить(УдаляемаяСтрока.ИдентификаторПодписи);
КонецЕсли;
КонецЦикла;
МодульЭлектроннаяПодпись.УдалитьПодпись(Объект.Ссылка, ИндексыСтрок, УникальныйИдентификатор);
ОбновитьОбъект();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКнопок(Форма, Элементы)
ИменаВсехКоманд = ИменаВсехКомандФормы();
ИменаДоступныхКоманд = ДоступныеКомандыФормы(Форма);
Если Форма.ЭлектронныеПодписи.Количество() = 0 Тогда
СделатьКомандуНедоступной(ИменаДоступныхКоманд, "ОткрытьПодпись");
Форма.Элементы.ФормаСохранитьВместеСПодписью.Видимость = Ложь;
Иначе
Форма.Элементы.ФормаСохранитьВместеСПодписью.Видимость = Истина;
КонецЕсли;
Для Каждого ЭлементФормы Из Элементы Цикл
Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда
Продолжить;
КонецЕсли;
Если ИменаВсехКоманд.Найти(ЭлементФормы.ИмяКоманды) <> Неопределено Тогда
ЭлементФормы.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементФормы Из Элементы Цикл
Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда
Продолжить;
КонецЕсли;
Если ИменаДоступныхКоманд.Найти(ЭлементФормы.ИмяКоманды) <> Неопределено Тогда
ЭлементФормы.Доступность = Истина;
КонецЕсли;
КонецЦикла;
Если ИменаДоступныхКоманд.Найти("Редактировать") <> Неопределено Тогда
Элементы.Описание.ПодсказкаВвода = НСтр("ru = 'Краткое пояснение. Для редактирования содержимого файла нажмите кнопку Редактировать.'");
Иначе
Элементы.Описание.ПодсказкаВвода = НСтр("ru = 'Краткое пояснение. Для просмотра содержимого файла нажмите кнопку Просмотреть.'");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИменаВсехКомандФормы()
ИменаКоманд = ИменаКомандИзмененияФайла();
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ИменаКоманд, ИменаПрочихКоманд());
Возврат ИменаКоманд;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИменаПрочихКоманд()
ИменаКоманд = Новый Массив;
ИменаКоманд.Добавить("СохранитьВместеСЭП");
ИменаКоманд.Добавить("ОткрытьСертификат");
ИменаКоманд.Добавить("ОткрытьПодпись");
ИменаКоманд.Добавить("ПроверитьЭП");
ИменаКоманд.Добавить("ПроверитьВсе");
ИменаКоманд.Добавить("СохранитьПодпись");
ИменаКоманд.Добавить("ОткрытьКаталогФайла");
ИменаКоманд.Добавить("ОткрытьФайлДляПросмотра");
ИменаКоманд.Добавить("СохранитьКак");
Возврат ИменаКоманд;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИменаКомандИзмененияФайла()
ИменаКоманд = Новый Массив;
ИменаКоманд.Добавить("Подписать");
ИменаКоманд.Добавить("ДобавитьЭПИзФайла");
ИменаКоманд.Добавить("ОтправитьНаПодписание");
ИменаКоманд.Добавить("УдалитьЭП");
ИменаКоманд.Добавить("Редактировать");
ИменаКоманд.Добавить("Занять");
ИменаКоманд.Добавить("ЗакончитьРедактирование");
ИменаКоманд.Добавить("Освободить");
ИменаКоманд.Добавить("СохранитьИзменения");
ИменаКоманд.Добавить("Зашифровать");
ИменаКоманд.Добавить("Расшифровать");
ИменаКоманд.Добавить("СтандартныеСкопировать");
ИменаКоманд.Добавить("ОбновитьИзФайлаНаДиске");
ИменаКоманд.Добавить("СтандартнаяЗаписать");
ИменаКоманд.Добавить("СтандартнаяЗаписатьИЗакрыть");
ИменаКоманд.Добавить("СтандартныеУстановитьПометкуУдаления");
ИменаКоманд.Добавить("Скопировать");
Возврат ИменаКоманд;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ДоступныеКомандыФормы(Форма)
ЭтоНовыйФайл = Форма.Объект.Ссылка.Пустая();
Если ЭтоНовыйФайл Тогда
ИменаКоманд = Новый Массив;
ИменаКоманд.Добавить("СтандартнаяЗаписать");
ИменаКоманд.Добавить("СтандартнаяЗаписатьИЗакрыть");
Возврат ИменаКоманд;
КонецЕсли;
ИменаКоманд = ИменаВсехКомандФормы();
ФайлРедактируетсяВОблаке = Форма.ФайлРедактируетсяВОблаке;
ФайлРедактируется = ЗначениеЗаполнено(Форма.Объект.Редактирует) Или ФайлРедактируетсяВОблаке;
ФайлРедактируетТекущийПользователь = Форма.Объект.Редактирует = Форма.ТекущийПользователь;
ФайлПодписан = Форма.Объект.ПодписанЭП;
ФайлЗашифрован = Форма.Объект.Зашифрован;
Если ФайлРедактируется Тогда
Если ФайлРедактируетТекущийПользователь Тогда
СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске");
Иначе
СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование");
СделатьКомандуНедоступной(ИменаКоманд, "Редактировать");
Если Не Форма.ИзменениеФайлов Тогда
СделатьКомандуНедоступной(ИменаКоманд, "Освободить");
КонецЕсли;
КонецЕсли;
СделатьКомандуНедоступной(ИменаКоманд, "Занять");
СделатьКомандыЭПНедоступными(ИменаКоманд);
СделатьКомандуНедоступной(ИменаКоманд, "Зашифровать");
СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать");
Иначе
СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование");
СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения");
Если Не Форма.ИзменениеФайлов Тогда
СделатьКомандуНедоступной(ИменаКоманд, "Освободить");
КонецЕсли;
КонецЕсли;
Если ФайлПодписан Тогда
СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование");
СделатьКомандуНедоступной(ИменаКоманд, "Освободить");
СделатьКомандуНедоступной(ИменаКоманд, "Редактировать");
СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске");
Иначе
СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьСертификат");
СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьПодпись");
СделатьКомандуНедоступной(ИменаКоманд, "ПроверитьЭП");
СделатьКомандуНедоступной(ИменаКоманд, "ПроверитьВсе");
СделатьКомандуНедоступной(ИменаКоманд, "СохранитьПодпись");
СделатьКомандуНедоступной(ИменаКоманд, "УдалитьЭП");
СделатьКомандуНедоступной(ИменаКоманд, "СохранитьВместеСЭП");
КонецЕсли;
Если ФайлЗашифрован Тогда
СделатьКомандыЭПНедоступными(ИменаКоманд);
Если Не ФайлРедактируется Тогда
СделатьКомандуНедоступной(ИменаКоманд, "Освободить");
СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование");
КонецЕсли;
СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске");
СделатьКомандуНедоступной(ИменаКоманд, "Зашифровать");
СделатьКомандуНедоступной(ИменаКоманд, "ОткрытьКаталогФайла");
СделатьКомандуНедоступной(ИменаКоманд, "Подписать");
Иначе
СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать");
КонецЕсли;
Если ФайлРедактируетсяВОблаке Тогда
СделатьКомандуНедоступной(ИменаКоманд, "СтандартныеСкопировать");
СделатьКомандуНедоступной(ИменаКоманд, "СтандартныеУстановитьПометкуУдаления");
СделатьКомандуНедоступной(ИменаКоманд, "СтандартнаяЗаписатьИЗакрыть");
СделатьКомандуНедоступной(ИменаКоманд, "СтандартнаяЗаписать");
СделатьКомандуНедоступной(ИменаКоманд, "Скопировать");
СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения");
СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске");
КонецЕсли;
Если Форма.ТолькоПросмотр Тогда
СделатьКомандыЭПНедоступными(ИменаКоманд);
КонецЕсли;
Возврат ИменаКоманд;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура СделатьКомандыЭПНедоступными(Знач ИменаКоманд)
СделатьКомандуНедоступной(ИменаКоманд, "Подписать");
СделатьКомандуНедоступной(ИменаКоманд, "ДобавитьЭПИзФайла");
СделатьКомандуНедоступной(ИменаКоманд, "СохранитьВместеСЭП");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СделатьКомандуНедоступной(ИменаКоманд, ИмяКоманды)
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ИменаКоманд, ИмяКоманды);
КонецПроцедуры
&НаСервере
Процедура ЗашифроватьСервер(МассивДанныхДляЗанесенияВБазу,
МассивОтпечатков,
МассивФайловВРабочемКаталогеДляУдаления,
ИмяРабочегоКаталога)
ПараметрыЗаписиИнформацииОШифровании = РаботаСФайламиСлужебный.ПараметрыЗаписиИнформацииОШифровании();
ПараметрыЗаписиИнформацииОШифровании.ИмяРабочегоКаталога = ИмяРабочегоКаталога;
ПараметрыЗаписиИнформацииОШифровании.МассивДанныхДляЗанесенияВБазу = МассивДанныхДляЗанесенияВБазу;
ПараметрыЗаписиИнформацииОШифровании.МассивОтпечатков = МассивОтпечатков;
ПараметрыЗаписиИнформацииОШифровании.МассивФайловВРабочемКаталогеДляУдаления = МассивФайловВРабочемКаталогеДляУдаления;
ПараметрыЗаписиИнформацииОШифровании.УникальныйИдентификатор = УникальныйИдентификатор;
РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании(
Объект.Ссылка, ПараметрыЗаписиИнформацииОШифровании);
ОбновитьИнформациюОСертификатахОбъекта();
КонецПроцедуры
&НаСервере
Процедура РасшифроватьСервер(МассивДанныхДляЗанесенияВБазу,
ИмяРабочегоКаталога)
ПараметрыЗаписиИнформацииОШифровании = РаботаСФайламиСлужебный.ПараметрыЗаписиИнформацииОШифровании();
ПараметрыЗаписиИнформацииОШифровании.Зашифровать = Ложь;
ПараметрыЗаписиИнформацииОШифровании.ИмяРабочегоКаталога = ИмяРабочегоКаталога;
ПараметрыЗаписиИнформацииОШифровании.МассивДанныхДляЗанесенияВБазу = МассивДанныхДляЗанесенияВБазу;
ПараметрыЗаписиИнформацииОШифровании.УникальныйИдентификатор = УникальныйИдентификатор;
РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании(
Объект.Ссылка, ПараметрыЗаписиИнформацииОШифровании);
ОбновитьИнформациюОСертификатахОбъекта();
КонецПроцедуры
&НаСервере
Процедура ОбновитьОбъект()
Прочитать();
ДатаМодификации = МестноеВремя(Объект.ДатаМодификацииУниверсальная);
УстановитьДоступностьКнопок(ЭтотОбъект, Элементы);
КонецПроцедуры
&НаСервере
Процедура ОсвободитьФайл()
ЗаписываемыйОбъект = РеквизитФормыВЗначение("Объект");
РаботаСФайламиСлужебный.ОсвободитьФайл(ЗаписываемыйОбъект);
ЗначениеВРеквизитФормы(ЗаписываемыйОбъект, "Объект");
КонецПроцедуры
&НаКлиенте
Функция ОбработатьКомандуЗаписиФайла()
Если ПустаяСтрока(Объект.Наименование) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Для продолжения укажите имя файла.'"), , "Наименование", "Объект");
Возврат Ложь;
КонецЕсли;
Попытка
РаботаСФайламиСлужебныйКлиент.КорректноеИмяФайла(Объект.Наименование);
Исключение
ОбщегоНазначенияКлиент.СообщитьПользователю(
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), ,"Наименование", "Объект");
Возврат Ложь;
КонецПопытки;
Записать();
Модифицированность = Ложь;
ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Изменение);
ОповеститьОбИзменении(Объект.Ссылка);
ОповеститьОбИзменении(Объект.ВладелецФайла);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
ПараметрыОповещенияЗаписиФайла.ЭтоНовый = ФайлБылСоздан;
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
УстановитьДоступностьКомандСпискаЭП();
УстановитьДоступностьКомандСпискаШифрования();
Если НаименованиеДоЗаписи <> Объект.Наименование Тогда
Если ЗначениеЗаполнено(Объект.ТекущаяВерсия) Тогда
РаботаСФайламиСлужебныйКлиент.ОбновитьИнформациюВРабочемКаталоге(
Объект.ТекущаяВерсия, Объект.Наименование);
Иначе
РаботаСФайламиСлужебныйКлиент.ОбновитьИнформациюВРабочемКаталоге(
Объект.Ссылка, Объект.Наименование);
КонецЕсли;
НаименованиеДоЗаписи = Объект.Наименование;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервереБезКонтекста
Процедура РазблокироватьОбъект(Знач Ссылка, Знач УникальныйИдентификатор)
РазблокироватьДанныеДляРедактирования(Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииПодписи(ПараметрыВыполнения, Контекст) Экспорт
ОбновитьИнформациюОПодписиОбъекта();
УстановитьДоступностьКомандСпискаЭП();
КонецПроцедуры
&НаКлиенте
Процедура ПриПолученииПодписей(ПараметрыВыполнения, Контекст) Экспорт
ОбновитьИнформациюОПодписиОбъекта();
УстановитьДоступностьКомандСпискаЭП();
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюОПодписиОбъекта()
ФайлОбъект = Объект.Ссылка.ПолучитьОбъект();
ЗначениеВРеквизитФормы(ФайлОбъект, "Объект");
РаботаСФайламиСлужебный.ЗаполнитьСписокПодписей(ЭтотОбъект);
УстановитьДоступностьКнопок(ЭтотОбъект, Элементы);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюОСертификатахОбъекта()
ФайлОбъект = Объект.Ссылка.ПолучитьОбъект();
ЗначениеВРеквизитФормы(ФайлОбъект, "Объект");
РаботаСФайламиСлужебный.ЗаполнитьСписокШифрования(ЭтотОбъект);
УстановитьДоступностьКнопок(ЭтотОбъект, Элементы);
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьИУстановитьДоступностьЭлементовФормы(Результат, ДополнительныеПараметры) Экспорт
ОбновитьОбъект();
КонецПроцедуры
&НаКлиенте
Функция ЭтоНовый()
Возврат Объект.Ссылка.Пустая();
КонецФункции
&НаКлиенте
Процедура ОбновитьИзФайлаНаДискеЗавершение(Результат, ПараметрыВыполнения) Экспорт
ОбновитьОбъект();
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыОповещенияЗаписиФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОповещенияЗаписиФайла();
Оповестить("Запись_Файл", ПараметрыОповещенияЗаписиФайла, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененияИспользованияПодписанияИлиШифрования()
ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере();
ОтображатьВкладкиДополнительныхДанных();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере()
РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаДополнительныеДанныеСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства")
И ТекущаяСтраница.Имя = "ГруппаДополнительныеРеквизиты"
И Не ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
МодульУправлениеСвойствамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеСвойствамиКлиент");
МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПолныйПуть()
Если ТипЗнч(Объект.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда
ПапкаРодитель = Объект.ВладелецФайла;
Если ЗначениеЗаполнено(ПапкаРодитель) Тогда
ПолныйПуть = "";
Пока ЗначениеЗаполнено(ПапкаРодитель) Цикл
Если Не ПустаяСтрока(ПолныйПуть) Тогда
ПолныйПуть = "\" + ПолныйПуть;
КонецЕсли;
ПолныйПуть = Строка(ПапкаРодитель) + ПолныйПуть;
ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПапкаРодитель, "Родитель");
Если Не ЗначениеЗаполнено(ПапкаРодитель) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.ВладелецФайла.Подсказка = ПолныйПуть;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СоздатьКопиюВерсии(Приемник, Источник)
РеквизитыИсточника = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник,
"ТекущаяВерсия,Зашифрован,ДатаМодификацииУниверсальная");
Если РеквизитыИсточника.ТекущаяВерсия.Пустая() Тогда
Возврат;
КонецЕсли;
ХранилищеФайла = Неопределено;
РеквизитыТекущейВерсии = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РеквизитыИсточника.ТекущаяВерсия,
"ТипХраненияФайла,Размер,Расширение,ТекстХранилище");
Если РеквизитыТекущейВерсии.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
ХранилищеФайла = РаботаСФайлами.ХранилищеФайлаИзИнформационнойБазы(РеквизитыИсточника.ТекущаяВерсия);
КонецЕсли;
СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией");
СведенияОФайле.ИмяБезРасширения = Объект.Наименование;
СведенияОФайле.Размер = РеквизитыТекущейВерсии.Размер;
СведенияОФайле.РасширениеБезТочки = РеквизитыТекущейВерсии.Расширение;
СведенияОФайле.АдресВременногоХранилищаФайла = ХранилищеФайла;
СведенияОФайле.АдресВременногоХранилищаТекста = РеквизитыТекущейВерсии.ТекстХранилище;
СведенияОФайле.СсылкаНаВерсиюИсточник = РеквизитыИсточника.ТекущаяВерсия;
СведенияОФайле.Зашифрован = РеквизитыИсточника.Зашифрован;
СведенияОФайле.ВремяИзмененияУниверсальное = РеквизитыИсточника.ДатаМодификацииУниверсальная;
СведенияОФайле.ВремяИзменения = ДатаМодификации;
Версия = РаботаСФайламиСлужебный.СоздатьВерсию(Приемник, СведенияОФайле);
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(
Приемник, Версия, РеквизитыТекущейВерсии.ТекстХранилище, УникальныйИдентификатор);
ОбновитьОбъект();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПояснениеОблачногоСервиса(ПрисоединенныйФайл)
ВидимостьПояснения = Ложь;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюФайлов") Тогда
СведенияОСинхронизации = РаботаСФайламиСлужебный.СведенияОСинхронизации(Объект.ВладелецФайла);
Если СведенияОСинхронизации <> Неопределено Тогда
УчетнаяЗапись = СведенияОСинхронизации.УчетнаяЗапись;
ВидимостьПояснения = Истина;
Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Файл доступен только для просмотра, работа с ним ведется в облачном сервисе <a href=""%1"">%2</a>.'"),
СведенияОСинхронизации.АдресПапкиВОблачномСервисе, СведенияОСинхронизации.УчетнаяЗаписьНаименование);
Элементы.ДекорацияКартинкаСтатусСинхронизации.Видимость = НЕ СведенияОСинхронизации.Синхронизирован;
Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Синхронизирован: <a href=""%1"">%2</a>'"),
"OpenJournal", Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD"));
КонецЕсли;
КонецЕсли;
Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = ВидимостьПояснения;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись)
Возврат РаботаСФайламиСлужебный.ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись);
КонецФункции
&НаКлиенте
Процедура ПослеВводаОбоснованияДостоверностиПодписи(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиентСервер");
Для Каждого СтрокаСписка Из Элементы.ЭлектронныеПодписи.ВыделенныеСтроки Цикл
ТекущаяСтрока = ЭлектронныеПодписи.НайтиПоИдентификатору(СтрокаСписка);
Если ТекущаяСтрока.ПодписьВерна И ТекущаяСтрока.РезультатПроверки.ДополнительныеАтрибутыПровереныВручную <> Истина
Или ЗначениеЗаполнено(ТекущаяСтрока.РезультатПроверки.ОшибкаМатематическойПроверкиПодписи) Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Результат);
ЗаполнитьЗначенияСвойств(ТекущаяСтрока.РезультатПроверки, Результат);
МодульЭлектроннаяПодписьКлиентСервер.ЗаполнитьСтатусПодписи(ТекущаяСтрока, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецЦикла;
УстановитьМодифицированность();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
ИнтеграцияПодсистемБСП.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти