Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Дерево для запроса

Расширение функционала и существующих возможностей программы с помощью модулей расширений и плагинов от сторонних разработчиков.

Модератор: Разработчики расширений

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Дерево для запроса

Сообщение admin » Пт авг 24, 2018 9:51 pm

Модуль дает возможность представить данные запроса в виде дерева и использовать его как фильтр для другого запроса. Подробности читайте в справке по действию. Действие называется "Дерево для запроса", группа "Компоненты".

1.3. Исправлена ошибка, возникающая при выборе узла дерева, содержащего кавычки.
1.2. Дерево не учитывало выходной фильтр запроса-источника.
1.1. Исправлена работа с запросами с выборкой из нескольких источников.
1.0. Первая версия.

QueryTree 1.2.zip
(4.45 КБ) 47 скачиваний

QueryTree 1.1.zip
(4.23 КБ) 57 скачиваний

QueryTree 1.0.zip
(4.29 КБ) 85 скачиваний
Вложения
QueryTree 1.3.zip
Актуальная версия расширения
(4.51 КБ) 185 скачиваний
QUERYTREEDEMO.zip
Демонстрационная база
(56.87 КБ) 95 скачиваний

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Re: Дерево для запроса

Сообщение admin » Ср июн 05, 2019 9:09 pm

Я про фильтр источника:

Код: Выделить всё

[!уровень1]<>'' & [!уровень2]<>'' & ... & [!уровень N]<>''
Но это не то, я понял. Надо доработать будет.

Аватара пользователя
Иван
Интересующийся
Сообщения: 68
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Дерево для запроса

Сообщение Иван » Вт июл 02, 2019 1:49 pm

Вопрос решил дописав пару строк в сам модуль QueryTree.

Для procedure QueryTree:

Код: Выделить всё

ShowLines:=false;
// что убрало линии точками

Для procedure UpdateTre после комментария автора // Раскрываем узлы:

Код: Выделить всё

if N.Text ='' then  N.Visible:= false;


Для идеальности визуально осталось убрать кнопку-треугольник для узлов после которых нет подчиненных групп или они скрыты. В принципе свойство

Код: Выделить всё

 TTreeView.ShowButtons:=false;
скрывает кнопки-треугольники, но только сразу все кнопки в дереве запроса. Применить к TTreeNode пока что подобное свойство не получилось.

Вопрос параллельно. Как можно получить значение поля из запроса-источника в переменную не выводя ее в дерево запроса?
Вложения
2019-07-02.png
2019-07-02.png (4.1 КБ) 355 просмотров

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Дерево для запроса

Сообщение admin » Вт июл 02, 2019 2:11 pm

Иван писал(а):Вопрос параллельно. Как можно получить значение поля из запроса-источника в переменную не выводя ее в дерево запроса?

Функция GET в выражениях, в скриптах Self.Queries['....'].Fields['...']

Аватара пользователя
Иван
Интересующийся
Сообщения: 68
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Дерево для запроса

Сообщение Иван » Вт июл 02, 2019 2:37 pm

admin писал(а):
Иван писал(а):Вопрос параллельно. Как можно получить значение поля из запроса-источника в переменную не выводя ее в дерево запроса?

Функция GET в выражениях, в скриптах Self.Queries['....'].Fields['...']


Имел ввиду значение что соответствует источнику для TTreeNode. Например получить ID_rec записи источник группы. Запрос то скрыт в дереве запроса, get не будет работать.

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Дерево для запроса

Сообщение admin » Вт июл 02, 2019 3:28 pm

Что-то никак не могу врубиться в вопрос. Текст узла дерева передается в переменную при выборе узла...

Аватара пользователя
Иван
Интересующийся
Сообщения: 68
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Дерево для запроса

Сообщение Иван » Вт июл 02, 2019 6:53 pm

admin писал(а):Что-то никак не могу врубиться в вопрос. Текст узла дерева передается в переменную при выборе узла...


Разобрался. Думал что по TTreeNode в дереве запроса можно непосредственно получить доступ к данным запроса, но как оказалось можно только сравнивать TTreeNode.Text с каким либо полем запроса, что не подходит ввиду возможности существования дублей. Решил свой вопрос костылем.

По сути хотел получать в целевом запросе записи выделенной группы и всех ее подгрупп (а не только данной выбранной группы). Что оказалось проще всего сделать сравнивая в выходном фильтре целевого запроса Путь выбранной группы дерева запроса и всех значений Путь записей в целевом запросе.

Код: Выделить всё

[id задачи]=iif(getvar('level_1')<>null,
                           iif(REPLACE([Путь], getvar('PeremPath'),'&&&&&')<>[Путь], [id задачи], 0)
                 , [id задачи])       
//getvar('PeremPath') устанавливаем скриптом в модуле QueryTree

Kiss
Интересующийся
Сообщения: 191
Зарегистрирован: Вт мар 14, 2017 11:41 am
Откуда: Гомель, Беларусь
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Дерево для запроса

Сообщение Kiss » Пт июл 05, 2019 12:01 pm

Можно ли с помощью этого расширения построить нормальное дерево из иерархического справочника?
Вот такого:
http://dataexpress.wiki/rukovodstvo_po_ ... :ierarxija
(на форме справочника [Текст] и [Объект-Родитель], ссылающийся на текст этой же формы)
Подскажите - как, если можно. Я что-то вообще не могу разобраться.

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Дерево для запроса

Сообщение admin » Пт июл 05, 2019 1:58 pm

Kiss писал(а):Можно ли с помощью этого расширения построить нормальное дерево из иерархического справочника?

Нет, нельзя.


Вернуться в «Расширения и плагины»