Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Динамич. создание классов и подкл. файл. реализац. (число прочтений - 51932 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Динамич. создание классов и подкл. файл. реализац.
25. Января 2007 :: 07:50
Печать  
Побуду в очередной раз возмутителем спокойствия Улыбка

Народ, появилась идея -
добавить в 1С++
1) возможность динамического создания классов
и
2) возможность подключения файлов определения классов на лету, без необходимости прописывания в дефцлс.прм?

Т.е. например,
Код
Выбрать все
МетаИнфоКлассес.СоздатьКласс(ТекстОпределенияКласса, ТекстРеализацииКласса);
МетаИнфоКлассес.СоздатьКлассИзФайла(ИмяФайлаОпределенияКласса);
 


и
Код
Выбрать все
МетаИнфоКлассес.ПодключитьКлассы(ТекстОпределенияКлассов);
МетаИнфоКлассес.ПодключитьКлассыИзФайла(ИмяФайлаОпределенияКлассов);
 



PS я чувствую в себе силы это сделать Улыбка
Знаний по внутренностям 1С++ в части работы с классами я накопил очень много + сделал неплохой рефакторинг для упрощения кода для возможности его изменения.
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #1 - 25. Января 2007 :: 07:55
Печать  
Ага, хорошая мысль.  Иногда бывает надо какие-нить инструментальные классы подгрузить на раз без изменения основной структуры классов.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #2 - 25. Января 2007 :: 07:57
Печать  
Чем это будет отличается от "ВыполняемыйМодуль" ?
Имхо, только увеличение бардака в программе будет.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #3 - 25. Января 2007 :: 07:59
Печать  
ВыполняемыйМодуль позволяет реализовать не весь набор того, что мы можем делать через классы Печаль
ИМХО этого недостаточно.
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #4 - 25. Января 2007 :: 08:22
Печать  
1. Большой нужды в этом не вижу. Но если будет - пригодится Улыбка
2. А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #5 - 25. Января 2007 :: 08:31
Печать  
Цитата:
1.2. А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.


я все про свое - а описание (сиречь документирование) куда если не в defcls.prm ?
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #6 - 25. Января 2007 :: 08:37
Печать  
Lustin
Заголовки, реализацию и документацию класса 1С++ позволяет хранить в одном файле.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #7 - 25. Января 2007 :: 08:45
Печать  
Цитата:
А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.

Поддерживаю. А то типы параметров и значения по умолчанию прописываются в одном месте, а код - в другом.

Только надо определиться, как будут загружаться классы из обработок. Или все обработки будут компилироваться как классы? Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #8 - 25. Января 2007 :: 08:47
Печать  
ADirks писал(а) 25. Января 2007 :: 07:55:
Ага, хорошая мысль.  Иногда бывает надо какие-нить инструментальные классы подгрузить на раз без изменения основной структуры классов.

+1
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #9 - 25. Января 2007 :: 12:08
Печать  
+1
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #10 - 25. Января 2007 :: 15:34
Печать  
Цитата:
2. А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.


+1 Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #11 - 25. Января 2007 :: 15:48
Печать  
И как вы предполагаете ввести такой функционал?
Сначала загружаем 1С++
ЗагрузитьВК/ПодключитьВК
а дальше?
МетаИнфо = СоздатьОбъект("МетаИнфоКлассес");
МетаИнфо.ПодключитьКлассы(КаталогКлассов");
так?
или у нас будет каталог по умолчанию в реестре прописан?
Или еще какие варианты?
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #12 - 25. Января 2007 :: 16:14
Печать  
artbear писал(а) 25. Января 2007 :: 15:48:
или у нас будет каталог по умолчанию в реестре прописан?

Только не реестр. Реестр - это зло.

Цитата:
МетаИнфо = СоздатьОбъект("МетаИнфоКлассес");
МетаИнфо.ПодключитьКлассы(КаталогКлассов");

ИМХО нормально, но с учетом, что может быть несколько каталогов, из которых нужно последовательно грузить классы.
Т.е.
Код
Выбрать все
МетаИнфо = СоздатьОбъект("МетаИнфоКлассес");
МетаИнфо.Подключить(КаталогКлассов_1");
...
МетаИнфо.Подключить(КаталогКлассов_N");
 


  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #13 - 25. Января 2007 :: 16:24
Печать  
В принципе, нужно

1. Отказаться от defcls.prm, перенести всю информацию в сам класс

2. Сделать 3 метода:
Код
Выбрать все
ПодключитьКлассы(ИмяКаталога, Маска)
 


- подключение всех существующих классов из каталога по маске

Код
Выбрать все
ПодключитьКласс(ИмяФайла)
 


- подключение конкретного существующего класса

Код
Выбрать все
СоздатьКласс(ТекстКласса)
 


- создание класса из строки

Самое важное - это качественно выполненный п.1
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #14 - 25. Января 2007 :: 16:38
Печать  
sedmin писал(а) 25. Января 2007 :: 08:45:
Только надо определиться, как будут загружаться классы из обработок. Или все обработки будут компилироваться как классы? Улыбка


Прошу обратить внимание на этот вопрос. Как загружать классы, которые внутри конфигурации?
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #15 - 25. Января 2007 :: 16:55
Печать  
fez писал(а) 25. Января 2007 :: 16:38:
Прошу обратить внимание на этот вопрос. Как загружать классы, которые внутри конфигурации?

Цитата:
ПодключитьКлассМД(ИмяКласса)

или как-то так

Там другой прикол есть: до полного получения списка загружаемых классов, 1cpp не будет знать, откуда грузить базовые классы.
Поэтому возможно придется делать двухшаговую загрузку: сначала добавить все желательные пути к классам, а потом выполнить собственно загрузку.

Т.е.
Код
Выбрать все
Подключить()
...
Подключить()
Создать()
...
Создать()

ЗагрузитьКлассы(); // фактическая загрузка всех затребованных классов
 



А где злые дядьки, которые посетуют на неизбежные проблемы с совместимостью? Ужас
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #16 - 25. Января 2007 :: 19:39
Печать  
Обратную совместимость оставить нужно.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #17 - 25. Января 2007 :: 20:31
Печать  
Arta писал(а) 25. Января 2007 :: 19:39:
Обратную совместимость оставить нужно.

Обязательно. Я просто напомнил об этом Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #18 - 26. Января 2007 :: 05:07
Печать  
Цитата:
2. А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.

А как предполагается разбирать этот каталог?

Вижу варианты:
1) Предлагается открывать каждый файл в этом каталоге, производить его разбор и если это класс, загружать?
ИМХО это медленно.

2) Или мы будет брать файлы только с определенными расширениями - txt, 1s, ert?
Но у меня, например, достаточно часто есть основная интерфейсная обработка и класс, упрощающий автоматическую работу с ней - оба файла лежат в одном каталоге. Как быть в это случае?

Что предложите?
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #19 - 26. Января 2007 :: 06:37
Печать  
kms писал(а) 25. Января 2007 :: 16:24:
В принципе, нужно

1. Отказаться от defcls.prm, перенести всю информацию в сам класс

2. Сделать 3 метода:
Код
Выбрать все
ПодключитьКлассы(ИмяКаталога, Маска)
 


- подключение всех существующих классов из каталога по маске

  

De quelle planète es-tu?
Наверх
 
IP записан
 
smile
Junior Member
**
Отсутствует


бррр... ужас...

Сообщений: 50
Зарегистрирован: 23. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #20 - 26. Января 2007 :: 11:29
Печать  
Цитата:
1. Большой нужды в этом не вижу. Но если будет - пригодится Улыбка
2. А вот эту идею предлагаю развить: вообще отказаться от defcls. Сделать как в джаве: указываем системе только каталог в котором хранятся классы, дальше система сама разбирается с доступными классами.


Вот очень бы хотелось 2 пункта.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #21 - 30. Января 2007 :: 10:56
Печать  
     Небольшое резюме.
     Хотелось бы получить следующее:
     1. Сохранить все фичи, связанные с определением классов, доступные на данный момент.
     2. Добавить новую директиву файла описания классов для определения пути к классам, например: //#classpath="путь". Для  указания нескольких каталогов директиву можно применять несколько раз.
     3. Классы, хранящиеся в МД, подключаются явно в дефцлс, либо идентифицируются по префиксу в имени обработки, например: __класс__ПространствоИмен1_ПространствоИмен2_ИмяКласса.
     4. Поиск файла класса с именем ПространствоИмен1.ПространствоИмен2.ИмяКласса должен выполняться в следующем порядке:
     - по пути, указанном в заголовке класса, если класс подключен явно;
     - по пути  classpath\ПространствоИмен1\ПространствоИмен2\ИмяКласса.ert. При этом, в заголовке класса имя файла реализации указывать не требуется.
     - встроенная обработка с именем согласно п. 3.
     Кроме того, порядок поиска можно было бы задавать дополнительной директивой в дефцлс.
    
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #22 - 30. Января 2007 :: 11:06
Печать  
Цитата:
Lustin
Заголовки, реализацию и документацию класса 1С++ позволяет хранить в одном файле.

Палыч, каюсь, я позабыл.
В файле реализации сейчас разве можно хранить привязку к суперклассам, типизацию параметров и т.д.?
Как это выглядит?

Мы же когда указываем каталог, не даем этой информации, значит она должна быть в файле реализации.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #23 - 30. Января 2007 :: 11:15
Печать  
kms
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #24 - 30. Января 2007 :: 12:11
Печать  
Цитата:
kms
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

Не надо его включать. Зачем нам этот сишный синтаксис? Там он свои цели преследует.

Давно мечтаю, чтобы все, что относится к классу, жило в одном файле. А в дефклс надо только ссылку на класс указывать.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #25 - 30. Января 2007 :: 12:17
Печать  
sedmin
Не горячись, еще раз прочитай мое сообщение. Все нормально. Улыбка
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #26 - 30. Января 2007 :: 12:51
Печать  
Михаил, я согласен с тобой. Я же Палычу отвечал, что include в defcls не нужен.

Еще раз прочитай мое сообщение.  Подмигивание

Давайте уже завяжем с архитекторством и попросим Артура реализовать хоть что-нибудь.  Улыбка
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #27 - 30. Января 2007 :: 13:52
Печать  
sedmin
Цитата:
А в дефклс надо только ссылку на класс указывать.

Цитата:
include в defcls не нужен.

По моему, это взаимоисключающие требования.
Все-таки, include нужен или нет?
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #28 - 30. Января 2007 :: 14:18
Печать  
Палыч, мне кажется sedmin сейчас очень чем-то занят (ибо имхо рассеян как никогда).

Так и представляется, как он одновременно ведет переговоры по двум телефонам, обеими руками считает прибыль, ну а уж что делает рядом группа прекрасных блондинок я вообще молчу.

Смех
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #29 - 30. Января 2007 :: 14:38
Печать  
Блондинки!?.. Тогда понятно... Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #30 - 30. Января 2007 :: 14:41
Печать  
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

А ведь этот вариант у нас тестами в конфе тестирования 1С++ не охвачен Печаль
Как-то я его упустил, хотя знаю, что он есть, но не пользуюсь.
Нужно срочно исправляться Улыбка

ЗЫ глядишь, еще какой баг и найду Улыбка
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #31 - 30. Января 2007 :: 14:48
Печать  
artbear писал(а) 30. Января 2007 :: 14:41:
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

А ведь этот вариант у нас тестами в конфе тестирования 1С++ не охвачен Печаль
Как-то я его упустил, хотя знаю, что он есть, но не пользуюсь.
Нужно срочно исправляться Улыбка

ЗЫ глядишь, еще какой баг и найду Улыбка

Да, отличная идея.
И надо еще между делом посмотреть, есть ли у нас тесты на неопределенное число параметров.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #32 - 30. Января 2007 :: 14:51
Печать  
kms писал(а) 30. Января 2007 :: 14:48:
И надо еще между делом посмотреть, есть ли у нас тесты на неопределенное число параметров.

Такие тесты есть точно.
Хотя 30 параметров, конечно, не проверяются Улыбка
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #33 - 31. Января 2007 :: 05:16
Печать  
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

Я протестил такой вариант и увидел, что или он не работает, или я туплю.
В прм-файле пишу
Код
Выбрать все
//#include КлассОписанныйВФайлеРеализацииКласса.txt
 


Дале пробовал два варианта внутри файла реализации

1
Код
Выбрать все
class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
{}
Перем Атрибут;
 


На этапе загрузки 1С++ все нормально. Если зайти в Сервис-Параметры-Настройки1С++, то этот класс виден в списке доступных классов.
НО если попытаться создать объект класса, будет выдаваться синтакс-ошибка Печаль

2
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
Перем Атрибут;
 


В этом случае класса вообще никак не видно, и создать объект также нельзя.

Где я ошибся?

ЗЫ также изучал исходники. ИМХО специально никакой обработки для поддержки данной фичи не заметил Печаль
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #34 - 31. Января 2007 :: 05:18
Печать  
artbear писал(а) 31. Января 2007 :: 05:16:
2
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
//Перем Атрибут;
 



Поправил вариант 2 - убрал лишний коммент
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
Перем Атрибут;
 


  

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: Динамич. создание классов и подкл. файл. реали
Ответ #35 - 31. Января 2007 :: 05:33
Печать  
artbear писал(а) 31. Января 2007 :: 05:16:
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

Я протестил такой вариант и увидел, что или он не работает, или я туплю.

Я туплю от отсутствия доки Улыбка

Правильно работает такой вариант
Код
Выбрать все
//#class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//#{}
Перем Атрибут;
 



Вечером залью тесты для него.
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #36 - 31. Января 2007 :: 07:37
Печать  
Давайте подумаем, из-за чего вообще возникла нужда в def-файлах.
А возникла она из-за того, что видимый из длл-экспорта интерфейс CBLModule7 не позволял ответить на вопросы:
1. Передается ли параметр по значению.
2. Указано ли значение по умолчанию для параметра.
3. Нет синтаксиса для указания в методе модуля неявного количества параметров.
4. Нет возможности указания типа параметров (хотя я этим не пользуюсь, для меня это спорный момент)

Если удастся решить эти вопросы в рамках скомпилированного CBLModule7, то и надобность в def-файлах отпадет.

По первому пункту может быть АЛьФ что-нить подскажет? Не может быть, что он это не нарыл.
По второму - опять же вопрос к Альфу. Для задания значений по умолчанию в виде выражений можно использовать синтаксис что-то типа
а="==ТекущаяДата()".
По третьему пункту - можно заюзать параметр с предопределенным именем, например "џџџ";
Ну и четвертый пункт - если решить второй, то и это достижимо.
В результате получится что-то типа:
Код
Выбрать все
Процедура Тест(Знач Парам1 = ":Строка:==ИмяПользователя()", парам2=":Число", џџџ) Экспорт
 


PS: "џ" набирается как ALT + 0159 на цифровой клаве.
PPS: В качестве символов идентификаторов 1С оказывается допускает использование и таких символов:

0128=Ђ
0129=Ѓ
0131=ѓ
0138=Љ
0140=Њ
0141=Ќ
0142=Ћ
0143=Џ
0144=ђ
0154=љ
0156=њ
0157=ќ
0158=ћ
0159=џ
0161=Ў
0162=ў
0163=Ј
0165=Ґ
0170=Є
0175=Ї
0178=І
0179=і
0180=ґ
0181=µ
0186=є
0188=ј
0189=Ѕ
0190=ѕ
0191=ї

То есть вполне допустимо написать
µ = 1;
Сообщить(µ);
Правда текущий телепат об этом не знает Печаль
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #37 - 31. Января 2007 :: 08:12
Печать  
А почему просто не перенести def файл в модуль и не парсить его оттуда с последующей стандартной обработкой до момента компиляции.
Само наличие дополнительных определений не напрягает, напрягает разброс на 2 файла и способ загрузки.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #38 - 31. Января 2007 :: 09:03
Печать  
kms писал(а) 31. Января 2007 :: 08:12:
Само наличие дополнительных определений не напрягает, напрягает разброс на 2 файла и способ загрузки.

Вот. Поддерживаю.

Кроме прочего это позволит на ходу менять описание методов и их параметров.

Только здесь есть один момент. Если описание наследования также хранить в модуле класса, то при повторной компиляции иерархия может измениться и для уже созданных объектов. Либо надо для каждого объекта хранить ссылку на его иерархию. Вообщем, ерунда получается.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #39 - 31. Января 2007 :: 09:10
Печать  
Цитата:
sedmin
Цитата:
А в дефклс надо только ссылку на класс указывать.

Цитата:
include в defcls не нужен.

По моему, это взаимоисключающие требования.
Все-таки, include нужен или нет?

Вот до меня дошло, чем отличается include от ссылки. Чуствовал, что подвох есть, но не знал, где он.  Улыбка

Грубо так: Если сделать через include, то кроме прочих заморочек, defcls компилируется один раз при загрузке 1С++. А если через ссылку - то при создании объекта описание компилируется заново.

А заморочки еще вот какие. Есть проблемы с диагностикой по ошибкам defcls.prm. Например, толком не узнать, в какой строке ошибка случилась. Вообщем, если сделать через include, то на первых этапах, пока все это вычистится, мало не покажется.

Хотя, конечно, зная как там все написано, и в простом варианте мало не покажется.  Улыбка
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #40 - 31. Января 2007 :: 09:46
Печать  
orefkov
Тоже считаю, что не стоит заморачиваться отказом от заголовка класса.

sedmin
Ничего не понимаю из того, что ты пишешь в этой ветке. Дай время своим мыслям созреть. Улыбка
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #41 - 31. Января 2007 :: 13:04
Печать  
Цитата:
sedmin
Ничего не понимаю из того, что ты пишешь в этой ветке. Дай время своим мыслям созреть. Улыбка

+1
Чем дальше от начала ветки - тем непонятнее.
  
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #42 - 31. Января 2007 :: 14:25
Печать  
orefkov писал(а) 31. Января 2007 :: 07:37:
1. Передается ли параметр по значению.

Легко.

orefkov писал(а) 31. Января 2007 :: 07:37:
2. Указано ли значение по умолчанию для параметра.

Легко.
  

FormEx developer
Наверх
www  
IP записан
 
KonstSV
Junior Member
**
Отсутствует



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #43 - 01. Февраля 2007 :: 08:54
Печать  
Подводя промежуточный итог, хочу предложить следующий вариант:

1. При загрузке компоненты классы автоматически не загружаются.

2. У объекта "MetaInfoClasses" должны быть две процедуры с параметром или несколько разных процедур для
    загрузки определений и реализаций классов.

   Например:
       ПодключитьОпределениеКлассов(Число ТипПодключения, Строка ОпределениеКласса)
или
       ПодключитьОпределениеКлассовИзФайла(Строка ПутьКФайлу)
       ПодключитьОпределениеКлассовИзMD(Строка ИмяОбработки)
       ПодключитьОпределениеКлассовИзСтроки(Строка ОпределениеКласса)

Должна быть возможность загружать определения и реализации классов
- из внешних файлов (текстовых (расширения любые) и обработок 1С (ert)),
- из обработок, находящихся внутри конфигурации,
- из строк,
- может быть ещё откуда-нибудь (объект "Текст", объект "BinaryData" и т.п.)

3. Порядок подключения произвольный, за исключением того, что определение класса идет до его реализации,
    и определения предков должны быть уже подключены.

4. Должна быть возможность отключать классы по одному, группой или все вместе.

P.S.

Директива #include, естественно, сохраняется
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #44 - 01. Февраля 2007 :: 10:28
Печать  
KonstSV писал(а) 01. Февраля 2007 :: 08:54:
4. Должна быть возможность отключать классы по одному, группой или все вместе.

При отключении класса кто будет проверять, что таких объектов нету?
И вообще, каков смысл этого?
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #45 - 01. Февраля 2007 :: 13:18
Печать  
KonstSV писал(а) 01. Февраля 2007 :: 08:54:
Подводя промежуточный итог, хочу предложить следующий вариант:

1. При загрузке компоненты классы автоматически не загружаются.

Совместимость должна сохраняться.
Поэтому
1. При загрузке компоненты классы автоматически не загружаются, если нет файла КаталогИБ\defcls.prm или встроенной обработки defcls@md
Т.е. текущее поведение 1С++ Улыбка
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #46 - 01. Февраля 2007 :: 13:27
Печать  
Что касается возможности отключения классов, то за этим должна следить компонента и
в случае попытки отключить класс с существующим объектом должна выкидывать исключение.

А, смыслы, на мой взгляд, есть.

Начиная от "принципа симметрии" - если есть Подключить,
то должно быть и Отключить (спорно, конечно, но всё же).

И, хотелось бы, всё-таки, иметь возможность на время подключать некоторый функционал, и,
соответственно, отключать его за ненадобностью.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #47 - 01. Февраля 2007 :: 14:16
Печать  
KonstSV писал(а) 01. Февраля 2007 :: 13:27:
И, хотелось бы, всё-таки, иметь возможность на время подключать некоторый функционал, и,
соответственно, отключать его за ненадобностью.

Создаешь объект нужного тебе класса, потом уничтожаешь его.
Зачем класс-то отключать?
  
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #48 - 01. Февраля 2007 :: 14:19
Печать  
fez писал(а) 01. Февраля 2007 :: 14:16:
Зачем класс-то отключать?

Чтобы Враг не создал объект того же класса Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #49 - 01. Февраля 2007 :: 14:29
Печать  
Классовый враг Очень довольный
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #50 - 01. Февраля 2007 :: 14:47
Печать  
artbear писал(а) 01. Февраля 2007 :: 13:18:
KonstSV писал(а) 01. Февраля 2007 :: 08:54:
Подводя промежуточный итог, хочу предложить следующий вариант:

1. При загрузке компоненты классы автоматически не загружаются.

Совместимость должна сохраняться.

Совместимость не всегда должна сохраняться. Ее надо сохранять, пока выгоды от ее отмены не превышают стоимости отказа от нее. Не уверен, что ее следует сохранять в данном случае.

Обеспечить совместимое поведение на уровне пользователя 1С++ не так уж и сложно. Поэтому считаю, что после достаточной отладки нового механизма можно и отключить автоматическую загрузку классов.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #51 - 01. Февраля 2007 :: 15:36
Печать  
sedmin писал(а) 01. Февраля 2007 :: 14:47:
Совместимость не всегда должна сохраняться. Ее надо сохранять, пока выгоды от ее отмены не превышают стоимости отказа от нее. Не уверен, что ее следует сохранять в данном случае.

Обеспечить совместимое поведение на уровне пользователя 1С++ не так уж и сложно. Поэтому считаю, что после достаточной отладки нового механизма можно и отключить автоматическую загрузку классов.


Sedmin, а чем тебя не устраивает вариант озвученный Артуром?

artbear писал(а) 01. Февраля 2007 :: 13:18:
1. При загрузке компоненты классы автоматически не загружаются, если нет файла КаталогИБ\defcls.prm или встроенной обработки defcls@md
Т.е. текущее поведение 1С++ Улыбка

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


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #52 - 01. Февраля 2007 :: 15:41
Печать  
KonstSV писал(а) 01. Февраля 2007 :: 08:54:
1. При загрузке компоненты классы автоматически не загружаются.


Ни в коем случае! Порядок обработки классов, заголовок которых описан в дефцлс, не должен изменяться. Иначе будет нарушена их работа и придется переносить этот заголовок в модуль класса.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #53 - 01. Февраля 2007 :: 20:29
Печать  
Arta писал(а) 01. Февраля 2007 :: 15:36:
Sedmin, а чем тебя не устраивает вариант озвученный Артуром?

Не устраивает тем, что если я захочу что-то поменять, то я не могу гарантировать, что все 300 клиентов сделают с файлом DefCls.prm именно то, что мне надо.

Палыч
Цитата:
Порядок обработки классов, заголовок которых описан в дефцлс, не должен изменяться. Иначе будет нарушена их работа и придется переносить этот заголовок в модуль класса.

А чем не устраивает добавление пары строчек?

Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("1CPP.DLL");
МетаИнфо=СоздатьОбъект("MetaInfoClasses");
МетаИнфо.ЗагрузитьКлассыИзПРМ(КаталогИБ()+"defcls.prm"); 

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


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #54 - 02. Февраля 2007 :: 04:18
Печать  
sedmin
Не устраивает тем, что нужно править МД. Это не всегда возможно.

Кроме того, считаю, что загрузка классов должна настраиваться только через ини-файл (в нашем случае - дефцлс), и не вижу большой нужды в спец. методах компоненты. Хотя... если будут, применение можно будет найти. Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #55 - 02. Февраля 2007 :: 05:19
Печать  
Цитата:
Не устраивает тем, что нужно править МД. Это не всегда возможно.

Да, мне также не всегда удобен вариант с правкой Мд-файла.
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #56 - 02. Февраля 2007 :: 13:53
Печать  
Ну делайте как вам удобнее. Приспособимся.

Я предлагаю сделать более гибкий вариант. В общем случае он удобнее.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #57 - 02. Февраля 2007 :: 20:12
Печать  
sedmin писал(а) 02. Февраля 2007 :: 13:53:
Я предлагаю сделать более гибкий вариант. В общем случае он удобнее.

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #58 - 02. Февраля 2007 :: 22:34
Печать  
fez писал(а) 02. Февраля 2007 :: 20:12:
В ряде частных случаев ...

Вот такое конкретное решение оказывается очень негибким. Помните, какие траблы пошли, когда попытались определить, какой из defcls главнее, кого в кого включать? Мозг даже и вспоминать отказывается, что тогда было.  Улыбка

Вот и решили тогда оставить как есть. Для совместимости. И чтобы не париться.

А на самом деле ни один из них не главный. Как программист решит - тот и главный. Считаю, что пользователь (программист) должен явно указывать, что загружать. Естественно, сделать это надо только в том случае, если у нас появится механизм произвольного подключения классов. Если не будет механизма - то, естественно, все надо оставить по-старому.

Цитата:
1. При загрузке компоненты классы автоматически не загружаются.

Вы знакомы с методом коридорного тестирования? Вот что вам говорит человек с незамыленным взглядом. А вы ему говорите: "А у нас вот так!".

(Давно уж нет тех обезьян, а банан все равно брать нельзя...)
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #59 - 05. Февраля 2007 :: 07:23
Печать  
sedmin писал(а) 02. Февраля 2007 :: 22:34:
fez писал(а) 02. Февраля 2007 :: 20:12:
В ряде частных случаев ...

Вот такое конкретное решение оказывается очень негибким. Помните, какие траблы пошли, когда попытались определить, какой из defcls главнее, кого в кого включать? Мозг даже и вспоминать отказывается, что тогда было.  Улыбка

Я не о тех частных случаях.

sedmin писал(а) 02. Февраля 2007 :: 22:34:
Цитата:
1. При загрузке компоненты классы автоматически не загружаются.

Вы знакомы с методом коридорного тестирования? Вот что вам говорит человек с незамыленным взглядом. А вы ему говорите: "А у нас вот так!".
(Давно уж нет тех обезьян, а банан все равно брать нельзя...)

Если нету defcls.prm - то пусть себе автоматически не загружаются. Что, других названий для файла определений нельзя придумать?
  
Наверх
www  
IP записан
 
KonstSV
Junior Member
**
Отсутствует



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #60 - 05. Февраля 2007 :: 08:01
Печать  
Цитата:
Если нету defcls.prm - то пусть себе автоматически не загружаются. Что, других названий для файла определений нельзя придумать?


Кстати, сейчас именно так и проиходит. Если нет defcls.prm, естественно, классы и не загружаются.

Предлагается к этому поведению добавить несколько несколько методов, которые дадут необходимую гибкость
в загрузке и выгрузке классов
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #61 - 05. Февраля 2007 :: 09:06
Печать  
fez писал(а) 05. Февраля 2007 :: 07:23:
Если нету defcls.prm - то пусть себе автоматически не загружаются. Что, других названий для файла определений нельзя придумать?

У 300 легальных клиентов этот файл уже есть.  Улыбка Печаль

А, возможно, есть еще нелегальные клиенты.  Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #62 - 13. Февраля 2007 :: 14:17
Печать  
А на чем все таки остановились? Будут сканироваться каталоги на наличие классов или нет?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #63 - 15. Февраля 2007 :: 21:31
Печать  
оёё...
Совместимость оставте реформаторы.....
А то захочется продгрузить 1С++.dll с новой фичей в базу и начнется перешивание кафтана...
Помните о том, что иногда клиенты "на том конце провода" могут только md загрузить и сохранение данных сделать. Ну еще зарплату выдать....
  
Наверх
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #64 - 16. Февраля 2007 :: 06:51
Печать  
Ну если они больше ничего не могут, то пусть и не трогают 1cpp.dll.  Улыбка
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #65 - 16. Февраля 2007 :: 07:25
Печать  
sedmin писал(а) 05. Февраля 2007 :: 09:06:
fez писал(а) 05. Февраля 2007 :: 07:23:
Если нету defcls.prm - то пусть себе автоматически не загружаются. Что, других названий для файла определений нельзя придумать?

У 300 легальных клиентов этот файл уже есть.  Улыбка Печаль

А, возможно, есть еще нелегальные клиенты.  Улыбка


Напиши "переходную" версию конфигурации, которая до загрузки 1С++ удалит файл defcls.prm.

P.S. Не надо трогать совместимость.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #66 - 21. Февраля 2007 :: 06:09
Печать  
Мой подарок всем пользователям 1С++ на 23 февраля Улыбка

Сделана возможность динамического добавления новых классов и файлов описаний.


Цитата:
MetaInfoClasses::ЗагрузитьОписаниеКлассов(ИмяФайлаОписанияКлассов)

Загружает описания классов и сами классы из соответствующих файлов.
Синтаксис описания и реализации классов - это обычный синтаксис 1С++

Как обычно, каждый класс должен быть реализован в отдельном файле.


Прямой линк http://slil.ru/23965995
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #67 - 21. Февраля 2007 :: 06:11
Печать  
Вот пример работающего кода из теста
Код
Выбрать все
Функция СоздатьФайлНовогоКласса(НаименованиеНовогоКласса, НаименованиеМетодов)
	ИмяФайлаКласса=СтрЗаменить(Сам().ПолучитьПуть(), "MetaInfoClassesТесты.txt", НаименованиеНовогоКласса+".txt");
	Текст=СоздатьОбъект("Текст");

	Текст.ДобавитьСтроку("Перем Перем_"+НаименованиеМетодов+";");
	Текст.ДобавитьСтроку("Функция Функция_"+НаименованиеМетодов+"() Экспорт
			|	Возврат 0;
			|КонецФункции");
	Текст.ДобавитьСтроку("Процедура Процедура_"+НаименованиеМетодов+"() Экспорт
			|	Возврат;
			|КонецПроцедуры");
	Текст.Записать(ИмяФайлаКласса);

	Сам().ДобавитьВременныйФайл(ИмяФайлаКласса);

	Возврат ИмяФайлаКласса;
КонецФункции

Функция СоздатьОписаниеНовогоКласса(НаименованиеНовогоКласса)
	ИмяФайлаОписанияКласса = "Описание_"+НаименованиеНовогоКласса+".txt";
	ИмяФайлаОписанияКласса = СтрЗаменить(Сам().ПолучитьПуть(), "MetaInfoClassesТесты.txt", ИмяФайлаОписанияКласса);
	Текст=СоздатьОбъект("Текст");
	Текст.ДобавитьСтроку("class "+НаименованиеНовогоКласса+" = "+НаименованиеНовогоКласса+".txt
		|{
		|}");
	Текст.Записать(ИмяФайлаОписанияКласса);

	Сам().ДобавитьВременныйФайл(ИмяФайлаОписанияКласса);

	Возврат ИмяФайлаОписанияКласса;
КонецФункции

Процедура Тест_ЗагрузитьОписаниеКлассов() Экспорт
	МетаИнфо = МетаИнфо();        
	Математика = СоздатьОбъект("Математика");
	СлучайноеЧисло = Математика.RAND();

	// использую случайное имя класса, чтобы можно было добавлять,
	// 	иначе будет ошибка повторного определения класса
	ИмяНовогоКласса = "НовыйКласс_"+Строка(СлучайноеЧисло);

	НаименованиеМетодов = "1";

	СоздатьФайлНовогоКласса(ИмяНовогоКласса, НаименованиеМетодов);
	ИмяФайлаОписанияКласса = СоздатьОписаниеНовогоКласса(ИмяНовогоКласса);

	МетаИнфо.ЗагрузитьОписаниеКлассов(ИмяФайлаОписанияКласса);

	Объект = СоздатьОбъект(ИмяНовогоКласса);
	Сам().ПроверитьРавенство(ТипЗначенияСтр(Объект), ИмяНовогоКласса);

КонецПроцедуры
 

  

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: Динамич. создание классов и подкл. файл. реали
Ответ #68 - 21. Февраля 2007 :: 06:17
Печать  
Все забывал сказать Улыбка
динамическое подключение классов можно использовать для выпуска универсальных обработок, использующий 1С++ и спец.классы

Т.е. теперь можно на лету, прямо в коде обработки или любого класса, подключать нужные классы и сразу же приступать к работе !!

Правда, если класс уже существует, будет выдано исключение и новая версия класса подключена не будет.
Тут я еще размышляю, как поступить.
ИМХО здесь нужна опциональность -
или запретить обновление, выбросив исключение (сейчас)
или выполнить сброс кеша оптимизации для данного класса и загрузить новую версию.
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #69 - 21. Февраля 2007 :: 07:08
Печать  
artbear
Спасибо, хороший подарок!

зы: осталось сделать самую малость: чтобы в момент создания класса, если его нет в списке подключенных, 1С++ нашла файл в каталоге классов и подключила его.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #70 - 21. Февраля 2007 :: 18:07
Печать  
fez писал(а) 16. Февраля 2007 :: 07:25:
Напиши "переходную" версию конфигурации, которая до загрузки 1С++ удалит файл defcls.prm.


Эх, Федор! Ты бы знал, сколько раз уже приходилось подобным заниматься...
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #71 - 21. Февраля 2007 :: 20:37
Печать  
Цитата:
artbear
Спасибо, хороший подарок!

зы: осталось сделать самую малость: чтобы в момент создания класса, если его нет в списке подключенных, 1С++ нашла файл в каталоге классов и подключила его.


А почему бы эту заботу не переложить на плечи разработчика?
Зачем поручать поиск и перебор файлов 1cpp?
Разработчик сам может установить список файлов/классов для загрузки, и соответствено указать место их хранения.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #72 - 21. Февраля 2007 :: 20:38
Печать  
artbear писал(а) 21. Февраля 2007 :: 06:09:
[b]Мой подарок всем пользователям 1С++ на 23 февраля Улыбка


Спасибо! Потестю с утра!
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #73 - 21. Февраля 2007 :: 20:42
Печать  
artbear писал(а) 21. Февраля 2007 :: 06:17:
или выполнить сброс кеша оптимизации для данного класса и загрузить новую версию.


А какое будет поведение для таких классов при выполнении ОчиститьДанныеОптимизацииКлассов?
Заново перечитает файл как и задумано?
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #74 - 22. Февраля 2007 :: 03:07
Печать  
Arta
Цитата:
Зачем поручать поиск и перебор файлов 1cpp?
Разработчик сам может установить список файлов/классов для загрузки, и соответствено указать место их хранения.


Ты предлагаешь перед каждым созданием объекта проверять наличие регистрации класса? В случае отсутствия подключать КОП и только затем его инстанцировать?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #75 - 22. Февраля 2007 :: 03:29
Печать  
Цитата:
Arta
Цитата:
Зачем поручать поиск и перебор файлов 1cpp?
Разработчик сам может установить список файлов/классов для загрузки, и соответствено указать место их хранения.


Ты предлагаешь перед каждым созданием объекта проверять наличие регистрации класса? В случае отсутствия подключать КОП и только затем его инстанцировать?

Ага, я вот лично именно этот вариант предлагаю - типа есть АПИ, а разработчики сами строют нужные схемы.

Иначе будут реальные тормоза при попытке создания неизвестных объектов - все-таки работа с файлами Улыбка
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #76 - 22. Февраля 2007 :: 03:29
Печать  
Только не перед каждым созданием, а в самый первый раз.
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #77 - 22. Февраля 2007 :: 03:59
Печать  
artbear
Цитата:
Ага, я вот лично именно этот вариант предлагаю - типа есть АПИ, а разработчики сами строют нужные схемы.


Скажи, для чего разработчику  прикладных решений нужно заморачиваться этими схемами? Улыбка

Предлагаю взглянуть на этот вопрос по-новому, отбросив стереотипы ["в каждой базе должен быть список подключаемых классов"]: разработчик создает классы, помещает их в специальное хранилище и всё! Остальные вопросы решает платформа! Детали я уже приводил выше.

зы: думаю, все преимущества такой схемы очевидны. Или нужно расписать? Улыбка

ззы: тормозов будет не больше, а, скорее, даже меньше - обрабатываться будут только действительно используемые классы.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #78 - 22. Февраля 2007 :: 09:24
Печать  
Сколько у тебя классов, чтобы были заметны тормоза?
И кроме того, не нужно заморачиваться "специальным хранилищем"

Вот ты захочешь в одном месте классы хранить для всех баз. А тут как я понял, разговор шел о каталоге внутри ИБ.

А тут разработчик свою иерархию выстроил. разложил по своим каталогам и подключает как хочет...

Какие доводы против? Подмигивание
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #79 - 22. Февраля 2007 :: 11:00
Печать  
Arta
В огороде бузина, во Киеве дядька.  Смех
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #80 - 22. Февраля 2007 :: 12:39
Печать  
Привязывая себя к определенному месту хранилища классов мы завеломо ограничиваем себя в возможностях.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #81 - 22. Февраля 2007 :: 16:27
Печать  
Arta
Ну, во-первых, хранилище классов - это сейчас не самое главное. Пока, я предлагаю одну простую вещь: оставить все как есть и, внимание, избавить программиста от необходимости регистрировать КОП в дефцлс. Только и всего! Решение этой задачи позволит, в дальнейшем, организовать более удобный способ хранения классов, как это сделано в жаве и дотнете.

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #82 - 22. Февраля 2007 :: 20:13
Печать  
Цитата:
Arta
оставить все как есть и, внимание, избавить программиста от необходимости регистрировать КОП в дефцлс.

А я разве против? Как раз этого и хочу.

Цитата:
Arta
В частности, какие "ограничения возможностей" ты имеешь ввиду?

я про это:
Цитата:
разработчик создает классы, помещает их в специальное хранилище и всё


Мне не нравится понятие "специальное хранилище", я не хочу привязываться к конкретному месту.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #83 - 22. Февраля 2007 :: 22:02
Печать  
Цитата:
зы: думаю, все преимущества такой схемы очевидны. Или нужно расписать? Улыбка


Расписывать преимущества не надо. Надо расписать недостатки.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #84 - 23. Февраля 2007 :: 08:58
Печать  
Arta
Опять играешь словами Улыбка
Не нравится понятие "специальное хранилище"? Заменим его на "каталог". Так больше нравится? Очень довольный
И что означает "не хочу привязываться к конкретному месту"? О какой "привязке" речь? Честное слово, не понял. Поясни, пожалста.

sedmin
Недостаток вижу только один: чтобы воспользоваться преимуществами, нужно будет совершить над собой усилие и побороть стереотипный взгляд на сабж.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #85 - 23. Февраля 2007 :: 19:13
Печать  
Идея со специальной папкой мне не нравится. Так как у каждого отчета может быть своя специальная папка.

Палыч
Один в один в отношении моих замечаний в целом, и совместимости в частности.

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #86 - 23. Февраля 2007 :: 19:36
Печать  
Поддерживаю.

Цитата:
Заменим его на "каталог".


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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #87 - 23. Февраля 2007 :: 20:42
Печать  
Так... После проведения многочисленных межправительственных консультаций... Улыбка

При создании класса, наиболее оптимальным видится следующий вариант (в порядке следования):
1. Если класс прописан в defcls.prm, то создаем прописанный там класс (для обратной совместимости)
2. Смотрим предопределенный каталог внутри базы, где имя класса = имя файла (например узкоспециальные классы для конкретной базы)
3. Смотрим (по аналогии с java) %classpath%. classpath можем прописать в ини, может установить методом, как угодно в общем. Имя класса также равно имени файла. В classpath конечно может быть несколько путей.

Таким образом мы сможем:
  • отказаться от defcls.prm
  • придержимся обратной совместимости
  • сможем хранить что угодно в хранилищах помимо классов
  • и... при таком варианте станет ненужным новый метод Артура Улыбка

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #88 - 01. Марта 2007 :: 15:29
Печать  
Ну пните же меня если такой вариант не устраивает... Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

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

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: Динамич. создание классов и подкл. файл. реали
Ответ #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 записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #105 - 02. Марта 2007 :: 08:10
Печать  
sedmin писал(а) 02. Марта 2007 :: 07:12:
Вот пример файла класса:

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

//#void AssertEquals();
Процедура AssertEquals() Экспорт
КонецПроцедуры

//#void AssertEquals2();
Процедура AssertEquals2() Экспорт
КонецПроцедуры
//#}
 


Не скомпилируется Печаль

Пройдет только так
Код
Выбрать все
//#класс ТестовыйСлучай: ВыполняемыйМодуль
//#{
//#void AssertEquals();
//#void AssertEquals2();
//#}
Процедура AssertEquals() Экспорт
КонецПроцедуры

Процедура AssertEquals2() Экспорт
КонецПроцедуры
 

  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #106 - 02. Марта 2007 :: 08:59
Печать  
artbear писал(а) 02. Марта 2007 :: 08:04:
ОФФ - выложил бы класс или код подобной схемы Улыбка - ты где-то писал, но я ветку не помню.
ЗЫ сам метод, значит, нравится Улыбка ?
Я сам о нем несколько лет мечтал, но только недавно реализовал Улыбка

В обратном порядке:
1. Давно пора было сделать Улыбка
2. Метод нравится!
3. На кнопку у программера повешено:
Код
Выбрать все
Процедура ПриОткрытии()
	Если Вопрос("Сбросить кэш классов?", "Да+Нет") = "Да" Тогда
		Константа.ФлагСбросаКэшаКлассов = _GetPerformanceCounter();
		Meta = СоздатьОбъект("MetaInfoClasses");
		Meta.ОчиститьДанныеОптимизацииКлассов();
	КонецЕсли;
	СтатусВозврата(0);
	Возврат;
КонецПроцедуры
 


В гл обработке ожидания:
Код
Выбрать все
Значение = ВосстановитьЗначение("ФлагСбросаКэшаКлассов");
Если СокрЛП(Значение) <> СокрЛП(Константа.ФлагСбросаКэшаКлассов) Тогда
	MetaInfoClasses = СоздатьОбъект("MetaInfoClasses");
	MetaInfoClasses.ОчиститьДанныеОптимизацииКлассов();
	СохранитьЗначение("ФлагСбросаКэшаКлассов", Значение);
	Сообщить("Администратор произведел обновление программных модулей 1С. Конфигурация успешно обновлена.");
КонецЕсли;
 


Коду несколько строк, а удобства - масса.

artbear писал(а) 02. Марта 2007 :: 08:06:
Я специально не написал дефцлс.прм, чтобы вы не запутались, а вы все-таки спутали Улыбка
Речь идет именно о динамически подключаемом прм-файле через мой новый метод.
Народ, хоть кто-нибудь посмотрел мой новый метод, а ?


Артур, при описанной мной схеме, вообще не понадобится такой вариант...
Ты просто кладешь класс куда надо и все. Как такового подключения просто не нужно. Нет файла - выбросили исключение. Есть файл - подключили...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #107 - 02. Марта 2007 :: 09:27
Печать  
Arta писал(а) 02. Марта 2007 :: 07:24:
Sedmin, ты с java работал?


Да, работал. И не надо мне Явой тыкать. Когда я начал работать с классами в 1С, мне тоже казалось, что в Яве все сделано хорошо, и не надо изобратать велосипед. Мне даже помнится, что в Багзилле есть моя заявка на эту тему.

Сейчас я понял, что не все так просто. Вот как я вижу ситуацию.

Основная различие в том, что для каждого приложения в Яве создается свое окружение - песочница. Для нее прописаны все пути, где что искать. У нас в 1С каждый отчет - это отдельное приложение. Но все они работают в одной песочнице, и классы у них лежат в одной куче. И не уверен, что для одного отчета надо искать классы в путях для всех отчетов.

Второе различие в том, что в Яве наработана огромная библиотека классов, и хранятся они в скомпилированном виде. У нас нет этой библиотеки, а если бы была, то ее компиляция снова бы стала проблемой. Дальше углуб##ться в эту тему желания нет. Скажу лишь, что отсюда следует, что снова - для каждого отчета нужы классы из разных мест.

Относительно того, что мой пример не работает. Конечно не работает. Так хотелось бы, чтобы заработал.  Улыбка
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #108 - 02. Марта 2007 :: 09:30
Печать  
Цитата:
Лично я тру о том, чтобы вообще исключить из прикладного решения информацию о файлах классов. В МД и так черт ногу сломит, а ты еще предлагаешь захардкодить имена файлов!

Это - следующий этап. И его можно реализовать с использованием описанного атома.

Смысл атома в том, что это - минимальная операция. На его основе можно делать что угодно.

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

То есть все описание класса лежит в одном файле класса. А как он подвязывается - дело десятое.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #109 - 02. Марта 2007 :: 10:56
Печать  
sedmin
Цитата:
У нас в 1С каждый отчет - это отдельное приложение.

Да ну?! С чего бы это?

Цитата:
У нас нет этой библиотеки, а если бы была, то ее компиляция снова бы стала проблемой.

Цитата:
... для каждого отчета нужы классы из разных мест.

Безосновательные утверждения.

Цитата:
Смысл атома в том, что это - минимальная операция. На его основе можно делать что угодно.

Я предлагаю обойтись вообще без лишних телодвижений.

Цитата:
То есть все описание класса лежит в одном файле класса. А как он подвязывается - дело десятое.

Вот оно в чем дело! У меня описания классов лежат в файлах реализации уже года три, если не больше. А как подвязываются эти файлы - как раз самый первый вопрос.

зы: Приведу пример.
Предположим, есть некая конфигурация, назовем ее "ТоргуемВсем". В ней есть отчет ОтчетПоОстаткам (внешний или встроенный в МД - неважно). В коде конфиги используются следующие классы:
  • Система.Формы.РасширениеФормы
  • Система.Формы.ВалидаторДанныхБазовый
  • Система.Формы.ВалидаторДанныхРавенство : Система.Формы.ВалидаторДанныхБазовый
  • Система.Формы.ВалидаторДанныхДиапазон : Система.Формы.ВалидаторДанныхБазовый
  • ТоргуемВсем.ОтчетПоОстаткам.ГенераторПечатнойФормы
  • ТоргуемВсем.ОтчетПоОстаткам.ПоставщикДанных
  • ТоргуемВсем.ОтчетПоОстаткам.ВалидаторДанных : Система.Формы.ВалидаторДанныхРавенство


Причем, классы пространства имен Система не зависят от используемых компонент v7.7 и используются в любых конфигурациях, а классы пространства имен ТоргуемВсем используются только в одноименной конфиге, в соответствующем отчете.

Чтобы это работало, создаем где-то в сети расшареный каталог \\server\Классы1спп со следущим содержимым:

     Система\
          Формы\
               РасширениеФормы.ert
               ВалидаторДанныхБазовый.ert
               ВалидаторДанныхРавенство.ert
               ВалидаторДанныхДиапазон.ert
     ТоргуемВсем\
          ОтчетПоОстаткам\
               ГенераторПечатнойФормы.ert
               ПоставщикДанных.ert
               ВалидаторДанных.ert

Сообщаем нашей конфиге, что классы нужно искать в каталоге \\server\Классы1спп.
На этом вся работа по подключению классов заканчивается.
При первом создании экземпляра класса, скажем, ТоргуемВсем.ОтчетПоОстаткам.ГенераторПечатнойФормы, 1С++ обращается напрямую к файлу \\server\Классы1спп\ТоргуемВсем\ОтчетПоОстаткам\ГенераторПечатнойФормы.ert

При этом, также, конфига использует старые классы, описаные в defcls.prm и подключенные всевозможными динамическими способами - тут, надеюсь, пример не нужен.

При добавлении в МД, скажем, нового отчета, нам нужно будет только добавить файлы реализации  классов, аналогично приведенному примеру.
Конфигурация может быть безболезненно отчуждена путем копирования нужных файлов. Уникальность пространств имен обеспечивает отсутствие конфликтов.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #110 - 02. Марта 2007 :: 11:18
Печать  
Цитата:
Цитата:
То есть все описание класса лежит в одном файле класса. А как он подвязывается - дело десятое.

Вот оно в чем дело! У меня описания классов лежат в файлах реализации уже года три, если не больше. А как подвязываются эти файлы - как раз самый первый вопрос.

Вот оно в чем дело! Если тебе этого не нужно, то не надо говорить, что это никому не нужно. И если тебя устраивает кривой способ описания класса, то это не значит, что он всех устраивает. Ты же сам говорил: "Взгляните на вопрос по новому!"

Цитата:
Цитата:
У нас в 1С каждый отчет - это отдельное приложение.

Да ну?! С чего бы это?

Если ты этого не используешь, то это не значит, что этого никто не использует.

Не надо ограничиваться своей кочкой зрения.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #111 - 02. Марта 2007 :: 11:27
Печать  
sedmin писал(а) 02. Марта 2007 :: 11:18:
своей кочкой зрения.


Sedmin, не торопись, не торопись... Улыбка
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #112 - 02. Марта 2007 :: 11:28
Печать  
Цитата:
Цитата:
... для каждого отчета нужы классы из разных мест.

Безосновательные утверждения.

Ну почему я все классы должен сваливать в один каталог? У меня каждый отчет может быть со своими классами. Может я его из личной папки запускаю. Почему я куда-то на сервер должен сложить классы для него?

В конце концов, в Яве есть CLASSPATH, я для каждого приложения-отчета я могу его настроить так как захочу. И также классы могут искаться в текущей папке. Почему я не могу желать того же.

Встречный вопрос: вы работали в Яве?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #113 - 02. Марта 2007 :: 11:30
Печать  
Arta писал(а) 02. Марта 2007 :: 11:27:
sedmin писал(а) 02. Марта 2007 :: 11:18:
своей кочкой зрения.

Sedmin, не торопись, не торопись... Улыбка

А я и не тороплюсь. Написал то, что хотел написать.  Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #114 - 02. Марта 2007 :: 11:32
Печать  
Sedmin, я работал на Яве, я работал и работаю как на Линухе так и на винде.
Я программлю на разных языках (отчего часто путаюсь). И при этом не являюсь программером.
Но это не мешает мне понимать, что ВСЕ свои каталоги с классами ты можешь вставить в classpath.
Это проблема?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #115 - 02. Марта 2007 :: 11:35
Печать  
Arta писал(а) 02. Марта 2007 :: 11:32:
Но это не мешает мне понимать, что ВСЕ свои каталоги с классами ты можешь вставить в classpath.

У каждого отчета будет свой classpath?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #116 - 02. Марта 2007 :: 11:42
Печать  
sedmin писал(а) 02. Марта 2007 :: 11:35:
У каждого отчета будет свой classpath?

Arta писал(а) 23. Февраля 2007 :: 20:42:
3. Смотрим (по аналогии с java) %classpath%. classpath можем прописать в ини, может установить методом, как угодно в общем. В classpath конечно может быть несколько путей.

  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #117 - 02. Марта 2007 :: 11:51
Печать  
Совсем запутался, как хотите сделать.
Правильно ли я понял - перехватываем СоздатьОбъект("ИмяТипа") и ищем "ИмяТипа.ert" в спецпапке?
А если я кину в папку для классов файл "Word.Document.ert", а в коде напишу СоздатьОбъект("Word.Document") ?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #118 - 02. Марта 2007 :: 12:08
Печать  
Arta
А как какой-то отчет может повлиять на classpath в уже запущенной 1C?

Может я не догоняю? Вот сейчас какая ситуация: ты приходишь, приносишь отчет на дискетке, говоришь "Сейчас покажу.", и паказываешь.

А у тебя как будет? Ты приходишь, говоришь: "Давайте ка запишем эти классы на сервер, ну или поменяем classpath. Но тогда 1С надо будет перезапустить."

Так что ли?

orefkov
А знаешь, что мне на подобный вопрос АЛьФ ответил? "А ты не пиши СоздатьОбъект("Word.Document")."  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #119 - 02. Марта 2007 :: 12:13
Печать  
orefkov писал(а) 02. Марта 2007 :: 11:51:
Совсем запутался, как хотите сделать.
Правильно ли я понял - перехватываем СоздатьОбъект("ИмяТипа") и ищем "ИмяТипа.ert" в спецпапке?
А если я кину в папку для классов файл "Word.Document.ert", а в коде напишу СоздатьОбъект("Word.Document") ?

1. Да, верно
2. Вариант Палыча - через точку обозначется пространство имен, т.е. отдельный каталог. Мне лично так не совсем удобно.
У меня также много классов с несколькими точками в классах.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #120 - 02. Марта 2007 :: 13:50
Печать  
sedmin писал(а) 02. Марта 2007 :: 12:08:
Может я не догоняю? Вот сейчас какая ситуация: ты приходишь, приносишь отчет на дискетке, говоришь "Сейчас покажу.", и паказываешь.

Причем тут отчет и класс? Просто отчет он и так запустится.

Если отчет у тебя вместе с дополнительным классом, то тебе и сейчас придется перегрузить 1С для его подключения (либо использовать метод Артура).
С моим вариантом ты кладешь класс в хранилище классов (в %classpath%) и запускаешь свой отчет.

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #121 - 02. Марта 2007 :: 13:51
Печать  
artbear писал(а) 02. Марта 2007 :: 12:13:
2. Вариант Палыча - через точку обозначется пространство имен, т.е. отдельный каталог. Мне лично так не совсем удобно.
У меня также много классов с несколькими точками в классах.

Мне это тоже не нравится Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #122 - 02. Марта 2007 :: 13:52
Печать  
orefkov писал(а) 02. Марта 2007 :: 11:51:
Совсем запутался, как хотите сделать.
Правильно ли я понял - перехватываем СоздатьОбъект("ИмяТипа") и ищем "ИмяТипа.ert" в спецпапке?
А если я кину в папку для классов файл "Word.Document.ert", а в коде напишу СоздатьОбъект("Word.Document") ?



а если ты пропишешь в defcls.prm "Word.Document"? то?

это на совести разработчика...


P.S. Альф прав :-D
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #123 - 02. Марта 2007 :: 14:29
Печать  
sedmin
Цитата:
Вот оно в чем дело! Если тебе этого не нужно, то не надо говорить, что это никому не нужно. И если тебя устраивает кривой способ описания класса, то это не значит, что он всех устраивает.

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


Цитата:
Если ты этого не используешь, то это не значит, что этого никто не использует.

Что это? Что каждый отчет - это отдельное приложение? Ну не знаю. Видимо, надо определиться с терминологией.


Цитата:
Ну почему я все классы должен сваливать в один каталог?

Скажи, кто тебя к принуждает к такому извращению? Мы его вместе задавим интеллектом! Смех


Цитата:
В конце концов, в Яве есть CLASSPATH, я для каждого приложения-отчета я могу его настроить так как захочу. И также классы могут искаться в текущей папке. Почему я не могу желать того же.

См. выше. Плюс ответ Arta


Цитата:
Встречный вопрос: вы работали в Яве?

Коллега, если вы боитесь поставить меня в неловкое положение техническими подробностями, то совершенно напрасно.


Цитата:
У каждого отчета будет свой classpath?

Classpath со списком путей будет у каждой информационной базы.


Цитата:
А как какой-то отчет может повлиять на classpath в уже запущенной 1C?

Может я не догоняю? Вот сейчас какая ситуация: ты приходишь, приносишь отчет на дискетке, говоришь "Сейчас покажу.", и паказываешь.

А у тебя как будет? Ты приходишь, говоришь: "Давайте ка запишем эти классы на сервер, ну или поменяем classpath. Но тогда 1С надо будет перезапустить."


Вариантов масса: от модификации classpath [не переменной среды, естественно] без перезапуска 1С до использования существующего уже метода для загрузки класса из произвольного файла.



orefkov
Цитата:
Правильно ли я понял - перехватываем СоздатьОбъект("ИмяТипа") и ищем "ИмяТипа.ert" в спецпапке?


Речь пока о концепции. Перехват и поиск файла - это технические детали. Хотя, примерно так.


Цитата:
А если я кину в папку для классов файл "Word.Document.ert", а в коде напишу СоздатьОбъект("Word.Document") ?

Не кидай. Word может обидеться. Подмигивание
Видимо, будет то же самое, если в дефцлс описать класс с именем Word.Document.
  
Наверх
ICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

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

artbear, Arta
А что конкретно вам не нравится?
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #125 - 02. Марта 2007 :: 14:53
Печать  
Цитата:
sedmin
Цитата:
Вот оно в чем дело! Если тебе этого не нужно, то не надо говорить, что это никому не нужно. И если тебя устраивает кривой способ описания класса, то это не значит, что он всех устраивает.

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

Так да не так, коллега. Кривой метод загрузки классов (даже если описание хранится вместе с классом) вынуждает придумывать новые извращения и завязыватся на них.

Если реализовать мое предложение, то каждый сможет организовать понравившийся ему способ загрузки. А один, самолучший способ можно будет зафиксировать внутри 1С++. А уж если реализовать ЗагрузитьОписанниеКласса("ИмяКласса", "ИмяФайла"), то уж точно можно будет загородить любой огород. Хочешь - с DefCls, хочешь - с папками, хочешь - из текущей папки, хочешь - через classesroot, хочешь - через classpath.

Не надо придумывать и навязывать другим какую-то архитектуру. Нужно делать простые кирпичики, из которых можно собрать что угодно.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #126 - 02. Марта 2007 :: 15:01
Печать  
sedmin
Цитата:
Если реализовать мое предложение, то каждый сможет организовать понравившийся ему способ загрузки. А один, самолучший способ можно будет зафиксировать внутри 1С++. А уж если реализовать ЗагрузитьОписанниеКласса("ИмяКласса", "ИмяФайла"), то уж точно можно будет загородить любой огород. Хочешь - с DefCls, хочешь - с папками, хочешь - из текущей папки, хочешь - через classesroot, хочешь - через classpath.


Да в том то и дело, что не любой. Ты что же, предлагаешь перед каждым созданием объекта проверять подключен ли нужный класс?
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #127 - 02. Марта 2007 :: 15:08
Печать  
Я же написал:
Цитата:
А один, самолучший способ можно будет зафиксировать внутри 1С++.

Останется решить, какой способ будет самолучшим. Но если мне не понравится твой способ, то я смогу сделать другой. А иначе - шиш.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #128 - 02. Марта 2007 :: 15:17
Печать  
Вот так и рождаются форки...  Язык
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #129 - 02. Марта 2007 :: 15:19
Печать  
Наоборот, это у вас форк получается. Если же сделать мой вариант, то тот, кого не устроит основной способ сможет воспользоваться обходным.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #130 - 02. Марта 2007 :: 16:24
Печать  
sedmin
Коллега, уточни, пожалста, чем тебе не нравится метод, реализованый Артуром?

Цитата:
MetaInfoClasses::ЗагрузитьОписаниеКлассов(ИмяФайлаОписанияКлассов)

Загружает описания классов и сами классы из соответствующих файлов.
Синтаксис описания и реализации классов - это обычный синтаксис 1С++

Как обычно, каждый класс должен быть реализован в отдельном файле.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #131 - 02. Марта 2007 :: 16:50
Печать  
Тем, что мне не нравится синтаксис 1С++.

Тем, что приходится одно и то же писать в двух файлах. Или, что не многим лучше, делать //#include. Тем, что я не могу описание метода поместить рядом с методом. Тем, что вследствие include, в .prm файлах нет нормальной диагностики.

В конце концов, тем, что это полумера. Какое-то заплаточное решение - ни то ни се.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #132 - 04. Марта 2007 :: 22:41
Печать  
artbear писал(а) 21. Февраля 2007 :: 06:09:
Цитата:
MetaInfoClasses::ЗагрузитьОписаниеКлассов(ИмяФайлаОписанияКлассов)

Загружает описания классов и сами классы из соответствующих файлов.
Синтаксис описания и реализации классов - это обычный синтаксис 1С++

Как обычно, каждый класс должен быть реализован в отдельном файле.



Артур, надо бы б в прикрепленной ветке про "новое в сборке" отразить это. А то опять будут вопросы плодить на форуме...
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #133 - 05. Марта 2007 :: 03:22
Печать  
sedmin
Насчет полумеры полностью согласен.
Я тут подумал над твоими аргументами насчет внешних отчетов... действительно, они являются чем-то вроде внешнего приложения.

All
Для упрощения запуска внешних отчетов на "чужом" компе, предлагаю ввести метод для подключения путей к классам. Т.е. при открытии формы вызываем, например:
Код
Выбрать все
перем
   путь, файл, окружение
;

РасположениеФайла(путь, файл);
окружение = СоздатьОбъект("Окружение1Срр");
окружение.ДобавитьПуть(путь);
 


При закрытии, сответственно, этот путь следует удалить.
  
Наверх
ICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #134 - 05. Марта 2007 :: 03:36
Печать  
sedmin
А насчет загрузки класса из конкретного файла мое мнение неизменно: это лишнее. Достаточно только указания путей к классам.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #135 - 05. Марта 2007 :: 08:13
Печать  
Arta писал(а) 04. Марта 2007 :: 22:41:
Артур, надо бы б в прикрепленной ветке про "новое в сборке" отразить это. А то опять будут вопросы плодить на форуме...

Так вроде я сразу написал туда Улыбка
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #136 - 05. Марта 2007 :: 08:55
Печать  
Цитата:
Код
Выбрать все
перем
   путь, файл, окружение
;

РасположениеФайла(путь, файл);
окружение = СоздатьОбъект("Окружение1Срр");
окружение.ДобавитьПуть(путь);
 


Мсье знает толк в извращениях.  Подмигивание
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #137 - 05. Марта 2007 :: 09:01
Печать  
sedmin
Это заметно только истиному ценителю!  Смех

зы: А если серьезно?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #138 - 05. Марта 2007 :: 09:18
Печать  
[quote author=Палыч link=1169711429/120#133 date=1173064965]
Код
Выбрать все
перем
   путь, файл, окружение
;

РасположениеФайла(путь, файл);
окружение = СоздатьОбъект("Окружение1Срр");
окружение.ДобавитьПуть(путь);
 


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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #139 - 05. Марта 2007 :: 09:19
Печать  
artbear писал(а) 05. Марта 2007 :: 08:13:
Так вроде я сразу написал туда Улыбка


Проглядел, сорри...
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #140 - 20. Апреля 2007 :: 16:29
Печать  
artbear писал(а) 21. Февраля 2007 :: 06:09:
Цитата:
MetaInfoClasses::ЗагрузитьОписаниеКлассов(ИмяФайлаОписанияКлассов)

Загружает описания классов и сами классы из соответствующих файлов.
Синтаксис описания и реализации классов - это обычный синтаксис 1С++

Как обычно, каждый класс должен быть реализован в отдельном файле.


Артур, а можно сделать так, чтобы в качестве параметра передавалось либо имя файла, либо текст самого файла prm.
Не хочется каждый раз писать файл .prm на диск

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #141 - 22. Апреля 2007 :: 07:32
Печать  
Мне самому не нравится необходимость хранения прм-файла.
Но дело в том, что на подобное хранение в 1С++ довольно много завязано.  Я пока не стал столь глобально перелопачивать код подключения классов.
Хотя подобные планы, несомненно, есть, как я уже писал выше Улыбка

Пока можно обойтись созданием промежуточного класса, который бы по полученным текстам создавал бы временные файлы и подключал бы классы Улыбка - например, в временной или специальной определенной папке.

ЗЫ несколько дней был в оффлайне, срочная и хлебная работа, а потом достойный отдых Улыбка
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #142 - 22. Апреля 2007 :: 09:40
Печать  
artbear писал(а) 22. Апреля 2007 :: 07:32:
например, в временной или специальной определенной папке.

Общая папка не пойдет, а то все встанет раком, если 100 пользователей при подключении класса начнут создавать одинаковый тот же файл.

Тогда проще самому в каталоге временных файлов создавать.

В целом идея создания классов на лету интересная, держит только создание prm...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #143 - 22. Апреля 2007 :: 14:04
Печать  
Arta писал(а) 22. Апреля 2007 :: 09:40:
artbear писал(а) 22. Апреля 2007 :: 07:32:
например, в временной или специальной определенной папке.

Общая папка не пойдет, а то все встанет раком, если 100 пользователей при подключении класса начнут создавать одинаковый тот же файл.

Тогда проще самому в каталоге временных файлов создавать.

Я, в общем-то, и говорил о спец.папке для каждого пользователя - типа КаталогЮзера\Классы Улыбка
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #144 - 24. Апреля 2007 :: 05:46
Печать  
Arta писал(а) 20. Апреля 2007 :: 16:29:
Артур, а можно сделать так, чтобы в качестве параметра передавалось либо имя файла, либо текст самого файла prm.
Не хочется каждый раз писать файл .prm на диск

В общем, удалось решить и эту проблему Улыбка
с минимумом изменений в коде 1С++ !
Постараюсь вечером залить код в репозитарий.

ЗЫ все тесты, в т.ч. и на этот новый функционал, проходят прекрасно Улыбка
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #145 - 24. Апреля 2007 :: 15:16
Печать  
Изменения на 24.04.07 в 1С++ 2.5.0.2
Цитата:
[+] поправлен метод по динамической загрузке классов 1С++ ниемКлассов, [НачальныйКаталогПоискаФайла = ""])"
1) он может принимать два параметра, один из которых может быть не указан.
2) первый параметр может быть не именем файла, а строкой с описанием подключением классов.
В этом случае второй параметр может указывать на путь, относительно которого ищутся классы.
Если второй параметр не указан, классы ищутся по умолчанию относительно каталога ИБ.


Качать утром 25.04.07 ночную сборку 1С++ 2.5.0.2

ЗЫ новое поведение проверено на тестах в конфе тестирования 1С++
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #146 - 25. Апреля 2007 :: 06:13
Печать  
artbear писал(а) 24. Апреля 2007 :: 15:16:
ИмяФайлаОписанияИлиСтрокаСОписаниемКлассов

О-хо-хо... Мухи и котлеты... Сказать нечего.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

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

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: Динамич. создание классов и подкл. файл. реали
Ответ #148 - 25. Апреля 2007 :: 08:20
Печать  
В принципе, пока этот метод не документирован, его всегда можно изменить Улыбка
ИМХО тогда все-таки вернуться к двум методам -
ЗагрузитьОписаниеКлассовИзФайла(ИмяФайла)
ЗагрузитьОписаниеКлассовИзСтроки(СтрокаОписания, [КаталогПоиска = ""])
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #149 - 25. Апреля 2007 :: 11:06
Печать  
sedmin писал(а) 25. Апреля 2007 :: 06:13:
О-хо-хо... Мухи и котлеты... Сказать нечего.


ЧТО в таком подходе не так???
Это совершенно нормальная практика, передается либо имя файла, либо его содержание.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #150 - 25. Апреля 2007 :: 14:13
Печать  
Arta писал(а) 25. Апреля 2007 :: 11:06:
Это совершенно нормальная практика, передается либо имя файла, либо его содержание.

Если Вам не нравится моя точка зрения, то считайте, что я ничего не говорил.

Хотя все же позвольте вопрос. А у кого это нормальная практика? Я их знаю?
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #151 - 05. Июня 2007 :: 17:43
Печать  
Цитата:
1. При загрузке компоненты классы автоматически не загружаются.
А может МетаИнфоКласс.ОтключитьКлассы1СРР() ?
  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #152 - 06. Июня 2007 :: 04:41
Печать  
Цитата:
Цитата:
1. При загрузке компоненты классы автоматически не загружаются.
А может МетаИнфоКласс.ОтключитьКлассы1СРР() ?

Это ты к чему?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #153 - 06. Июня 2007 :: 10:02
Печать  
artbear писал(а) 06. Июня 2007 :: 04:41:
Цитата:
Цитата:
1. При загрузке компоненты классы автоматически не загружаются.
А может МетаИнфоКласс.ОтключитьКлассы1СРР() ?

Это ты к чему?
Пусть себе загружаются, а те классы, которые не нужны - отключить, что-то типа ОтключитьКлассы1СРР("Класс1,Класс12") или по одному.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #154 - 06. Июня 2007 :: 16:09
Печать  
Это уже наверное перебор.
Надо изначально не грузить те классы, которые не нужны, если уж на то пошло.
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #155 - 06. Июня 2007 :: 16:47
Печать  
fez писал(а) 25. Января 2007 :: 16:38:
sedmin писал(а) 25. Января 2007 :: 08:45:
Только надо определиться, как будут загружаться классы из обработок. Или все обработки будут компилироваться как классы? Улыбка


Прошу обратить внимание на этот вопрос. Как загружать классы, которые внутри конфигурации?
Вот собственно к чему я высказался.
  

Константин
Наверх
 
IP записан
 
grayrat
Junior Member
**
Отсутствует



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #156 - 11. Сентября 2007 :: 13:37
Печать  
Интересное поведение:
При попытке использовать ert как хранилище класса и формы обработки одновременно не получается динамически зарегистрировать класс. Причем при первом запуске пишет что "Не существует файла: D:\Тест.ert для класса: Тест", а при последующих - "Ошибка определения класса -- Класс с именем: Тест уже был определен ранее". После первого запуска класс появляется в списке зарегестрированных на вкладке 1с++ не смотря на ошибку...

Версия 1cpp - сегодняшняя ночная сборка.

Тест прилагается.
  

test_002.ert ( 7 KB | Загрузки )
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #157 - 30. Сентября 2007 :: 10:03
Печать  
А в какой документации можно об этом классе почитать кроме как здесь? Что то я не нашел
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #158 - 30. Сентября 2007 :: 10:11
Печать  
Цитата:
А в какой документации можно об этом классе почитать кроме как здесь? Что то я не нашел

Наша дока пока в разорванном состоянии, поэтому часть инфы лежит в старых доках

http://www.1cpp.ru/docum/1C++.als - Справка в формате Синтаксис-Помошника 1С.
http://www.1cpp.ru/docum/readme.doc - Основной массив документации.
Или Вся документация в запакованном виде http://www.1cpp.ru/docum/1cpp_docum.zip

ЗЫ а вообще посети заглавную страницу http://www.1cpp.ru, там все есть Улыбка
  

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


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #159 - 30. Сентября 2007 :: 10:21
Печать  
Я имел ввиду CreateMetaInfoClasses. В старой доке этого нет
  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реализац.
Ответ #160 - 12. Июля 2023 :: 08:03
Печать  
Добрый день!

А можно ли в обработке полностью выгрузить все классы и пере-загрузить только нужные классы?

Например, открывается обработка.
При открытии обработки методом "ЗагрузитьОписаниеКлассов" загружаются классы "Класс1", "Класс2".
Затем, после доработки (после рефакторинга), получилось так, что "Класс2" мне стал вообще не нужен, зато появился "Класс3".

Как сделать так, чтобы в очередной раз при открытии обработки "Класс2" вообще выгрузился и удалился. И заново загрузились классы "Класс1" и "Класс3"?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реализац.
Ответ #161 - 25. Июля 2023 :: 14:01
Печать  
ОчиститьДанныеОптимизацииКлассов() в этом не поможет? https://www.1cpp.ru/docum/html/MetaInfoClasses.html#clearclassoptimizationdata
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реализац.
Ответ #162 - 25. Августа 2023 :: 05:37
Печать  
alyuev писал(а) 25. Июля 2023 :: 14:01:
ОчиститьДанныеОптимизацииКлассов() в этом не поможет? https://www.1cpp.ru/docum/html/MetaInfoClasses.html#clearclassoptimizationdata

Сделал с помощью этого метода. Он работает только тогда, когда состав классов не меняется.
Описание метода:
Цитата:
Позволяет сбросить метаданные у пользовательских классов.
После исполнения данного метода классы при создании будут заново перекомпилированы, независимо от включения/выключения режима Оптимизация.


Судя по описанию, он только перекомпилирует классы.
А вот когда появляются новые классы или удаляются существующие классы, этот метод не помогает, приходится перезапускать 1С.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать