Работа с Ole-объектом

  • Автор темы ЧИА
  • Дата начала
H

Hryv

После
БазаОле = ПолучитьПустоеЗначение();
пишем
ВыбФирма = ПолучитьПустоеЗначение();

должно помочь
 
G

Gman

Опробовал вашу конструкцию, все работает корректно. Многократно переподключался между базами и выбирал фирму.
ВыбФирма = ПолучитьПустоеЗначение();
Обнулять такие переменные не обязательно, ведь они содержат лишь ссылки на ОЛЕ объект и мешать закрытию базы не должны.
Конструкция БазаОле = ""; работает гораздо быстрее, нежели БазаОле = ПолучитьПустоеЗначение();.

Видимо причина в другом...
 
H

Hryv

Интересно, что там у автора темы

Конструкция БазаОле = ""; работает гораздо быстрее, нежели БазаОле = ПолучитьПустоеЗначение();.
я не буду спорить, тем более, что сам использую =""
поскольку ситуация была мутная, то я предлагал на всякий случай использовать ПолучитьПустоеЗначение()

Добавлено:
Обнулять такие переменные не обязательно, ведь они содержат лишь ссылки на ОЛЕ объект и мешать закрытию базы не должны.

а вот с этим поспорю, потому что
Если сзФирмы.ВыбратьЗначение(ВыбФирма,"Выберите фирму",1,,2) = 0 Тогда
Возврат;
КонецЕсли;
// В этот момент происходит отключение предыдущего пользователя

то есть базу держит до изменения значения ВыбФирма
при этом ВыбФирма объявлена через Перем, что наводит на некоторые размышления
 
E

evgenyatam

Обнулять такие переменные не обязательно, ведь они содержат лишь ссылки на ОЛЕ объект и мешать закрытию базы не должны.
а вот тут позвольте не согласиться: 1с уничтожает объекты тогда, когда на них больше нет ссылок (причем неважно в том-же модуле или в другом). а с не уничтоженным объектом она скорее всего завершаться не будет.
 
G

Gman

Вызванная из ОЛЕ 1с даже не знает что к ней так обращаются и соответственно не может проверить ссылки на ОЛЕ-контейнеры.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!