03.10.2016, 16:11 | #1 |
Участник
|
sashanazarov: Bugs in the DateTimeUtil::getSystemDateTime()
Источник: http://sashanazarov.blogspot.com/201...mdatetime.html
============== After the current system date is changed, either from the user interface or via systemDateSet function, the DateTimeUtil::getSystemDateTime() goes out of control. Don't ever use this function for unique keys generation. Unfortunately, they use it a lot in the DIXF. static void printDateTimeJob(Args _args) { void printDateTime() { info(strFmt('systemDateGet: %1 %2', systemDateGet(), time2StrHMS(timeNow()))); info(strFmt('getSystemDateTime: %1', DateTimeUtil::getSystemDateTime())); info(strFmt('utcNow: %1', DateTimeUtil::utcNow())); } warning('Before date/time change'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); systemDateSet(systemDateGet() - 3); warning('System date changed:'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); systemDateSet(systemDateGet() + 3); warning('System date is back:'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); } And this is the result: P. S.: Kernel version 6.3.4000.1745, Application version 6.3.3000.110 Источник: http://sashanazarov.blogspot.com/201...mdatetime.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
05.10.2016, 02:58 | #2 |
Участник
|
Цитата:
Сообщение от Blog bot
Источник: http://sashanazarov.blogspot.com/201...mdatetime.html
============== After the current system date is changed, either from the user interface or via systemDateSet function, the DateTimeUtil::getSystemDateTime() goes out of control. Don't ever use this function for unique keys generation. Unfortunately, they use it a lot in the DIXF. static void printDateTimeJob(Args _args) { void printDateTime() { info(strFmt('systemDateGet: %1 %2', systemDateGet(), time2StrHMS(timeNow()))); info(strFmt('getSystemDateTime: %1', DateTimeUtil::getSystemDateTime())); info(strFmt('utcNow: %1', DateTimeUtil::utcNow())); } warning('Before date/time change'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); systemDateSet(systemDateGet() - 3); warning('System date changed:'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); systemDateSet(systemDateGet() + 3); warning('System date is back:'); printDateTime(); sleep(2000); info('...2 seconds later:'); printDateTime(); } And this is the result: P. S.: Kernel version 6.3.4000.1745, Application version 6.3.3000.110 Источник: http://sashanazarov.blogspot.com/201...mdatetime.html |
|
05.10.2016, 05:22 | #3 |
Участник
|
А вот кстати интересно, Микрософт сейчас фиксит такие баги? т.е. я пробовал подобное создавать пару лет назад, меня просто посылали, типа для продвижения запроса за первую линию нужен бизнес сценарий в стандарте, функция systemDateSet судя по перекрестным ссылкам нигде не используется в стандарте, т.е. такой сценарий не сделать
Сейчас ситуация поменялась? |
|
06.10.2016, 10:51 | #4 |
Участник
|
По-моему, всю жизнь так было: как только меняешь дату сеанса (она же системная дата), время в Аксапте "останавливается", и это не баг, а фича Просто автор исходной публикации "наступил" на эти грабельки лишь в 12-ке.
|
|
06.10.2016, 14:19 | #5 |
Участник
|
Цитата:
Баг создал?
Цитата:
это не баг, а фича
|
|
06.10.2016, 14:21 | #6 |
Участник
|
|
|
06.10.2016, 21:43 | #7 |
Участник
|
А, сорри, я не прочитал длинный твой опус
Да, это "фича". Это не будут фиксить. timeNow() возвращает текущее время на машине. Та функция меняет только время "сессии" today() тоже сработает |
|
07.10.2016, 10:36 | #8 |
Участник
|
Фича так фича. Но дата всё-таки съезжает на один лишний день.
|
|