![]() |
![]() |
|
V8: Глобальная переменная в модуле управляемой формы 8.2. | ☑ | ||
---|---|---|---|---|
0
Alex_1987
27.04.10
✎
08:44
|
Всем добрый день!
Помогите пожалуйста: В начале модуля упр. формы обработки 8.2. создаю переменную таким образом &НаСервере Перем БД; Потом в при создании формы на сервере создается экземпляр Comобъекта для соединения с БД. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) БД = Новый COMОбъект("ADODB.Connection"); КонецПроцедуры Но при обращении к переменной БД из другой функции сервера, она становится НЕОПРЕДЕЛЕННОЙ. Такое ощущение что в вышеописанной процедуре обращение происходит не к явно описанной переменной в начале модуля, а создаётся новая ЛОКАЛЬНАЯ переменная БД. Если бы тип был попроще - можно бы было хранить это в реквизитах формы и не париться. Вопрос: Где хранить на протяжении всей работы обработки СOMобъект?? (Ясен пень, что можно хранить СCom-объект во временном хранилище, каждый раз засоввыая и высоввывая его оттуда, но это весьма достает когда таких объектов много, кроме того является ли это корректным с точки зрения быстродействия??) |
|||
1
xReason
27.04.10
✎
08:52
|
Все верно. Переменная не живет
А как долго тебе надо хранить ком объект? Ну и потом он у тебя коннекшен. Ты держишь коннект всегда открытым? |
|||
2
Alex_1987
27.04.10
✎
09:08
|
Ок, спасибо! Так я и думал...
На самом деле все гораздо сложнее, чем в вышеозначенном примере и коннект должен быть всегда открыт) То есть через вр. хранилище..., или может еще кто-нибудь какой-нибудь способ предложит?? P.S. Ну все таки почему так?? Не могу привыкнуть после 8.1., там они жили у меня в объекте, а тут нас из объекта выгнали, тк из формы к объекту обратиться нельзя, так еще и форме переменные не храняться! |
|||
3
Defender aka LINN
27.04.10
✎
09:13
|
(2) Есть реквизиты формы, есть временное хранилище. Нафига переменные?
|
|||
4
Alex_1987
27.04.10
✎
09:19
|
(3) Действительно!Особенно, учитывая то, что все равно в них нифига хранить нельзя!
|
|||
5
H A D G E H O G s
27.04.10
✎
09:20
|
ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Объект,Новый УникальныйИдентификатор());
|
|||
6
Alex_1987
27.04.10
✎
09:22
|
(5) Так и будет))
Thanx |
|||
7
H A D G E H O G s
27.04.10
✎
09:23
|
Однако есть 2 момента - толи фичи толи бага
|
|||
8
Alex_1987
27.04.10
✎
09:25
|
(7) Просвяти меня!
|
|||
9
H A D G E H O G s
27.04.10
✎
09:26
|
1. Несмотря на то, что ВР не привязано ни к каокй форме - она будет жить даже при последующих Серверных вызовах
2. Как привязанное, так и не привязанное хранилище имеет свое время жизни, если его не обновлять - оно исчезнет. |
|||
10
Alex_1987
27.04.10
✎
09:27
|
А... дадада я в курсе...
Спасибо)) |
|||
11
H A D G E H O G s
27.04.10
✎
09:27
|
Это эмпирика.
Если кто меня ткнет в теорию - буду благодарен. |
|||
12
H A D G E H O G s
27.04.10
✎
09:27
|
(10) Хм...
Откуда инфа? |
|||
13
Defender aka LINN
27.04.10
✎
09:27
|
(9) Хранилище остается. COM-объекты отваливаются. Хотя сильно долго не держал, через время, возможно, и хранилище самоубьется.
|
|||
14
Alex_1987
27.04.10
✎
09:30
|
(12) Из личного опыта...
|
|||
15
Alex_1987
27.04.10
✎
09:30
|
Хотя скорее у меня как в (13) было.
|
|||
16
H A D G E H O G s
27.04.10
✎
09:31
|
(13) Счазт затестим...
|
|||
17
Alex_1987
27.04.10
✎
09:41
|
Через пол часа отпали COM-объекты
|
|||
18
xReason
27.04.10
✎
10:19
|
А может пойти путем - Модуль + Повторное использование возвращаемых значений
как минимум если объект сдох, его можно будет пересоздать |
|||
19
H A D G E H O G s
28.04.10
✎
14:52
|
||||
20
Alex_1987
29.04.10
✎
07:46
|
(19) Спасибо большое! Я решил эту проблему примерно так же, только не по таймеру смотрю жив или нет, а в момент обращения к com-объекту.
Спасибо всем за помощь! |
|||
21
Alex_1987
30.04.10
✎
11:24
|
Уважаемый, H A D G E H O G s, о твоей статье.
Позволю себе внести пару замечаний. Буду очень благодарен, если ты объяснишь мне в чем я не прав если что... Вот тема из синт.помощника: ///////////////////////////// ПоместитьВоВременноеХранилище (PutToTempStorage) Синтаксис: ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Параметры: <Данные> (обязательный) Тип: Произвольный. Данные, которые необходимо поместить во временное хранилище. <Адрес> (необязательный) Тип: УникальныйИдентификатор; Строка. Адрес во временном хранилище, по которому надо поместить данные. Или уникальный идентификатор формы, во временное хранилище которой, надо поместить данные и вернуть новый адрес. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. /////////////////////////////// Если прочитаем про адрес, то вытекает вот что: "В ФАКЕ процедуры ПоместитьВоВременноеХранилище() можно почитать, что хранилище живет, пока живет его форма-владелец, идентификатор которой мы передаем во 2-ом пераметре", но ты передаешь во втором параметре не ее УИ а Новый УИ! Поэтому форма не будет владельцем этого хранилища. "то чудес не будет. Причина чуда - неизвестна." Может причина чуда в этом?? Из синт.помощника: "Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы." Просто хочу понять для себя этот механизм, что бы не осталось "повисщих" вопросов... |
|||
22
Alex_1987
30.04.10
✎
11:26
|
Так что без обид))
|
|||
23
Alex_1987
30.04.10
✎
11:31
|
ААА... все понял что ты имел ввиду во втором ЗАМЕЧАНИИ, пардон...
|
|||
24
Alex_1987
30.04.10
✎
11:33
|
Че-то я запутался в конец... Чудо в том что оно остается живо с произвольным УИ или в том что оно мрет без 2го параметра.
|
|||
25
H A D G E H O G s
30.04.10
✎
11:40
|
удо в том что оно остается живо с произвольным УИ
|
|||
26
H A D G E H O G s
30.04.10
✎
11:41
|
Чудо
|
|||
27
Alex_1987
30.04.10
✎
11:45
|
ААААААААААА... Я лошара!!!
Ну тогда все ок, я просто невкурил)) Спасибо H A D G E H O G s, оличная статья)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |