Данная ситуация возникает при размещении баз централизованно и установкой на терминальных серверах времени зоны пользователей.
Существуют следующие методы проверки:
- Назначение доступа средствами домена в AD (Active Directory) - работает, но при переезде системные админы часто забывают эти права назначать на определенные компьютеры.
- Проверка часового пояса непосредственно при входе пользователя в 1С (используем именно ее) :
Добавляем константу
Константа.ЧасовойПояс = 3 // Москва
Добавляем функцию проверки при входе в 1С, по результату проверки можно, например, завершить работу пользователя.
Функция ПроверкаЧасовогоПояса()
Перем scr;
Если Константа.ЧасовойПояс > 0 Тогда
Попытка
scr = СоздатьОбъект("MSScriptControl.ScriptControl");
scr.language = "javascript";
лСкрипт = "function tZone()
| {
| nzone = new Date().getTimezoneOffset()/60*-1;
| return(nzone);
|}";
scr.AddCode(лСкрипт);
лЧасовойПояс = число(scr.Run("tZone"));
Исключение
Сообщить("Не удалось определить часовой пояс","i");
Возврат 1;
КонецПопытки;
Если лЧасовойПояс <> Константа.ЧасовойПояс Тогда
Предупреждение("Часовой пояс: +"+Константа.ЧасовойПояс+" не соответствует системному +"+лЧасовойПояс+", смените терминалку или обратитесь к администратору"+РазделительСтрок+
РазделительСтрок+ "Вы нарушите время документов в базе данных!", 10);
Возврат 0;
Иначе
Сообщить("UTC +"+лЧасовойПояс);
КонецЕсли;
КонецЕсли;
Возврат 1;
КонецФункции // ПроверкаЧасовогоПояса