|
Где хранится кеш модулей с повторно возвращаемыми значениями? | ☑ | ||
---|---|---|---|---|
0
ЭтожЯ
23.09.15
✎
12:49
|
Есть функция в модуле с повторно возвращаемыми значениями. База клиент-серверная. Функция вызывается фоновым заданием. Получает значение. А потом ,по идее, это значение должна получать переменная в событии При Записи документа. При использовании фонового задания, далее не получается использовать кешируемое значение. Без использования фонового, значение кешируемой функции получается повторно. Как можно решить эту проблему?
|
|||
1
ЭтожЯ
23.09.15
✎
12:49
|
Процедура ЦЗСОбменДаннымиСВесовойПриЗаписи(Источник, Отказ) Экспорт
// Вставить содержимое обработчика. // выполнять действия если документ имеет тип самовывоз Попытка глV21Object=МодульПовтИспЗначений.ПолучитьЗначениеCOMСоединение(); Исключение глV21Object=Неопределено; КонецПопытки; |
|||
2
PR третий
23.09.15
✎
12:51
|
(0) Правильно писать "хранится"
|
|||
3
ЭтожЯ
23.09.15
✎
12:52
|
(2)что делает?- хранится, да правильно пишется без мягкого знака, извините, тороплюсь.
|
|||
4
Бубка Гоп
23.09.15
✎
12:57
|
Помещать во временное хранилище?
|
|||
5
ЭтожЯ
23.09.15
✎
12:57
|
что помещать? значение?
|
|||
6
Бубка Гоп
23.09.15
✎
12:58
|
(5) ага
|
|||
7
ЭтожЯ
23.09.15
✎
12:59
|
Я думаю возможно дело в доступно Кеша- НаКлиенте, НаСервере. Может во время фонового задания значение сохранилось в серверном кеше, и как его теперь получить на клиенте?
|
|||
8
Бубка Гоп
23.09.15
✎
12:59
|
Кстати что за значение то, какой тип?
|
|||
9
Cyberhawk
23.09.15
✎
13:02
|
"Как можно решить эту проблему?" // какую проблему?
|
|||
10
DexterMorgan
23.09.15
✎
13:03
|
(0) те не это нада: http://catalog.mista.ru/public/62649/ ?
|
|||
11
ЭтожЯ
23.09.15
✎
13:12
|
(8)COMОбъект
|
|||
12
ЭтожЯ
23.09.15
✎
13:12
|
(10)Как получить значение функции, после выполнения этой функции фоновым заданием?
|
|||
13
EugeniaK
23.09.15
✎
13:18
|
(12) Никак.
Фоновое задание это другой сеанс. Повторно используемые значения используются только в пределах сеанса. |
|||
14
Гёдза
23.09.15
✎
13:19
|
В хранилище сеансовых данных наверно
|
|||
15
Бубка Гоп
23.09.15
✎
13:21
|
(12) все таки попробуй помещать во ВХ, возращать из фонового адрес и получать ПриЗаписи по этому адресу нужное значение.
|
|||
16
ЭтожЯ
23.09.15
✎
13:21
|
(13)ок. Как можно использовать одну переменную в фоновом задании и в клиентских вызовах?
|
|||
17
Гёдза
23.09.15
✎
13:23
|
Можно в фоновое задание параметр передать
|
|||
18
EugeniaK
23.09.15
✎
13:23
|
(16) Заведи константу.
Хотя если это для COM-соединения, то никак. |
|||
19
DexterMorgan
23.09.15
✎
13:24
|
Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage)
Глобальный контекст (Global context) ПоместитьВоВременноеХранилище (PutToTempStorage) Примечание: Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. |
|||
20
GROOVY
23.09.15
✎
13:25
|
(16) На клиенте создаешь ВХ, и его адрес передаешь в фоновое.
Только не забудь ВХ связать с сеансом, а то оно убьется при серверном вызове. |
|||
21
ЭтожЯ
23.09.15
✎
13:27
|
(19)Ок. Спасибо. сейчас буду пробовать.
|
|||
22
Бубка Гоп
23.09.15
✎
13:27
|
(19) (20) ТС, смотри сколько уже людей кроме меня предлагают использовать ВХ. Что тебя останавливает?
|
|||
23
ЭтожЯ
23.09.15
✎
13:33
|
Меня ничего не останавливает))Просто пытаюсь узнать все способы, в самом начале у нас была глобальная переменная, но это до фонового, но думаю глобальные переменные это дохлый номер в этом случае. Получается, что ее нужно объявлять и в модуле обычного приложения и в модуле внешнего соединения? И вообще как мне сказали, что не рекомендуется в клиент-серверном варианте использовать глобальные переменные...
|
|||
24
ЭтожЯ
23.09.15
✎
13:34
|
Кто может как-то меня просвятить?
|
|||
25
Cyberhawk
23.09.15
✎
13:35
|
Просвятить тебя может батюшка в церкви.
А просветить тебя может процесс перечитывания ветки и поиск по ИТС, например. |
|||
26
Cyberhawk
23.09.15
✎
13:35
|
+(25) или рентгеновский аппарат
|
|||
27
apokrit
23.09.15
✎
14:07
|
(0) Хранится в том процессе, в котором была вызвана функция. В разрезе сеансов.
Т.е. если значение было помещено в кеш, в фоновом задании - только в этом фоновом задании оно может быть получено. |
|||
28
ЭтожЯ
25.09.15
✎
08:07
|
Сделала следующее: Создала Параметр Сеанса:
Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры) // Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже // был установлен - возврат. Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда Возврат; КонецЕсли; Если ИмяПараметра = "ЗначениеВременногоХранилища" Тогда Адрес=УстановитьАдресВременногоХранилища(); ПараметрыСеанса.ЗначениеВременногоХранилища =Адрес; УстановленныеПараметры.Добавить(ИмяПараметра); КонецЕсли; КонецПроцедуры Функция УстановитьАдресВременногоХранилища() Адрес=ПоместитьВоВременноеХранилище(, Новый УникальныйИдентификатор()); Возврат Адрес; КонецФункции При открытии формы списка документа вызываю фоновое задание: МассивПараметров=Новый Массив(); МассивПараметров.Добавить(ПараметрыСеанса.ЗначениеВременногоХранилища); ФоновыеЗадания.Выполнить("МодульФоновыхЗаданий.УстановитьCOMСоединение",МассивПараметров); Фоновое задание: Процедура УстановитьCOMСоединение(Адрес) Экспорт Если ЗначениеЗаполнено(Константы.ПутьКБазеАвтовесов.Получить()) Тогда //глV21Object = Неопределено; ПутьКБазе = Константы.ПутьКБазеАвтовесов.Получить(); СтруктураПодключения = МодульРегламентныхЗаданий.ПолучитьСтруктуруПодключения_Авто(ПутьКБазе) ; глV21Object = МодульРегламентныхЗаданий.ПодключитсяКИнформационнойБазе2(СтруктураПодключения); Если глV21Object = Неопределено Тогда # Если Клиент Тогда Сообщить( "Ошибка подключения к базе данных!!!", СтатусСообщения.Важное ) ; #КонецЕсли //Возврат Неопределено ; Иначе //Возврат глV21Object; #Если Клиент Тогда Сообщить( ""+ТекущаяДата() + " - Подключение к конфигурации "+глV21Object.Метаданные.Synonym+" выполнено успешно!" ) ; #КонецЕсли КонецЕсли; //Значение глV21Object=СОМобъект ПоместитьВоВременноеХранилище(глV21Object, Адрес); КонецЕсли; КонецПроцедуры При извлечении данных ПриЗаписи документа переменная =неопределенно Попытка глV21Object=ПолучитьИзВременногохранилища(ПараметрыСеанса.ЗначениеВременногоХранилища); Исключение КонецПопытки; Как правильно извлечь и поместить данные во временное хранилище при использовании фонового задания?Вроде все делаю по синтаксис помошнику. |
|||
29
ЭтожЯ
25.09.15
✎
08:09
|
Синтаксис помощнику
|
|||
30
ЭтожЯ
25.09.15
✎
08:35
|
Подскажите как правильно помещать данные во временное хранилище в фоновом задании и извлекать в родительском!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |