02.09.2014, 16:19 | #1 |
Участник
|
Проблема в работе с utcdatetime
Добрый день, коллеги!
Есть некая периодическая операция, которая в своей работе ориентируется на время создания документа. Существует следующая проблема: Если эта операция запускается не в режиме пакета, то всё работает нормально. Если же её запустить в режиме пакета, то она отрабатывает с ошибкой: " Значение, которое вы пытаетесь добавить или вычесть, создает недопустимое utcdatetime." X++: public void run() { InventParameters inventParameters = InventParameters::find(); utcdatetime curDateTime; utcdatetime dateTimeForProc; utcdatetime yesterdayDateTime; ; curDateTime = DateTimeUtil::applyTimeZoneOffset(DateTimeUtil::getSystemDateTime(), DateTimeUtil::getUserPreferredTimeZone()); if (DateTimeUtil::time(curDateTime) > fromTime && DateTimeUtil::time(curDateTime) < toTime) { dateTimeForProc = DateTimeUtil::addHours(DateTimeUtil::getSystemDateTime(),-inventParameters.InventTransfertReturnHours_MRC); yesterdayDateTime = DateTimeUtil::addHours(DateTimeUtil::getSystemDateTime(),-24); } } Ax 2009, Kernel version 5.0.1500.6491 Последний раз редактировалось Zlojbarsuk; 02.09.2014 в 16:43. |
|
02.09.2014, 17:03 | #2 |
Участник
|
А зачем вы применяете тайм-зону пользователя?
__________________
Ivanhoe as is.. |
|
02.09.2014, 17:18 | #3 |
Участник
|
DateTimeUtil::getSystemDateTime() возвращает время по Гринвичу. А мне необходимо время текущего часового пояса. Поэтому я выполняю преобразование.
|
|
02.09.2014, 18:32 | #4 |
Участник
|
Из текста ошибки можно предположить, что метод DateTimeUtil::addHours() пытается вернуть значение которое не попадает в диапазон от 1900-01-01T00:00:00 до 2154-12-31T23:59:59. Проверьте системное время на пакетном сервере. Какое значение возвращает метод DateTimeUtil::getSystemDateTime(), если он вызывается на пакетном сервере?
Последний раз редактировалось honest; 02.09.2014 в 18:34. |
|
02.09.2014, 19:10 | #5 |
Участник
|
В переменных и полях таблиц храните время UTC 0. На формах и в отчетах автоматически отображается время с учетом часового пояса пользователя.
|
|
02.09.2014, 19:56 | #6 |
Участник
|
Да, я знаю, что на формах и в таблицах время "разное" :-) Проблема не в этом, а в том, что периодическая операция по разному работает в режиме пакета и обычного запуска.
|
|
|
|