Необъяснимое поведение объекта созданого на основе представления (View)

При выведении в Итоги виджета "список" данных объекта, созданного на основе View, в Списке  иногда отображаются дублирующиеся записи. Но при экспорте в excel такие дубли отсутствуют. Есть подозрение, что такое поведение связано как-то с пагинацией.  Такая же ситуация происходит если делать на основе такого объекта деталь.

Кто-нибудь сталкивался с подобным?

Ниже пример схемы View используемый для объекта

CREATE VIEW [dbo].[VwTest] AS

SELECT

    NEWID() as Id

    ,GETDATE() as CreatedOn

    ,(SELECT Id FROM Contact WHERE Id='BE80A149-0089-4311-A775-CA6CD8937E2B') as CreatedById

    ,GETDATE() as ModifiedOn

    ,(SELECT Id FROM Contact WHERE Id='BE80A149-0089-4311-A775-CA6CD8937E2B') as ModifiedById

    ,0 as ProcessListeners

    ,Id as ContactId

    ,Age

FROM Contact

WHERE Age>30

 

 

 

Нравится

7 комментариев

Добрый день!

Прошу уточнить следующую информацию:

1. Полную версию приложения

2. Данное поведение наблюдается с одним объектом, или воспроизводится вне зависимости от объекта?

3. Также просим Вас уточнить детальный пошаговый кейс воспроизведения, начиная с создания объекта.

 

Спасибо!

Роман Казекин,

 1. Версия Sale Ent 7.16.3

2. Данное поведение характерно для всех объектов созданных на основе view.

3.

- Создал View ( как описано выше)

-  в управление конфигурацией создал объект с названием View

- включил checkbox Поведение - Представление в базе данных

4. Вывод объекта в Итогах в виде Списка

Евгений Кобзарь,

 

Уточните, пожалуйста, по какому полю Вы определяете записи, как дубли?

Также прошу посмотреть Select, который приходит детали. Есть ли там одинаковые записи?

Роман Казекин,

По полю Контакт. Select с View выбирает только 1 запись. Но в таблице/списке показывает несколько. Как правило происходит такое когда нажимаешь кнопку Показать больше. См. скриншот

Евгений Кобзарь,

 

Проверьте значение колонки ContactId, если там разные значения для записей, которые дублируются, то это значит что у Вас есть дубли в контактах. То есть это разные записи с одинаковыми данными.

Также можете напрямую в таблице контактов поискать контакты по имени, которое дублируется. Если таких записей несколько можете использовать механизм слияния дублей.

 

https://academy.terrasoft.ru/docs/user/bazis_platformy/dannye/dubli/poi…

Роман Казекин,

 

Дублей нет. На скриншоте видно, что ссылки на эти записи формируются идентичные (на основе одного Id). Мне кажется что проблема все же в offsetе и order by (по Id).  При нажатии показать больше идет повторный запрос к View у которого НЕ статический  ID (newid()). Если это так? То каким образом можно и как правильно во view создать этот ID.

Добрый день

Евгений, это абсолютно объяснимое поведение View при использовании Fetch next. Вы же получаете записи пачками, а каждая пачка имеет свои Id и сортировка может вам выдать "дубль"

Как правильно? Просто используейте Id из основного объекта. Вы же выбираете из Contact, так берите его Id вместо генерации newid()

 

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