|
v8: Зацикливается модуль) | ☑ | ||
---|---|---|---|---|
0
IoannVic
07.10.13
✎
14:51
|
Есть рекурсивная функция:
Функция ВывестиСтрокуИПодчиненные(Строка) Если ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда СтрокаТест = Строка; КонецЕсли; Для каждого Подч из Строка.Строки Цикл ТекЗадача = Подч.Задача; СписокПодзадач = ВыбратьПодзадачи(ТекЗадача); Если Не ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда //Сообщить(Строка.РодительОбъекта); ПодчиненаяСтрока = СтрокаТест.Строки.Добавить(); ПодчиненаяСтрока.Дата = Подч.Дата; ПодчиненаяСтрока.Дедлайн = Подч.Дедлайн; ПодчиненаяСтрока.Задача = Подч.Задача; ПодчиненаяСтрока.Исполнитель = Подч.Исполнитель; ПодчиненаяСтрока.Наименование = Подч.Наименование; ПодчиненаяСтрока.РодительОбъекта = Подч.РодительОбъекта; ПодчиненаяСтрока.Родитель = Подч.Родитель; ПодчиненаяСтрока.СтатусЗадачи = Подч.СтатусЗадачи; КонецЕсли; //Сообщить(Подч.Задача); Если СписокПодзадач.Строки.Количество()>0 тогда ВывестиСтрокуИПодчиненные(СписокПодзадач.Строки.Получить(0)); КонецЕсли; КонецЦикла; Если ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда Возврат СтрокаТест; КонецЕсли; КонецФункции когда дохожу до строки ПодчиненаяСтрока = СтрокаТест.Строки.Добавить(); меня перебрасывает Процедура СписокПриАктивизацииСтроки(Элемент) ТекПроект = Элемент.ТекущаяСтрока; СформироватьСписокЗадач(ТекПроект); Доп_ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(УчастникиПроекта, "Проект", Элемент.текущаяСтрока, Истина, ВидСравненияКомпоновкиДанных.Равно); КонецПроцедуры ВНИМАНИЕ ВОПРОС. Почему???? |
|||
1
mikecool
07.10.13
✎
14:53
|
потому что активизируется строка, ваш кеп
|
|||
2
IoannVic
07.10.13
✎
14:54
|
(1) Почему активизируется строка? если я не трогаю список в этой части кода вообще??
|
|||
3
Нуф-Нуф
07.10.13
✎
14:55
|
исчо как трогаешь
|
|||
4
IoannVic
07.10.13
✎
14:56
|
(3) Ребят, спасибо, что обратили внимание на мою ветку, но если не затруднит объясните, как, где, и что дальше??
|
|||
5
Нуф-Нуф
07.10.13
✎
14:57
|
СтрокаТест - это что у тебя?
|
|||
6
IoannVic
07.10.13
✎
14:58
|
(5) СтрокаТест - СтрокаДереваЗначений
|
|||
7
Euguln
07.10.13
✎
15:01
|
Как выглядит первый вызов ВывестиСтрокуИПодчиненные ?
|
|||
8
Нуф-Нуф
07.10.13
✎
15:02
|
(6) дерево значений случаем не Список называется?
|
|||
9
IoannVic
07.10.13
✎
15:08
|
(7) Процедура СформироватьСписокЗадач(ТекПроект)
ГоловнаяТаблица = СформироватьГоловнуюТаблицу(ТекПроект); Строка = ГоловнаяТаблица.Строки.Получить(0); СтрокиГоловнойТаблицы = ВывестиСтрокуИПодчиненные(Строка); Сообщить(СтрокиГоловнойТаблицы); //ЗначениеВРеквизитФормы(ГоловнаяТаблица, "СписокЗадач"); КонецПроцедуры |
|||
10
IoannVic
07.10.13
✎
15:08
|
(8) Дерево, да список
|
|||
11
IoannVic
07.10.13
✎
15:22
|
Людиии, хелп)
|
|||
12
Euguln
07.10.13
✎
15:24
|
(11) Добавляешь строку в список, на неё переходит фокус. Чем помочь то?
|
|||
13
IoannVic
07.10.13
✎
15:27
|
(12) Так я же ее не в Список добавляю, а кладу в вообще другую переменную. Что делать в таком случае?
|
|||
14
Euguln
07.10.13
✎
15:28
|
(13) а в (10) утверждаешь обратное
|
|||
15
hhhh
07.10.13
✎
15:31
|
(13) ГоловнаяТаблица.Строки.Получить(0) - это ведь в список добавляешь.
|
|||
16
IoannVic
07.10.13
✎
15:46
|
(15) (14) Все понял, туплю. Рекурсия все соки выпивает)). Спасибо всем большое
|
|||
17
IoannVic
07.10.13
✎
16:25
|
(15) (14) Ребятаа, я тупанул, это ни хрена не список((
|
|||
18
IoannVic
07.10.13
✎
16:44
|
Не пойму в чем дела, как может быть связана переменная ГоловнаяТаблица(ДеревоЗначений) и Список(ДинамическийСписок), в котором находиться список проектов, и соотвественно при активизации строки Списка, строится деревоЗначений подчиненых ему задач
|
|||
19
Нууф-Нууф
07.10.13
✎
17:02
|
Функция ВывестиСтрокуИПодчиненные(Строка)
Если ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда СтрокаТест = Строка; КонецЕсли; Для каждого Подч из Строка.Строки Цикл ТекЗадача = Подч.Задача; СписокПодзадач = ВыбратьПодзадачи(ТекЗадача); Если Не ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда //Сообщить(Строка.РодительОбъекта); ХерВамАНеОбработчикАктивизацииСтроки = Истина; ПодчиненаяСтрока = СтрокаТест.Строки.Добавить(); ПодчиненаяСтрока.Дата = Подч.Дата; ПодчиненаяСтрока.Дедлайн = Подч.Дедлайн; ПодчиненаяСтрока.Задача = Подч.Задача; ПодчиненаяСтрока.Исполнитель = Подч.Исполнитель; ПодчиненаяСтрока.Наименование = Подч.Наименование; ПодчиненаяСтрока.РодительОбъекта = Подч.РодительОбъекта; ПодчиненаяСтрока.Родитель = Подч.Родитель; ПодчиненаяСтрока.СтатусЗадачи = Подч.СтатусЗадачи; КонецЕсли; //Сообщить(Подч.Задача); Если СписокПодзадач.Строки.Количество()>0 тогда ВывестиСтрокуИПодчиненные(СписокПодзадач.Строки.Получить(0)); КонецЕсли; КонецЦикла; Если ТипЗнч(Строка.РодительОбъекта) = Тип("ДокументСсылка.Проект") тогда Возврат СтрокаТест; КонецЕсли; КонецФункции Процедура СписокПриАктивизацииСтроки(Элемент) Если ХерВамАНеОбработчикАктивизацииСтроки Тогда ХерВамАНеОбработчикАктивизацииСтроки = Ложь; Возврат; КонецЕсли; ТекПроект = Элемент.ТекущаяСтрока; СформироватьСписокЗадач(ТекПроект); Доп_ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(УчастникиПроекта, "Проект", Элемент.текущаяСтрока, Истина, ВидСравненияКомпоновкиДанных.Равно); КонецПроцедуры |
|||
20
IoannVic
07.10.13
✎
17:11
|
(19) Чувак круть, костыль коннечно знатный, сейчас попробую)
|
|||
21
simol
07.10.13
✎
17:29
|
Запоминай на какой строке вызвал в прошлый раз и сравнивай. Если совпала не вызывай функцию
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |