Время в битрикс и на компьютере отличается

Обновлено: 07.07.2024

Инструкция по настройке часового пояса на портале Битрикс24 в профиля пользователя и календарях. Чтобы путаницы в удаленной работе сотрудников больше не происходило.

Настройка позволяет вам и вашим коллегам работать в едином часовом пространстве.

Больше не придется сталкиваться с ситуациями, связанными с дезориентации сотрудников во времени. Так, например, если один сотрудник живет в Санкт-Петербурге, а другой в Новосибирске, между ними существует разница во времени в 4 часа.

Если сотрудник из Новосибирска создаст событие в календаре на 15:00 по местному времени, а у сотрудника из Москвы не будет настроен часовой пояс на портале, согласно своему местоположению, у него будет информация на портале согласно новосибирскому часовому поясу.

Есть вероятность, что сотрудник из Москвы может перепутать свое местное время с новосибирским и пропустить встречу, поскольку для москвича будет отображаться событие на 15:00, а по факту, с учетом его часового пояса, оно состоится в 11:00.

Для того, чтобы установить сотруднику нужный часовой пояс, согласно которому будут корректироваться временные значения на портале, необходимо перейти в карточку сотрудника:

kartochka_polzovatelya_1x.jpg

  • По умолчанию – значение часового пояса на портале устанавливается аналогичным, как и на вашем ПК;
  • Да, определить по браузеру – часовой пояс выбирается автоматически, в соответствии с настройками браузера;
  • Нет, выбрать из списка – вы можете выбрать в ручном режиме любой часовой пояс, который вам нужен.

Примечание: каждый сотрудник может настроить часовой пояс только для себя. Администратор - любому из сотрудников.

Также вы можете настраивать часовые пояса в календаре.

Перейдите в Календарь > Шестеренка:

kalendar_1x.jpg

chasovoy_poyas_2_1x.jpg

В открывшемся меню в пункте Ваш часовой пояс выберете нужное вам значение:

Если для календаря вы выбираете часовой пояс, аналогичный с проставленным в карточке сотрудника: события в календарь будут добавляться со временем проведения, установленным вами.

Если же вы установили часовой пояс, который отличается от установленного в карточке сотрудника, то событие будет добавляться в календарь с измененными датами проведения.

sobytie_1x.jpg

При нажатии кнопки «Создать», событие поменяет время проведения в соответствии с часовым поясом, установленным в карточке сотрудника:

sobytie_za_15_min_1x.jpg

Если же у сотрудников настроены часовые пояса в календарях в соответствии с установленными в карточках сотрудника, при просмотре событий коллег, время проведения будет отображаться согласно установленному у вас часовому поясу.

Например, если у сотрудника из Новосибирска (Кирилл Иванов) установлено событие на 15:00-16:00:

sobytie_na_16.00_1x.jpg

При просмотре данного события коллегой из Санкт-Петербурга (Владислав Бобрынцев) будет отображено время на манер московского часового пояса:

sobytie_v_spb_1x.jpg

Актуальная настройка для предотвращения возможных временных казусов при планировании мероприятий в компаниях, где сотрудники работают удаленно из разных уголков мира и страны.

Не хотите возиться с настройками самостоятельно? Обращайтесь в нашу техническую поддержку.

Настройка позволяет вам и вашим коллегам работать в едином часовом пространстве.

Больше не придется сталкиваться с ситуациями, связанными с дезориентации сотрудников во времени. Так, например, если один сотрудник живет в Санкт-Петербурге, а другой в Новосибирске, между ними существует разница во времени в 4 часа.

Если сотрудник из Новосибирска создаст событие в календаре на 15:00 по местному времени, а у сотрудника из Москвы не будет настроен часовой пояс на портале, согласно своему местоположению, у него будет информация на портале согласно новосибирскому часовому поясу.

Есть вероятность, что сотрудник из Москвы может перепутать свое местное время с новосибирским и пропустить встречу, поскольку для москвича будет отображаться событие на 15:00, а по факту, с учетом его часового пояса, оно состоится в 11:00.


Для того, чтобы установить сотруднику нужный часовой пояс, согласно которому будут корректироваться временные значения на портале, необходимо перейти в карточку сотрудника:


Найдите поле под названием Часовой пояс:

  • По умолчанию — значение часового пояса установленного в настройках сервера;
  • Да, определить по браузеру —значение часового пояса на портале устанавливается аналогичным, как и на вашем ПК;
  • Нет, выбрать из списка — вы можете выбрать в ручном режиме любой часовой пояс, который вам нужен.

Примечание: каждый сотрудник может настроить часовой пояс только для себя. Администратор — любому из сотрудников.

Также вы можете настраивать часовые пояса в календаре.


Перейдите в Календарь > Шестеренка:


В открывшемся меню в пункте Ваш часовой пояс выберете нужное вам значение:

Если для календаря вы выбираете часовой пояс, аналогичный с проставленным в карточке сотрудника: события в календарь будут добавляться со временем проведения, установленным вами.

Если же вы установили часовой пояс, который отличается от установленного в карточке сотрудника, то событие будет добавляться в календарь с измененными датами проведения.


при нажатии кнопки «Создать», событие поменяет время проведения в соответствии с часовым поясом, установленным в карточке сотрудника:

Если же у сотрудников настроены часовые пояса в календарях в соответствии с установленными в карточках сотрудника, при просмотре событий коллег, время проведения будет отображаться согласно установленному у вас часовому поясу.


Например, если у сотрудника из Новосибирска (Кирилл Иванов) установлено событие на 15:00-16:00:


при просмотре данного события коллегой из Санкт-Петербурга (Владислав Бобрынцев) будет отображено время на манер московского часового пояса:

Актуальная настройка для предотвращения возможных временных казусов при планировании мероприятий в компаниях, где сотрудники работают удаленно из разных уголков мира и страны.

Не хотите возиться с настройками самостоятельно? Обращайтесь в нашу техническую поддержку.

Как вы уже наверняка знаете, в 11-й версии продукта вышла поддержка часовых поясов. Давайте рассмотрим подробнее, в чем заключается поддержка, и как можно использовать часовые пояса. Я расскажу как об использовании, так и о внутреннем устройстве (для понимания разработчиками).[spoiler]

Сначала о базовых принципах.

1) Мы полагаем, что PHP и база данных работают в одном часовом поясе. Чаще всего часовой пояс определяется настройками операционной системы, реже используются специальные настройки PHP и БД. На самом деле, PHP и БД должны работать в одном поясе.

2) Мы не ведем собственную базу часовых поясов. Мы полностью полагаемся на PHP в вопросах часовых поясов, перехода на летнее/зимнее время и прочее. Поддержка DateTime появилась в php 5.2.0 - на более старых версиях часовые пояса в продукте работать не будут. PHP использует ту же базу часовых поясов, что и многие сборки Unix. В этой базе идентификаторы зон имеют вид "Europe/Kaliningrad".

3) Все даты записываются и хранятся в БД в локальном времени сервера . Это наше наследие, которое нельзя легко изменить - никаким обновлением невозможно изменить значения во всех полях типа дата всех таблиц. Т.е. если сервер работает в московском часовом поясе, то "14:00:00", записанное в БД - это именно 14:00 по Москве.

4) При выборке из БД значения полей типа дата (в полном формате) переводятся в указанный в настройках часовой пояс (о настройках ниже). Если дата в коротком формате (без часов-минут-секунд), то арифметика часовых поясов не производится. Проще говоря, посетители видят время в своем локальном времени.

5) При записи в БД значения полей типа дата переводятся из указанного в настройках часового пояса в локальное время сервера (только для полного формата). Проще говоря, посетители во всех формах должны вводить время в своем локальном времени.

Теперь о настройках.

В настройках ядра появилась секция "Часовые пояса":


1) "Локальное время сервера" показывает, в каком поясе фактически работает сервер. Для корректной работы системы часовых поясов должна быть правильная комбинация времени и смещения от UTC (18:26:10 +0300). Из продукта время и пояс не настраиваются, они просто должны быть правильными . Если что-то не так, нужно настраивать ОС и/или PHP и БД.

:)

2) Флажок "Разрешить использование часовых поясов" включает или полностью отключает использование часовых поясов - на усмотрение администратора. При отключенной галочке запросы к БД будут немного короче.

4) "По умолчанию автоматически определять часовой пояс по браузеру". Javascript браузера знает, в каком часовом поясе работает пользователь на своем компьютере. Мы можем воспользоваться этой информацией, чтобы не задавать пользователю лишних вопросов, а определить его часовой пояс автоматически. Опция особенно полезна в корпоративном портале, где часовые пояса имеют большое значение.

В профиле пользователя появилась настройка "Часовые пояса":


Для каждого пользователя можно указать настройки "по умолчанию", "автоматически", "выбрать из списка". "По умолчанию" - настройки автоопределения берутся из настроек главного модуля. "Выбрать из списка" - можно выбрать конкретную зону. Настройки конкретного профиля имеют приоритет над настройками ядра.


Тогда в редактировании профиля будет доступен выбор часового пояса:


Аналогичные настройки есть в других перечисленных компонентах.

Как это выглядит.


При сохранении дата переводится в локальное время сервера:


Как видно, значение в БД на один час меньше - это как раз разница между Калининградом и Москвой.

Как это работает. (Информация для разработчиков)

Мы решили, что самым правильным будет применить арифметику часовых поясов на самом низком уровне - на уровне выборки из БД и записи в БД. В противном случае пришлось бы форматировать дату непосредственно при выводе. Например, в компоненте новостей написано:

Понятно, что таких мест в продукте очень много, каждое не исправишь. Поэтому GetList инфоблока возвращает уже модифицированную дату. На самом деле, конвертация происходит на еще более низком уровне, в функциях CDatabase:: DateToCharFunction() и CDatabase::CharToDateFunction(). Поэтому если API при выборке и записи использует эти функции, то все должно заработать "само".

Часто бывает, что вычисление даты делается кодом PHP, например:

В этом случае нам придется учесть часовой пояс самостоятельно:

В этом примере мы переводим текущее время сервера в часовой пояс пользователя. В таких операциях нужно запомнить одну простую формулу, которая поможет манипулировать со временем:

А что делать, если нам совершенно точно не потребуется конвертировать время при выборке из БД и при сохранении в БД? Нам поможет такой прием:

При разработке кода теперь необходимо учитывать следующие особенности:

1) Все агенты исполняются в локальном времени сервера.

3) В CPHPCache и CPageCache часовой пояс не учитывается . Если кешируемые данные зависят от пояса, то в ID кеша необходимо подмешивать результат выполнения CTimeZone::GetOffset();

4) В полях CEvent::Send() желательно передавать локальное время сервера - в общем случае мы не знаем, для кого предназначено письмо.

:)

Чтобы учесть все эти нюансы, нам пришлось буквально "проползти с фонариком" по всем модулям.

Надеюсь, что нововведения понравятся нашим пользователям и разработчикам!

Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок: Время на БД и на сервере- Время отличается на 3600 секунд (цифра может быть разной, но чаще всего именно эта). Ошибка возникает, как правило, при установке веб окружения битрикс на VPS/VDS. Все из-за неправильных настроек временной зоны.

Провести тест, можно из административной панели битрикс, находится по пути: Администрирование-> Настройки-> Инструменты-> Проверка системы.

Так же, данную ошибку можно увидеть в модуле обмена с сайтом на стороне 1С. При попытке обмена вам может выдать ошибку "Авторизация не пройдена"- даже если уверены, что правильно внесли адрес сайта, логин пользователя с правом обмена и его пароль, а проверка подключения все равно не проходит- скорее всего у вас именно эта ошибка времени на БД и на веб сервере.

Есть два способа решения ошибки

Не очень правильный: Открыть на редактирование файл /bitrix/php_interface/after_connect_d7.php и внести в него строчку.

После этого, чаще всего, ошибка исчезает и даже 1С проходит проверку авторизации. Но редко, бывает, что не срабатывает для 1С (хотя тест на стороне сайта покажет что все нормально). Есть правильный способ

Подключаемся к серверу по SFTP/FTP протоколу, открываем файл по пути /etc/php.ini (да, именно его, а не /etc/php.d/bitrixenv.ini). И вносим строчку

Перезагружаем Apache командой

Все, после этого и ошибка пропадет и 1С сконнектится с сайтом.

Дополнено: Смена часового пояса на уровне системы в CentOS

Предыдуший способ менят часовой пояс на уровне php. Можно сделать совсем правильно и гарантировано работоспособно: сменить часовой пояс в самой системе CentOS

Открываем терминал и вводим команды

  • mv /etc/localtime /etc/localtime-old - бекапим файл часовых зон
  • ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime - делаем ссылку на часовую зону
  • date - убеждаемся что время правильное, выдаст текущую дату и время

PS: Само собой, если у вас 1С и сервер с сайтом работают в другом часовом поясе- выставляйте свой вместо Europe/Moscow

В настройках арендованного номера или подключенной SIP-АТС есть возможность изменения рабочего времени номера. Это нужно для того, чтобы предупредить клиента, который звонит на этот номер, о том, что вы не может принять звонок в нерабочее время.

Настройку рабочего времени номера можно включить в разделе Телефония > Настройка номеров, выбрав нужное подключение:

Настроить номер

Далее просто включить опцию и настроить рабочее время номера:

Настроить рабочее время номера

Выбор часового пояса – эта настройка позволяет выбрать, в каком часовом поясе будет установлено рабочее время (обычно этот тот же часовой пояс, что стоит у вас на компьютере).

Режим работы – все звонки, которые будут поступать на ваш арендованный номер или АТС ВНЕ указанного времени, попадут в обработку звонков во внерабочее время.

Примечание: чтобы снять выбор со всех дней недели (вы работаете без выходных), нужно оставить один выходной, затем зажать клавишу CTRL (CMD на MacOS) и кликнуть мышкой по последнему выделенному дню. Это снимет выбор со всех дней недели. Обратите внимание, что дни нужно записывать в формате "1.01" и разделять между собой запятыми без пробелов.

Обработка звонка в нерабочее время

    Включить автоответчик – включается мелодия автоответчика. По умолчанию стоит та же самая мелодия, что при обычной обработке пропущенного звонка, но вы всегда можете загрузить свою мелодию (файл .mp3, не более 2Мб).

Обратите внимание, что переадресация – это, по сути, исходящий звонок. Поэтому при переадресации с арендованного номера с вашего баланса будут списаны средства по тарифу. А при переадресации с SIP-АТС будут вычтены деньги со счета вашей SIP-АТС.

Мелодия для нерабочего времени – вы можете указать или загрузить свою мелодию, которая будет проигрываться клиенту в нерабочее время.

Важно! Если звонок был пропущен по правилам настройки рабочего времени номера, то при работе с базой CRM есть несколько сценариев работы:

1. Когда звонок не проверяется по базе CRM (не включена настройка) – в этом случае кому-то из очереди ответственных за звонок придет уведомление о пропущенном звонке.

Читайте также: