С помощью встроенного класса "ВыполняемыйМодуль" можно создавать динамические классы со своими свойствами и методами.
1. Как создать динамический класс-наследник от базового класса? Возможно ли вообще наследование в динамических классах?
2. Как сделать динамический класс глобальным? Скажем определили его один раз при начале работы системы, а затем в любом месте конфигурации создаем экземпляры этого класса. Опять же, динамический класс - по сути уже готовый экземпляр без имени. Это неправильно.
3. Где конструкторы/деструкторы?
Я все это к тому, что в моем представлении динамический класс должен быть аналогом обычного класса, только без описания в DefCls, ну и разумеется с возможностью создания/удаления на лету в любой момент времени.
Скажем так:
// *** где-то когда-то... ***
// создаем экземпляр встроенного класса
ДК=СоздатьОбъект("ДинамическиеКлассы");
// модуль класса
ДК.Модуль="
|Перем Вид Экспорт;
|
|Процедура Конструктор()
|.......
|КонецПроцедуры
|
|Процедура ВыбратьДокументыПоФильтру(НачДата,КонДата,Фильтр) Экспорт
|.......
|КонецПроцедуры
|";
// компилируем модуль, встраиваем в окружение
ДК.СоздатьКласс("
|ДокументРасширенный:Документ
|{
| Число ВыбратьДокументыПоФильтру(Дата НачДата,Дата КонДата,Строка Фильтр);
|}
|";
// экземпляр встроенного класса уничтожаем, класс остается в окружении
ДК="";
// *** в одном из модулей... ***
// создаем экземпляр динамического класса
Док=СоздатьОбъект("ДокументРасширенный");
.......
// *** опять где-то когда-то... ***
ДругойДК=СоздатьОбъект("ДинамическиеКлассы");
ДругойДК.УдалитьКласс("ДокументРасширенный");
ДругойДК.Модуль=".......";
// переопределяем динамический класс
ДругойДК.СоздатьКласс("
|ДокументРасширенный:Документ
|.......
|";
// экземпляр встроенного класса уничтожаем, переопределенный класс остается в окружении
ДругойДК="";
Ну вот, как бы так...
Что скажете, такое вообще возможно реализовать в 1С++?