Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 ... 11 ОтправитьПечать
Очень популярная тема (более 25 ответов) Динамич. создание классов и подкл. файл. реализац. (число прочтений - 55608 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #90 - 01. Марта 2007 :: 18:08
Печать  
Так кто сказал что его не будет? При создании класса, если он не закэширован, будет идти поиск по имени в установленных каталогах.
Тебе достаточно будет положить туда файл. Вот и все автоподключение.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #91 - 02. Марта 2007 :: 03:54
Печать  
Понимаешь, я не хочу складывать файлы в каталог.
Причины:
1) Вышеописанная ситуация - какая-то обработка со своими спец.классами.
ИМХО удобнее в этой обработке на лету при работе 1С подключить нужные классы, чем закидывать классы в какой-то каталог.
И следующая проблема возникает
2) Основная проблема при динамическом подключении - это версии классов. Как автоматически определить, какой вариант класса использовать - существующий или вновь устанавливаемый?
Пока я сделал так - если пытаемся подключить класс, который уже подключен, выдается исключение.
  

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


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #92 - 02. Марта 2007 :: 05:46
Печать  
Эта ветка напоминает мне старый выпуск Ералаша, где мальчуган объясняет приятелю почему не пересекаются параллельные линии. Смех

artbear
Цитата:
Понимаешь, я не хочу складывать файлы в каталог

1. Никто и не отвергает существующих способов подключения классов. Конечно, для внешней обработки удобнее на лету подключить нужные классы. Более того, если нужны классы, специфичные для конкретного прикладного решения, их и не следует сделать доступными всем базам.
Непонятно, только, почему не ты хочешь "складывать файлы в каталог"? Одно другому, ведь, не мешает.

2. Цитата:
Основная проблема при динамическом подключении - это версии классов.

Да уж, проблема... 

Цитата:
Пока я сделал так - если пытаемся подключить класс, который уже подключен, выдается исключение.

Ну и нормально, чего зря голову-то ломать.
Это, кстати, следствие, вовсе, не моего предложения. Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #93 - 02. Марта 2007 :: 05:54
Печать  
Я не против складывания файлов в каталоге, я против исключения добавленного мной метода по динамическому подключению классов на лету Улыбка

Т.е. я - сторонник обоих подходов!

ЗЫ ага, параллельные линии не пересекаются Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #94 - 02. Марта 2007 :: 05:59
Печать  
artbear писал(а) 02. Марта 2007 :: 03:54:
2) Основная проблема при динамическом подключении - это версии классов. Как автоматически определить, какой вариант класса использовать - существующий или вновь устанавливаемый?
Пока я сделал так - если пытаемся подключить класс, который уже подключен, выдается исключение.

Точнее, если подключаем набор классов, описанных в прм-файле, не буду подключены классы, описанные после дублирующего класса.
Например, в прм-файле описаны 3 класса в след.порядке
Класс1, Класс2, Класс3.
При динамическом подключении этого прм-файла в случае, если Класс2 уже существует, а Класс1 и Класс3 нет, будут подключен Класс1 и не подключены Класс2 и Класс3.
ИМХО это нужно считать ошибкой Улыбка
Вижу два пути решения -
1) или Класс3 должен быть подключен, как и Класс1
2) или все 3 класса не должны быть подключены - типа транзакция при динамическом подключении.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #95 - 02. Марта 2007 :: 06:02
Печать  
artbear писал(а) 02. Марта 2007 :: 03:54:
2) Основная проблема при динамическом подключении - это версии классов. Как автоматически определить, какой вариант класса использовать - существующий или вновь устанавливаемый?
Пока я сделал так - если пытаемся подключить класс, который уже подключен, выдается исключение.


Meta = СоздатьОбъект("MetaInfoClasses");
Meta.ОчиститьДанныеОптимизацииКлассов();

При создании класса вновь скомпилируется файл. А уж обновленный он будет или нет, это твое дело Улыбка

Либо держать кнопку Оптимизация отжатой. Я вижу это таким образом.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #96 - 02. Марта 2007 :: 06:14
Печать  
Понимаешь, ИМХО в этом случае станет довольно сложно следить за классами.
Т.к. будет возможно на лету заменять класс, у которого, возможно, есть уже созданные экземпляры.
А это может привести к большой неразберихе при одновременной работе нескольких пользователей.

Хотя, возможно, все-таки нужно добавить спец.метод типа ДобавитьКлассыСЗаменойСуществующих
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #97 - 02. Марта 2007 :: 06:51
Печать  
Замена класса проводится только на этапе разработки. И imho разработчик сам должен осознавать, что он творит...
И кроме того, а как это сейчас выглядит, когда сбрасываешь оптимизацию? Подмигивание
Это уже реализовано сейчас, и я активно этим пользуюсь. Посылаю всем клиентам комманду сбросить оптимизацию и вуаля, все используют измененный класс.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #98 - 02. Марта 2007 :: 06:55
Печать  
Так... путаница продолжается.

artbear
Цитата:
Точнее, если подключаем набор классов, описанных в прм-файле, не буду
подключены классы, описанные после дублирующего класса.


Что за прм-файл? Дефцлс? Если да, то классы, описаные в нем, подключаются автоматически при старте. Т.о., конфликт, [довольно редкий?] может возникнуть только при запуске внешней обработки. Генерация исключения - нормальное решение. Но, если не лень, можно дать приоритет классу, загружаемому динамически. На мой взгляд, это не принципиально.

зы: Еще раз призываю взглянуть на вопрос с другой стороны. Само понятие "подключение класса" морально устарело. Оно избыточно и не является самоцелью. На сегодняшний день,
палатформе достаточно иметь класс в своем распоряжении только в момент создания его экземпляра.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #99 - 02. Марта 2007 :: 06:57
Печать  
+1

а про defcls.prm я и писал выше, что для совместимости его оставляем.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #100 - 02. Марта 2007 :: 07:12
Печать  
Ничего не понимаю, чего вы тут трете. На лету - не на лету, из папки - не из папки, через ПРМ - без ПРМ.

Вам не кажется, что надо реализовать атомарную операцию ЗагрузитьКлассИзФайла("ИмяФайла")? И на основе ее дальше городить огород.

Вот пример файла класса:
Код
Выбрать все
//#класс ТестовыйСлучай: ВыполняемыйМодуль

//#void AssertEquals(Неопределенный Значение1, Неопределенный Значение2, Строка стрСообщение="");
Процедура AssertEquals(Значение1, Значение2, стрСообщение="") Экспорт
	  Если Значение1 = Значение2 Тогда Возврат; КонецЕсли;
	  Если ПустоеЗначение(стрСообщение)=1 Тогда
		    стрИсключение="<"+Значение1+"> не равно <"+Значение2+">, а хотели, чтоб было равно.";
	  Иначе
		    стрИсключение=стрСообщение+": <"+Значение1+"> не равно <"+Значение2+">.";
	  КонецЕсли;
	  Сам()._ВыброситьИскл(стрИсключение);
КонецПроцедуры
 


Этот метод не обязательно будет выставлять как экспортный, но, мне кажется, он не помешает.

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #101 - 02. Марта 2007 :: 07:24
Печать  
Sedmin, ты с java работал?
Зачем придумывать свое, когда за нас все придумано?
Чем не устраивает вариант описанный мной выше? Давай попунктно...
Проект 1сpp давно уже взрослый проект, мне кажется давно пора отказываться от такого архаизма как defcls.prm, но и не городить ничего нового...
Пусть 1cpp сама ищет файлы в определенных каталогах, и если нет файла с названием класса, то выбрасывает исключение.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #102 - 02. Марта 2007 :: 07:37
Печать  
Arta
+100  Смех

sedmin
Лично я тру о том, чтобы вообще исключить из прикладного решения информацию о файлах классов. В МД и так черт ногу сломит, а ты еще предлагаешь захардкодить имена файлов!
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #103 - 02. Марта 2007 :: 08:04
Печать  
Arta писал(а) 02. Марта 2007 :: 06:51:
Это уже реализовано сейчас, и я активно этим пользуюсь. Посылаю всем клиентам комманду сбросить оптимизацию и вуаля, все используют измененный класс.

ОФФ - выложил бы класс или код подобной схемы Улыбка - ты где-то писал, но я ветку не помню.
ЗЫ сам метод, значит, нравится Улыбка ?
Я сам о нем несколько лет мечтал, но только недавно реализовал Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #104 - 02. Марта 2007 :: 08:06
Печать  
Цитата:
Так... путаница продолжается.

artbear
Цитата:
Точнее, если подключаем набор классов, описанных в прм-файле, не буду
подключены классы, описанные после дублирующего класса.


Что за прм-файл? Дефцлс?

Я специально не написал дефцлс.прм, чтобы вы не запутались, а вы все-таки спутали Улыбка
Речь идет именно о динамически подключаемом прм-файле через мой новый метод.
Народ, хоть кто-нибудь посмотрел мой новый метод, а ?
  

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