Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопрос по MetaInfoClasses (число прочтений - 2779 )
kenzzzooo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 26
Местоположение: Минеральные Воды
Зарегистрирован: 06. Января 2012
Пол: Мужской
Вопрос по MetaInfoClasses
22. Марта 2015 :: 19:57
Печать  
Доброго времени суток Улыбка

Посмотрел тему по данному классу, начал с документации и пошло. Вопрос вот в чем:

1. ОчиститьДанныеОптимизацииКлассов() - очищает метаданные у зарегистрированных классов, это понятно.
2. Как работает ЗагрузитьОписаниеКлассов() - не совсем понял. Что будет если классы, в новом описании, будут совпадать? Выдаст исключение или заменит?

Теперь к чему эти вопросы. Пишется конфигурация в которой роль 1С 7.7 - пускалка кода, т.е. в самой конфигурации нет ни констант, ни справочников, ни документов, ни чего бы то ни было из стандартной поставки. Зато есть описание подключения к серверу SQL и описание классов, которые инициализируются через _SQLCreate(). Авторизация пользователей осуществляется внутри 1С. Описание конфигурации в xml. Так вот, переключение между конфигурациями тоже внутри этого сеанса происходит. В каждой из них - есть свои классы, переключение уже реализовано. Но и в одной и в другой конфигурации будет, например, таблица "Товары" и имена классов будут совпадать. Как себя поведет в этом случае MetaInfoClasses при использовании ЗагрузитьОписаниеКлассов()?

ЗЫ. И не спрашивайте зачем это нужно Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #1 - 23. Марта 2015 :: 07:54
Печать  
ИМХО должно быть исключение.
Протестируй, это же несложно.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kenzzzooo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 26
Местоположение: Минеральные Воды
Зарегистрирован: 06. Января 2012
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #2 - 23. Марта 2015 :: 09:10
Печать  
Да вчера не получилось потестить, вот и спросил. Исключение формирует, а жаль... Можно сделать как-нибудь чтобы переопределял?

P.S. Этот вопрос еще очень давно поднимался, но, как я понял, к чему-то общему не пришли.
  
Наверх
 
IP записан
 
kenzzzooo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 26
Местоположение: Минеральные Воды
Зарегистрирован: 06. Января 2012
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #3 - 23. Марта 2015 :: 10:49
Печать  
artbear писал(а) 23. Марта 2015 :: 07:54:
ИМХО должно быть исключение.
Протестируй, это же несложно.


artbear, правильно ли я в исходниках понял, что вот этот кусок кода выдает исключение:

Код
Выбрать все
if (m_Meta.m_ClassBindFile.Lookup(strResultClassName, strResult))
	{
	  CString error;
	  //error += strResultClassName; error += " уже был определен ранее";
	  error.Format("Класс с именем: %s уже был определен ранее", strResultClassName.operator LPCTSTR());
	  MessageBox(NULL, error, "Ошибка определения класса", MB_ICONERROR);
	  // TODO artbear - после рефакторинга здесь видно неучтенный вариант, т.к. после ошибки работа продолжается :(
	}
	else{
	  m_Meta.m_ClassBindFile[strResultClassName] = NameOfFile;
	  m_Meta.m_DynamicAddedClassBindFile[strResultClassName] = NameOfFile;
	} 



Можно ли сделать, например, третий параметр у ЗагрузитьОписаниеКлассов() необязательный, который бы менял поведение этого метода и он бы переписывал определение классов или это трудно осуществимо?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #4 - 23. Марта 2015 :: 12:20
Печать  
Будут проблемы:
1. Что делать с глобальными объектами этого класса или объектами этого класса, которые уже существую в памяти?
2. ИМХО довольно много тонкостей взаимодействия кода реализации ООП при изменения кода класса на лету.
Попробуй изменить, напиши тесты.
Буду рад, если сможешь побороть
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kenzzzooo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 26
Местоположение: Минеральные Воды
Зарегистрирован: 06. Января 2012
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #5 - 23. Марта 2015 :: 14:02
Печать  
artbear писал(а) 23. Марта 2015 :: 12:20:
Будут проблемы:
1. Что делать с глобальными объектами этого класса или объектами этого класса, которые уже существую в памяти?
2. ИМХО довольно много тонкостей взаимодействия кода реализации ООП при изменения кода класса на лету.
Попробуй изменить, напиши тесты.
Буду рад, если сможешь побороть


1. Об этом должен, как мне кажется, позаботиться разработчик прикладного решения.
2. Эх, если бы я мог, я бы постарался Улыбка Только С++. для меня темный лес, очень темный Улыбка

В принципе, у меня есть набор базовых классов, которые не будут меняться и на момент загрузки описаний не будут существовать. но и перегружаться этим методом тоже не будут. Остальные классы будут инициироваться при создании основного класса и вот тут нужна перезагрузка Улыбка
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #6 - 16. Апреля 2015 :: 11:39
Печать  
kenzzzooo писал(а) 23. Марта 2015 :: 14:02:
2. Эх, если бы я мог, я бы постарался Улыбка Только С++. для меня темный лес, очень темный Улыбка

возьми фонарик и поводыря )
  
Наверх
IP записан
 
kenzzzooo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 26
Местоположение: Минеральные Воды
Зарегистрирован: 06. Января 2012
Пол: Мужской
Re: Вопрос по MetaInfoClasses
Ответ #7 - 16. Апреля 2015 :: 12:34
Печать  
trdm писал(а) 16. Апреля 2015 :: 11:39:
возьми фонарик и поводыря )


боюсь, что, в ближайшее время, в качестве фонарика и поводыря у меня намечается DAX и MorphX с X++, как бесплатное приложение к DAX Улыбка Примерно с начала мая Улыбка Если сюда еще и C++ добавить, то я сам офонарею Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать