Опрос
Опрос Тема Опроса: Динам.свойства - нужна ли совместимость со старым кодом ?
bars   pie

Нет - пусть все будет просто и удобно    
  10 (47.6%)
Да - оставляем старый код и проблемы при его использ.    
  2 (9.5%)
Мне все равно, я не использую динам.свойства    
  9 (42.9%)




Всего голосов: 21
« Создано: artbear : 18. Марта 2008 :: 07:24 »
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Зачем нужны динамические свойства? (число прочтений - 23947 )
lustin
1c++ power user
Отсутствует


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

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #30 - 18. Марта 2008 :: 07:29
Печать  
artbear писал(а) 18. Марта 2008 :: 06:36:
Их наличие/отсутствие в коде класса никак не влияет сейчас, они просто не используются и не вызываются Улыбка


может я опять что то ступил - но их вызывает Информатор.... вроде  Смущённый
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #31 - 18. Марта 2008 :: 07:32
Печать  
lustin писал(а) 18. Марта 2008 :: 07:29:
artbear писал(а) 18. Марта 2008 :: 06:36:
Их наличие/отсутствие в коде класса никак не влияет сейчас, они просто не используются и не вызываются Улыбка


может я опять что то ступил - но их вызывает Информатор.... вроде  Смущённый

Не переживайте, все проверено.
Например, рабочий тест
Код
Выбрать все
Процедура Проверить_Информатор_ПолучитьДинамическихСвойств(Объект)
	Сам=Сам();
	Информатор = СоздатьОбъект("Информатор");
	ТабСвойств = Информатор.ПолучитьТаблицуСвойств(Объект);
	//ТабСвойств.ВыбратьСтроку();

	лКоличествоСвойств = 4;
	Сам.ПроверитьРавенство(ТабСвойств.КоличествоСтрок(), лКоличествоСвойств);
	Сам.ПроверитьРавенство(ТабСвойств.ПолучитьЗначение(лКоличествоСвойств-1, "NameRus"), "Свойство");
	Сам.ПроверитьРавенство(ТабСвойств.ПолучитьЗначение(лКоличествоСвойств, "NameRus"), "ДинамическоеСвойство");
КонецПроцедуры

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

	Проверить_Информатор_ПолучитьДинамическихСвойств(Объект);
КонецПроцедуры

Процедура Тест_Информатор_ПолучитьДинамическихСвойствНаследника() Экспорт
	Сам=Сам();
	Объект = СоздатьОбъект("КлассСДинамическимСвойством_Наследник");
	Информатор = СоздатьОбъект("Информатор");
	ТабСвойств = Информатор.ПолучитьТаблицуСвойств(Объект);
	//ТабСвойств.ВыбратьСтроку();

	лКоличествоСвойств = 7;
	Сам.ПроверитьРавенство(ТабСвойств.КоличествоСтрок(), лКоличествоСвойств);
	Сам.ПроверитьРавенство(ТабСвойств.ПолучитьЗначение(лКоличествоСвойств-2, "NameRus"), "Свойство");
	Сам.ПроверитьРавенство(ТабСвойств.ПолучитьЗначение(лКоличествоСвойств-1, "NameRus"), "ДинамическоеСвойство");
	Сам.ПроверитьРавенство(ТабСвойств.ПолучитьЗначение(лКоличествоСвойств, "NameRus"), "ДинамическоеСвойствоНаследника");

	База = Объект.ПолучитьБазовыйКласс();
	Проверить_Информатор_ПолучитьДинамическихСвойств(База);
КонецПроцедуры
 

  

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: Зачем нужны динамические свойства?
Ответ #32 - 18. Марта 2008 :: 07:34
Печать  
artbear писал(а) 18. Марта 2008 :: 07:32:
Не переживайте, все проверено.
Например, рабочий тест

работает без использования этих устаревших методов,
я же говорю, что нужны всего 3 метода:
ДобавитьДинамическоеСвойство - это 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: Зачем нужны динамические свойства?
Ответ #33 - 21. Марта 2008 :: 02:50
Печать  
Короче, все залито.
Начиная со сборки 19.03.08 динамические свойства необходимо добавить вручную через метод ДобавитьДинамическоеСвойство, больше никаких изменений делать не нужно!
  

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



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #34 - 04. Апреля 2008 :: 09:39
Печать  
А когда этот функционал будет перенесен в 3.0 ?

Используются классы с динамическими свойствами, но в тоже время хочется потестировать новый функционал в сочетании с имеющимся.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #35 - 04. Апреля 2008 :: 11:12
Печать  
В 3.0 перенос будет выполнен буквально на днях Улыбка
  

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: Зачем нужны динамические свойства?
Ответ #36 - 04. Апреля 2008 :: 12:03
Печать  
Залил из 2.5 код по динамическим свойствам в репозитарий 3.0
Так что, как только kms выложит очередную сборку 3.0, там все уже будет Улыбка
  

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #37 - 19. Мая 2008 :: 13:14
Печать  
artbear писал(а) 04. Апреля 2008 :: 12:03:
Залил из 2.5 код по динамическим свойствам в репозитарий 3.0
Так что, как только kms выложит очередную сборку 3.0, там все уже будет Улыбка


По совету kms повторяю свой вопрос здесь (т.к. эта ветка дейстительно больше подходит под мой случай)

Раньше у меня в функции _ПриЧтенииСвойства(стрИмяАтрибута) работал следующий код

Код
Выбрать все
ИначеЕсли ТипЗначенияСтр(ПраваНаОбъект) = "СписокЗначений" Тогда
        Если ПраваНаОбъект.Принадлежит(стрИмяАтрибута) = 1 Тогда
		Возврат ПраваНаОбъект.Пометка(ПраваНаОбъект.НайтиЗначение(стрИмяАтрибута));
	Иначе
		Сообщить("Свойство " + стрИмяАтрибута + " не определено для класса ""ПраваНаОбъектыМетаданных""", "!");
	КонецЕсли;
КонецЕсли;
 



Т.е. если я в СпискеЗначений нашел этот атрибут то вернул его, если не нашел то или просто ругнулся или выдал исключение (по желанию), то теперь получается мне постоянно нужно следить что в этом списке, и добавлять/удалять ДинамическоеСвойство

Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.    
Как-бы это побороть? Чтобы и [bug 3606] был доволен, и я тоже. Плизззз!    
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Зачем нужны динамические свойства?
Ответ #38 - 19. Мая 2008 :: 14:48
Печать  
avgreen писал(а) 19. Мая 2008 :: 13:14:
Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.    

Я бы метод использовал вместо свойства.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #39 - 19. Мая 2008 :: 15:06
Печать  
Цитата:
Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.


А сейчас сработает такой код, или получим исключение?
Т.е. что будет если попытатся обратится к не добавленному атрибуту?
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #40 - 19. Мая 2008 :: 19:15
Печать  
Nick писал(а) 19. Мая 2008 :: 15:06:
Цитата:
Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.


А сейчас сработает такой код, или получим исключение?
Т.е. что будет если попытатся обратится к не добавленному атрибуту?


Исключение  Печаль
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #41 - 19. Мая 2008 :: 19:25
Печать  
kms писал(а) 19. Мая 2008 :: 14:48:
avgreen писал(а) 19. Мая 2008 :: 13:14:
Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.    

Я бы метод использовал вместо свойства.


Ну у меня уже куча кода написана - переписывать облом

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

Это конечно глубокое IMHO Улыбка
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Зачем нужны динамические свойства?
Ответ #42 - 19. Мая 2008 :: 21:04
Печать  
avgreen писал(а) 19. Мая 2008 :: 19:25:
Ну у меня уже куча кода написана - переписывать облом

Это понятно.

Цитата:
Т.к. в этом случае они практически статичны. Только определются не в момент компиляции/интерпретации а в момент исполнения. Но определять их таки нужно.

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

Можно пытаться играть на дизайне, как на гармошке, но звук не тот.
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #43 - 19. Мая 2008 :: 22:14
Печать  
avgreen писал(а) 19. Мая 2008 :: 19:25:
kms писал(а) 19. Мая 2008 :: 14:48:
avgreen писал(а) 19. Мая 2008 :: 13:14:
Но если в этом классе это хотя-бы теоретическти возможно, то в другом , который "Константы" и к которому я обращаюсь Константы.ИмяКонстанты и где "ИмяКонстанты" может быть абсолютно произвольное, отследить его никак не получится.    

Я бы метод использовал вместо свойства.


Ну у меня уже куча кода написана - переписывать облом

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

Это конечно глубокое IMHO Улыбка


тогда глубокое мое ИМХО... Если ты по коду обращаешься к "Константа.МоеНазваниеКонстанты" напрямую в коде, значит ты знаешь, что такое название "константы" должно существовать. В чем проблема прописать/определить его в классе?

ЗЫ... Если мне память не изменяет в 1С-ке нет макроподстановок... Вот в фоксе-это да... Так что обратиться к "Константа.ХренЗнаетЧегоЯХочуДаЕщеИСПеременнымНазванием" вряд ли получится. Методом - это да. А остальное все равно статично
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #44 - 20. Мая 2008 :: 00:44
Печать  
По поводу констант, что мешает добавлять свойства в конструкторе?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 
ОтправитьПечать