Историческая справка.
И хотя Microsoft выпустил обновление 2998527 для учёта этих изменений в Windows ещё в сентябре 2014-го, это мало помогло 1С-ным учётным системам. 1C использует для работы с часовыми поясами стороннюю библиотеку ICU, слегка допиленную 1Совцами под свои нужды, а база часовых поясов вшита внутрь библиотеки ICU. 1С привела базу поясов в соответствие законодательству с выпуском релизов 8.2.19.116 и 8.3.5.1231 от 21 октября 2014 года.
Реализация.
Не секрет, что крупные организации обладают большой инерцией в вопросах обновления ПО, связанной с техническими или политическими особенностями работы внутренних служб сопровождения. Поэтому, обычно, решение данного вопроса сводится к костылям вроде ведения собственной базы часовых поясов филиалов, или выбора в ОС таких часовых поясов, которым в базе платформы соответствуют правильные смещения времени.
Здесь я хочу показать правильное решение данного вопроса для тех, кто не готов обновить платформу.
Как раз для таких ситуаций, ICU позволяет читать обновлённую базу часовых поясов из внешних файлов. Для обозначения расположения файлов нужно определить системную переменную окружения ICU_DATA, которой нужно присвоить путь к папке. Внутри следует разместить папку с именем вида icudtXXl, где XX – версия ICU, используемая платформой. Свою версию вы можете определить по имени файла icudtXX.dll в папке bin установленной платформы 1С. Внутри папки для соответствующей версии следует расположить файлы обновлённой базы часовых поясов – четыре файла, которые можно скачать по ссылке http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2015b/44/le/
Пример для 8.3.4.496:
-
Создаём папку C:\ICU_DATA\icudt46l
-
Скачиваем в неё все файлы по указанной ссылке.
-
Устанавливаем переменную окружения ICU_DATA= C:\ICU_DATA\
-
Перезапускаем 1С.
-
profit
Для серверных вызовов эти шаги нужно выполнить на сервере приложений, для клиентских – на клиентских компьютерах с помощью групповых политик.
Для linux не проверял, но, если сервер приложений умеет читать глобальные переменные окружения, должно работать аналогично:
-
Создаём /opt/icu/icudt46l/
-
Размещаем файлы
-
В /etc/environment указываем ICU_DATA=/opt/icu/