![]() |
#1 |
Участник
|
View и виртуальная компания
Добрый день.
Возникла проблема, есть виртуальная компания, в нее добавлены 2 компании, пытаюсь создать вьюху на основе запроса, в который добавлена только таблица InventTable. В итоге, в представлении вижу все записи задвоенными. В чем может быть проблема? Есть ощущение, что это из-за настройки виртуальной компании, т.к. завпрос на создание вьюхи в SQL выглядит немного странно: CREATE VIEW [dbo].[COMP_TMP] AS SELECT T1.ITEMID AS ITEMID,T1.ARTICLE AS ARTICLE,T1.PARTITION AS ITEMPARTITION,T1.DATAAREAID AS DATAAREAID,T1.PARTITION AS PARTITION,T1.RECID AS RECID FROM (SELECT VIRT.ID AS DATAAREAID ,T1.ITEMID,T1.ARTICLE,T1.PARTITION,T1.RECID FROM INVENTTABLE T1 INNER JOIN VIRTUALDATAAREALIST VIRT ON T1.DATAAREAID = VIRT.VIRTUALDATAAREA UNION ALL SELECT T1.DATAAREAID ,T1.ITEMID,T1.ARTICLE,T1.PARTITION,T1.RECID FROM INVENTTABLE T1 INNER JOIN DATAAREA DAT ON (T1.DATAAREAID = DAT.ID AND DAT.ISVIRTUAL = 0)) T1 WHERE (DATAAREAID=N'comp') Версия Ax12 R2 |
|
![]() |
#2 |
Участник
|
Скорее всего, у Вас код виртуальной и физической компании одинаковый. Что возвращает вот такой запрос
X++: select * from VIRTUALDATAAREALIST where id = N'comp' OR VIRTUALDATAAREA = N'comp' Если получили запись, у которой ID = VIRTUALDATAAREA, то в запросе для View оставьте только UNION, но уберите опцию ALL, чтобы исключить дубли
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 01.06.2016 в 13:18. |
|
![]() |
#3 |
Участник
|
Да, для справки
Если таблица сначала относилась к физической компании, а потом была виртуализирована (или наоборот), то записи с устаревшим значением поля DataAreaId не удаляются. Хотя и не отображаются в обозревателе таблицы или в формах из-за наложенного фильтра по коду компании Вам надо просто физически удалить устаревшие данные из таблицы InventTable. С не корректным значением DataAreaId
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#4 |
Участник
|
Возвращает 2 записи:
ID - COMP, VIRTUALDATAAREA - CMPH ID - comp, VIRTUALDATAAREA - CMPH с разным Partition |
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Цитата:
1. Если какое-то значение не существует, то эту запись надо удалить 2. Если все значения рабочие, то необходимо в условие отбора Where добавить указание на конкретное значение Partition кроме значения DataAreaId. Хотя, теоретически, это должно выполняться автоматически
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: iglu (1). |
![]() |
#7 |
Участник
|
Да, помогло, убрал лишний Partition и дубли из вьюхи пропали.
Спасибо. |
|
|
|