Отобразить время контакта, в зависимости от указанного часового пояса.
Добрый день, уважаемые пользователи интернет сообщества Террасофт.
Как известно, в карточке редактирования контакта можно указать часовой пояс, в котором находится данный контакт. К Вашему вниманию предлагаю реализацию отображения в карточке редактирования контакта текущего времени выбранного часового пояса в реальном времени. Если часовой пояс не задан - будет отображено системное время.
Для реализации необходимо запустить Terrasoft Administrator и открыть сервис wnd_ContactEdit. На закладке "Невизуальные" добавить новый компонент "Timer". В свойстве "Interval" установить значение 1000, что равняется одной секунде.
После этого, на вкладке "Визуальные" добавьте новый компонент Label. В свойстве Name установите значение TimeLabel. Разместите данный компонент в удобном для Вас месте на карточке редактирования.
Далее, для созданного компонента Timer, Вам необходимо определить событие OnTimer, и в функцию-обработчик события добавить следующий код:
var localTime = new Date();
var utcTime = localTime.getTime() + (localTime.getTimezoneOffset() * 60000)
var offset = edtTimeZone.DataField.DisplayValue.split('UTC');
var utc = offset[1];
if(utc == undefined)
{
var d = new Date();
var Time = d.getHours().toString() + ':' + d.getMinutes().toString() + ':' + d.getSeconds().toString();
Label1.Caption = 'Время: ' + Time;
return;
}
if (utc.charAt(1) == '0')
{
utc = utc.charAt(0) + utc.charAt(2);
}
if(utc.charAt(0) == ')' || utc.charAt(0) == ' ')
{
utc = 0;
}
else
{
utc = utc.charAt(0) + utc.charAt(1) + utc.charAt(2);
}
var ContactTime = new Date(utcTime + (3600000*utc));
var Time = ContactTime.getHours().toString() + ':' + ContactTime.getMinutes().toString() + ':' + ContactTime.getSeconds().toString();
TimeLabel.Caption = 'Время: ' + Time;
}
catch(e)
{
return;
}
В итоге, при открытии карточки редактирования, будет отображено время выбранного часового пояса в карточке:
Приятной работы с Террасофт!