nvg писал(а) 03. Ноября 2006 :: 09:36:Сталкивался с подобной ситуацией.
Писал отдельный класс-обертку для класса ODBCRecordSet (для доступа к сторонней БД).
Версия 1С++ 2.0.3.1. При попытке закрыть соединение объекта ODBCDatabase 1с падала.
РекСет=0 перед БД.Закрыть() - и 1с перестала падать.
Частично подтверждаю.
При организации распределенной работы на трех серверах создавались, помимо родного 1С-овского, еще два соединения:
//Начало проц.Перем .........
Перем лИстБаза;
Перем лОтчБаза;
Перем лИстСоединение;
Перем лОтчСоединение;
СтрокаСоед ="DRIVER=SQL Server;UID=...................;
лОтчСоединение=СоздатьОбъект("ODBCDatabase");
лОтчСоединение.Соединение(СтрокаСоед);
Если лОтчСоединение.ЕстьСоединение()=0 Тогда
Сообщить("................");
Возврат;
КонецЕсли;
лОтчБаза=СоздатьОбъект("ODBCRecordSet");
лОтчБаза.УстБД(лОтчСоединение);
СтрокаСоед ="DRIVER=SQL Server;...............;
лИстСоединение=СоздатьОбъект("ODBCDatabase");
лИстСоединение.Соединение(СтрокаСоед);
Если лИстСоединение.ЕстьСоединение()=0 Тогда
Сообщить(".......................");
// ТОЧКА 1 Возврат;
КонецЕсли;
лИстБаза=СоздатьОбъект("ODBCRecordSet");
лИстБаза.УстБД(лИстСоединение);
//Здесь всякие разные извращенные запросы............//............тыщи на полторы строк кода............// ТОЧКА 2Возврат;
Так вот,
после использования данной процедуры 1С непредсказуемо вылетало через непредсказуемый промежуток времени. Или же не вылетало вообще - тоже непредсказуемо.
После шаманских вставок
В точке 1:
лОтчБаза=0;
лОтчСоединение.Закрыть();
В точке 2:
лОтчБаза=0;
лОтчСоединение.Закрыть();
лИстБаза=0;
лИстСоединение.Закрыть();
вылеты прекратились