111
//сформировать массив
подзадач от текущего узла до
корня
//ДобавитьСуществу
ющуюПодзадачуНаСервере(
ЭтаЗадача, НоваяПодЗадача);
// добавить новую задачу в
объект (в таб. часть)
//ЭтаФорма.Прочита
ть(); // перечитать данные
формы
//ЗаполнитьДеревоП
одзадач(); // перстроить
дерево подзадач
//Спозиционироватьс
яВДеревеПодзадач(ДеревоПо
дзадач, ПутьВДереве,
ПутьВДереве.Количество()-
1); // спозиционироваться на
добавленной задаче
//П = Новый
Структура;
//П.Вставить("Ключ"
, НоваяПодЗадача);
//ОткрытьФорму("До
кумент.Задача.ФормаОбъект
а", П); // открыть отдельную
форму редактирования новой
задачи
Если
ОбщийСрв.ВЗакрытомПерио
де(ЭтаЗадача) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Находится в
закрытом периоде.
Редактирование
невозможно");
Возврат;
КонецЕсли;
Если Не
ОбщийСрв.ПроверкаПрав(Об
щийСрв.ПолучитьРеквизитЗа
дачи(ЭтаЗадача, "Автор"),
ОбщийСрв.ПолучитьГлПоль
зователь()) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Нет прав
редактировать чужой
документ");
Возврат;
КонецЕсли;
Если
(ОбщийСрв.ПолучитьРеквиз
итЗадачи(ЭтаЗадача,
"Проведен")) И
(ОбщийСрв.обПолучитьКонс
танту("ЗапретПроведенных")
) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Уже выполнена.
Редактирование
невозможно");
Возврат;
КонецЕсли;
// вариант открытия
формы нового пустого
документа
П = Новый
Структура;
П.Вставить("ЭтоНов
ый", Истина);// признак того
что форма открывается для
нового документа
П.Вставить("Родител
ь", ЭтаЗадача);
ОткрытьФорму("Док
умент.Задача.ФормаОбъекта"
, П, ЭтотОбъект); // открыть
отдельную форму
редактирования новой задачи
// далее см. в
ПриСозданииНаСервере -
заполнение реквизитов и таб.
частей нового документа на
основании этого
// далее см. в
ПослеЗаписи - запись новой
задачи в тч Подзадачи
родительской задачи
// далее см. в
ОбработкаОповещения - в
родительской задаче в дереве
спозиционироваться на новой
задаче
КонецПроцедуры
&НаКлиенте
Процедура
ЗаполнитьДеревоПоШаблону
(Шаблон)
ЭтаЗадача =
Элементы.ДеревоПодзадач.Т
екущиеДанные.ПодЗадача;
Если
ОбщийСрв.ВЗакрытомПерио
де(ЭтаЗадача) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Находится в
закрытом периоде.
Редактирование
невозможно");
Возврат;
КонецЕсли;
Если Не
ОбщийСрв.ПроверкаПрав(Об
щийСрв.ПолучитьРеквизитЗа
дачи(ЭтаЗадача, "Автор"),
ОбщийСрв.ПолучитьГлПоль
зователь()) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Нет прав
редактировать чужой
документ");
Возврат;
КонецЕсли;
Если
(ОбщийСрв.ПолучитьРеквиз
итЗадачи(ЭтаЗадача,
"Проведен")) И
(ОбщийСрв.обПолучитьКонс
танту("ЗапретПроведенных")
) Тогда
Сообщить(ОбщийСр
в.ПредставлениеЗадачи(ЭтаЗ
адача) + "Уже выполнена.
Редактирование
невозможно");
Возврат;
КонецЕсли;
НоваяПодЗадача =
СоздатьПодзадачуНаСервере
(Шаблон, ЭтаЗадача); //
создать новый документ и
записать его
ДобавитьСуществую
щуюПодзадачуНаСервере(Эт
аЗадача, НоваяПодЗадача); //
добавить новую задачу в
объект (в таб. часть)
ПутьВДереве =
ПолучитьПутьВДереве(Элем
енты.ДеревоПодзадач.Текущ
иеДанные, НоваяПодЗадача);
//сформировать массив
подзадач от текущего узла до
корня