Имя: Пароль:
1C
 
Как правильно разорвать COM соединение (7.7 - 8.2)
0 ksupalo
 
08.10.10
15:29
Добрый день!

После перевода ряда баз на 8.2 возникла проблема - процедура, которая работает по нажатию кнопки (вызывает процедуры соединения по COM и выполнения запроса) зависает после шага "КонецПроцедуры". Все, что в теле процедуры нормально отрабатывает.
В процедуре в цикле вызываются несколько баз 8.1 и 8.2
1 Рэйв
 
08.10.10
15:32
СОМ="";
2 ksupalo
 
08.10.10
15:32
//==============================================================
Функция ОткрытиеБазы(ТипОткрытия,СтрокаПодключения) Экспорт  
   ЗакрытиеКОМСоединения();
   // Открываем
   Если ТипОткрытия = 1 тогда                         // Тип открытия связан с реквизитом Режим справочника Фирм,
       cntrLocal82 = СоздатьОбъект("V82.ComConnector");     // и означает соединение с базой 8.2 при значениие 1
       connectionLocal82 = cntrLocal82.Connect(СтрокаПодключения);
       Возврат connectionLocal82;
   Иначе
       cntrLocal81 = СоздатьОбъект("V81.ComConnector");
       connectionLocal81 = cntrLocal81.Connect(СтрокаПодключения);
       Возврат connectionLocal81;
   КонецЕсли;
КонецФункции

Сделал две переменные, т.к. вариантов просто не было. Но это не помогло.

//====================================================
Процедура ЗакрытиеКОМСоединения() Экспорт
   // Обрываем коннект, если еще не оборвали ранее
   cntrLocal81 = 0;
   connectionLocal81 = 0;
   cntrLocal82 = 0;
   connectionLocal82 = 0;
КонецПроцедуры

Эта функция рвала соединение. пробовал "" и 0 - все равно зависало.
Проблема решилась случайно - просто закаментил зануление процедур. После этого все стало работать.
3 ksupalo
 
08.10.10
15:33
Вопрос такой - как из 7.7 правильно разрывать COM соединение с 8.1???

С 8.1 никаких проблем не было никогда.
Заранее спасибо.
4 ksupalo
 
08.10.10
15:35
Вопрос такой - как из 7.7 правильно разрывать COM соединение с 8.2??? -

сорри, уже просто совсем мозг сжег :(
5 ksupalo
 
08.10.10
15:36
Не понятно, что происходит с оставшимися соединениями...
В принципе, все переменные вынес в документ - с закрытием документа они должны уничтожаться... Или... не знаю...
6 ksupalo
 
08.10.10
15:38
//====================================================
Процедура ЗакрытиеКОМСоединения() Экспорт
   // Обрываем коннект, если еще не оборвали ранее
   //cntrLocal81 = 0;
   //connectionLocal81 = 0;
   //cntrLocal82 = 0;
   //connectionLocal82 = 0;
КонецПроцедуры

Так работает :)
7 ksupalo
 
08.10.10
16:21
Не ужели никто не соединяется по СОМ?
8 ilkoder
 
08.10.10
16:49
Тут проскакивало как-то, что типа нужно обнулять все переменные хоть как-то задейстованные при обмене
9 iloktev
 
08.10.10
17:09
Есть возможность выложить код самой процедуры, что в ней выполняется?