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