|  07.02.2011, 11:23 | #1 | 
| Участник | Получение кода виртуальной компании из SQL 
			
			При постройке отчетов в SSRS(обычных, без расширений AX2009) столкнулись с проблемой получения кода компании по которой надо делать выборку данных. Пользователь при запуске отчета указывает код реальной компании, но часть таблиц включены в виртуальные компании  т.е. по сути нужна какая-то функция, которая по имени таблицы и коду компании которую указал пользователь вернет или тот же самый код, или код виртуальной компании. Сейчас приходит в говову только создание новой таблицы с 3 полями - имя таблицы, код компании, код виртуальной компании и периодическое ее обновление джобом. может кто делал это более красиво? | 
|  | 
|  07.02.2011, 11:59 | #2 | 
| Участник | 
			
			Существует системная таблица 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 | 
| Administrator | 
			
			Владимир, не усложняйте   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 | 
| Участник | |
|  | 
|  07.02.2011, 16:52 | #5 | 
| Administrator | 
			
			Если Вас это так пугает, создайте 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 | 
| Участник | 
			
			Добавление таблиц трансляции компании в запрос (в т.ч. и в виде вьюх) ухудшает план выполнения запросов. такой подход увеличивает и универсальность и время выполнения. Таблицы "завиртуаленные" для всех компаний лучше вообще "лишать" признака компании (SaveDataPerCompany = No).
		 | 
|  | 
|  08.02.2011, 11:25 | #7 | 
| Administrator | 
			
			На счёт того, что это лучше - спорно. Всё-таки, от значительной части функциональности при этом отказываться приходится. Я бы это предложение сформулировал так: если возникают проблемы с производительностью, рассмотрите вариант с использованием 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 | 
| Участник | Цитата: Из известных мне минусов: 1. Могут быть проблемы с таблицами завязанными на Интеркомпани (они так же проявляются и при отсутствии лиц. ключа). 2. Большое кол-во "прямых SQL" запросов уже настроенных на работу с виртуальной компанией. Цитата:   | 
|  | 
|  08.02.2011, 12:27 | #9 | 
| Administrator | 
			
			Извините, но поподробнее - в мануалах. Виртуальные компании сами по себе тоже являются полезной функциональностью.
		 
				__________________ 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 | 
| MCT | 
			
			Кстати, а почему не используете, отчеты с расширением Dynamics Ax, там ведь можно делать достаточно расширяемые решения. Например
		 
				__________________ Axapta book for developer | 
|  |