Talkman @ Сегодня, 10:01
необходимо зарегистрироваться для просмотра ссылки
,
Цитата
ИТС запрещает использовать ТекущаяДата(), но исчерпывающей информации на вопрос "Почему?" нет ни там, ни на ИС, поэтому написал данную заметку. Тем не менее, совсем не знакомым с темой, стоит прочитать статью на ИТС (по этой ссылке)и бегло статью на ИС "О времени и 1С" (к сожалению, ровно через неделю после моей публикации Юрий Пермитин удалил все свои статьи с инфостарта и ссылка уже не действительна).
Цитаты с ИТС:
2.1. Во всех серверных процедурах и функциях вместо функции ТекущаяДата, которая возвращает дату и время серверного компьютера, следует использовать функцию ТекущаяДатаСеанса, которая приводит время сервера к часовому поясу пользовательского сеанса.
3.1. В клиентском коде использование функции ТекущаяДата также недопустимо. Это требование обусловлено тем, что текущее время, вычисленное в клиентском и серверном коде, не должно различаться.
2.2. В тех случаях, когда требуется «универсальная» отметка времени, не зависящая от часового пояса текущего сеанса пользователя, в контексте которого выполняется серверный вызов, следует использовать функцию УниверсальноеВремя.
А именно остались вопросы:
1. Раз уж по неведомой пока причине, запретили использовать ТекущаяДата(), то почему бы вместо неё не дать возможность всегда использовать ТекущаяДатаСеанса()? Почему в платформе не сделали функцию ТекущаяДатаСеанса() доступной на клиенте? Тем более, что инфа о времени сеанса клиента изначально физически лежит на клиенте.
Потому что ТекущаяДатаСеанса() - согласно СП это серверная дата и время + часовой пояс клиента. А значит мы страхуемся от того, что на клиенте время вообще от балды идёт, например отстаёт на секунду.
2. Хорошо, раз на клиенте недоступна ТекущаяДатаСеанса(), то почему ИТС не разрешает на клиенте вызывать ТекущаяДата()? Ведь ТекущаяДатаСеанса() выполненная на сервере по идее будет равняться ТекущаяДата() выполненная на клиенте.
Вместо этого ИТС рекомендует вызывать метод БСП ДатаСеанса(), который как раз и вернёт значение равное ТекущаяДатаСеанса() только при этом не будет делать серверный вызов, за счёт того, что он был сделан однократно в начале сеанса и была вычислена ПоправкаКВремениСеанса = ТекущаяДатаСеанса(вычисленная на сервере) - ТекущаяДата(вычисленная на клиенте).
Ответ на данный вопрос вытекает из предыдущего: серверное и клиентское время время может отличаться не только на часовой пояс, и единственный выход пользоваться одинаковым временем, это брать его с сервера и добавлять клиентские часовые пояса - т.е. ровно то, что и делается в ТекущаяДатаСеанса() и ДатаСеанса()
Второй аргумент подсказал коллега (в достоверности не могу ручаться): ТекущаяДатаСеанса() на сервере и ТекущаяДата() на клиенте могут отличаться во фреше, т.к. это эталонное время для области в которой крутится сеанс и время Кластера соответсвенно.
3. Почему в качестве универсального времени ИТС указывает безальтернативно использовать УниверсальноеВремя()? Почему вместо этого нельзя использовать ТекущаяДата() вычисленное на сервере?
ТекущаяДата() на сервере тоже может меняться - например если сервер переехал. Или серверов может быть несколько. Поэтому УниверсальноеВремя() универсально в отличии от ТекущаяДата().
Проверено на платформе 8.3.17.1989.
взято с infostarta
необходимо зарегистрироваться для просмотра ссылкипосмотрите, может это то что вам надо