ПроверитьСтроку() в дереве формы

1. starik-2005 3165 04.02.25 11:58 Сейчас в теме
Вот нашел похожую тему. Поменял только таблицу на дерево.
Управляемые формы.
На форме есть таблица с данными ДеревоЗначений. С помощью стандартного поиска Ctrl+F находим строки, как их перебрать программно?


Собственно, вопрос: есть дерево на форме, у него тоже есть "ПроверитьСтроку(Параметр)", и оно даже возвращает или истину, или неопределено. Но истину оно возвращает ДЛЯ ВСЕХ ИНДЕКСОВ, а не только для тех, который на экране отображаются. Что я делаю не так? Или это баг такой незарегистрированный? Ведь сама-то платформа понимает, какие у нее там слова и выражения...
lone_mayson; +1 Ответить
Найденные решения
6. lmnlmn 69 06.02.25 15:25 Сейчас в теме
(4) В тонком клиенте 8.3.25.1394 прокатило следующе костыляние:
&НаКлиенте
Процедура ВидимаНеВидима(ДанныеФормыДерево, ТаблицаФормы)
	СтрокиУровня = ДанныеФормыДерево.ПолучитьЭлементы();
	Для Каждого Стр из СтрокиУровня Цикл
		ВидимаНеВидима(Стр, ТаблицаФормы);
		
		ИсходныеТД = ТаблицаФормы.ТекущиеДанные;
		
		Ид = Стр.ПолучитьИдентификатор();
		Видима = Ложь;
		Если Стр = ИсходныеТД Тогда
			Видима = Истина
		Иначе
			ТаблицаФормы.ТекущаяСтрока = Ид;
			
			Видима = ИсходныеТД <> ТаблицаФормы.ТекущиеДанные;
		КонецЕсли;
		
		Сообщить("Строка " + Ид + " - " + Видима);
		
	КонецЦикла
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	ТекСтр = Элементы.Реквизит1.ТекущаяСтрока;
	
	ВидимаНеВидима(Реквизит1, Элементы.Реквизит1);
	
	Элементы.Реквизит1.ТекущаяСтрока = ТекСтр;
КонецПроцедуры
Показать

P.S. А в мануалах по ПроверитьСтроку() о дереве ни слова. Косвенно напрашивается вывод что запилено для динсписков и табличных частей объектов.
SlavaKron; starik-2005; +2 Ответить
3. SlavaKron 04.02.25 12:32 Сейчас в теме
(1) Да, не работает ПроверитьСтроку для таблицы формы, связанной с деревом.
4. starik-2005 3165 04.02.25 12:55 Сейчас в теме
(2)
идентификатор
Ясен пень и так пробовал, и этак. Если туда что-то за пределами отдавать или иных типов, то возвращается "неопределено".
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. SlavaKron 04.02.25 12:32 Сейчас в теме
(1) Да, не работает ПроверитьСтроку для таблицы формы, связанной с деревом.
2. user1936660 04.02.25 12:25 Сейчас в теме
(1)
ДЛЯ ВСЕХ ИНДЕКСОВ
А ты туда индекс или идентификатор отдаешь?
4. starik-2005 3165 04.02.25 12:55 Сейчас в теме
(2)
идентификатор
Ясен пень и так пробовал, и этак. Если туда что-то за пределами отдавать или иных типов, то возвращается "неопределено".
6. lmnlmn 69 06.02.25 15:25 Сейчас в теме
(4) В тонком клиенте 8.3.25.1394 прокатило следующе костыляние:
&НаКлиенте
Процедура ВидимаНеВидима(ДанныеФормыДерево, ТаблицаФормы)
	СтрокиУровня = ДанныеФормыДерево.ПолучитьЭлементы();
	Для Каждого Стр из СтрокиУровня Цикл
		ВидимаНеВидима(Стр, ТаблицаФормы);
		
		ИсходныеТД = ТаблицаФормы.ТекущиеДанные;
		
		Ид = Стр.ПолучитьИдентификатор();
		Видима = Ложь;
		Если Стр = ИсходныеТД Тогда
			Видима = Истина
		Иначе
			ТаблицаФормы.ТекущаяСтрока = Ид;
			
			Видима = ИсходныеТД <> ТаблицаФормы.ТекущиеДанные;
		КонецЕсли;
		
		Сообщить("Строка " + Ид + " - " + Видима);
		
	КонецЦикла
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	ТекСтр = Элементы.Реквизит1.ТекущаяСтрока;
	
	ВидимаНеВидима(Реквизит1, Элементы.Реквизит1);
	
	Элементы.Реквизит1.ТекущаяСтрока = ТекСтр;
КонецПроцедуры
Показать

P.S. А в мануалах по ПроверитьСтроку() о дереве ни слова. Косвенно напрашивается вывод что запилено для динсписков и табличных частей объектов.
SlavaKron; starik-2005; +2 Ответить
7. Sashares 33 06.02.25 15:58 Сейчас в теме
(6) Прикольная дичь.
SlavaKron; +1 Ответить
8. lmnlmn 69 06.02.25 16:21 Сейчас в теме
(7) Да, из серии "Занимательная проктотоларингология"
Sashares; +1 Ответить
9. starik-2005 3165 09.02.25 23:10 Сейчас в теме
(8) Ага, столкнулся с таким, при попытке установить текущую строку свернутым элементам дерева - тоже не работает. Так что это только для реально отображаемых элементов.
10. lmnlmn 69 10.02.25 06:51 Сейчас в теме
(9) Я на файловой проверял. Там для свернутых работало. Посмотрю клиент-сервер. Помнится, что при разворачивании узлов 1С на сервер ходит еще как.
11. starik-2005 3165 10.02.25 08:33 Сейчас в теме
(10) 8.3.25.1394, если память не изменяет. Разницы между файловой и серверной быть не должно, имхо...
12. lmnlmn 69 10.02.25 10:15 Сейчас в теме
(11) Проверил в клиент-серверном 8.3.24.1667 Вроде работает все. Для свернутых пишет "Да". Т.е. считает их видимыми. По Ctrl+F те что видимы - "Да", скрытые - "Нет".

P.S. Единственный глюк - корень разворачивает проверка.
13. starik-2005 3165 10.02.25 10:24 Сейчас в теме
(12)
корень разворачивает проверка
Я делал так:
1. Отобрал часть строк, выделил, установил признак (булево). Часть выбранных строк была группами, поэтому выделились и те строки, которые не отображены.
2. Отключил отбор. Остались выбранными строки, которые не развернуты. Фактически это вложенные подсистемы, которые соответствовали отбору, но перестали быть видны после отключения отбора - они в свернутых группах.
3. Вид отображения дерева - иерархический список.
4. Устанавливаю текущую строку для каждого выделенного элемента - в итоге для элементов, которые в свернутых группах, текущая строка не устанавливается.

В режиме "Дерево" при установке текущей свернутой строки ветка дерева с этой строкой разворачивается.
14. lmnlmn 69 10.02.25 10:36 Сейчас в теме
(13) Как-то все хитро. У меня просто дерево на форме без отборов. А отбор чем делается?
15. starik-2005 3165 10.02.25 11:00 Сейчас в теме
16. lmnlmn 69 10.02.25 11:28 Сейчас в теме
(15) А, поиск. Я думал что-то еще наворочено. На досуге попробую воспроизвести.
5. ImHunter 333 05.02.25 20:28 Сейчас в теме
(1) Да, бяда с этим. Для ТЗ написали свои механизмы поиска.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот