Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глобальные переменные в контексте сервера (управляемое приложение)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > База знаний > Не наши статьи > 1С:Предприятие 8.2
Vofka
Можно ли в 8.2 на сервере хранить ссылку на объект внешней компоненты?
Можно! Рассмотрим на примере...


Как оказалось все очень просто.

И так...

1. Добавляем в параметры сеанса строковый параметр, скажем длиной 255 символов.

(для хранения ссылки на объект и возможности вызова из любого серверного метода)

К примеру, с именем "ВК".

2. В общий серверный модуль добавляем инициализацию компоненты (в моем примере он привилегированный и имеет имя "Тестовый"):

Функция ИнитВК() Экспорт
       ИмяВК = "Душелов.ExcelEditor1C";

       Попытка
             ВК = Новый COMОбъект(ИмяВК);
       Исключение
             Сообщить("Ошибка создания объекта внешней компоненты: " + ИмяВК);
             Возврат Ложь;
       КонецПопытки;

       ПараметрыСеанса.ВК = ПоместитьВоВременноеХранилище(ВК, Новый УникальныйИдентификатор);
      Возврат Истина;
КонецФункции


и тестовую функцию

Процедура ТестВК() Экспорт
       Если ПараметрыСеанса.ВК = Неопределено Тогда
             Возврат;
       КонецЕсли;

       ВК = ПолучитьИзВременногоХранилища(ПараметрыСеанса.ВК);
       Сообщить(ВК.ПолучитьКоличествоЛистов());
КонецПроцедуры


И все smile.gif Из любого места сервера и клиента объект внешней компоненты доступен!

Процедура ПриНачалеРаботыСистемы()
       Тестовый.ИнитВК();
       Тестовый.ТестВК();
КонецПроцедуры


Взято необходимо зарегистрироваться для просмотра ссылки.
pumbaE
ВременноеХранилище вроде живет около 20 минут, если к нему не обращаться, т.е. периодически надо получать из временного хранилища.
logist
Цитата(pumbaE @ 14.08.12, 12:11) необходимо зарегистрироваться для просмотра ссылки
ВременноеХранилище вроде живет около 20 минут

Ой, не пишите всякую ерунду.
Цитата
В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Vofka
Цитата(pumbaE @ 14.08.12, 12:11) необходимо зарегистрироваться для просмотра ссылки
ВременноеХранилище вроде живет около 20 минут, если к нему не обращаться


Цитата
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Параметры:

<Данные> (обязательный)
Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище.

<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка.
Адрес во временном хранилище, по которому надо поместить данные. Или уникальный идентификатор формы, во временное хранилище которой, надо поместить данные и вернуть новый адрес.
В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.


В варианте выше, ссылка на временное хранилище будет храниться в параметре сеанса. Если вы очистите данный параметр сеанса, то тогда по ходу "шеф, все пропало". А так должно храниться, пока "живой" параметр сеанса.
Gazulo
Vofka @ 14.08.12, 9:35 необходимо зарегистрироваться для просмотра ссылки ,
ПоместитьВоВременноеХранилище(ВК, Новый УникальныйИдентификатор) Для 8.3 не працює
Vofka
Gazulo, спорить не буду, не знаю.
Gazulo
Vofka @ Сегодня, 14:53 необходимо зарегистрироваться для просмотра ссылки ,
Может поскажете, как иначе можно хранить ссылку на объект внешней компоненты ??
Vofka
Gazulo, а что именно у вас не работает?
Gazulo
Vofka @ Сегодня, 15:35 необходимо зарегистрироваться для просмотра ссылки ,
Надо сделать глобальную ссылку на объект внешней компоненты.
В примере не работает ПоместитьВоВременноеХранилище(ВК, Новый УникальныйИдентификатор);
в 8.3 во временное хранилище можно помещать или сериализуемые значения, или двоичные данные (т.е. содержимое какого-либо файла). Ком-объект не является ни тем, ни другим, потому его поместить во временное хранилище не получится никоим образом
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.