|   |   | 
| 
 | Управляемые формы. Глобальная переменная ссылка на COM объект. | ☑ | ||
|---|---|---|---|---|
| 0
    
        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 | 
        реквизит обработки у каждой формы "свой"     | |||
| 2
    
        Heckfy 12.09.17✎ 12:33 | 
        Замути константу. :)     | |||
| 3
    
        butterbean 12.09.17✎ 12:33 | 
        хранить на клиенте     | |||
| 4
    
        bvb 12.09.17✎ 12:35 | 
        (1) Да нет форма одна
 При попытке создать реквизит ОбработкаV8 на форме произвольного типа пишет {ВнешняяОбработка.ЗагрузкаДокументов.Форма.Форма.Форма(122)}: Ошибка при установке значения атрибута контекста (ОбработкаV8) ОбработкаV8 = V8; по причине: Тип "COMОбъект" не может использоваться в данных формы | |||
| 5
    
        bvb 12.09.17✎ 12:36 | 
        (3) Дык в том и трабл : как его передать на клиент     | |||
| 6
    
        АнализДанных 12.09.17✎ 12:37 | 
        (5) А если, через адрес временного хранилища?     | |||
| 7
    
        Heckfy 12.09.17✎ 12:38 | 
        (5) COM объект на клиенте - зло!!!     | |||
| 8
    
        Рэйв 12.09.17✎ 12:41 | 
        (0) может поможет
 v8: Хранение COM объекта между вызовами | |||
| 9
    
        Рэйв 12.09.17✎ 12:42 | ||||
| 10
    
        RomaH naïve 12.09.17✎ 12:43 | 
        +(8)
 "Сопсно все украдено до нас: http://catalog.mista.ru/public/62649/ Цитирую автора: Платформа 8.2 простым штатным способом позволяет реализовывать глобальные переменые на сервере. Достигается это использованием модулей с признаком "Повторное использование возвращаемых значений" установленным в значение "На время сеанса" ком объект тоже кешируется." | |||
| 11
    
        bvb 12.09.17✎ 13:01 | 
        ЭтаФорма.ОбработкаV8  = ПоместитьВоВременноеХранилище(V8,ЭтаФорма.УникальныйИдентификатор);
 не работает Переданное значение не может быть помещено во временное хранилище | |||
| 12
    
        bvb 12.09.17✎ 13:17 | 
        Посмотрел 
 Книга знаний: Хранение COM Объектов на Сервере ТонкогоКлиента Обработчик=Новый COMОбъект("v82.Application"); Обработчик.Connect("File=""D:\database\8.2\Пустая"";usr=""robot""; pwd=""z12cf57bdjk43"""); Обработчик.visible=false; ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Обработчик,Новый УникальныйИдентификатор()); Нельзя данный объект поместиь во временное хранилище | |||
| 13
    
        1c_July 12.09.17✎ 15:35 | 
        для варианта, когда все серверные вызываются из других серверных, а начинается все с одного вызова с клиента и туда возвращается только результат - передавали параметром  между процедурами.     | |||
| 14
    
        bvb 12.09.17✎ 16:15 | 
        (13) Процедуры никак не связаны между собой     | |||
| 15
    
        bvb 12.09.17✎ 16:19 | 
        Резюмирую :
 1. поместить ПоместитьВоВременноеХранилище для COMОбъект не работает Поэтому http://catalog.mista.ru/public/62410/ - не актуально 2. Взлетело http://catalog.mista.ru/public/62649/ Минусы - время жизни переменной 20 минут - Хранить ее надо именно в соответствии - Пришлось обгадить типовую конфу дополнительным модулем с одной процедурой | |||
| 16
    
        bvb 12.09.17✎ 16:20 | ||||
| 17
    
        spiller26 12.09.17✎ 16:43 | 
        Не прокатит. Com-объект сам по себе это приблуда Виндовая.
 подключился > обработал > отпустил. | |||
| 18
    
        Fragster гуру 12.09.17✎ 16:48 | 
        в модуле формы в начале:
 &НаКлиенте Перем V8; и далее что хотите с ней делайте. | |||
| 19
    
        Fragster гуру 12.09.17✎ 16:48 | 
        на сервере не взлетит     | |||
| 20
    
        Fragster гуру 12.09.17✎ 16:49 | 
        ну а совсем по уму - выкинуть ком и сделать через HTTPСоединение     | |||
| 21
    
        bvb 12.09.17✎ 17:01 | 
        (17) Ну прокатило же
 Я использую COM соединение в несвязанных между собой серверных вызовах | |||
| 22
    
        bvb 12.09.17✎ 17:13 | 
        (18) 
 &НаКлиенте Перем V8; Не взлетает при попытке пердать его в серверный вызов возникает ошибка Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Нельзя COMОбъект передавать между клиентом и сервером | |||
| 23
    
        Fragster гуру 12.09.17✎ 17:25 | 
        (22) конечно возникает. работай с ним на клиенте. особо упоротые (упорные) открывают ком коннектор к своей же базе для того, чтобы иметь возможность выполнять запросы на клиенте.     | |||
| 24
    
        h-sp 12.09.17✎ 17:37 | 
        (12) ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Новый Структура("Обработчик", Обработчик) ,Новый УникальныйИдентификатор());     | |||
| 25
    
        bvb 13.09.17✎ 15:57 | 
        (25) Ага спасибо
 Запихал его в реквизит обработки (строка 255) Объект.V8 = ПоместитьВоВременноеХранилище(Новый Структура("V8", V8) ,Новый УникальныйИдентификатор()); получаю и работаю V8 = ПолучитьИзВременногоХранилища(Объект.V8).V8; | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |