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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2014, 17:40   #1  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
ValidTimeState for views' queries
Доброго времени суток!

Возможно ли создать query в AOT с использованием Date Effective Framework?

С созданием query из кода всё ясно:
X++:
query.ValidTimeStateAsOfDate(Date)
query.ValidTimeStateDateRange(fromDate, toDate)

query.ValidTimeStateAsOfDatetime(Date)
query.ValidTimeStateDateTimeRange(fromDate, toDate)
Но не найду подобной возможности использования данного Framework'а для query, с последующим добавлением его в качестве источника данных во view. Неужели использовать обычные range? Как-то это нелогично на мой взгляд.

DAX 2012 R1

Спасибо!
Старый 28.04.2014, 19:27   #2  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Нашёл вот такую информацию:

Whitepaper "Using_Date_Effective_Patterns_AX2012.pdf": http://www.microsoft.com/en-us/downl....aspx?Id=20864

Цитата:
AOT query
A valid time state table can be one of the data sources of an AOT query. Currently, there are no properties in the AOT query to specify the date range or AsOfDate for the records. This can be achieved programmatically or through form and SysQueryForm, which is demonstrated in the later section

View
A valid time state table can be one of the data sources in a view. By default, the view returns all data in a valid time state table. If the property ValidTimeStateEnabled is set to Yes, and the view fields contain the ValidFrom and ValidTo fields of the valid time state table in the view data source, the view returns current records.
Судя по данной цитате, я могу цеплять датасорс с включённым valid time state, но при этом:
1). Во вьюху следует добавлять поля этих самых дат, а также включать вышеупомянутое свойство.
2). Если такая таблица цепляется по связи Outer Join, то пока непонятно как будет срабатывать данный фрэймворк.
3). Если таких датасорсов будет больше одного в одной вьюхе, то нужно очень внимательно выбирать таблицу, по полям дат которой нужно производить фильтр, иначе результаты могут быть некорректными..
Старый 28.04.2014, 21:10   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Интересно, создал view на основе таблицы HcmPositionWorkerAssignment, в которой активирован данный framework, вынес поля Worker, PositionId, ValidFrom и ValidTo, активировал вышеуказанное свойство на уровне view, однако в результирующую выборку попали записи, например, с

ValidFrom = 11/27/2013 04:32:39 am и
ValidTo = 11/27/2013 04:33:28 am,

что противоречит цитате из документа.

Кто-то сталкивался с таким поведением Framework'а? Что делаю не так?
Буду рад любым мыслям!
Спасибо!
Старый 29.04.2014, 00:40   #4  
mista is offline
mista
Участник
 
8 / 20 (1) +++
Регистрация: 03.09.2007
Адрес: Switzerland
если добавить view на форму как datasource, то будут отображаться актуальные записи
За это сообщение автора поблагодарили: Cardagant (2).
Старый 29.04.2014, 12:18   #5  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от mista Посмотреть сообщение
если добавить view на форму как datasource, то будут отображаться актуальные записи
То есть, насколько я понимаю, данный framework я не смогу использовать в Перспективе. Получается, в Перспективе, для реализации подобного, возможно, следует использовать Range. Или есть альтернативы?
Старый 05.05.2014, 23:05   #6  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
?
Интересно, может кто сталкивался.
Как правильно реализовать Range в Query AOT'а, который бы отбирал данные таблицы по UTCDateTime полю, с критерием:
X++:
Table.ValidTo == DateTimeUtil::maxValue()
Прошу подсказки!

UPD: И как вообще использовать подобные примеры при построении перспектив и кубов?

Спасибо!

Последний раз редактировалось Cardagant; 05.05.2014 в 23:22.
Старый 06.05.2014, 08:54   #7  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Начиная с 2009 можно использовать динамические условия в запросе через SysQueryRangeUtil. Почитать, например, тут
__________________
Кононов Пётр
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (1), Cardagant (2).
Старый 29.09.2015, 12:42   #8  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Всем привет

Подниму тему в связи с обнаруженной проблемой.

При использовании SysQueryRangeUtil класса копмиляция и синхронизация вью проходит успешно, но развёртывание значения функций проходит лишь один раз (при синхронизации вьюхи) и является статическим.

То есть, если мы разместим в range функцию текущей даты класса SysQueryRangeUtil, то на SQL Server вьюха будет иметь статический критерий даты дня синхронизации (компиляции).

Что-то здесь можно сделать?

Или только вариант с
X++:
Table.ValidTo == DateTimeUtil::maxValue()
сможет дать желаемый результат?

Заранее спасибо.
Старый 29.09.2015, 12:59   #9  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Уточню, что мне это нужно для куба, соответственно процессинг куба будет осуществляться без Аксапты, используя SSIS пакет.
Старый 29.09.2015, 13:19   #10  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Попробовал свою же цитату из сообщений выше:
Цитата:
View
A valid time state table can be one of the data sources in a view. By default, the view returns all data in a valid time state table. If the property ValidTimeStateEnabled is set to Yes, and the view fields contain the ValidFrom and ValidTo fields of the valid time state table in the view data source, the view returns current records.
ValidTimeStateEnabled свойство физически не добавляет никаких критериев типа CURRENT_TIMESTAMP() или getDate() на уровне SQL-вьюхи, соответственно этот вариант не подходит.
Старый 30.09.2015, 15:03   #11  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Во View Query с динамическими параметрами из SysQueryRangeUtil использовать не получится, так как во время синхронизации этот View создаётся в базе данных, и ничего с ним уже сделать нельзя. Вместо этого попробуйте использовать computed columns. Для примера посмотрите view InventTableExpanded и то, как там добавлено поле ProductName.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 01.10.2015, 10:37   #12  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Во View Query с динамическими параметрами из SysQueryRangeUtil использовать не получится, так как во время синхронизации этот View создаётся в базе данных, и ничего с ним уже сделать нельзя. Вместо этого попробуйте использовать computed columns. Для примера посмотрите view InventTableExpanded и то, как там добавлено поле ProductName.
Спасибо за ответ.

Идею понял, но не совсем понял как условная выборка будет применима к выборке по ValidTimeState, в случае, если на одну запись parent таблицы приходится несколько записей Child таблицы с различными датами валидации.
Старый 04.10.2015, 22:20   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Вы на SQL свой запрос примерно сможете написать? Просто, чтобы было понятнее, о чём речь.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Теги
query, validtimestate, ax2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Publish Queries As OData Document Sources For Users To Query In Excel Blog bot DAX Blogs 0 11.02.2014 16:11
equalized: Dynamics Ax composite queries Blog bot DAX Blogs 0 19.10.2012 02:14
gatesasbait: Improved AOT Queries in Ax2009 Blog bot DAX Blogs 3 12.10.2011 15:03
C# and AX Development: Complex Queries in AX Blog bot DAX Blogs 2 06.03.2008 17:57
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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