Тут надо все обдумывать. В 8ке я не спец.
Как сказал Dmitro, если реквизит обработки имеет тип ОбработкаОбъект, он создается сам, автоматом.
Как насчет других типов - не знаю, наверное создаются просто пустые (типа как в 7ке - СоздатьОбъект("Документ")
Если нужны установить готовый - передавать в метод CreateObject твоей фабрики, с указанием, для какого базового класса передается.
Например
а = фабрика.Создать("МойКласс", "Документ=", НужныйДок);
реквизиты обработки доступны для записи, те ты в ВК можешь создать объект обработки, и присвоить ее реквизиту переданное значение.
Сами обработки называть именно с префиксом "класс" не нужно. Нужен способ определить, какие из реквизитов создаваемой обработки являются базовыми классами. Как вариант - название такого реквизита должно начинаться с "класс", например реквизит "классБазовый", тип реквизита - Обработка.Объект.БазоваяОбработка. Еще вариант - у любой обработки можно получить метаданные, перебирать в них реквизиты, и то что это класс, определять из допустим синонима метаданных реквизита обработки.
Теперь виртуальность. Допустим декларируем, что реквизит обработки с именем "Контекст" - предопределенный, и в твоей ВК при создании объектов, если у них есть реквизит Контекст, записывать туда ссылку на создаваемый объект:
Например, иерархия Класс2 наследуем от Класс1.
Создается твой COM объект, obj1, для Класс2.
В созданном объекте обработки в реквизит Контекст записывается ссылка на obj1.
Перебирая его базовые классы, находим Класс1, у него тоже есть реквизит Контекст. Туда тоже записываем ссылку на obj1.
Теперь в Класс1 можно написать Контекст.Метод1();
Если Класс2 переопределил Метод1, то вызовется его реализация, иначе реализация из Класс1.
Такой метод прмименяется в 1С++, называется Сам(Контекст).