|
![]() |
#1 |
Участник
|
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) DAX 2012 R1 Спасибо! |
|
![]() |
#2 |
Участник
|
Нашёл вот такую информацию:
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. 1). Во вьюху следует добавлять поля этих самых дат, а также включать вышеупомянутое свойство. 2). Если такая таблица цепляется по связи Outer Join, то пока непонятно как будет срабатывать данный фрэймворк. 3). Если таких датасорсов будет больше одного в одной вьюхе, то нужно очень внимательно выбирать таблицу, по полям дат которой нужно производить фильтр, иначе результаты могут быть некорректными.. |
|
![]() |
#3 |
Участник
|
Интересно, создал 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'а? Что делаю не так? Буду рад любым мыслям! Спасибо! |
|
![]() |
#4 |
Участник
|
если добавить view на форму как datasource, то будут отображаться актуальные записи
|
|
|
За это сообщение автора поблагодарили: Cardagant (2). |
![]() |
#5 |
Участник
|
То есть, насколько я понимаю, данный framework я не смогу использовать в Перспективе. Получается, в Перспективе, для реализации подобного, возможно, следует использовать Range. Или есть альтернативы?
|
|
![]() |
#6 |
Участник
|
![]()
Интересно, может кто сталкивался.
Как правильно реализовать Range в Query AOT'а, который бы отбирал данные таблицы по UTCDateTime полю, с критерием: X++: Table.ValidTo == DateTimeUtil::maxValue() UPD: И как вообще использовать подобные примеры при построении перспектив и кубов? Спасибо! Последний раз редактировалось Cardagant; 05.05.2014 в 23:22. |
|
![]() |
#8 |
Участник
|
Всем привет
![]() Подниму тему в связи с обнаруженной проблемой. При использовании SysQueryRangeUtil класса копмиляция и синхронизация вью проходит успешно, но развёртывание значения функций проходит лишь один раз (при синхронизации вьюхи) и является статическим. То есть, если мы разместим в range функцию текущей даты класса SysQueryRangeUtil, то на SQL Server вьюха будет иметь статический критерий даты дня синхронизации (компиляции). Что-то здесь можно сделать? Или только вариант с X++: Table.ValidTo == DateTimeUtil::maxValue() Заранее спасибо. |
|
![]() |
#9 |
Administrator
|
Во 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 |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
![]() Во View Query с динамическими параметрами из SysQueryRangeUtil использовать не получится, так как во время синхронизации этот View создаётся в базе данных, и ничего с ним уже сделать нельзя. Вместо этого попробуйте использовать computed columns. Для примера посмотрите view InventTableExpanded и то, как там добавлено поле ProductName.
Идею понял, но не совсем понял как условная выборка будет применима к выборке по ValidTimeState, в случае, если на одну запись parent таблицы приходится несколько записей Child таблицы с различными датами валидации. |
|
![]() |
#11 |
Administrator
|
Вы на SQL свой запрос примерно сможете написать? Просто, чтобы было понятнее, о чём речь.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|