В общем, решил я проблему, правда немного корявенько, как мне кажется, надеюсь здешние спецы подскажут прав я или нет.
Короче говоря, когда я в подчиненном классе перед возвратом в 1С объекта пытался грохнуть диспатч, то выходила ругань, т.к. получалось, что в тот момент когда 1с получает, например таблицу значений и пытается с ней работать, то ссылка на эту таблицу грохается и выпадает ошибка. Фиг поймешь, если я в основном классе (в смысле в том, который загрузил используя ПодключитьВнешнююКомпоненту) использую тот же способ, то 1С не ругается.
Сдеал я так: перед возвратом объекта в 1С я создаю отдельный поток, в котором запускаю цикл while (obj1C != null), а в нем используя конструкцию try, пытаюсь грохнуть диспатч. Пока 1С использует полученный объект, попытка удалить диспатч будет вызывать исключение и цикл будет продолжать работать, как только объект освободится, диспатч грохнется.
Вообще этот вариант хоть и рабочий, но все же мне тут не все понятно. Например, в 1С я пишу:
ПодключитьВнешнююКомпоненту("ORCAS"); //осн. класс
//далее работаю с подчиненным, который дергает диспатч из родительского
crappity smackER = СоздатьОбъект("crappity smackER");
Т = crappity smackER.GetTableWithData(); //получаю таблицу значений с данными
Т.ВыбратьСтроки();
Пока Т.ПолучитьСтроку() = 1 Цикл
Сообщить(Т.Элемент.Наименование);
КонецЦикла;
Ну так вот, когда я грохал диспатч перед возвратом объекта в 1с, на строке "Т.ВыбратьСтроки();" выпадала ошибка " mscorlib: Value cannot be null.". Но когда я грохаю диспатч уже после окончания цикла, а потом снова запускаю код чтения таблицы значений в цикле (например, из другой процедуры), то ошибки не вылетают.
Я собственно спросить хотел, не слишком ли затратен для ресурсов системы такой способ?