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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2009, 15:58   #1  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
? DAX2009: DateTimeUtil::anyToDateTime()
Коллеги, а как правильно сабж использовать?

У меня крашится на аргументы типа Date и str
X++:
static void Job49(Args _args)
{
    UtcDateTime dt;
    Date d = 01\03\2009;
    ;
//    dt = DateTimeUtil::anyToDateTime('21.07.2009 14:44:09');
    dt = DateTimeUtil::anyToDateTime(d);
    info(strFmt('%1', dt));
}
Можно, конечно, сделать так
X++:
    dt = DateTimeUtil::newDateTime(d, str2time('00:00:00'));
или так
X++:
    dt = str2DateTime(date2str(d, 123, 1, 1, 1, 1, 4) + ' 00:00:00', 123);
но интересно почему не работает сабж

Версия DAX2009: Official russian release SP1 (kernel 5.0.593.0, application 5.0.1001.176)

ps:
Старый 21.07.2009, 17:14   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Есть два варианта к поиску ответа:
1. Если запустить поиск в AOT по ключевому слову "anyToDateTime", то можно увидеть пример использования.

X++:
str                 datePlaceHolder = '-01-01T00:00:00';
int                 startYear = 1900;
str                 startDate;
utcdatetime    utcdt;
;
startDate = int2str(yearCnt) + datePlaceHolder;
utcdt = DateTimeUtil::anyToDateTime(startDate);
2. Если выполнить поиск в справке разработчика по слову "UtcDateTime" то, можно увидеть примеры использования этого типа данных.

X++:
utcdatetime myUtc1 = 1988-07-20T13:34:45; 
utcdatetime myUtc2 = DateTimeUtil ::parse("1988-07-20T13:34:45");
Старый 21.07.2009, 17:40   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Есть два варианта к поиску ответа:
1. Если запустить поиск в AOT по ключевому слову "anyToDateTime", то можно увидеть пример использования.

X++:
str                 datePlaceHolder = '-01-01T00:00:00';
int                 startYear = 1900;
str                 startDate;
utcdatetime    utcdt;
;
startDate = int2str(yearCnt) + datePlaceHolder;
utcdt = DateTimeUtil::anyToDateTime(startDate);
2. Если выполнить поиск в справке разработчика по слову "UtcDateTime" то, можно увидеть примеры использования этого типа данных.

X++:
utcdatetime myUtc1 = 1988-07-20T13:34:45; 
utcdatetime myUtc2 = DateTimeUtil ::parse("1988-07-20T13:34:45");
Хочу предложить более практичный вариант пункта 1.
Т.к. поиск по АОТ в аксапте происходит мягко говоря медленно, то можно весь АОТ выгрузить в xpo, а в нем уже искать, используя, скажем блокнот. Поиск в этом случае происходит мгновенно. Выгружать можно также по-отдельности: классы, таблицы, формы и т.п.
Старый 22.07.2009, 00:24   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
1. Если запустить поиск в AOT по ключевому слову "anyToDateTime", то можно увидеть пример использования.
так медленно

Цитата:
Сообщение от DSPIC Посмотреть сообщение
можно весь АОТ выгрузить в xpo, а в нем уже искать
по-моему, это редкостное извращение.

по-моему, самый практичный вариант - воспользоваться перекрестными ссылками.
открываем AOT \ System Documentation \ Classes \ DateTimeUtil
далее метод anyToDateTime
далее правой кнопкой мыши \ надстойки \ перекрестные ссылки \ чем используется.

если действительно нужно поискать чем используется ключевое слово, а не метод системного класса, то открыть нужно
AOT \ System Documentation \ Reserver Words
потом правой кнопкой и до пункта Чем используется.
__________________
полезное на axForum, github, vk, coub.
Старый 22.07.2009, 01:30   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
Цитата:
>Сообщение от DSPIC Посмотреть сообщение
>можно весь АОТ выгрузить в xpo, а в нем уже искать
по-моему, это редкостное извращение.
.
Зря. Такой способ очень эффективен. Иногда приходится искать что-то не совсем конкретное. Я, например, никак не могу запомнить наименование функции hasSecuritykeyAccess(). По ключевому слову "Security" я нахожу эту ф-ю в XPO-шнике мгновенно. Также, можно быстро найти, как правильно в системе оформлен тот или иной код. Кстати, есть плагины для редакторов, которые подсвечивают ключевые слова X++ для удобства ориентирования.

Перекрестные ссылки - хороший инструмент, но построены они не всегда и не везде.

Короче, в зависимости от ситуации можно юзать разные способы. Некоторые, например, сперва на форме спрашивают...
За это сообщение автора поблагодарили: alex55 (1).
Старый 22.07.2009, 01:40   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DSPIC Посмотреть сообщение
По ключевому слову "Security" я нахожу эту ф-ю в XPO-шнике мгновенно.
Сервис \ Инструменты разработчика \ Имена.
Поиск с Аксаптовским фильтром *Security*

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Также, можно быстро найти, как правильно в системе оформлен тот или иной код.
Это да.

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Перекрестные ссылки - ... построены они не всегда и не везде.
А это зря.

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Короче, в зависимости от ситуации можно юзать разные способы. Некоторые, например, сперва на форме спрашивают...
Это точно.
__________________
полезное на axForum, github, vk, coub.
Старый 16.03.2010, 13:10   #7  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от mazzy Посмотреть сообщение
по-моему, самый практичный вариант - воспользоваться перекрестными ссылками.
открываем AOT \ System Documentation \ Classes \ DateTimeUtil
далее метод anyToDateTime
далее правой кнопкой мыши \ надстойки \ перекрестные ссылки \ чем используется.
Пробовал сам таким способом просмотреть использование метода anyToDateTime ?
Что-то у меня перекрёстные ссылки в Ax2009 не показывают использование методов класса DateTimeUtil.
Хотя использование самого класса показывают в полном объёме. Странно.
__________________
Дмитрий
Старый 22.07.2009, 08:35   #8  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от malex Посмотреть сообщение
Коллеги, а как правильно сабж использовать?

У меня крашится на аргументы типа Date и str
...
На самом деле она крашится на любых типах, кроме utcDateTime и str, причем str (как я понял) должна соотвествовать шаблону SortableDateTimePattern(ISO 8601) (http://msdn.microsoft.com/en-us/libr...ormatinfo.aspx), если str отлична от данного шаблона, получаем краш системы.

Я бы сказал, что это некий аналог any2str(...), которая работает гарантировано на строковых переменных (Функция Any2Str не работает)

Цитата:
Сообщение от malex Посмотреть сообщение
Можно, конечно, сделать так
X++:
    dt = DateTimeUtil::newDateTime(d, str2time('00:00:00'));
По-моему str2time здесь лишний, и можно просто
X++:
dt = DateTimeUtil::newDateTime(d, 0);
Можно еще вот так
X++:
static void utcTest(Args _args)
{
    System.DateTime utc = new System.DateTime(2009, 03, 01);
    str             utcStr;
    ;
    utcStr = utc.ToString("s"); // приводим к SortableDateTimePattern
    info(strFmt("%1", DateTimeUtil::anyToDateTime(utcStr)));
}
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: alex55 (1), AllB (1).
Старый 22.07.2009, 12:53   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Можно также воспользоваться функцией
X++:
str2DateTime
Старый 22.07.2009, 12:54   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Личное мнение: как и с функцией any2str, я считаю, что это баг.
Поэтому попробую сделать так, чтобы его пофиксили.
Соответственно, добавляю тэг баг к теме
Теги
aot, datetime, баг, перекрестные ссылки, поиск

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вопросик по возможности EP на DAX2009 slava09 DAX: Функционал 6 11.08.2011 21:38
Сторно складских журналов в DAX2009 Starling DAX: Функционал 4 12.06.2009 15:20
Заказы на перемещения и проводки в ГК в DAX2009 Starling DAX: Функционал 16 10.06.2009 11:43
Вопросы по OLAP в DAX2009 oleg_e DAX: Функционал 9 10.12.2008 02:02
Апгрейд существующего приложения на DAX2009 petr DAX: Администрирование 3 03.09.2008 18:54

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

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

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