Не работает быстрый фильтр по CustomSQL-полю в 3.4

Здравствуйте, уважаемые коллеги!

Заметил такую штуку. Один и тот же датасет в конфигурации 3.3.2.198 и в 3.4.0.38 ведёт себя по-разному при добавлении быстрого фильтра в реестре. В 3.3.2 всё отлично работает, но в 3.4 реестр остаётся пустым. Профайлер показывает следующее:

в 3.3.2:

exec sp_executesql N'SELECT TOP 40
        [tbl_Document].[ID] AS [ID],
        [tbl_Document].[Code] AS [Code],
        case
        when [tbl_Document].[Description] is null
        then 0
        else 1
end  AS [IsHasDescription]
FROM
        [dbo].[tbl_Document] AS [tbl_Document]
WHERE((case
        when [tbl_Document].[Description] is null
        then 0
        else 1
end  = @P1))'
,N'@P1 int',1

в 3.4.0:

exec sp_executesql N'SELECT TOP 40
        [tbl_Document].[ID] AS [ID],
        [tbl_Document].[Code] AS [Code],
        case
        when [tbl_Document].[Description] is null
        then 0
        else 1
end  AS [IsHasDescription]
FROM
        [dbo].[tbl_Document] AS [tbl_Document]
WHERE((NULL = @P1))'
,N'@P1 int',1

Как тут быть?

Нравится

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

Анатолий, попробуйте поместить CustomSQL в subselect. Возможно ситуация изменится.

Спасибо, Стас! Помогло! Да, в subselecte ест вполне корректно. Давным-давно Дима Мушенко открыл этот способ обхитрить ядро, но мне не пришло в голову применять этот трюк на 3.4.
Ох, чёрт, значит, при переносе с 3.3 на 3.4 надо все такие колонки в subselect засунуть. Хоть бы их немного оказалось... :smile:

Именно, это Димин способ. :)

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