Итак.
Как это делается.
Дано: необходимо в некой конфигурации реализовать вычисление времени с точностью до миллисекунды.
Один из способов решения: для вычисления времени с заданной точностью применим ява скрипт.
Инициализацию скрипта опишем в функции:
Функция ПолучитьЯваСкрипт() ЭКСПОРТ
ЯваСкрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
ЯваСкрипт.Language = "JavaScript";
Возврат ЯваСкрипт;
КонецФункции
Функцию опишем в общем модуле ДополнительныеПараметрыСенаса.
И вот теперь самое главное: у этого модуля установим свойство "Повторное использование возвращаемых значений" в значение "На время сеанса"!
Что нам это дает?
Давайте посмотрим на два замера производительности.
Первый замер сделан с использованием непосредственного создания COM-объекта в цикле из 10 тыс. итераций.
Производилось это в функции ВернутьТочноеВремя_Простая():
Функция ВернутьТочноеВремя_Простая() ЭКСПОРТ
ЯваСкрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
ЯваСкрипт.Language = "JavaScript";
Возврат ЯваСкрипт.Eval("new Date().valueOf()");
КонецФункции // ВернутьТочноеВремя_Простая()
Как видим основное время - 72% - заняло создание нового экземпляра COM-объекта. И это создание происходило 10 тыс. раз!
Теперь давайте посмотрим на замеры функции из созданного нами модуля:
Функция ВернутьТочноеВремя() ЭКСПОРТ
ЯваСкрипт = ДополнительныеПараметрыСеанса.ПолучитьЯваСкрипт();
Возврат ЯваСкрипт.Eval("new Date().valueOf()");
КонецФункции // ВернутьТочноеВремя()
Как видим здесь расклад уже иной - наиболее затратной операцией явилась операция вычисления точного времени!
Создание же COM-объекта происходило всего лишь один раз при самом первом вызове функции!
Давайте теперь посчитаем выигрыш в скорости - код с кэшированием возвращаемых значений отработал в 45 раз быстрее!
(При тестировании на циклах в 100 тыс. итераций этот показатель был скромнее - 38 раз. Но по времени выполнения эти 38 раз были ощутимы - 17 секунд против 643 секунд!)
Уверен, что вы уже поняли, какие возможности сулит данная технология - создание и использование параметров сеанса практически произвольных типов практически во всех видах клиентов.
На этом все!
Удачи!
P.S. Утверждение про все виды клиентов основано только на результатах проверки конфигурации со всеми выставленными флагами синтаксического контроля. Реально действие технологии проверялось, увы, только в толстом клиенте.
P.P.S. Буду признателен всем пользователям портала, которые протестируют данную технологию в других клиентах и сообщат о результатах