Вопрос

Построение фильтров в EntitySchemaQuery

Можно ли каким-то образом построить такой запрос на клиенте:

update KitTrackingInformation
set
    TrackingNumber = @TrackingNumber
from KitTrackingInformation
        join BTSample on BTSample.BTKitIDLookupId = KitTrackingInformation.KitId
            join BTSampInShipment on BTSampInShipment.BTSampleIDId = BTSample.Id
where SampInShipment.BTShipmentId = @ShipmentId

Понятно, что это будет выглядеть приблизительно так:

                    var updateTrackingInfo = Ext.create("Terrasoft.UpdateQuery", {
                        rootSchemaName: "KitTrackingInformation"
                    });
                    updateTrackingInfo.setParameterValue("TrackingNumber", trackingNumber,
                        Terrasoft.DataValueType.SHORT_TEXT);
                                       updateTrackingInfo.filters.addItem(updateTrackingInfo.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL,
                        "<путь по связям для фильтрации>", shipmentId));
                    updateTrackingInfo.execute(function(response) {
                        if (response.success) {
                            debugger;
                        }
                    }, this);

Из всего вышеописанного следует 2 вопроса:

1) каким образом построить путь для фильтрации

2) можно ли вообще реализовать UpdateQuery с фильтрацией по полю связанной таблицы

У меня такой же вопрос

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

Алла, скорее всего, такое условие можно получить по обратным связям, когда пишется три поля через двоеточие в квадратных скобках. В этом случае две обратных связи подряд, то есть будет [::].[::].

Вот пример даже тройного join-а:

[SysAdminUnit:Contact:Owner].[SysUserInRole:SysUser:Id].[SysAdminUnit:Id:SysRole].Id

Ещё один:

[SysAdminUnit:Contact].[SysUserInRole:SysUser].SysRole

Сработает ли для update, нужно тестировать, глядя на получающиеся запросы в SQL-профайлере.

Зверев Александр,

Спасибо за ответ.

А какие sql-запросы получаются в итоге по этим примерам?

К сожалению, нет возможности посмотреть в профайлере код запросов.

Это примеры из логики фильтрации запросов на выборку, во втором случае получают список контактов, пользователи которых входят в указанную группу.

Войдите или зарегистрируйтесь, чтобы комментировать