КонецЕсли;
Если Элементы.ДеревоПодзадач.ТекущиеДанные.Подзадача =
ВыбранноеЗначение Тогда // зацикливание!
Сообщить("Нельзя вставлять задачу саму в себя!");
Возврат;
КонецЕсли;
Если ЯвляетсяПредком(ВыбранноеЗначение,
Элементы.ДеревоПодзадач.ТекущиеДанные.Подзадача) Тогда // проврка на
предка
Сообщить("Добавление приведет к зацикливанию!");
Возврат;
КонецЕсли;
Если
УжеЕстьВСпискеПодзадач(Элементы.ДеревоПодзадач.ТекущиеДанные,
ВыбранноеЗначение) Тогда // проврка на то, что уже есть
Сообщить("Выбранная подзадача уже является подзадачей данной
задачи!");
Возврат;
КонецЕсли;
//ЭтаЗадача = Объект.Ссылка; // если в эту задачу
//Если Элементы.ДеревоПодзадач.ТекущиеДанные.Подзадача <>
ЭтаЗадача Тогда // если в какую-то подзадачу в дереве
// ЭтаЗадача =
Элементы.ДеревоПодзадач.ТекущиеДанные.ПодЗадача;
//КонецЕсли;
ЭтаЗадача = Элементы.ДеревоПодзадач.ТекущиеДанные.ПодЗадача;
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные,
ВыбранноеЗначение); //запомнить путь в дереве до нового выбранного
значения
ДобавитьСуществующуюПодзадачуНаСервере(ЭтаЗадача,
ВыбранноеЗначение); // добавить выбранную задачу в объект
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться на добавленной задаче