Версия для печати темы (https://pro1c.org.ua/index.php?s=63612d34e3c1a4042eb44554031f05d9&showtopic=8548)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С:Предприятие 8.2 _ Глобальные переменные в контексте сервера (управляемое приложение)

Автор: Vofka 14.08.12, 8:35

Можно ли в 8.2 на сервере хранить ссылку на объект внешней компоненты?
Можно! Рассмотрим на примере...


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

И так...

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

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

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

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

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

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

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


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

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

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


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

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


Взято http://pro1c.org.ua/redirect.php?http://infostart.ru/public/62410/.

Автор: pumbaE 14.08.12, 11:11

ВременноеХранилище вроде живет около 20 минут, если к нему не обращаться, т.е. периодически надо получать из временного хранилища.

Автор: logist 14.08.12, 11:19

Цитата(pumbaE @ 14.08.12, 12:11) *
ВременноеХранилище вроде живет около 20 минут

Ой, не пишите всякую ерунду.
Цитата
В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.

Автор: Vofka 14.08.12, 11:24

Цитата(pumbaE @ 14.08.12, 12:11) *
ВременноеХранилище вроде живет около 20 минут, если к нему не обращаться


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

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

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

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


В варианте выше, ссылка на временное хранилище будет храниться в параметре сеанса. Если вы очистите данный параметр сеанса, то тогда по ходу "шеф, все пропало". А так должно храниться, пока "живой" параметр сеанса.

Автор: Gazulo 06.11.20, 13:36

Vofka @ 14.08.12, 9:35 * ,
ПоместитьВоВременноеХранилище(ВК, Новый УникальныйИдентификатор) Для 8.3 не працює

Автор: Vofka 06.11.20, 13:53

Gazulo, спорить не буду, не знаю.

Автор: Gazulo 06.11.20, 14:14

Vofka @ Сегодня, 14:53 * ,
Может поскажете, как иначе можно хранить ссылку на объект внешней компоненты ??

Автор: Vofka 06.11.20, 14:35

Gazulo, а что именно у вас не работает?

Автор: Gazulo 06.11.20, 14:38

Vofka @ Сегодня, 15:35 * ,
Надо сделать глобальную ссылку на объект внешней компоненты.
В примере не работает ПоместитьВоВременноеХранилище(ВК, Новый УникальныйИдентификатор);
в 8.3 во временное хранилище можно помещать или сериализуемые значения, или двоичные данные (т.е. содержимое какого-либо файла). Ком-объект не является ни тем, ни другим, потому его поместить во временное хранилище не получится никоим образом

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua