sedmin писал(а) 30. Мая 2006 :: 03:52:Вот этой фразы я не понял, хотя слова, вроде, все знаю. Даже ЗаменитьЭксзБазовогоКласса.
ок, рассказываю с кодом, на пальцах.
Итак, у нас есть два документа, и два класса, расширяющих функционал штатных 1С-вых документов.
Например "Документ.РКО" => "Документ_РКО" и "Документ.РКО_Вексельный" => "Документ_РКО_Вексельный".
Смотрим мы в модуль проведения каждого из этих документов и видим, что у нас имеется одинаковая последовательность методов:
_Сам = СоздатьОбъект("Документ_РКО");
_Сам.ЗаменитьЭксзБазовогоКласса("Документ.РКО", Контекст);
_Сам.__Инит__();
В _Сам.__Инит__() происходит расчет всяких разных нужных данных. Например бухитогов на позицию документа. Более того, метод __Инит__() для обоих классов одинаковый, и реализован в суперклассе "Документы_СБухИтогами".
Хочется и строчку _Сам.ЗаменитьЭксзБазовогоКласса("Документ.РКО", Контекст); засунуть в этот самый __Инит__(), с тем чтобы это выглядело примерно так:
_Сам = СоздатьОбъект("Документ_РКО");
_Сам.__Инит__(Контекст);
Так вот, когда вызов ЗаменитьЭксзБазовогоКласса() происходит в контексте базового класса - он пытается (мне так кажется) заменить экземпляр именно базового класса, а не того подчиненного, который на самом деле был создан функцией СоздатьОбъект().