ОбновитьПовторноИспользуемыеЗначения для всех пользователей #683987


#0 by sbabay
Создал модуль с Повторно используемым возвр. значением (на время сеанса). Все работает хорошо, но не пойму как сбросить кэш для всех пользователей? Метод ОбновитьПовторноИспользуемыеЗначения работает только для того пользователя, под которым он был вызван. У всех остальных значения по прежнему берутся из "кэша". Как быть?
#1 by Defender aka LINN
1. Не брать их из кэша 2. Смириться 3. Выгнать всех нафиг из базы
#2 by sbabay
1. В смысле вообще отказаться от модуля с повт. использованием?? 3. Не устраивает. Вы тут троллите что ль? Или просто за меня тему апаете?
#3 by Defender aka LINN
Это тебе варианты на выбор. Повторно используемые значения - это такие значения, которые: а) Не изменяются / Изменяются не часто за время работы пользователя б) МОГУТ быть неактуальными. Если при изменении такого значения возникает потребность, чтобы ВСЕ пользователи это тут же увидели - это не повторно используемое значение.
#4 by GROOVY
Предлагаю подумать на тему "Как вызвать любой метод/процедуру/функцию под каждым активным пользователем?"
#5 by sbabay
Ну для чего-то же был придуман метод "ОбновитьПовторноИспользуемыеЗначения". Думаю как раз-таки для таких случаев. Я, правда, ожидал, что он сбросит кэш у всех текущих пользователей. Ну как бы да, на это и намекаю. Наверняка ж кто-то уже делал. Не хочется наступать на одни и те же грабли и изобретать велосипеды
#6 by GROOVY
Какие мысли есть?
#7 by sbabay
Пока только самые топорные аля флаг-файл, флаг-[значение в таблице] с периодическим опросом. Но тогда весь профит от модулей с повт. использованием сойдет на нет
#8 by azernot
При каждом обращении к кэшу проверять константу "КэшНеактуален" и в случае необходимости, обновлять неактуальные значения..
#9 by sbabay
это и есть один из вариантов (флаг-[значение в таблице]) правда непонятно как именно "обновлять неактуальные значения" для других пользователей
#10 by sbabay
ступил во второй части.
#11 by sbabay
всё-таки хотелось бы как-то обойтись без лишнего обращения к БД
#12 by banco
какие галочки стоят у модуля?
#13 by sbabay
"Сервер", "вызов сервера"
#14 by banco
Особенность повторного использования возвращаемых значений Особенность касается общих модулей с установленными флагами "Сервер", "Вызов сервера", у которых свойство "Повторное использование возвращаемых значений" имеет значение "На время сеанса". При обращении к экспортируемым методам таких модулей из клиентского приложения кэширование значений, возвращаемых методами, выполняется как на клиенте, так и на сервере. В процессе вызова платформа предпринимает попытку поиска возвращаемого значения в клиентском кэше: В случае успешного поиска возвращается найденное значение. Если значение не найдено в клиентском кэше, то выполняется вызов сервера и значение ищется в серверном кэше: В случае успешного поиска возвращается найденное значение. Если и в серверном кэше значение не найдено, то выполняется тело метода, его результат помещается в серверный кэш, передается на клиента, помещается в клиентский кэш и выдается источнику вызова. Данная особенность может проявиться, если клиентский код конфигурации изменяет объект, сохраненный в кэш. Объект будет изменен только в клиентском кэше и не будет изменен в серверном. При устаревании объекта в клиентском кэш он будет вновь получен с сервера, но, возможно, не в результате повторного выполнения тела метода, а из серверного кэша, что может привести к неопределенности результата. При разработке конфигураций не следует рассчитывать на побочные эффекты, такие, как изменение объектов, хранимых в кэше. Для принудительного обновления данных в кэше рекомендуется использовать метод ОбновитьПовторноИспользуемыеЗначения (RefreshReusableValues). Если все-таки отдельные объекты изменяются в кэше, то избежать неопределенности можно одним из следующих способов: обновлять данные в кэше и на клиенте, и на сервере; устанавливать модулю, у которого свойство "Повторное использование возвращаемых значений" имеет значение "На время сеанса", флаги "Сервер", "Клиент" и, может быть, "Внешнее соединение" и сбрасывать флаг "Вызов сервера".
#15 by sbabay
Поставил в модуле флаги "На сервере" и "На клиенте", остальное - снял. Не помогло. Вызываю метод "ОбновитьПовторноИспользуемыеЗначения" у одного пользователя, у второго по-прежнему данные тянутся из кэша
#16 by sbabay
Я так понимаю, у второго пользователя всё сохранилось в кэше на клиенте, вот оттуда всё и приходит.
#17 by sbabay
Даже если оставить только "Сервер", то ничего не изменяется
#18 by sbabay
Может с утра у кого-нибудь возникли идеи?
#19 by banco
не использовать повторно используемое значение
#20 by sbabay
это самое простое решение. Еще б варианты услышать
#21 by Defender aka LINN
Еще 2 варианта осталось :)
#22 by sbabay
)) не, ну тебя я сразу понял.
#23 by MSII
Напиши себе межсеансовый обмен данными и забудь о вопросах типа как в .
#24 by senior
Ну тут еще вопрос, насколько остро стоит проблема актуальности, т.к., если верить документации, сохраненные значения удаляются через 20 минут после вычисления сохраняемого значения или через 6 минут после последнего использования.
#25 by Sammo
Есть еще 1 вариант - обеспечить, чтобы данные, которые загружены в кэш, не менялись :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С