Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Глобальная переменная модуля обработки на сервере

Глобальная переменная модуля обработки на сервере
Я
   Slon747
 
16.09.16 - 10:38
УФ. В модуле обработки нужно хранить строковую переменную между вызовами процедур на сервере.
Как лучше сделать?
 
 
   Лефмихалыч
 
1 - 16.09.16 - 10:39
реквизит обработки для этого используй
   Slon747
 
2 - 16.09.16 - 10:41
(1) А изящнее никак? Вроде как ВременноеХранилище для этого можно использовать. Но как-то тоже не очень просто писать/читать.
   Остап Сулейманович
 
3 - 16.09.16 - 10:44
(0) Классика жанра - передавать параметром при каждом вызове.
   Slon747
 
4 - 16.09.16 - 10:46
Что за черт?
Создал реквизит обработки, записываю в него данные.
На сервере этот реквизит пуст.
???
   Slon747
 
5 - 16.09.16 - 10:53
Сохраняю:
МояПеременная = "123";

Отладчик:
МояПеременная = "123"
ЭтотОбъект.МояПеременная = "123"

Вызов процедуры на сервере:
МояПеременная = ""
ЭтотОбъект.МояПеременная = ""
   Остап Сулейманович
 
6 - 16.09.16 - 10:58
(5) МояПеременная остается там, где объявлена. На клиенте - значит на клиенте. На сервере - значит на сервере до передачи управления на клиент.
   4St
 
7 - 16.09.16 - 11:00
&НаСервере
Перем мОбработкаОбъект;//кэш на время серверного вызова


&НаСервере
Функция ОбработкаОбъект()
    
    Если мОбработкаОбъект=Неопределено Тогда
        
        мОбработкаОбъект = РеквизитФормыВЗначение("Объект");
            мОбработкаОбъект.МояПеременная = МояПеременнаяКакРеквизитНаФорме;
        
    КонецЕсли;
    
    Возврат мОбработкаОбъект;
    
КонецФункции
    
&НаКлиенте
Процедура ЖмиКнопку()
 ЖмиКнопкуНаСервере();
КонецПроцедуры


&НаСервере
Процедура ЖмиКнопкуНаСервере()
ОбработкаОбъект().МояФункция();// it's a kind of magic, lalala

КонецПроцедуры
   RomanYS
 
8 - 16.09.16 - 11:00
(5) А РеквизитФормыВЗначение ты делаешь?
   В тылу врага
 
9 - 16.09.16 - 11:02
реквизиты объекта живут на сервере только до конца вызова с клиента, в следующем вызове как и не бывало

такой вот велосипедный концепт
   Slon747
 
10 - 16.09.16 - 11:25
(7) Не понял.
Сделал так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПриОткрытииНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    ОбработкаОбъект().УстановитьВерсиюКонфигурации();
    
КонецПроцедуры

&НаСервере
Функция ОбработкаОбъект()
    
    Если мОбработкаОбъект=Неопределено Тогда
        
        мОбработкаОбъект = РеквизитФормыВЗначение("Объект");
        мОбработкаОбъект.ВерсияКонфигурации = мОбработкаОбъект.ПолучитьВерсиюКонфигурации();
        
    КонецЕсли;
    
    Возврат мОбработкаОбъект;
    
КонецФункции


Как мне теперь прочитать переменную ВерсияКонфигурации в модуле обработки?
 
 Рекламное место пустует
   4St
 
11 - 16.09.16 - 12:21
(10)
Эта строка
мОбработкаОбъект.ВерсияКонфигурации = мОбработкаОбъект.ПолучитьВерсиюКонфигурации();
намекает на то, что глобальная переменная ВерсияКонфигурации в модуле обработки уже не нужна, раз есть такая функция. Надо просто выпилить обращение к этой переменной и заменить его вызовом функции. Результат функции кэшировать - примерно так же, как кэшируется ОбработкаОбъект().
Но вопрос, похоже, не в этом.
"Как мне теперь прочитать переменную ВерсияКонфигурации в модуле обработки?"
А откуда ты ее собираешься читать? С клиента?
P.S. Вместо 

Процедура ПриОткрытии(Отказ)
    
    ПриОткрытииНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    ОбработкаОбъект().УстановитьВерсиюКонфигурации();
    
КонецПроцедуры

лучше делать

&НаСервере
Процедура ПриСозданииНаСервере()
    
    ОбработкаОбъект().УстановитьВерсиюКонфигурации();
    
КонецПроцедуры

хотя, повторюсь, даже это здесь ни к чему.
   polosov
 
12 - 16.09.16 - 12:31
(0) В ут11 есть
Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек = "", Значение,
    ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено, 
    НужноОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт

Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек = "", ЗначениеПоУмолчанию = Неопределено, 
    ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует