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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.02.2014, 22:25   #1  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
? Редактирование date effective таблиц в режиме CreateNewTimePeriod на форме
Проблема с применением date effective таблицы на форме.

Есть тестовая таблица, ValidTimeStateFieldType установлен в UtcDateTime.

Создаем тестовую форму, добавляем таблицу в Data Sources, оставляем значения следующих свойств по умолчанию:
Код:
ValidTimeStateAutoQuery = AsOfDate
ValidTimeStateUpdate = CreateNewTimePeriod
Создаем Grid, добавляем поля из таблицы.

Открываем форму - текущие данные показывает без проблем. Также их можно редактировать.

Если мы в методе run перед super() поставим
X++:
    OurTable_ds.query().validTimeStateAsOfDateTime(DateTimeUtil::utcNow());
то текущие данные все еще будут отображаться, но редактировать их уже будет нельзя.

Вопрос: что сделать, чтобы вернуть возможность редактировать текущие данные?

Задача стоит, при необходимости (на форму можно добавить UtcDateTimeEdit control, я этого сейчас делать не стал) показывать исторические данные, при необходимости текущие - с возможностью редактирования последних. Исторические данные показать не проблема, текущие тоже, но вот редактировать их уже не получается. В режиме Correction такой проблемы нет.

Наверняка что-то простое упускаю из вида.
Старый 21.02.2014, 00:16   #2  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Видимо надо все-таки переключаться на режим Correction и CreateNewTimePeriod в зависимости от условий фильтрации
X++:
OurTable_ds.query().resetValidTimeStateQueryType();
OurTable_ds.validTimeStateUpdate(ValidTimeStateUpdate::Correction);
если посмотреть по перекрестным ссылкам использование метода FormDataSource.validTimeStateUpdate(), то увидим, что в стандарте во многих местах именно так и делается. Так же обратите внимание на класс DateEffectivenessFormController и его использование, например на форме WrkCtrResourceGroup. Быть может вам подойдет такой способ фильтрации и отображения данных.
__________________
Кононов Пётр
За это сообщение автора поблагодарили: Hyper (1), gl00mie (2).
Старый 21.02.2014, 04:02   #3  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Thumbs up
О!

q.resetValidTimeStateQueryType() - это то, что надо. Переключаться в режим Correction при этом не нужно.

Интересно, что, по крайней мере, в моем примере resetValidTimeStateQueryType() ничуть не влияет на значения, возвращаемые функциями
X++:
OurTable_ds.query().validTimeStateAsOfDateTime();
OurTable_ds.validTimeStateAutoQuery();
OurTable_ds.validTimeStateUpdate();
- но при этом по поведению данных в гриде явно видно, что фильтр, предварительно установленный с помощью validTimeStateAsOfDateTime(), на самом деле сбрасывается.

Недодокументированная какая-то функция.

Спасибо большое, что подсказали, куда смотреть.
Теги
ax2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicscare: Updating Date Effective Tables in AX 2012 Blog bot DAX Blogs 0 01.05.2012 02:13
daxmusings: Valid Time State/Date Effective Framework - Part2 Blog bot DAX Blogs 6 07.10.2011 11:22
daxmusings: Valid Time State/Date Effective Framework - Part 1 Blog bot DAX Blogs 0 05.10.2011 14:11
Поля из разных таблиц в динамической Lookup-форме samolalex DAX: Программирование 8 06.06.2011 20:20
Кто нибудь делал просмотр/редактирование внешних DBF таблиц? edd DAX: Программирование 13 06.02.2003 17:43

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:20.