Всю ветку не осилил, много букв.
Имею сказать следующее:
Скорее всего, ЗаменитьЭкземплярБазовогоКласса, ищет базовый класс по одинаковому алгоритму с ПолучитьБазовыйКласс. Который в свою очередь, Deb по моей просьбе сделал НЕПОЛИМОРФНЫМ, то есть поиск ВСЕГДА ведется начиная от класса, из которого был вызов, а не из конечного класса.
Поясняю, для чего это нужно:
Допустим, у меня есть базовый класс
Регистры
, с неким общим функционалом. От него наследованы
Регистр_Товары,
Регистр_Взаиморасчеты.
В своем коде они для обращения к методам базовых классов используют
ПолучитьБазовыйКласс("Регистры");
что совершенно естественно. Теперь я создаю класс
Док_Продажа : Проведение, Регистр_Товары, Регистр_Взаиморасеты
До версии кажется 1.7.0.3 (а может и ранее), когда базовый класс искался начиная с последнего, в этом случае методы из Регистр_Взаиморасеты, пытаясь обратится к своему базовому классу, получали объект "Регистры" от класса Регистр_Товары, что приводило к ошибкам. Поэтому поведение ПолучитьБазовыйКласс было изменено,
с тем чтобы базовый класс всегда искался от вызывающего класса.
Возможно, причина в этом.
Федор, а не пробовал ты сделать так:
//В базовом классе:
Процедура Инит(Конт) Экспорт
.... // Некая инициализация
Сам(Контекст).СделатьЗамену(Конт);
// В наследниках
Процедура СделатьЗамену(Конт) Экспорт
ЗаменитьЭкземплярБазовогоКласса(Конт);