![]() |
|
Глобальная переменная модуля обработки на сервере | ☑ | ||
---|---|---|---|---|
0
Slon747
16.09.16
✎
10:38
|
УФ. В модуле обработки нужно хранить строковую переменную между вызовами процедур на сервере.
Как лучше сделать? |
|||
1
Лефмихалыч
16.09.16
✎
10:39
|
реквизит обработки для этого используй
|
|||
2
Slon747
16.09.16
✎
10:41
|
(1) А изящнее никак? Вроде как ВременноеХранилище для этого можно использовать. Но как-то тоже не очень просто писать/читать.
|
|||
3
Остап Сулейманович
16.09.16
✎
10:44
|
(0) Классика жанра - передавать параметром при каждом вызове.
|
|||
4
Slon747
16.09.16
✎
10:46
|
Что за черт?
Создал реквизит обработки, записываю в него данные. На сервере этот реквизит пуст. ??? |
|||
5
Slon747
16.09.16
✎
10:53
|
Сохраняю:
МояПеременная = "123"; Отладчик: МояПеременная = "123" ЭтотОбъект.МояПеременная = "123" Вызов процедуры на сервере: МояПеременная = "" ЭтотОбъект.МояПеременная = "" |
|||
6
Остап Сулейманович
16.09.16
✎
10:58
|
(5) МояПеременная остается там, где объявлена. На клиенте - значит на клиенте. На сервере - значит на сервере до передачи управления на клиент.
|
|||
7
4St
16.09.16
✎
11:00
|
&НаСервере
Перем мОбработкаОбъект; //кэш на время серверного вызова &НаСервере Функция ОбработкаОбъект() Если мОбработкаОбъект=Неопределено Тогда мОбработкаОбъект = РеквизитФормыВЗначение("Объект"); мОбработкаОбъект.МояПеременная = МояПеременнаяКакРеквизитНаФорме; КонецЕсли; Возврат мОбработкаОбъект; КонецФункции &НаКлиенте Процедура ЖмиКнопку() ЖмиКнопкуНаСервере(); КонецПроцедуры &НаСервере Процедура ЖмиКнопкуНаСервере() ОбработкаОбъект().МояФункция(); // it's a kind of magic, lalala КонецПроцедуры |
|||
8
RomanYS
16.09.16
✎
11:00
|
(5) А РеквизитФормыВЗначение ты делаешь?
|
|||
9
В тылу врага
16.09.16
✎
11:02
|
реквизиты объекта живут на сервере только до конца вызова с клиента, в следующем вызове как и не бывало
такой вот велосипедный концепт |
|||
10
Slon747
16.09.16
✎
11:25
|
(7) Не понял.
Сделал так: &НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры &НаСервере Процедура ПриОткрытииНаСервере() ОбработкаОбъект().УстановитьВерсиюКонфигурации(); КонецПроцедуры &НаСервере Функция ОбработкаОбъект() Если мОбработкаОбъект=Неопределено Тогда мОбработкаОбъект = РеквизитФормыВЗначение("Объект"); мОбработкаОбъект.ВерсияКонфигурации = мОбработкаОбъект.ПолучитьВерсиюКонфигурации(); КонецЕсли; Возврат мОбработкаОбъект; КонецФункции Как мне теперь прочитать переменную ВерсияКонфигурации в модуле обработки? |
|||
11
4St
16.09.16
✎
12:21
|
(10)
Эта строка мОбработкаОбъект.ВерсияКонфигурации = мОбработкаОбъект.ПолучитьВерсиюКонфигурации(); намекает на то, что глобальная переменная ВерсияКонфигурации в модуле обработки уже не нужна, раз есть такая функция. Надо просто выпилить обращение к этой переменной и заменить его вызовом функции. Результат функции кэшировать - примерно так же, как кэшируется ОбработкаОбъект(). Но вопрос, похоже, не в этом. "Как мне теперь прочитать переменную ВерсияКонфигурации в модуле обработки?" А откуда ты ее собираешься читать? С клиента? P.S. Вместо Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры &НаСервере Процедура ПриОткрытииНаСервере() ОбработкаОбъект().УстановитьВерсиюКонфигурации(); КонецПроцедуры лучше делать &НаСервере Процедура ПриСозданииНаСервере() ОбработкаОбъект().УстановитьВерсиюКонфигурации(); КонецПроцедуры хотя, повторюсь, даже это здесь ни к чему. |
|||
12
polosov
16.09.16
✎
12:31
|
(0) В ут11 есть
Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек = "", Значение, ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено, НужноОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек = "", ЗначениеПоУмолчанию = Неопределено, ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |