Предупреждаю! Писалось для эксперимента, поэтому содержит очень ограниченный функционал предназначенный для проверки самой возможности. Не является законченным решением.
1. Некоторые стандартные функции как СоздатьОбъект достаточно просто реализовать в глобальном модуле.
В данном случае реализовал только для создания справочников. На самом деле вызывается "статический" метод у обработки который создает объект внешней компоненты, которая по сути "прокси" для вызова методов и атрибутов из объекта обработки которая является ссылкой внутри объекта компоненты. Вот такая немного запутанная формулировка, но дальше будет понятней.
Функция СоздатьОбъект(ИмяОбъекта) экспорт
Рез = "";
ДлинаСправочник = СтрДлина("Справочник");
Если НРег(Лев(ИмяОбъекта,ДлинаСправочник))="справочник" Тогда
Рез = Обработки.Справочник.СоздатьПоИмени(Сред(ИмяОбъекта,СтрДлина("Справочник")+2));
КонецЕсли;
Возврат Рез;
КонецФункции
2. Сразу покажу как работает пример для тестирования. Пример простой и выглядит полностью как в 7-ке. Естественно в реальности будет много нюансов.
Процедура ТестСправочникаНажатие(Элемент)
Товары = СоздатьОбъект("Справочник.Номенклатура");
Товары.ВыбратьЭлементы();
Пока Товары.ПолучитьЭлемент() = 1 Цикл
Сообщить(Товары.Наименование);
Сообщить(Товары.Реквизит1);
КонецЦикла;
КонецПроцедуры
3. Работает это так. Когда я обращаюсь к Товары.ПолучитьЭлемент(), то из компоненты происходит вызов функций
Обработки.Справочники.КолвоПараметровМетода(ИмяМетода)
Обработки.Справочники.ВызватьФункцию(ИмяМетода)
... ИначеЕсли ИмяФункции = "ПолучитьЭлемент" Тогда ...
Или когда запрашиваю атрибут
Товары.Реквизит1
, то вызываются
Обработки.Справочники.ПолучитьСвойство(ИмяСвойства)
Обработки.Справочники.УстановитьСвойство(ИмяСвойства,Значение)
Таким образом почти вся логика слоя совместимости ложится на код 8-ки и это позволяет разработать внешнюю компоненту не содержащую специфичного кода для каждой конфигурации...