#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
Если ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда
РаботаСФайламиСлужебный.ИзменитьФормуДляВнешнегоПользователя(ЭтотОбъект, Истина);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра(
"ТекущийПользователь", ТекущийПользователь);
РаботаСФайламиСлужебный.ЗаполнитьУсловноеОформлениеСпискаФайлов(Список);
РаботаСФайламиСлужебный.ДобавитьОтборыВСписокФайлов(Список);
Элементы.ПоказыватьСлужебныеФайлы.Видимость = Пользователи.ЭтоПолноправныйПользователь();
ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
НавигационнаяСсылка = "e1cib/app/" + ИмяФормы;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ПапкиФайлов" Тогда
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "Запись_Файл" Тогда
Элементы.Список.Обновить();
Если ЗначениеЗаполнено(Параметр.Файл) Тогда
Элементы.Список.ТекущаяСтрока = Параметр.Файл;
ИначеЕсли Источник <> Неопределено Тогда
Элементы.Список.ТекущаяСтрока = Источник;
КонецЕсли;
ИначеЕсли ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант")
И (ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи")
Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененииИспользованияПодписанияИлиШифрования", 0.3, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьДоступностьКоманд(Ложь, Ложь);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(Элементы.Список.ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОткрытьФайлСОповещением(Неопределено, ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Просмотреть(Команда)
Если Не ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(Элементы.Список.ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор);
РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКак(Команда)
Если Не ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(Элементы.Список.ТекущиеДанные.Ссылка, , УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура Освободить(Команда)
Если Не ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("ОсвободитьЗавершение", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ОсвободитьФайлы(Элементы.Список);
Элементы.Список.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
Элементы.Список.Обновить();
ПодключитьОбработчикОжидания("УстановитьДоступностьФайловыхКоманд", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСвойстваФайла(Команда)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат
КонецЕсли;
РаботаСФайламиКлиент.ОткрытьФормуФайла(ТекущиеДанные.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаления(Команда)
УстановитьСнятьПометкуУдаления(Элементы.Список.ВыделенныеСтроки);
Элементы.Список.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
Отказ = Истина;
УстановитьСнятьПометкуУдаления(Элементы.Список.ВыделенныеСтроки);
Элементы.Список.Обновить();
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьСлужебныеФайлы(Команда)
Элементы.ПоказыватьСлужебныеФайлы.Пометка =
РаботаСФайламиСлужебныйКлиент.ПоказыватьСлужебныеФайлыНажатие(Список);
КонецПроцедуры
&НаКлиенте
Процедура Удалить(Команда)
Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.УдалитьДанные(
Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект),
Элементы.Список.ТекущиеДанные.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьПомеченныеФайлы(Команда)
РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОсвободитьЗавершение(Результат, ПараметрыВыполнения) Экспорт
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт
Элементы.Список.Обновить();
КонецПроцедуры
&НаКлиенте
Функция ФайловыеКомандыДоступны()
Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если ТипЗнч(Элементы.Список.ТекущаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура УстановитьДоступностьФайловыхКоманд()
РедактируетТекущийПользователь = Ложь;
ВыбраныРедактируемыеФайлы = Ложь;
ТекущаяСтрока = Элементы.Список.ТекущаяСтрока;
Если ТекущаяСтрока <> Неопределено
И ТипЗнч(ТекущаяСтрока) <> Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
ВыбраныРедактируемыеФайлы = ЗначениеЗаполнено(ТекущиеДанные.Редактирует);
Если Не ВыбраныРедактируемыеФайлы Тогда
Для Каждого Элемент Из Элементы.Список.ВыделенныеСтроки Цикл
ВыбраныРедактируемыеФайлы = ЗначениеЗаполнено(Элементы.Список.ДанныеСтроки(Элемент).Редактирует);
Если ВыбраныРедактируемыеФайлы Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
РедактируетТекущийПользователь = ТекущиеДанные.ФайлРедактируетТекущийПользователь;
КонецЕсли;
УстановитьДоступностьКоманд(РедактируетТекущийПользователь, ВыбраныРедактируемыеФайлы);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьСнятьПометкуУдаления(Знач ВыделенныеСтроки)
Если ТипЗнч(ВыделенныеСтроки) = Тип("Массив") Тогда
Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
Файл = ВыделеннаяСтрока.Файл.ПолучитьОбъект();
Файл.УстановитьПометкуУдаления(НЕ Файл.ПометкаУдаления);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКоманд(РедактируетТекущийПользователь, ВыбраныРедактируемыеФайлы)
Элементы.ФормаОсвободить.Доступность = ВыбраныРедактируемыеФайлы;
Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ВыбраныРедактируемыеФайлы;
Элементы.ФормаУдалить.Доступность = РедактируетТекущийПользователь;
Элементы.СписокКонтекстноеМенюУдалить.Доступность = РедактируетТекущийПользователь;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииИспользованияПодписанияИлиШифрования()
ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере()
РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект,, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат
КонецЕсли;
РаботаСФайламиКлиент.ОткрытьФормуФайла(ТекущиеДанные.Ссылка);
КонецПроцедуры
#КонецОбласти