![]() |
![]() |
![]() |
|
Как СтрокаДереваЗначений переконвертировать в ДанныеФормыЭлементДерева (при поиске) | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
03.09.20
✎
15:11
|
Написал функцию, не знаю, как назад передать строку реквизита ДеревоПозиций типа ДанныеФормыДерево.
Или тупо перебором искать? &НаСервере Функция НайтиСтрокуВДереве(СтруктураПоиска) Экспорт ДЗ = РеквизитФормыВЗначение("ДеревоПозиций"); ИскСтроки = ДЗ.Строки.НайтиСтроки(СтруктураПоиска, истина); Если ИскСтроки.Количество() = 0 Тогда Возврат Неопределено; КонецЕсли; ИскСтрока = ИскСтроки[0]; Возврат ИскСтрока; КонецФункции |
|||
1
fisher
03.09.20
✎
15:49
|
Тупо перебором. Или умно перебором. Но если уже работаешь ДанныеФормыДерево, то нет смысла плодить сущности чтобы потом бороться с проблемами их проекции друг на друга.
|
|||
2
fisher
03.09.20
✎
15:52
|
Плюс на серверном вызове сэкономишь.
|
|||
3
acht
03.09.20
✎
16:13
|
Ну вот, опять Его Гений ничего нам не дарит, а попрошайничает, печалька....
Для сохранения баланса говнокода предлагаю возвращать строку индексов по всем родителям найденной строки, типа "10,2,0". На клиенте реверсировать, заменять запятую на "ПолучитьЭлементы" и передавать в функцию Вычислить: СтрокаДерева = Вычислить("ДеревоПозиций.ПолучитьЭлементы()[0].ПолучитьЭлементы()[2].ПолучитьЭлементы()[10]"); По-моему, так гениально. Будет в духе Автора. |
|||
4
Гений 1С
гуру
03.09.20
✎
17:49
|
(3) Дарю:
&НаКлиенте Функция НайтиСтрокуВЭлементах(Элементы, СтруктураПоиска) Экспорт Для Каждого Строка ИЗ Элементы Цикл Найдено = истина; Для Каждого КЗ ИЗ СтруктураПоиска Цикл Если Строка[КЗ.Ключ] <> КЗ.Значение Тогда Найдено = ложь; Прервать; КонецЕсли; КонецЦикла; Если Найдено Тогда Возврат Строка; КонецЕсли; //Ищем рекурсивно вниз Возврат НайтиСтрокуВЭлементах(Строка.ПолучитьЭлементы(), СтруктураПоиска); КонецЦикла; КонецФункции Хотя идея с индексами тоже зер гуд. |
|||
5
acht
03.09.20
✎
20:01
|
(4) Сережа, а вторая строку в коллекции элементов, у тебя когда проверяться будет?
|
|||
6
Гений 1С
гуру
03.09.20
✎
20:08
|
(5) чего?
|
|||
7
acht
03.09.20
✎
20:15
|
(6) "Для Каждого Строка ИЗ Элементы Цикл", спрашиваю, вторую строку коллекции когда проверять будет?
|
|||
8
Гений 1С
гуру
03.09.20
✎
20:26
|
(7) хорошее замечание, спасибо
|
|||
9
Гений 1С
гуру
03.09.20
✎
20:32
|
&НаКлиенте
Функция НайтиСтрокуВЭлементах(Элементы, СтруктураПоиска) Экспорт Для Каждого Строка ИЗ Элементы Цикл Найдено = истина; Для Каждого КЗ ИЗ СтруктураПоиска Цикл Если Строка[КЗ.Ключ] <> КЗ.Значение Тогда Найдено = ложь; Прервать; КонецЕсли; КонецЦикла; Если Найдено Тогда Возврат Строка; КонецЕсли; //Ищем рекурсивно вниз ИскСтрока = НайтиСтрокуВЭлементах(Строка.ПолучитьЭлементы(), СтруктураПоиска); Если ИскСтрока <> Неопределено Тогда Возврат ИскСтрока; КонецЕсли; КонецЦикла; КонецФункции |
|||
10
Сияющий в темноте
03.09.20
✎
22:39
|
а не судьба вернуть идентификатор?
|
|||
11
Гений 1С
гуру
04.09.20
✎
18:53
|
(10) как?
|
|||
12
Гений 1С
гуру
04.09.20
✎
18:53
|
&НаКлиенте
Функция НайтиСтрокиВЭлементах(Элементы, СтруктураПоиска) Экспорт Результат = Новый Массив(); Для Каждого Строка ИЗ Элементы Цикл Найдено = истина; Для Каждого КЗ ИЗ СтруктураПоиска Цикл Если Строка[КЗ.Ключ] <> КЗ.Значение Тогда Найдено = ложь; Прервать; КонецЕсли; КонецЦикла; Если Найдено Тогда Результат.Добавить(Строка); КонецЕсли; //Ищем рекурсивно вниз ИскМ = НайтиСтрокиВЭлементах(Строка.ПолучитьЭлементы(), СтруктураПоиска); Для Каждого Эл ИЗ ИскМ Цикл Результат.Добавить(Эл); КонецЦикла; КонецЦикла; Возврат Результат; КонецФункции |
|||
13
H A D G E H O G s
04.09.20
✎
19:17
|
И вот такие же ебантяи пишут Дерево Маркировки.
Хотя нет, там они все же делают это бережней. |
|||
14
Гений 1С
гуру
04.09.20
✎
19:32
|
(13) ну кто то же должен Родину Автоматизировать.
|
|||
15
Ненавижу 1С
гуру
04.09.20
✎
19:35
|
(14) вот поэтому и стыдно за таких
|
|||
16
Гений 1С
гуру
04.09.20
✎
19:56
|
(15) за Рассеюшку у тебя все душа болит, Пантелеймон Лексеевич.
|
|||
17
Ненавижу 1С
гуру
05.09.20
✎
13:21
|
Ну нашел ты эти строки, а дальше, что с ними делать собрался?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |