|
Дерево значений верхний узел | ☑ | ||
---|---|---|---|---|
0
Vasilisk
13.05.14
✎
01:36
|
Возможно ли реализовать дерево значений с несколькими верхними уровнями/верхними строками/главными узлами). Идея сводиться к тому, что необходимо во внешней обработке производить заполнение таб. частей нескольких документов(дети) и создание новых документов(верхний узел).
|
|||
1
Tateossian
13.05.14
✎
01:38
|
(0) Да.
|
|||
2
Vasilisk
13.05.14
✎
01:39
|
Как произвести программное создание второго верхнего узла?
|
|||
3
Vasilisk
13.05.14
✎
01:40
|
8.2 управляемые формы. Дерево значений реквизит формы.
|
|||
4
Vasilisk
13.05.14
✎
01:41
|
Если НЕ Результат = Неопределено Тогда
Если Элементы.ПереченьРаботУслугДерево.ТекущиеДанные<>Неопределено Тогда Родитель=Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.ПолучитьРодителя(); Иначе Родитель=Родитель; КонецЕсли; Родитель=Неопределено; Элементы.ПереченьРаботУслугДерево.ДобавитьСтроку(); Элементы.ПереченьРаботУслугДерево.ТекущийРодитель=Родитель; Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.РаботаУслуга=Результат; Элементы.ПереченьРаботУслугДерево.ЗакончитьРедактированиеСтроки(Ложь); Иначе Возврат; КонецЕсли; |
|||
5
Vasilisk
13.05.14
✎
01:41
|
Вот что у меня не работает где я туплю по черному, пожалуйста?
|
|||
6
Vasilisk
13.05.14
✎
02:05
|
Так если да, то каким образом вся инфа в гугле оперирует только с одним верхним узлом.
|
|||
7
hhhh
13.05.14
✎
02:17
|
что означает магическая фраза Родитель = Родитель; ???
и загадочное Родитель=Неопределено; ??? |
|||
8
Vasilisk
13.05.14
✎
02:19
|
Пардон эксперементы)
&НаКлиенте Процедура СоздатьРаздел(Команда) СтруктураПараметров = Новый Структура; Результат = ОткрытьФормуМодально("Справочник.РаботыУслуги.ФормаВыбора", СтруктураПараметров); Если НЕ Результат = Неопределено Тогда Если Элементы.ПереченьРаботУслугДерево.ТекущиеДанные<>Неопределено Тогда Родитель=Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.ПолучитьРодителя(); Иначе Родитель=Неопределено; КонецЕсли; Элементы.ПереченьРаботУслугДерево.ДобавитьСтроку(); Элементы.ПереченьРаботУслугДерево.ТекущийРодитель=Родитель; Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.РаботаУслуга=Результат; Элементы.ПереченьРаботУслугДерево.ЗакончитьРедактированиеСтроки(Ложь); Иначе Возврат; КонецЕсли; КонецПроцедуры |
|||
9
Vasilisk
13.05.14
✎
02:19
|
Вот так в оригинале
|
|||
10
Wobland
13.05.14
✎
03:16
|
два дерева - это уже лес. три дерева - вообще лес
|
|||
11
rphosts
13.05.14
✎
03:49
|
(0) на клюшках забавные связанные между собой ТЗ реализовывал (сложная структура подчинённости) а тут такие возможности для творчества... в типовом ДЗ 1 элемент верхнего уровня, или смиритесь с необходимостью иметь этот всего 1 элемент на самом верхнем уровне или рисуйте сами
|
|||
12
Defender aka LINN
13.05.14
✎
06:11
|
(11) "в типовом ДЗ 1 элемент верхнего уровня"
ШТА?! |
|||
13
skunk
13.05.14
✎
06:15
|
объясните тупому, что значит "несколькими верхними уровнями/верхними строками/главными узлами"?
|
|||
14
Defender aka LINN
13.05.14
✎
06:16
|
(13) Строки 1 уровня в дереве, что тут непонятного?
|
|||
15
Wobland
13.05.14
✎
06:17
|
(13) (14) автор (или 1С?) не знает, что дерево имеет один корень по определению
|
|||
16
skunk
13.05.14
✎
06:18
|
(14)тогда не понятно какие проблемы с добавлением нескольких строк
|
|||
17
Defender aka LINN
13.05.14
✎
06:19
|
(15) Ну хоть ты меня не пугай, а?
|
|||
18
Wobland
13.05.14
✎
06:22
|
(17) шо? я таки заблуждаюсь?
|
|||
19
Defender aka LINN
13.05.14
✎
06:29
|
(18) Ну, в данном конкретном случае, в 1С - да.
Если рассуждать про сферические деревья в вакууме (или про те, что в саду) - то оно-то может быть, но мы же какбе одинэснеги тут :) |
|||
20
skunk
13.05.14
✎
06:30
|
если имелось ввиду вот эти
http://i020.radikal.ru/1405/84/4f3c73e0760e.png то тупо ТвоеДерево.Строки.Добавить(); повторять нужное количество раз |
|||
21
Wobland
13.05.14
✎
06:51
|
добейте моё гармоничное восприятие вселенной. скажите, что мир неприятно пахнет, все женщины легки на поведение, а солнце - просто газовый фонарь
|
|||
22
skunk
13.05.14
✎
06:55
|
солнце - просто газовый фонарь ...
|
|||
23
rphosts
13.05.14
✎
07:10
|
(21) СП как-бы говорит, что на каждом уровне коллекция... получается, что можно и несколько...
|
|||
24
rphosts
13.05.14
✎
07:11
|
(21) не весь, только если ты для них сугубо привлекателен, не только газовый фонарь
|
|||
25
Vasilisk
13.05.14
✎
09:34
|
Между большим количеством слов сути не усмотрел так в итоге, это не выполнимо или как?
|
|||
26
Wobland
13.05.14
✎
09:35
|
(25) или как
|
|||
27
Kalambur
13.05.14
✎
09:38
|
Рекурсией
|
|||
28
Vasilisk
13.05.14
✎
09:39
|
Давайте по существу как добавить строку в дерево на форме без родителя то есть узел верхнего уровня, один узел верхнего уровня в дереве уже имеется.
|
|||
29
Wobland
13.05.14
✎
09:44
|
(28) перечитай (20) ещё разок
|
|||
30
Vasilisk
13.05.14
✎
09:48
|
Хорошо, я конечно понимаю, что краткость сестра таланта, но вопрос остается открытым как это реализовать тогда?
|
|||
31
Wobland
13.05.14
✎
09:49
|
(30) выполнить синтаксически и методологически верный код. чего пристал?
|
|||
32
Vasilisk
13.05.14
✎
09:52
|
Так в чем ошибка то, родитель(только чтение), текущий родитель устанавливается только на само дерево а не на текущие данные, мне нужно просто добавить еще один корень в дерево ничего того что это делает как надо не увидел, я пол ночи с этой фигней парился.
|
|||
33
Wobland
13.05.14
✎
09:55
|
возьми и добавь свой корень в строки дерева. это уже получится лес, но всем пофиг
|
|||
34
Vasilisk
13.05.14
✎
09:56
|
Нет доступа к "Строки" у дереваЗначений формы есть Добавить Строку()
|
|||
35
Wobland
13.05.14
✎
09:57
|
(34) а на сервере?
|
|||
36
Vasilisk
13.05.14
✎
10:00
|
А это разве оптимально?
|
|||
37
Wobland
13.05.14
✎
10:00
|
(36) а кто тебя знает. я вот своё дерево делал из внешнего источника, а форме тупо показывал
|
|||
38
1dvd
13.05.14
✎
10:03
|
(37) читер
|
|||
39
skunk
13.05.14
✎
11:21
|
ТвоеДеревоЗначений = ЭлементыФормы.ТвоеДеревоНаФорме.Значение; // вроде как Значение ...
ВерхниеСтроки = ТвоеДеревоЗначений.Строки; |
|||
40
Vasilisk
13.05.14
✎
13:47
|
Вопрос закрыт разобрался сам
|
|||
41
Vasilisk
13.05.14
✎
13:47
|
//Процедура вычисления количества строк для определения ключа
&НаСервере Функция ПолучитьКоличествоСтрокДерева(Дерево) Количество=0; Для А = 0 По Дерево.Строки.Количество()-1 Цикл Количество=Количество+ПолучитьКоличествоСтрокДерева(Дерево.Строки[А]); Количество=Количество+1; КонецЦикла; Возврат Количество; КонецФункции //Создание строки с определенным родителем и заполнение полей строки &НаСервере Процедура СоздатьСтрокуДереваНаСервере(Родитель,Элемент) Дерево=РеквизитФормыВЗначение("ПереченьРаботУслугДерево"); СтрокаРодитель=Дерево.Строки.Найти(Родитель,"Ключ",Истина); НовыйКлюч=ПолучитьКоличествоСтрокДерева(Дерево)+1; Если СтрокаРодитель=Неопределено Тогда НоваяСтрока=Дерево.Строки.Добавить(); Иначе НоваяСтрока=СтрокаРодитель.Строки.Добавить(); КонецЕсли; НоваяСтрока.РаботаУслуга=Элемент; НоваяСтрока.Ключ=НовыйКлюч; ЗначениеВРеквизитФормы(Дерево,"ПереченьРаботУслугДерево"); КонецПроцедуры //Создадим раздел(Родителем будет выступать родитель выделенного элемента) &НаКлиенте Процедура СоздатьРаздел(Команда) СтруктураПараметров = Новый Структура; Результат = ОткрытьФормуМодально("Справочник.РаботыУслуги.ФормаВыбора", СтруктураПараметров); Если НЕ Результат = Неопределено Тогда Если Элементы.ПереченьРаботУслугДерево.ТекущиеДанные<>Неопределено Тогда Родитель=Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.ПолучитьРодителя(); Если Родитель=Неопределено Тогда Родитель=0; Иначе Родитель=Родитель.Ключ; КонецЕсли; Иначе Родитель=0; КонецЕсли; СоздатьСтрокуДереваНаСервере(Родитель,Результат); Элементы.ПереченьРаботУслугДерево.ЗакончитьРедактированиеСтроки(Ложь); Иначе Возврат; КонецЕсли; КонецПроцедуры //Создадим подраздел(Родителем будт выступать выделенный элемент) &НаКлиенте Процедура СоздатьПодраздел(Команда) Результат = ОткрытьФормуМодально("Справочник.РаботыУслуги.ФормаВыбора"); Если НЕ Результат = Неопределено Тогда Если Элементы.ПереченьРаботУслугДерево.ТекущиеДанные<>Неопределено Тогда Родитель=Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.Ключ; Иначе Родитель=0; КонецЕсли; СоздатьСтрокуДереваНаСервере(Родитель,Результат); Элементы.ПереченьРаботУслугДерево.ЗакончитьРедактированиеСтроки(Ложь); Иначе Возврат; КонецЕсли; КонецПроцедуры //В связи с удалением может возникнуть дублирование значний ключей, пересчитываем ключи &НаСервере Процедура ПересчитатьКлючиРекурсия(Дерево,Ключ) Для А = 0 По Дерево.Строки.Количество()-1 Цикл Если Дерево.Строки[А].Ключ > Ключ Тогда Дерево.Строки[А].Ключ=Дерево.Строки[А].Ключ-1; КонецЕсли; ПересчитатьКлючиРекурсия(Дерево.Строки[А],Ключ); КонецЦикла; КонецПроцедуры //Процедура удаления &НаСервере Процедура УдалитьСтроку(Ключ) Дерево=РеквизитФормыВЗначение("ПереченьРаботУслугДерево"); СтрокаУдаления=Дерево.Строки.Найти(Ключ,"Ключ",Истина); ПересчитатьКлючиРекурсия(Дерево,Ключ); Если СтрокаУдаления.Родитель=неопределено Тогда Дерево.Строки.Удалить(СтрокаУдаления); Иначе СтрокаУдаления.Родитель.Строки.Удалить(СтрокаУдаления); КонецЕсли; ЗначениеВРеквизитФормы(Дерево,"ПереченьРаботУслугДерево"); КонецПроцедуры //Перед удалением &НаКлиенте Процедура ПереченьРаботУслугДеревоПередУдалением(Элемент, Отказ) Отказ=Ложь; Если Элементы.ПереченьРаботУслугДерево.ТекущиеДанные<>Неопределено Тогда УдалитьСтроку(Элементы.ПереченьРаботУслугДерево.ТекущиеДанные.Ключ); Иначе Возврат; КонецЕсли; КонецПроцедуры |
|||
42
Wobland
13.05.14
✎
17:08
|
(40) сам? да ты крут неимоверно
|
|||
43
Wobland
13.05.14
✎
17:09
|
и нечего нас благодарить, всё правильно
|
|||
44
Vasilisk
13.05.14
✎
19:06
|
Wobland спасибо, что на мысль навел, а всем остальным за что? За абстрактные фразы из другой оперы и за рандомные сленговые фразы одноэсников?
|
|||
45
Kookish
13.05.14
✎
19:14
|
(44) За поддерживающую среду. Например, если сунуть свежий огурец в банку с солеными... ну, ты понял.
|
|||
46
Wobland
13.05.14
✎
19:16
|
(44) тебе держали ветку на плаву и вели беседы на тему
|
|||
47
Kookish
13.05.14
✎
19:21
|
(46) А я, что, не так выразился?
|
|||
48
skunk
13.05.14
✎
20:51
|
все как в танках ... вот и помогай после этого рандомным оленям
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |