Вопрос

Фильтрация по колонке

Добрый день, подскажите как осуществить фильтрацию в детали по колонке из третий таблицы?

Есть конструкция:

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"));

не работает, как это правильно сделать?

 

 

Нравится

2 комментария

Вам необходимо использовать синтаксис 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"
   )
);

 

Севостьянов Илья Сергеевич,

Большое спасибо за пояснения, всё получилось.

Показать все комментарии