Имя: Пароль:
1C
1С v8
Инструмент динамического формирования запроса (как в СКД) для Java
0 GANR
 
08.08.21
12:45
При просмотре 1С запроса (например, в консоли СКД), сформированного с применением настроек компоновки данных можно видеть, что отборы применились и к временным таблицам, и к итоговой таблице запроса. Предположим, есть запрос для Postgres, есть некий набор условий, логически похожий на отбор, который мы задаем в настройках компоновки данных.

Существует ли на Java нечто схожее по принципу действия?
1 ДенисЧ
 
08.08.21
13:00
Hibernate?
а так - аналога нет. Жабисты брезгуют такими вещами.
2 GANR
 
08.08.21
13:13
(1) Это ближе к CriteriaBuilder, но по-моему прям как СКД на вложенные запрос и временные таблицы он условия наложить не может. Это надо внутри библиотеки по сути запрос пропарсить и разложить его в объект и там, где надо условия вшить, а потом собрать обратно в запрос.
3 Asmody
 
08.08.21
13:41
"Чтоб прям как в СКД" есть только в СКД.
https://querydsl.com/static/querydsl/4.4.0/reference/html_single/
4 mistеr
 
08.08.21
13:41
(2) СКД не вставляет условия в запрос. Она генерирует запрос с учетом отборов.
5 Asmody
 
08.08.21
13:42
Ещё пишут про jooq, но оно за деньги
6 Конструктор1С
 
08.08.21
14:33
Так ведь в Java принято "собирать" текст запроса через Hibernate, по типу ручного сбора текста запроса в 1с через объектную модель СхемаЗапроса. Какие надо отборы, такие на лету и добавил
7 GANR
 
08.08.21
15:13
(6) На входе у нас запрос текстом, строк эдак 400. Вот его надо в объектную модель вогнать и как-то добавить отборчики. Причем, чтобы работал быстро, надо не только на верхний уровень наложить отбор, но и на вложенные запросы. Правильно понимаю, что тут без рекурсивного обхода объектной модели запроса никак?
8 GANR
 
08.08.21
15:15
Запрос имеет на входе параметр ИНН, допустим. И куча таблиц, из которых надо по нему фильтровать. Вот надо к каждому подзапросу фильтр добавить.