#0
by Alex_1987
Всем добрый день! Помогите пожалуйста: В начале модуля упр. формы обработки 8.2. создаю переменную таким образом &НаСервере Потом в при создании формы на сервере создается экземпляр Comобъекта для соединения с БД. Но при обращении к переменной БД из другой функции сервера, она становится НЕОПРЕДЕЛЕННОЙ. Такое ощущение что в вышеописанной процедуре обращение происходит не к явно описанной переменной в начале модуля, а создаётся новая ЛОКАЛЬНАЯ переменная БД. Если бы тип был попроще - можно бы было хранить это в реквизитах формы и не париться. Вопрос: Где хранить на протяжении всей работы обработки СOMобъект?? (Ясен пень, что можно хранить СCom-объект во временном хранилище, каждый раз засоввыая и высоввывая его оттуда, но это весьма достает когда таких объектов много, кроме того является ли это корректным с точки зрения быстродействия??)
#1
by xReason
Все верно. Переменная не живет А как долго тебе надо хранить ком объект? Ну и потом он у тебя коннекшен. Ты держишь коннект всегда открытым?
#2
by Alex_1987
Ок, спасибо! Так я и думал... На самом деле все гораздо сложнее, чем в вышеозначенном примере и коннект должен быть всегда открыт) То есть через вр. хранилище..., или может еще кто-нибудь какой-нибудь способ предложит?? P.S. Ну все таки почему так?? Не могу привыкнуть после 8.1., там они жили у меня в объекте, а тут нас из объекта выгнали, тк из формы к объекту обратиться нельзя, так еще и форме переменные не храняться!
#5
by H A D G E H O G s
ПараметрыСеанса.АдресCOMОбъекта=ПоместитьВоВременноеХранилище(Объект,Новый УникальныйИдентификатор);
#9
by H A D G E H O G s
1. Несмотря на то, что ВР не привязано ни к каокй форме - она будет жить даже при последующих Серверных вызовах 2. Как привязанное, так и не привязанное хранилище имеет свое время жизни, если его не обновлять - оно исчезнет.
#13
by Defender aka LINN
Хранилище остается. COM-объекты отваливаются. Хотя сильно долго не держал, через время, возможно, и хранилище самоубьется.
#18
by xReason
А может пойти путем - Модуль + Повторное использование возвращаемых значений как минимум если объект сдох, его можно будет пересоздать
#20
by Alex_1987
Спасибо большое! Я решил эту проблему примерно так же, только не по таймеру смотрю жив или нет, а в момент обращения к com-объекту. Спасибо всем за помощь!
#21
by Alex_1987
Уважаемый, H A D G E H O G s, о твоей статье. Позволю себе внести пару замечаний. Буду очень благодарен, если ты объяснишь мне в чем я не прав если что... Вот тема из синт.помощника: Синтаксис: ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Параметры: <Данные> (обязательный) Тип: Произвольный. Данные, которые необходимо поместить во временное хранилище. <Адрес> (необязательный) Тип: УникальныйИдентификатор; Строка. Адрес во временном хранилище, по которому надо поместить данные. Или уникальный идентификатор формы, во временное хранилище которой, надо поместить данные и вернуть новый адрес. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. /////////////////////////////// Если прочитаем про адрес, то вытекает вот что: "В ФАКЕ процедуры ПоместитьВоВременноеХранилище можно почитать, что хранилище живет, пока живет его форма-владелец, идентификатор которой мы передаем во 2-ом пераметре", но ты передаешь во втором параметре не ее УИ а Новый УИ! Поэтому форма не будет владельцем этого хранилища. Может причина чуда в этом?? Из синт.помощника: "Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы." Просто хочу понять для себя этот механизм, что бы не осталось "повисщих" вопросов...
#24
by Alex_1987
Че-то я запутался в конец... Чудо в том что оно остается живо с произвольным УИ или в том что оно мрет без 2го параметра.
#27
by Alex_1987
ААААААААААА... Я лошара!!! Ну тогда все ок, я просто невкурил)) Спасибо H A D G E H O G s, оличная статья))
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v8 строка подключения V8.Connect
- Волшебнику и всем кто поможет по теме "v8 УРБД на v8 за четыре шага"
- v8: при v8 = Новый COMОбъект("V8.Application") дает ошибку ..
- v8: Не могу подключиться из V8 к V8
- v8: есть ли аналоги openconf для 1с v8
- v8: Как удалить 1С v8 ?
- 8.2 Переменная модуля объекта в модуле управляемой формы
- Какие процедуры-функции размещать в модуле формы, а какие в модуле объекта ?
- v8: Вызов процедуры в Модуле Формы из Модуля Объекта
- v8: не видна переменная в модуле формы
- v8: Активизировать конкретную ячейку таблицы для управляемой формы. Как ?!
- Глобальная переменная не видна в модуле
В этой группе 1С
- Инструкция по поднятию 1С сервера на MSSQL 2008 Express Edition
- ДБФ.НайтиПоКлючу(0) почему не работает?
- Windows XP SP3 Последний релиз
- УТ 10.3.10.4 групповая обработка справочников и документов. Не работает.
- Потеря данных при сохранение в Excel
- УТ 10,3 Элементарное действие но...
- Помогите с Hasp ключом... .не видит его по сети(
- Бланк товарного наполнения
- как удалить фото в 1с81 УТ
- Индексы в дереве значений 8.2
- Выгрузить в ТЗ набор записей
- учет в шт. и кг. как на одном складе учитывать в штуках а на другом в кг?
- 1с 8.0 отладка внешней печ.формы
- Кто сталкивался? The query processor ran out of stack space during query optimization
- Настройка сканер штрих-кода Metrologic MS9540 в УТ
- В УТ банковские документы (нуменация согласно счету)
- v7: Тестирование и исправление ИБ выдало много ошибок при проверки на физическую целостность
- Доступ к одной колонке табличной части документа.
- СКД 8.2: программный вывод в дерево значений на форме
- Число прописью. Ноль Копеек = 00