AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2011, 11:23   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
769 / 998 (35) +++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Получение кода виртуальной компании из SQL
При постройке отчетов в SSRS(обычных, без расширений AX2009) столкнулись с проблемой получения кода компании по которой надо делать выборку данных. Пользователь при запуске отчета указывает код реальной компании, но часть таблиц включены в виртуальные компании т.е. по сути нужна какая-то функция, которая по имени таблицы и коду компании которую указал пользователь вернет или тот же самый код, или код виртуальной компании.
Сейчас приходит в говову только создание новой таблицы с 3 полями - имя таблицы, код компании, код виртуальной компании и периодическое ее обновление джобом.
может кто делал это более красиво?
Старый 07.02.2011, 11:59   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,435 / 945 (34) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Существует системная таблица VirtualDataAreaList, которая содержит пары соответствия виртуальных и реальных компаний. Ее и можно использовать в запросах примерно таким образом.

tab1 - не виртуализирована
tab2 - виртуализирована

X++:
select *
from tab1
inner join tab2 on tab1.ID = tab2.ID --    
	--      
	and (tab1.dataAreaId = tab2.dataAreaId
		or exists(select 1 from VirtualDataAreaList vdal
			where vdal.virtualDataArea = tab2.dataAreaId
				and vdal.id = tab1.dataAreaId))
Нужно двойное условие сравнения кода компании, поскольку таблица может быть виртуализирована лишь по части компаний, а не по всем.
За это сообщение автора поблагодарили: trud (1).
Старый 07.02.2011, 12:16   #3  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 627 (25) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Владимир, не усложняйте

trud, проблема известная, и Майкрософт даже писал о том, как её решать (примерно год назад). Вкратце: создайте View для таблиц, которые включены в виртуальную компанию, и используйте этот View в запросах. Подробности здесь: http://www.microsoft.com/downloads/e...c-802da5053a55
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 07.02.2011, 12:30   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
769 / 998 (35) +++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Вкратце: создайте View для таблиц, которые включены в виртуальную компанию, и используйте этот View в запросах.
Ну тут подразумевается, что я знаю эти самые таблицы, т.е. зашиваюсь на то, что никто ничего не изменит.
Спасибо всем, подходы понятны
Старый 07.02.2011, 16:52   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 627 (25) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Если Вас это так пугает, создайте view вообще для всех таблиц, которые используются в SSRS-запросах. Тогда никакие изменения в системе на работе отчётов не отразятся. Они будут работать вне зависимости от того, включена таблица в виртуальную компанию или нет.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.02.2011, 08:29   #6  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
444 / 233 (8) ++++++
Регистрация: 13.12.2001
Добавление таблиц трансляции компании в запрос (в т.ч. и в виде вьюх) ухудшает план выполнения запросов. такой подход увеличивает и универсальность и время выполнения. Таблицы "завиртуаленные" для всех компаний лучше вообще "лишать" признака компании (SaveDataPerCompany = No).
Старый 08.02.2011, 11:25   #7  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 627 (25) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
На счёт того, что это лучше - спорно. Всё-таки, от значительной части функциональности при этом отказываться приходится. Я бы это предложение сформулировал так: если возникают проблемы с производительностью, рассмотрите вариант с использованием SaveDataPerCompany = No вместо виртуальных компаний.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.02.2011, 11:36   #8  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
444 / 233 (8) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
На счёт того, что это лучше - спорно. Всё-таки, от значительной части функциональности при этом отказываться приходится.
А можно поподробнее, от какой части функциональности придется отказаться ?
Из известных мне минусов:
1. Могут быть проблемы с таблицами завязанными на Интеркомпани (они так же проявляются и при отсутствии лиц. ключа).
2. Большое кол-во "прямых SQL" запросов уже настроенных на работу с виртуальной компанией.
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Я бы это предложение сформулировал так: если возникают проблемы с производительностью, рассмотрите вариант с использованием SaveDataPerCompany = No вместо виртуальных компаний.
Иногда лучше предотвратить возникновение проблемы, чем разбираться с ее последствиями
Старый 08.02.2011, 12:27   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 627 (25) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Извините, но поподробнее - в мануалах. Виртуальные компании сами по себе тоже являются полезной функциональностью.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 09.02.2011, 11:35   #10  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,601 / 618 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Кстати, а почему не используете, отчеты с расширением Dynamics Ax, там ведь можно делать достаточно расширяемые решения. Например
__________________
Axapta book for developer
Теги
ssrs, виртуальные компании

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Изменение существующей виртуальной компании kashperuk DAX: Администрирование 2 09.08.2009 14:25
DataAreaId в виртуальной компании. vasiliy DAX: Программирование 1 17.04.2008 15:30
доступ к записям виртуальной компании HelgaK DAX: Функционал 2 02.10.2006 07:54
View в виртуальной компании ZSV DAX: Программирование 15 26.07.2006 15:30
Доступ на уровне записей в виртуальной компании ZSV DAX: Администрирование 3 05.09.2005 18:42
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:37.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.