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


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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует