Здравсвствуйте! Помогите пожалуйста составить примерно такой фильтр
select a.* from "ScVwSLPBalanseFApp" a where NOT EXISTS (SELECT t.* FROM "SpecInCondition" t LEFT JOIN "SpecTableValue" spect ON spect."Id" = t."SpecTableValueXId" WHERE t."ScParentSCFApplication" = a."ScFApplicationId" AND spect."ScDate" = a."ScDate")
делал что-то типа такого
var filterNotExist = this.Terrasoft.createNotExistsFilter("[SpecInCondition:ScParentSCFApplication:ScFApplication].Id"); filterNotExist.subFilters.addItem(Terrasoft.createFilter( Terrasoft.ComparisonType.EQUAL, "[SpecTableValue:Id:SpecTableValueX].ScDate", "ScDate"));
у меня выдает ошибку ("SpecInCondition"."ScDate": недопустимый идентификатор), в фильтре пытается найти колонку ScDate в объекте SpecInCondition, если да, то как мне перейти к этой колонке колонку к корневой схеме, подскажите пожалуйста в чем причина.
Нравится
Дульский Александр,
В теории средствами bpm'online такой фильтр построить возможно.
Вы смотрели, какой запрос идет в базу данных?
Еще можно рассмотреть вариант реализации на стороне сервера, если с клиентом не получается.
Думаю, что в данном случае все можно сделать гораздо проще, Вы можете реализовать sql-представление, за основу которого взять именно этот запрос и дальше уже с ним работать.
Доброе утро!
Для того, чтобы понять в чем ошибка, запустите sql-профайлер и посмотрите, какой запрос идет в базу данных.
Сначала свяжите таблицу основного запроса и фильтра not exists, а потом реализуйте нужные фильтры в подзапросе not exists. Сейчас в Вашем примере Вы все смешали "в кучу''.
Посмотрите здесь похожий пример.
Алла Савельева,
Не совсем понял о чем вы, и про какую "кучу", фильтр filterNotExist он уже связан с объектом ScVwSLPBalanseFApp, и у этого фильтра формируется подфильтр. Но я пытаюсь реальзовать конструкцию (spect."ScDate" = a."ScDate") из моего запроса, но не выходит.
Алла Савельева,
Да пример похожий, такой фильтр построить я могу, но там нет интересующего меня момента, это join в подзапросе, а именно сравнение колонки этого join'a "ScDate" с колонкой "ScDate" основного объекта "ScVwSLPBalanseFApp".
На академми сказано, что фильтр createFilter
leftColumnPath Путь к проверяемой колонке относительно корневой схемы rootSchema.
rightColumnPath Путь к колонке-фильтру относительно корневой схемы rootSchema.
т.е. rightColumnPath это пусть у колонке главной схемы фильтра, а не основного объекта?!
В общем я так понимаю такой фильтр построить нельзя в принципе, в bpm?
select a.* from "ScVwSLPBalanseFApp" a where NOT EXISTS (SELECT t.* FROM "SpecInCondition" t LEFT JOIN "SpecTableValue" spect ON spect."Id" = t."SpecTableValueXId" WHERE t."ScParentSCFApplication" = a."ScFApplicationId" AND spect."ScDate" = a."ScDate")
Дульский Александр,
В теории средствами bpm'online такой фильтр построить возможно.
Вы смотрели, какой запрос идет в базу данных?
Еще можно рассмотреть вариант реализации на стороне сервера, если с клиентом не получается.
Думаю, что в данном случае все можно сделать гораздо проще, Вы можете реализовать sql-представление, за основу которого взять именно этот запрос и дальше уже с ним работать.
Александр, насколько понимаю, этот фильтр без передаваемых в него параметров, а объект ScVwSLPBalanseFApp сделан из view? В таком случае можно в эту же или в новую view прямо вписать это условие, чтобы оно всегда применялось. PS: пока писал, Алла выше посоветовала то же самое.