Добрый день, Коллеги!
У нас 1с через Odata передает данные о заказе, включая поле Дата (Date)
На сервере часовой пояс киевский, у супервизора тоже киевский, в bpm в системной настройке киевский.
1-ка забирает дату и нормально себе записывает, но когда передает обратно заказ при изменении, дата записывается в бпм и пользователь видит дату + 3 часа сверху.
Знаю, что время в bpm хранится в UTC и когда из 1с приходит дата она записывается в это поле и пользователь видет + 3 часа.
Например создал заказ в бпм. Дата 9 утра. (если sql запрос сделать в базу) там 6 утра. Все ок, пользователь видит 9. Ушло в 1с, там заказ провели и возвращают в бпм. Уходит из 1с тоже 9 утра. Пришел в бпм, смотрим запросом в базу, там стало 9 утра, а пользователь видит 12 часов уже, т.е + 3 часа.
Как правильно передать запрос. Пробовали так:
{
"AccountId": "590eb789-2b6d-4257-838f-917003ffce43",
"CHOurCompanyId": "3d5d64dd-450f-4d70-a722-ee95caa2a5b3",
"StatusId": "40de86ee-274d-4098-9b92-9ebdcf83d4fc",
"CHVATTop": "false",
"Date": "2019-06-04T12:05:12+TZ",
"Number": "УТХ00013754",
"Amount": "391",
"OpId1C": "41d319dd-86a4-11e9-8102-e36315b16de3"
выдает ошибку - Cannot convert a primitive value to the expected type 'Edm.DateTime'. See the inner exception for more details.
Подскажите, как правильно сделать, может код на поле навешать в бпм
Нравится
«+TZ» — это не прямо так нужно писать, а указать нужный пояс. Например,«2018-01-31T08:24:49+03:00». Подробнее по работе с датой см. в этой теме.
Ок, сделали так зашло правильно, а когда мы на зимнее время перейдем, время будет правильно по прежнему?
Википедия гласит:
Следует помнить, что время по UTC не переводится ни зимой, ни летом. Поэтому для тех мест, где есть переход на летнее время, меняется смещение относительно UTC.
Зверев Александр,
т.е в запрос при переходе на зимнее надо менять с +03:00 на +02:00?
если да, то как можно настроить передачу черед одата, чтобы время автоматически всегда правильно отображалось?
Можно на стороне 1С перед передачей даты вычислять текущее значение смещения.