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

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

Форма элемента при создании на сервере. Обработчики событий формы элемента файла.

/////////////////////////////////////////////////////////////////////////////////////
// Обработчики событий формы элемента файла.

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

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

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

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

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

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

Добавить элемент в обычную форму

СоздатьЭлементФормы

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

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

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