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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2010, 18:27   #1  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
AX2009: Глючат даты.
Форма "Часовой прогноз" Проекты \ Запросы \ Прогноз \ Час.
Если создать 12 записей с разными датами (01.01.10, 02.02.10 .. 12.12.10) в поле "Дата проекта" и потом по очереди открывать лукапы этих дат, то можно наблюдать любопытное явление. Начиная с 3-4 даты лукап будет открываться, но активной будет другая дата другого месяца.

Очень не удобно, приводит к кривым данным. Например, пользователь видит дату 01.03.10, ему надо поменять на дату 05.03.10. Он открывает лукап, ставит 5 число, и сохраняет. А месяц при открытии поменялся и уже не март, а май. Получаем неправильную дату.

В тройке и четверке все работает корректно. Баг проявляется только в АХ 2009. Наших доработок нет. Пробовал на разных приложениях/данных АХ2009 - баг повторяется.

Почему так происходит и как это можно исправить?
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 28.01.2010, 10:56   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Была уже раньше подобная тема (правда, про аналогичный глюк даты в 4ке), не могу найти что-то.
Суть в том, что в форме SysDateLookup дата для инициализации берется 2мя способами: либо из текущего контрола формы (если удается его идентифицировать и он заполнен), либо текущая.
Соответственно, при открытии лукапа на гриде понятие "значение текущего контрола формы" для системы ничего не значит, и может вернуться любое видимое значение даты в текущем столбце. Если лукап срабатывает не на гриде, то все нормально.

Решения для себя не нашел. Тут возможно либо всегда использовать текущую дату, либо как-то попытаться переделать лукап для забора даты из поля текущей записи.
__________________
Андрей.
Старый 28.01.2010, 11:31   #3  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
может вернуться любое видимое значение даты в текущем столбце
Да, походу так и работает
Пока решил следующим образом. Перекрыл метод lookup() на поле дата:
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
    FormDateControl fdc = _formControl;
    ;

    fdc.dateValue(str2date(_formControl.valueStr(), 123));

    super(fdc, _filterStr);
}
Почему-то у объекта _formControl значение _formControl.dateValue() действительно кривое, а вот у этого же объекта значение _formControl.valueStr() - правильное. Ну а в самом лукапе (SysDateLookUp) берется значение dateValue(), естественно.
Сейчас думаю какие минусы такой доработки.
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.

Последний раз редактировалось e@gle; 28.01.2010 в 11:42.
Старый 28.01.2010, 12:04   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от e@gle Посмотреть сообщение
Почему-то у объекта _formControl значение _formControl.dateValue() действительно кривое, а вот у этого же объекта значение _formControl.valueStr() - правильное.
Это странно, и не факт, что сработает всегда и во всех версиях.
__________________
Андрей.
Старый 28.01.2010, 13:11   #5  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
Это странно, и не факт, что сработает всегда и во всех версиях.
Да, тут вы правы, и странно это, и не факт, что во всех версиях будет работать, но проблему-то надо решать. Пользователям надо предоставить рабочий инструмент.
Пока помогает, даты перестали глючить.
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 24.11.2010, 16:39   #6  
Vladyslav is offline
Vladyslav
Участник
Аватар для Vladyslav
 
14 / 20 (1) +++
Регистрация: 11.01.2008
Баг еще "глубже". Для контрола ДатаВремя на гриде оно еще и время портит. Там в методе closeSelect форма пытается "вынуть" текущее установленное время и "приклеить" его к новой дате. Так вот, берет всегда черт-знает откуда (судя по всему, что в кеше последнее "завалялось" при отрисовке формы. Причем при разработке все гуд (или наступить на грабли так и не смог), а вот под правами "обычных" юзеров - глюк. Еще не выяснил, каких прав не хватает, но как показывает практика предоставление ключа SysDevelopment может убирать некоторые глюки :-)

Случайно заметили этот эффект. "Лечится" лишним вызовом currentDateTimeControl.valueStr(); ДО ТОГО, как вызывается currentDateTimeControl.dateTimeValue()
Просто вызвать и все. Даже значение никуда присваивать не надо. Видимо при этом в памяти кое-что "сдвигается" в нужную сторону.

Ну и конечно такой же вызов поставил в методе run, дабы описанная выше ситуация с открытием календаря не на том месте вылечилась.
Теги
ax2009, lookup, дата

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Миграция AX3(Oracle) -> AX2009(MSSQL) Shamil DAX: Администрирование 16 11.01.2010 18:36
Khue Trinh: Fill Utility in AX2009 Blog bot DAX Blogs 0 10.07.2009 10:05
ax2009 & SSRS kitty DAX: Программирование 6 02.04.2009 10:38
Очень не хочеться вручную устанавливать даты для всех строк журнала .... ATimTim DAX: Функционал 1 14.09.2004 19:33
Проверка даты Wamr DAX: Программирование 9 15.12.2002 17:28

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

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

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