Добрый день, подскажите как осуществить фильтрацию в детали по колонке из третий таблицы?
Есть конструкция:
select * from UsrDocument
INNER JOIN UsrDocumentPackage on UsrDocument.UsrPackageCPId=UsrDocumentPackage.UsrCPId
where UsrDocumentPackage.UsrCodeId = 'e06c50cb-ac4c-41ce-9493-033e4b54ea14'
которую нужно вынести в filterGroup.
filterGroup.add(
"UsrPackageFilterLogistics",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"UsrDocumentPackage.UsrCode",
"00e6efc8-cc7e-4ac7-af41-6310bb5110e8"));
не работает, как это правильно сделать?
Нравится
Вам необходимо использовать синтаксис ESQ-запроса во втором аргументе, для присоединения таблицы, см. https://academy.terrasoft.ru/sites/default/files/documents/docs/technic/SDK/7.9.0/BPMonline_development_guide.pdf
стр. 389 - 391
А лучше прямо с 371-ой страницы.
В Вашем случае строка ESQ запроса повторяющая ваш SQL-заспрос будет выглядеть так (Учитывая что текущая схема UsrDocument, а это может быть не так):
[UsrDocumentPackage:UsrCP:UsrPackageCP].UsrCode
суффиксы "Id" для справочных полей опускаются (вы запрашиваете поля объектов конфигурации а не колонки из БД, на это необходимо обращать внимание, т.е если в объекте у Вас поле называется "UsrCP" именно так вы и должны его использовать в запросах ESQ, в то время как в в БД(если поле справочное) оно будет именоваться "UsrCPId")
В конечном варианте Ваш фильтр будет выглядеть вот так
filterGroup.add( "UsrPackageFilterLogistics", Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "[UsrDocumentPackage:UsrCP:UsrPackageCP].UsrCode", "00e6efc8-cc7e-4ac7-af41-6310bb5110e8" ) );
Севостьянов Илья Сергеевич,
Большое спасибо за пояснения, всё получилось.