Для тестирования ситуации создал такую конструкцию:
Если ПустоеЗначение(БазаОле) = 0 Тогда
Рез = БазаОле.ExecuteBatch("ЗавершитьРаботуСистемы(0)"); // здесь всегда -1
БазаОле = 0;
КонецЕсли;
Предупреждение("Пауза "+ Рез);
БазаОле=СоздатьОбъект("V77.Application");
// детально см. выше
..................
РезультатПодключения =
БазаОле.Initialize ( БазаОле.RMTrade , "/d" +
..................
//
ОлеСпрФирмы = БазаОле.CreateObject("Справочник.Фирмы");
сзФирмы = СоздатьОбъект("СписокЗначений");
ОлеСпрФирмы.ВыбратьЭлементы();
Пока ОлеСпрФирмы.ПолучитьЭлемент() = 1 Цикл
сзФирмы.ДобавитьЗначение(ОлеСпрФирмы.ТекущийЭлемент().Наименование);
КонецЦикла;
// выбор фирмы
Если сзФирмы.ВыбратьЗначение(ВыбФирма,"Выберите фирму",1,,2) = 0 Тогда
Возврат;
КонецЕсли;
//
Параллельно запустил базу ОЛЕ в режиме МОНИТОР под именем Новый2, чтобы видеть список подключенных пользователей
При первом подключении выбрал имя Администратор (все используемые имена имеют одинаковые права)
Перед вторым подключением Пауза длится минуты. Из списка подключений Администратор не исчезает.
При втором подключении, если выбираю предыдущее имя (Администратор), то происходит завершение по ошибке на строке "ОлеСпрФирмы = БазаОле.CreateObject("Справочник.Фирмы"); - невозможно создать объект".
Если выбираю другое имя (Новый1), то программа работает нормально, но из списка подключений Администратор исчезает только после отработки группы "Выбор фирмы"