Поиск по блогу

воскресенье, 27 декабря 2015 г.

Актуальные часовые пояса на старой платформе

Изменения в часовых поясах страны напрямую затрагивают информационную систему, которая функционирует в нескольких часовых поясах. Обычно такие масштабы использования ИС используются в крупных организациях. С проблемой часовых поясов могут столкнуть и мелкие организации, которые, допустим, производят обмен данным между собой с использованием универсального времени (UTC).

Платформа 1С имеет ряд функций для работы с универсальным временем, которые используют информацию о часовых поясах из сторонней библиотеки ICU. Данная библиотека модифицирована фирмой 1С под свои нужды, а база часовых поясов вшита внутрь библиотеки ICU.

Обновить информацию о часовых поясах можно двумя способами:
  1. Обновить платформу;
  2. Указать путь к актуальной базе часовых поясов.
Первый способ актуализации информации о часовых поясах нарушает золотое правило системного администратора "Работает - не лезь", так как обновление платформы может повлечь за собой другие проблемы, отнять уйму времени и сил! Второй способ отлично подходит для решения проблемы с минимальными затратами.

Несмотря на то, что база часовых поясов вшита внутрь библиотеки, имеется возможность указать путь к актуальной базе часовых поясов, делается это через системную переменную окружения ICU_DATA, для которой указывается путь к папке с часовыми поясами.

Рассмотрим действия по актуализации часовых поясов в ОС семейства Windows:
1) Создаём папку, которая будет хранить базу часовых поясов, например: C:\ICU_DATA.
2) Внутри папки ICU_DATA нужно создать папку с именем вида icudtXXl, где XX – версия библиотеки ICU, используемая платформой 1С. Версия библиотеки определяется по имени файла icudtXX.dll в папке bin установленной платформы (см. рисунок 1).
Рисунок 1. Версия библиотеки ICU
3)  Переходим по ссылке http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew/ на официальный репозиторий, где хранятся базы часовых поясов. Выбираем последнюю версию базы, например, 2015g. Далее папку 44 - это версия libicu (44 и все что больше, а наша версия 46, так что подходит), затем папку le. Скачиваем актуальную базу часовых поясов (http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2015g/44/le/), которая состоит из 4-х файлов, в папку созданную на 2-ом этапе (см. рисунок 2). Файлы необходимо брать из папки «le» (little-endian, вероятно).
Рисунок 2. База актуальных часовых поясов
4) Создаем/находим системную переменную окружения ICU_DATA и указываем для неё значение C:\ICU_DATA (путь к папке, созданной на 1-ом этапе, см. рисунок 3).
Рисунок 3. Системная переменная ICU_DATA
5) Перезапускаем платформу 1С.

Если функции платформы для работы с универсальным временем используются в контексте сервера, то достаточно выполнить выше перечисленные действия только на сервере, иначе и на всех клиентских местах.

Комментариев нет:

Отправить комментарий