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