|
Понять какая строка дерева значений разворачивается | ☑ | ||
---|---|---|---|---|
0
Aswed
23.04.20
✎
17:11
|
Есть программно создаваемое и выводимое на форму дерево значений.
Необходимо понять и получить какую именно строку в текущий момент разворачивает пользователь. Для этого я вклиниваюсь в процедуру "ПередРазворачиванием". Там есть такие переменные как: Элемент, Строка, Отказ Всё отлично работает когда пользователь вначале выделяет строку, а затем щёлкает на "+". Но такое происходит далеко не всегда. А если с самого начала формирования дерева нажать на разворот строки, то в переменной "Элемент" нет ни каких данных. Вышел из положения так Процедура СоставПередРазворачиванием(Элемент, Строка, Отказ) Элементы.Состав.ТекущаяСтрока = Строка; Но вот какая странность происходит. В переменную "Строка" передаётся непонятно откуда взявшееся число. Т.е. в самом дереве фактически есть 7 строк, а при щелчке на разворот по первой строке в переменной "Строка" оказывается значение 14. Не могу понять почему там 14. Но самое главное. Подскажите как ещё можно получить текущие данные строки дерева значений на разворот которой нажимает пользователь НЕ ВЫДЕЛЯЯ СТРОКУ? |
|||
1
Aswed
23.04.20
✎
17:23
|
И ещё интереснее.
При каждом нажатии на разворот первой строки номер передаваемой строки увеличивается на 14 Хотя строки нигде не добавляются. |
|||
2
Cyberhawk
23.04.20
✎
17:24
|
Выкладывай демо-обработку со способом воспроизведения - мы уже каждый попробуем у себя
|
|||
3
Aswed
23.04.20
✎
17:32
|
Нашёл где происходит это умножение
В серверной процедура ДеревоФормы = РеквизитФормыВЗначение("Состав"); **************** ЗначениеВРеквизитФормы(ДеревоФормы, "Состав"); |
|||
4
Aswed
23.04.20
✎
17:35
|
Не понимаю отчего такое чудо происходит.
Убрал даже обработчики какие либо. Просто получаю реквизит, и возвращаю обратно. И такое безобразие происходит. |
|||
5
Вафель
23.04.20
✎
17:43
|
Есть же событие на разворот
|
|||
6
ДенисЧ
23.04.20
✎
18:45
|
(1) УФ? Так это не номер строки в дереве... Читай книгу по УФ, там расписано...
|
|||
7
acht
23.04.20
✎
18:54
|
(1) > номер передаваемой строки увеличивается на 14
Потому что это не номер строки, а идентификатор в коллекции. ДанныеФормыДерево или что у тебя там... |
|||
8
Aswed
23.04.20
✎
19:56
|
(6) Нету книжечки уже)
Так а как получить то что мне нужно? |
|||
9
Aswed
23.04.20
✎
19:58
|
(5) В нём и вожусь
|
|||
10
acht
23.04.20
✎
21:00
|
(8) Посмотри в СП метод НайтиПоИдентификатору, например у ДанныеФормыКоллекция
|
|||
11
Aswed
27.04.20
✎
15:33
|
(10)
Стал получать вот так ТекущиеДанные = Состав.НайтиПоИдентификатору(Строка); Но удвоение строк, после Выгрузить/Загрузить никуда не делось. о_0 |
|||
12
Вафель
27.04.20
✎
15:35
|
идентификатор <> индексу. вернее равен только в 1 раз
|
|||
13
Aswed
27.04.20
✎
15:43
|
(12) Это я прекрасно понимаю. Но никак не вкурю как мне индекс этой строки получить на клиенте.
|
|||
14
lodger
27.04.20
✎
15:50
|
(11) а вот это как раз норма. объект на форме не пропадает, но перезаполняется. поэтому идентификаторы бегут вперёд.
перепиши пару РеквизитФормыВЗначение-ЗначениеВРеквизитФормы во что-то другое. напиши рекурсивные функции и процедуры по чтению\заполнению дерева, по поиску идентификатора с ключами, по получению ключей из идентификатора и т.д. |
|||
15
acht
27.04.20
✎
15:50
|
(13) Зачем тебе индекс?
|
|||
16
Вафель
27.04.20
✎
15:51
|
(13) ТЗ.Индекс(Строка)
|
|||
17
Aswed
27.04.20
✎
15:54
|
(14) Я так уже и сделал.
В строку всобачил колонку с уникальным идентификатором и по нему ищу. Но блин ощущение что изобретаю велосипед. |
|||
18
Aswed
27.04.20
✎
15:54
|
(16) Дерево на форме, формируемое программно.
|
|||
19
Aswed
27.04.20
✎
15:55
|
(15) Что бы потом на сервере получить именно эту раскрываемую строку и обработать её.
|
|||
20
lodger
27.04.20
✎
16:00
|
(17) это действительно велосипед, который каждый пишет сам.
кстати, никто не видел готовые модули клиентские для работы с деревьями? |
|||
21
Aswed
27.04.20
✎
16:26
|
Столкнулся с другой бедой.
Теперь строка дерева ни разворачивается. После того как проходит ЗначениеВРеквизитФормы(ДеревоФормы, "Состав"); Строка ни разворачивается. |
|||
22
Вафель
27.04.20
✎
16:27
|
(20) а что конкретно нужно?
|
|||
23
Aswed
27.04.20
✎
16:30
|
(22)
- Получить разворачиваемую пользователем строку на клиенте - На сервере обработать её, при необходимости добавив в неё подчинённые строки - Вывести полученную строку развёрнутой, с добавленными подчинёнными строками |
|||
24
Aswed
27.04.20
✎
16:32
|
Фигня в том что я после того как добавил новые строки и вернул дерево обратно через ЗначениеВРеквизитформы, у строки меняется идентификатор и я не знаю какую мне строку разворачивать.
|
|||
25
lodger
27.04.20
✎
16:33
|
(22) какая нибудь ВундерВафля, которая собрала в себе все типичные операции с деревом на форме, имеет клиентский и серверный контекст, чтобы кинул элемент на форму, наделал однообразных вызовов "&НаКлиенте процедура ДЗПередРазворачиванием(Элемент, Строка, Отказ) ВундерВафляКлиент.ПередРазворачиванием(Элемент, Строка, Отказ) конецпроцедуры" и готово.
|
|||
26
Вафель
27.04.20
✎
16:33
|
ну и обрабатывай строку данных формы. зачем именно стока дерева нужна?
|
|||
27
Вафель
27.04.20
✎
16:34
|
единственное что 1с накосячило - так это то что вместо строки нужно писать получитьэлементы()
|
|||
28
Aswed
27.04.20
✎
16:36
|
(26) Строка данных формы есть только на клиенте, а требуется обработка на сервере.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |