Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопрос-предложение по динамическим классам (число прочтений - 1962 )
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Вопрос-предложение по динамическим классам
29. Сентября 2009 :: 22:11
Печать  
С помощью встроенного класса "ВыполняемыйМодуль" можно создавать динамические классы со своими свойствами и методами.

1. Как создать динамический класс-наследник от базового класса? Возможно ли вообще наследование в динамических классах?
2. Как сделать динамический класс глобальным? Скажем определили его один раз при начале работы системы, а затем в любом месте конфигурации создаем экземпляры этого класса. Опять же, динамический класс - по сути уже готовый экземпляр без имени. Это неправильно.
3. Где конструкторы/деструкторы?

Я все это к тому, что в моем представлении динамический класс должен быть аналогом обычного класса, только без описания в DefCls, ну и разумеется с возможностью создания/удаления на лету в любой момент времени.

Скажем так:

Код
Выбрать все
// *** где-то когда-то... ***

// создаем экземпляр встроенного класса
ДК=СоздатьОбъект("ДинамическиеКлассы");

// модуль класса
ДК.Модуль="
   |Перем Вид Экспорт;
   |
   |Процедура Конструктор()
   |.......
   |КонецПроцедуры
   |
   |Процедура ВыбратьДокументыПоФильтру(НачДата,КонДата,Фильтр) Экспорт
   |.......
   |КонецПроцедуры
   |";

// компилируем модуль, встраиваем в окружение
ДК.СоздатьКласс("
   |ДокументРасширенный:Документ
   |{
   |   Число ВыбратьДокументыПоФильтру(Дата НачДата,Дата КонДата,Строка Фильтр);
   |}
   |";

// экземпляр встроенного класса уничтожаем, класс остается в окружении
ДК="";

// *** в одном из модулей... ***

// создаем экземпляр динамического класса
Док=СоздатьОбъект("ДокументРасширенный");
.......

// *** опять где-то когда-то... ***

ДругойДК=СоздатьОбъект("ДинамическиеКлассы");

ДругойДК.УдалитьКласс("ДокументРасширенный");

ДругойДК.Модуль=".......";

// переопределяем динамический класс
ДругойДК.СоздатьКласс("
   |ДокументРасширенный:Документ
   |.......
   |";

// экземпляр встроенного класса уничтожаем, переопределенный класс остается в окружении
ДругойДК="";
 



Ну вот, как бы так...

Что скажете, такое вообще возможно реализовать в 1С++?
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #1 - 30. Сентября 2009 :: 04:33
Печать  
Если я правильно понял цель - то проще так:
Код
Выбрать все
ДР = СоздатьОбъект( "ДокументРасширенный" );
ДР.Работаем......

// .... случилось страшное,
// ДокументРасширенный в текущей версии надоел .....
ДР = "";
миф = СоздатьОбъект( "MetaInfoClasses" );
миф.ОчиститьДанныеОптимизацииКлассов();

// Любым способом меняем
// содержимое файла определения КОП.ДокументРасширенный, и снова
ДР = СоздатьОбъект( "ДокументРасширенный" );
ДР.Работаем......

 

  
Наверх
ICQ  
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #2 - 30. Сентября 2009 :: 06:55
Печать  
Файл реализации КОП один, а пользователей много. Потому на практике менять его малоприменимо, если только при отладке в локали.

Кроме того, необходимость в DefCls остается, а хотелось бы чтобы отсутствовала.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #3 - 30. Сентября 2009 :: 10:13
Печать  
Что-то похожее здесь обсуждалось.
по поводу defcls - http://www.1cpp.ru/docum/icpp/html/MetaInfoClasses.html#readdefinesofclasses
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #4 - 30. Сентября 2009 :: 10:25
Печать  
И вот тут Артур делал что-то похожее.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #5 - 30. Сентября 2009 :: 12:14
Печать  
Прикольно! Улыбка Спасибо, господа!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос-предложение по динамическим классам
Ответ #6 - 01. Октября 2009 :: 12:06
Печать  
JohnyDeath писал(а) 30. Сентября 2009 :: 10:25:
И вот тут Артур делал что-то похожее.

Да, это рабочий код, юзаемый в боевых базах.
В нем и вобще в 1С++ мной давно решены сабжевые вопросы.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать