Показать сообщение отдельно
Старый 19.01.2018, 16:26   #4  
BuzCom is offline
BuzCom
Участник
 
59 / 17 (1) ++
Регистрация: 10.08.2017
Цитата:
Сообщение от jopagames Посмотреть сообщение
Расследование редкой функции DT2DATE - штука хорошая
Уточните только, пожалуйста, а ошибка где именно обнаружилась (и как исправилась)?

1. В голове программиста
2. При формировании файла XML
3. В ядре Navision
4. В "настройках сервера приложений для сервиса"
5. где-то ещё...

Я прочитал, но не всё понял.
Особенно про "ошибка только в последние 2 месяца" стала проявляться (что же с UTC случилось? Земля в ноябре налетела на небесную ось? )
Все просто - последние два месяца идет переход с 2009 на 2016.
В xml как раз приходит все верно. Именно это время и хотелось бы вносить в базу. Но при импорте тупо добавляется время из текущего часового пояса сервера. Подчеркну - сервера, на котором установлен сам Nav! Чтобы избежать этого, была написана функция, которая сначала разделяла строку на дату и время, а потом снова склеивала. И только после этого вносилось в базу. В 2009 это работало, время попадало правильное. В 2016 - перестало. Именно из-за DT2DATE. Которая теперь так же смотрит на часовой пояс сервера и добавляет часы к дате.
Настройка сервера по ссылке выше влияет только при работе веб-сервиса. У нас установлено UTC, но можно поставить и другое - никаких изменений нет.
В результате сейчас дату из строки получаем строковой функцией:
Код:
EVALUATE(xDate,COPYSTR(FORMAT(xDateTime,0,9),1,10),9);
Попутно вопрос: для типа datetime можно ли на входе сразу указывать часовой пояс ?