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


1С:Предприятие ::

Метки:

Управляемые формы. Глобальная переменная ссылка на COM объект.

Я
   bvb
 
12.09.17 - 12:28
в УФ в процедуре на сервере создается
COM подключение к базе
db = Новый COMобъект("V83.ComConnector"); 
V8 = db.Connect(СтрокаИнициализации);

нужно сохранить V8 глобально
чтобы в других серверных процедурах не переинициализировать COM соединение.
Пытался сделать реквизит обработки ОбработкаV8 произвольного типа

но при попытке инициализации :
&НаСервере
РеквизитФормыВЗначение("Объект").ОбработкаV8 = V8;

РеквизитФормыВЗначение("Объект").ОбработкаV8 остается НЕОПРЕДЕЛЕНО

что посоветуете ?
 
 
   Господин ПЖ
 
1 - 12.09.17 - 12:30
реквизит обработки у каждой формы "свой"
   Heckfy
 
2 - 12.09.17 - 12:33
Замути константу. :)
   butterbean
 
3 - 12.09.17 - 12:33
хранить на клиенте
   bvb
 
4 - 12.09.17 - 12:35
(1) Да нет форма одна

При попытке создать реквизит  ОбработкаV8 на форме произвольного типа пишет

{ВнешняяОбработка.ЗагрузкаДокументов.Форма.Форма.Форма(122)}: Ошибка при установке значения атрибута контекста (ОбработкаV8)
    ОбработкаV8 = V8;
по причине:
Тип "COMОбъект" не может использоваться в данных формы
   bvb
 
5 - 12.09.17 - 12:36
(3) Дык в том и трабл : как его передать на клиент
   АнализДанных
 
6 - 12.09.17 - 12:37
(5) А если, через адрес временного хранилища?
   Heckfy
 
7 - 12.09.17 - 12:38
(5) COM объект на клиенте - зло!!!
   Рэйв
 
8 - 12.09.17 - 12:41
   Рэйв
 
9 - 12.09.17 - 12:42
   RomaH
 
10 - 12.09.17 - 12:43
+(8)
"Сопсно все украдено до нас: http://catalog.mista.ru/public/62649/

Цитирую автора:

Платформа 8.2 простым штатным способом позволяет реализовывать глобальные переменые на сервере. Достигается это использованием модулей с признаком "Повторное использование возвращаемых значений" установленным в значение "На время сеанса"

ком объект тоже кешируется."
 
 
   bvb
 
11 - 12.09.17 - 13:01
ЭтаФорма.ОбработкаV8  = ПоместитьВоВременноеХранилище(V8,ЭтаФорма.УникальныйИдентификатор);

не работает
Переданное значение не может быть помещено во временное хранилище
   bvb
 
12 - 12.09.17 - 13:17
Посмотрел
Книга знаний: Хранение COM Объектов на Сервере ТонкогоКлиента

Обработчик=Новый COMОбъект("v82.Application");
Обработчик.Connect("File=""D:\database\8.2\Пустая"";usr=""robot""; pwd=""z12cf57bdjk43""");
Обработчик.visible=false;
ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Обработчик,Новый УникальныйИдентификатор());

Нельзя данный объект поместиь во временное хранилище
   1c_July
 
13 - 12.09.17 - 15:35
для варианта, когда все серверные вызываются из других серверных, а начинается все с одного вызова с клиента и туда возвращается только результат - передавали параметром  между процедурами.
   bvb
 
14 - 12.09.17 - 16:15
(13) Процедуры никак не связаны между собой
   bvb
 
15 - 12.09.17 - 16:19
Резюмирую :
1. поместить ПоместитьВоВременноеХранилище для COMОбъект не работает
Поэтому http://catalog.mista.ru/public/62410/ - не актуально

2. Взлетело http://catalog.mista.ru/public/62649/
Минусы - время жизни переменной 20 минут
       - Хранить ее надо именно в соответствии
       - Пришлось обгадить типовую конфу дополнительным
          модулем с одной процедурой
   bvb
 
16 - 12.09.17 - 16:20
   spiller26
 
17 - 12.09.17 - 16:43
Не прокатит. Com-объект сам по себе это приблуда Виндовая.
подключился > обработал > отпустил.
   Fragster
 
18 - 12.09.17 - 16:48
в модуле формы в начале:

&НаКлиенте
Перем V8;


и далее что хотите с ней делайте.
   Fragster
 
19 - 12.09.17 - 16:48
на сервере не взлетит
   Fragster
 
20 - 12.09.17 - 16:49
ну а совсем по уму - выкинуть ком и сделать через HTTPСоединение
   bvb
 
21 - 12.09.17 - 17:01
(17) Ну прокатило же

Я использую COM соединение в несвязанных между собой серверных вызовах
   bvb
 
22 - 12.09.17 - 17:13
(18)
&НаКлиенте
Перем V8;

Не взлетает
при попытке пердать его в серверный вызов возникает ошибка

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:

Нельзя COMОбъект передавать между клиентом и сервером
   Fragster
 
23 - 12.09.17 - 17:25
(22) конечно возникает. работай с ним на клиенте. особо упоротые (упорные) открывают ком коннектор к своей же базе для того, чтобы иметь возможность выполнять запросы на клиенте.
   h-sp
 
24 - 12.09.17 - 17:37
(12) ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Новый Структура("Обработчик", Обработчик) ,Новый УникальныйИдентификатор());
   bvb
 
25 - 13.09.17 - 15:57
(25) Ага спасибо
Запихал его в реквизит обработки (строка 255)

Объект.V8 = ПоместитьВоВременноеХранилище(Новый Структура("V8", V8) ,Новый УникальныйИдентификатор());

получаю и работаю 
V8 = ПолучитьИзВременногоХранилища(Объект.V8).V8;



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