Имя: Пароль:
1C
1С v8
Как сохранить ДеревоЗначений как глобальную переменную?
0 Бюро пиявок
 
22.06.14
19:06
Платформа 8.3.4.408.

У меня обработка. На ней я создал дерево значений.
Нахожусь в модуле формы.

Если создать глобальную переменную в этом модуле формы, то она видна только до перехода на клиент. Как только возвращаюсь обратно - уже не видна.

Попробовал Параметры сеанса - туда такой тип данных не поместить.

Попробовал общий модуль с повторным использованием возвращаемых значений на время сеанса.

Сделал там такую функцию:

//Функция ОбращениеКДереву(ДеревоЗначений = Неопределено) Экспорт
Функция ОбращениеКДереву(ДеревоЗначений) Экспорт
    Если ДеревоЗначений <> Неопределено Тогда
        Дерево = ДеревоЗначений;
    Иначе
        Возврат Дерево;
    КонецЕсли;    
КонецФункции

Сначала был вариант с закоментаренной строкой. Но вот тут: http://1cupdate.ru/releases/4260/errors прочитал, что с параметрами по умолчанию были проблемы (ошибка 10047255).

А именно:

Если для метода с повторным использованием возвращаемых значений определены значения параметров по умолчанию, то в файловом варианте информационной базы при его вызове в толстом клиенте из серверного метода управляемой формы может быть получено сообщение об ошибке
Несоответствие типов ... (Неверный тип параметра. Допустимы только примитивные типы, ссылки, Структура)

У меня как раз файловый вариант.

В общем, удалил параметр по умолчанию, стал передавать Неопределено при вызове функции.

И все равно получаю: "Неверный тип параметра. Допустимы только примитивные типы, ссылки, Структура".

В общем, я уже отчаялся как-то сохранить эти данные. Подскажите, пожалуйста, что делать-то?
1 Steel_Wheel
 
22.06.14
19:08
>>Попробовал Параметры сеанса - туда такой тип данных не поместить.

А если сериализовать?
2 Бюро пиявок
 
22.06.14
19:12
(1) Что-то как-то мне это не очень нравится. Я уж лучше на форму закину это дерево, и с формы обратно данные в значение переведу.
3 Тындр
 
22.06.14
19:12
Зпихнуть в хранилище значений.
4 Necessitudo
 
22.06.14
20:35
Или ЗначениеВСтрокуВнутр)
5 Necessitudo
 
22.06.14
20:36
А вообще почему не завести глобальную переменную в модуле приложения?
6 Trance_1C
 
23.06.14
04:19
Вместо дерева можно использовать массив структур, и тогда можно воспользоваться
ПоместитьВоВременноеХранилище()
ПолучитьИзВременногоХранилища()

На форме надо добавить реквизит с типом строка, чтобы в нем хранить адрес в хранилище между обращениями.
Во временное хранилище можно положить все что можно сериализовать/десериализовать, массивы, структуры, ссылки примитивные типы, и таблицы с ними.
Правда на тонком клиенте таблицу и дерево в клиентском контексте не получишь.