Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сохранить состояние функции общего модуля между вызовами  (Прочитано 7112 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Smartie
Новенький

us
Offline Offline

« : 04-06-2012 06:34 » 

Есть функция общего модуля, которая вызывается из СКД (в вычисляемом поле). Хочу кэшировать результат, возвращаемый функцией. Как известно, общие модули Stateless, переменную не объявишь.

Надо каким-то образом передать в функцию параметр, который бы "жил" в модуле отчёта. Как это сделать?
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-06-2012 07:00 » 

Попробуй поиграться с признаком "Повторное использование возвращаемых значений" модуля: На время вызова / На время сеанса.
Записан
Smartie
Новенький

us
Offline Offline

« Ответ #2 : 13-06-2012 07:07 » 

Попробуй поиграться с признаком "Повторное использование возвращаемых значений" модуля: На время вызова / На время сеанса.
Очень хорошая идея, спасибо! Модуль глобальный, в нём эта опция недоступна (понятно, что можно создать отдельный модуль).

Есть ли другие варианты?
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 04-07-2012 05:59 » 

Ну вынеси весь функционал в неглобальный модуль, а из глобального просто переадресовывай вызов на другой модуль... Улыбаюсь
Записан
Smartie
Новенький

us
Offline Offline

« Ответ #4 : 04-07-2012 14:54 » 

Ну вынеси весь функционал в неглобальный модуль, а из глобального просто переадресовывай вызов на другой модуль... Улыбаюсь
Я просто-напросто создал отдельный модуль под это дело и обращаюсь к нему напрямую. Ваше решение отлично работает, ещё раз спасибо!

Мой вопрос относительно других вариантов решения был задан потому, что Ваше вариант работает для данного конкретного случая, но и только. Есть ли способы сохранять состояние между вызовами в общем случае? Мне в голову приходят параметры сессии, есть ли другие варианты?
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 27-07-2012 11:06 » 

Параметры сессии предназначены в основном для единоразового заполнения при начальной инициализации. Использовать под данную задачу конечно можно, но это как-то через одно место будет...
Есть еще набор функций для работы с временным хранилищем - может они как-то подойдут? ПоместитьВоВременноеХранилище/ПолучитьИзВременногоХранилища/УдалитьИзВременногоХранилища/ЭтоАдресВременногоХранилища
Записан
Smartie
Новенький

us
Offline Offline

« Ответ #6 : 27-07-2012 14:15 » 

Спасибо! Даже не сомневаюсь, что будет работать ... но временное хранилище - это ведь "на диске", правильно? А хотелось бы чего-нибудь более скоростного.

Параметры сеанса, насколько я помню, можно заполнять и по ходу работы. Если кто-то пытается получить параметр и его нет, происходит вызов процедуры заполнения с указанием имени параметра, которого (пока ещё) нет.

Но в общем-то, можно было бы заполнять и при старте системы. Создать нужный объект (соответствие) и вписать его в параметры. Почему Вы считаете такой путь кривым?
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 30-07-2012 10:09 » 

Насколько я понимаю - "временное хранилище" это в адресном пространстве сервера, а скидывается оно на диск или нет за это уже отвечает сервер 1С.
Не знаю насколько качественно и быстро будет работать с параметрами сеанса - пробуй, тестируй. Высказанная мною мысль - это чисто субъективное восприятие идеологии "параметров". Подкрепить ее документацией или опытом сейчас не могу.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines