Имя: Пароль:
1C
1С v8
Передача значения в хранилище значения с сервера на клиент
0 Кот Баюн
 
23.01.15
13:47
УФ.
8.2
Клиент-серверный вариант работы.


Пытаюсь передать что-либо с сервера на клиент через хранилище значения.
Не получается. Само хранилище (вроде) передается, но значение в нем теряется(?).


&НаКлиенте
Процедура Проверка(Команда)
    
    // Тест,НовыйАдрес - реквизиты формы
    
    // Эксперимент 1. Получаем значение в хранилище значения с сервера
    ХЗ=ПолучитьХЗ();
    Сообщить(ТипЗнч(ХЗ)); // Хранилище значения
    ЧтоТам_вХЗ=ХЗ.Получить(); // Неопределено (??)
    Сообщить(Тест);  // "СтрокаССервера_вХЗ"
    
    
    // Эксперимент 2.  Помещаем значение, "упакованое" в хранилище значения и помещенное во временное хранилище
    //    на сервере, возвращаем адрес, и на клиенте получаем хранилище значения из временного, и значение из него
    Адрес=ПоместитьВоВХ();
    ЧтоТам_вВХ=ПолучитьИзВременногоХранилища(Адрес); // Хранилище значения
    ЧтоТам=ЧтоТам_вВХ.Получить(); // Неопределено (??)
    Сообщить(Тест);  // СтрокаССервера_вВХ

    // Эксперимент 3. Помещаем нечто во временное хранилище на клиенте, адрес передаем на сервер,
    //    на сервере по адресу помещаем новое значение, упакованное в ХранилищеЗначения, и пытаемся
    //    получить его уже на клиенте.
    // Этот вариант описан в СП, в примечании к ПоместитьВоВременноеХранилище, как метод для получения значения из фонового задания
    Адрес=ПоместитьВоВременноеХранилище("РазРаз",ЭтаФорма.УникальныйИдентификатор);
    ЧтоТам_вВХ=ПолучитьИзВременногоХранилища(Адрес); // РазРаз
    // Помещаем что-то на сервере
    ПоместитьВоВХ2(Адрес);
    Сообщить(НовыйАдрес=Адрес); // Истина
    ЧтоТам=ПолучитьИзВременногоХранилища(Адрес).Получить(); // Неопределено (??)
    Сообщить(Тест);  // СтрокаССервера_вВХ2
    
    
КонецПроцедуры

&НаСервере
Функция ПолучитьХЗ()
    ХЗ=Новый ХранилищеЗначения("СтрокаССервера_вХЗ",Новый СжатиеДанных(9));
    Тест=ХЗ.Получить();
    
    Возврат ХЗ;
КонецФункции


&НаСервере
Функция ПоместитьВоВХ()
    
    Адрес=ПоместитьВоВременноеХранилище(Новый ХранилищеЗначения("СтрокаССервера_вВХ",Новый СжатиеДанных(9)));
    Тест=ПолучитьИзВременногоХранилища(Адрес).Получить();

    Возврат Адрес;
    
КонецФункции

&НаСервере
Процедура ПоместитьВоВХ2(Адрес)
    
    НовыйАдрес=ПоместитьВоВременноеХранилище(Новый ХранилищеЗначения("СтрокаССервера_вВХ2",Новый СжатиеДанных(9)),Адрес);
    Тест=ПолучитьИзВременногоХранилища(Адрес).Получить();
    
КонецПроцедуры
1 Кот Баюн
 
23.01.15
13:48
Вероятно, что-то элементарное недопонимаю.