Пишу PHP модуль для связи сайта с BPM. Есть какой-нибудь Wysywig редактор для построения SQL запросов? Писать такие запросы вручную это просто утомительно. К тому же не ясно, как проконтролировать скомпилированный запрос и обработанный DataService
{
"Columns": {
"Items": {
"Name": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "Name"
}
},
"OwnerLogin": {
"OrderDirection": 0,
"OrderPosition": 0,
"Caption": null,
"Expression": {
"ExpressionType": 0,
"ColumnPath": "[WSysAccount:Contact:Owner].Login"
}
}
}
},
"AllColumns": false,
"IsDistinct": false,
"RowCount": 1,
"Filters": {
"FilterType": 6,
"ComparisonType": 0,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"Items": {
"FilterByPhone": {
"FilterType": 1,
"ComparisonType": 9,
"LogicalOperation": 0,
"IsNull": true,
"IsEnabled": true,
"IsNot": false,
"LeftExpression": {
"ExpressionType": 0,
"ColumnPath": "[ContactCommunication:Contact].SearchNumber"
},
"RightExpression": {
"ExpressionType": 2,
"ColumnPath": null,
"Parameter": {
"DataValueType": 1,
"Value": "54326672198"
}
}
}
}
},
"RootSchemaName": "Contact",
"OperationType": 0
}';
Нравится
Андрей, здравствуйте!
Наличие визуального редактора для не предусмотрено. Хочу обратить внимание, что SQL запросы и ESQ запросы - это разные инструменты для получения данных. В отличии от ESQ, SQL запросы не учитывают права пользователя. Таким образом один и тот же запрос, интерпретированный на SQL и ESQ может возвращать разный результат.
Пусть так, а как проконтролировать какой SQL запрос получится из этого запроса? На примитивном запросе с одним условием еще более менее понятно, а вот делаю объединение запроса и привет. Например, хочу эмулировать запрос
SearchNumber in ("54326672198", "54326672197") /* пользователи и через 8ку заносят номера и через +7*/
ну или так SearchNumber="54326672198" or SearchNumber="54326672197"
и всё, не отрабатывает, пробовал и через RightExpressions[] и задавал два Items. В первом случае возвращается всегда error, а во втором случае если искать в первом item "54326672197" находит. если номер во втором item, то соответствий нет.
а уж такие запросы типа select * from dbo where id in (select id from dbo1 where x=y) я понимаю вообще не сделать
Добрый день, Андрей.
Мне кажется, что в Вашем случае значительно лучше подойдут sql view нежели сложные odata запросы. Просто создайте view в базе данных, которая будет Вам возвращать нужную выборку по простому запросу и обращайтесь к ней (view должна быть связана с объектом в конфигурации).
В описанном Вами случае, вьюха будет представлять union таблицы контактов с необходимыми полями и всеми вариантами написания номера. Запрашиваете у вьюхи номер в любом формате - она возвращает нужные данные контакта.
Соответственно, отдельная вьюха под каждую задачу.
Также, ознакомьтесь со статьями
https://academy.terrasoft.ru/documents/technic-sdk/7-9/rabota-s-obektam…
и
https://academy.terrasoft.ru/documents/technic-sdk/7-9/primery-zaprosov…
Чуть более сложные запросы в комбинации со вьюхой позволят построить выборку практически любой сложности.
Опять же, на вьюху можно навесить тригер в БД. Тогда можно вообще кастомные запросы обрабатывать.