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