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

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




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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Зачем нужны динамические свойства?
28. Февраля 2008 :: 13:26
Печать  
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.
  
Наверх
www  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Зачем нужны динамические свойства?
Ответ #1 - 28. Февраля 2008 :: 14:34
Печать  
Ну например - у меня есть класс УскоренныйРегистр - чтобы он полностью
соответствовал регистру 1С(не менял кода) приходится добавлять динамические свойства -
измерения и ресурсы.

Если я правильно понял вопрос.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #2 - 28. Февраля 2008 :: 14:41
Печать  
kiruha писал(а) 28. Февраля 2008 :: 14:34:
Ну например - у меня есть класс УскоренныйРегистр

А у тебя есть такой класс Улыбка ? Или это был пример навскидку?
Если да, смогешь поделиться? Улыбка
ИМХО вопрос понят верно. Хотя в этом случае можно просто унаследовать от Структуры или DynaValue
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Зачем нужны динамические свойства?
Ответ #3 - 28. Февраля 2008 :: 15:07
Печать  
artbear писал(а) 28. Февраля 2008 :: 14:41:
kiruha писал(а) 28. Февраля 2008 :: 14:34:
Ну например - у меня есть класс УскоренныйРегистр

А у тебя есть такой класс Улыбка ? Или это был пример навскидку?
Если да, смогешь поделиться? Улыбка
ИМХО вопрос понят верно. Хотя в этом случае можно просто унаследовать от Структуры или DynaValue


Он под ДБФ, хотя под SQL переделать не сложно(но трудоемко - из за различной оптимизации).
В методах на ТА (СводныйОстаток ,Остаток, Остатки) не дает ускорения - видимо 1С тут неплохо оптимизировали.
В методах выгрузки итогов дает весьма неплохое.
Самое существенное ускорение дает при временных расчетах.

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Зачем нужны динамические свойства?
Ответ #4 - 28. Февраля 2008 :: 15:22
Печать  
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.

Вполне может быть полезно.

Только реализовано хреново - через парные методы типа get/set на свойство было бы лучше.
И с наследованием вопросов бы не возникало.

P.S.
Что, кстати, это было бы? полиморфные свойства?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #5 - 28. Февраля 2008 :: 15:24
Печать  
kiruha писал(а) 28. Февраля 2008 :: 15:07:
Он под ДБФ, хотя под SQL переделать не сложно(но трудоемко - из за различной оптимизации).
Самое существенное ускорение дает при временных расчетах.

Пока сырой.
Если интересно - доведу до ума и выложу недели через две.

Как раз интересно из-за работы под ДБФ, и, уверен, что не только мне.
Жду результатов.
  

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: Зачем нужны динамические свойства?
Ответ #6 - 28. Февраля 2008 :: 15:36
Печать  
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.

+ Вдогонку

Я, когда писал предыдущий ответ, малость подзабыл как оно на самом деле, поэтому смысла там мало.
Не, не знаю, зачем нужны динамические свойства, отключающие родные свойства класса и механику get/set.
Для каких-то специфических применений, наверное.
Имхо проще любой стандартный контейнер агрегировать или унаследовать.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #7 - 29. Февраля 2008 :: 02:53
Печать  
Цитата:
Имхо проще любой стандартный контейнер агрегировать или унаследовать.


Хотел написать свой класс структура на основе индексированной таблицы и динамических свойств. Но в виду "особеностей работы" динамических свойств придется использовать просто структуру Печаль
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #8 - 29. Февраля 2008 :: 04:58
Печать  
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.

Когда нужно после изменения значения какого-то свойства обновить ещё какие-то внутренние данные, то самое оно. Типа того:
Код
Выбрать все
Процедура ПриЗаписи_ПоискПоВхождению(НовПоискПоВхождению)
	ПоискПоВхождению = НовПоискПоВхождению;
	ПостроитьЗапросы();
КонецПроцедуры
 


Да, это можно сделать и явно, убрав свойство и сделав метод. Но со свойствами просто удобнее.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #9 - 29. Февраля 2008 :: 05:01
Печать  
Блин, написал, и понял что написал фигню  Улыбка

Зачем нужны именно динамические свойства я представить не могу.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #10 - 29. Февраля 2008 :: 05:02
Печать  
ADirks писал(а) 29. Февраля 2008 :: 04:58:
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.

Когда нужно после изменения значения какого-то свойства обновить ещё какие-то внутренние данные, то самое оно. Типа того:
Код
Выбрать все
Процедура ПриЗаписи_ПоискПоВхождению(НовПоискПоВхождению)
	ПоискПоВхождению = НовПоискПоВхождению;
	ПостроитьЗапросы();
КонецПроцедуры
 


Да, это можно сделать и явно, убрав свойство и сделав метод. Но со свойствами просто удобнее.


Это работает для статика, для динамических свойств работают процедуры
_ПриЧтенииСвойства
_ПриЗаписиСвойства
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #11 - 29. Февраля 2008 :: 08:19
Печать  
kiruha писал(а) 28. Февраля 2008 :: 15:07:
Он под ДБФ, хотя под SQL переделать не сложно(но трудоемко - из за различной оптимизации).
В методах на ТА (СводныйОстаток ,Остаток, Остатки) не дает ускорения - видимо 1С тут неплохо оптимизировали.
В методах выгрузки итогов дает весьма неплохое.
Самое существенное ускорение дает при временных расчетах.

Пока сырой.
Если интересно - доведу до ума и выложу недели через две.

Было бы очень интересно и полезно посмотреть
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #12 - 06. Марта 2008 :: 02:56
Печать  
Есть вообщето одно применение динамических свойство:

для статика есть методы ПриЗаписи_ИмяСвоиства и ПриПолучении_ИмяСвойства. Если мы наследуем от контейнера, например от структуры, то как нам получить аналогичные возможности для добавляемых свойств?
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


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

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #13 - 06. Марта 2008 :: 05:44
Печать  
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.



еще динамические свойства полезны при разработке ОРМ

к примеру существует объект СущностьБД
в коде я хочу обращаться к полям этой сущности через точку например СущностьБД.Наименование

теперь остается только реализовать обобщенные методы работы с динамическими свойствами, словарь динамический свойств и полей БД (пары значений), и собственно работу по выборки значения свойства из БД

то есть получается при добавлении нового поля в сущности мне достаочно добавить в словарь пару значений Свойство = ПолеБД
а методы для работы с этими полями уже работаю в обобщенном виде

Улыбка

  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #14 - 06. Марта 2008 :: 06:44
Печать  
Предложение - переделать/доработать всю схему работы с динамическими свойствами для обеспечения нормального ООП.

ИМХО можно добавить к КОП два зарезервированных метода
ДобавитьДинамическоеСвойство(Имя) - нужен 100%,
УдалитьДинамическиеСвойства ( или УдалитьДинамическоеСвойство(Имя) )
- хотя я также не могу представить, зачем свойства нужно удалять Печаль

Также оставляем у КОП методы _ПриЗаписиСвойства, _ПриЧтенииСвойства или можно их доп. переименовать в _ПриЗаписиДинамическогоСвойства, _ПриЧтенииДинамическогоСвойства

В этом случае вроде бы без проблем получается решить все проблемы с ООП.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #15 - 06. Марта 2008 :: 06:48
Печать  
artbear писал(а) 06. Марта 2008 :: 06:44:
Предложение - переделать/доработать всю схему работы с динамическими свойствами для обеспечения нормального ООП.

ИМХО можно добавить к КОП два зарезервированных метода
ДобавитьДинамическоеСвойство(Имя) - нужен 100%,
УдалитьДинамическиеСвойства ( или УдалитьДинамическоеСвойство(Имя) )
- хотя я также не могу представить, зачем свойства нужно удалять Печаль

Также оставляем у КОП методы _ПриЗаписиСвойства, _ПриЧтенииСвойства или можно их доп. переименовать в _ПриЗаписиДинамическогоСвойства, _ПриЧтенииДинамическогоСвойства

В этом случае вроде бы без проблем получается решить все проблемы с ООП.


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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #16 - 17. Марта 2008 :: 18:02
Печать  
artbear писал(а) 06. Марта 2008 :: 06:44:
Предложение - переделать/доработать всю схему работы с динамическими свойствами для обеспечения нормального ООП.

ИМХО можно добавить к КОП зарезервированные метод
ДобавитьДинамическоеСвойство(ИмяСвойства).

Также оставляем у КОП методы _ПриЗаписиСвойства, _ПриЧтенииСвойства или можно их доп. переименовать в _ПриЗаписиДинамическогоСвойства, _ПриЧтенииДинамическогоСвойства

В этом случае вроде бы без проблем получается решить все проблемы с ООП.

Народ, вроде все получилось Улыбка
Я реализовал вышеуказанную схему, теперь нормально можно работать как с обычными, так и с динамическими свойствам, как базовым классам, так и классам-наследникам.
Мои тесты это подтверждают.

Завтра буду заливать тесты 1С++ и код С++
Т.е. завтра в ночной сборке еще ничего нет.

Прошу дополнительно подумать, что я упустил

Удалять динам.свойства ИМХО не нужно, будет только большая путаница.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #17 - 18. Марта 2008 :: 05:11
Печать  
Обратная  совместимость есть?
Старые классы с динамическими свойствами переделывать не придется?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #18 - 18. Марта 2008 :: 05:14
Печать  
Есть только одна небольшая проблема Улыбка
Предположим, есть иерархия - Наследник-Предок, оба класса реализуют/используют динамические свойства.

В этом случае, если написать в произвольном коде
Код
Выбрать все
ОбъектНаследника.ДобавитьДинамическоеСвойство(Имя);
Сам().ДобавитьДинамическоеСвойство(Имя);
или
ОбъектБаза = ОбъектНаследника.ПолучитьБазовыйКласс("Предок");
ОбъектБаза.ДобавитьДинамическоеСвойство(Имя);
 


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


на самом деле динамическое свойство будет добавлено только к объекту класса Наследник, а не к базовому классу, и обработка добавленного имени будет происходить в классе-наследнике, а не в базовом классе.

Связано это с "питоновой" реализацией ООП в С++ Улыбка

Но, если для такой иерархии в коде класса Предок (внутри класса, а не снаружи) написано
Код
Выбрать все
Сам().ДобавитьДинамическоеСвойство(Имя); 


динамическое свойство будет добавлено именно к объекту базового класса, и обработка добавленного имени будет происходить в базовом классе, а не в его потомке.

Считаю это правильным, т.к. ИМХО динамические свойства в подавляющем большинстве случаев должен добавлять сам класс внутри своего кода, а не его клиенты.
Вышеописанная проблема актуальна только для иерархий, в которых и предок, и потомок реализуют динамические свойства. Для всех остальных вариантов нет разницы, из какого кода вызывается метод ДобавитьДинамическоеСвойство.

  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #19 - 18. Марта 2008 :: 05:46
Печать  
Это всё хорошо. А совместимость?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #20 - 18. Марта 2008 :: 06:28
Печать  
Nick писал(а) 18. Марта 2008 :: 05:46:
Это всё хорошо. А совместимость?

Совместимость на 99% Улыбка - т.к. методы для чтения/записи не меняются, а остальные методы для динам.свойств (типа _ПолучитьКолвоДСвойств и _ПолучитьИмяДСвойства) все равно не использовались, т.к. неверно работали Улыбка
Т.е. сейчас в существующие классы с динамическими свойствами нужно явно добавить динамические свойства, например, в конструкторе.
Оставшийся 1% я отвожу на код удаления динамических свойств, считаю, что этого быть не должно.
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #21 - 18. Марта 2008 :: 06:32
Печать  
artbear писал(а) 18. Марта 2008 :: 06:28:
а остальные методы для динам.свойств (типа _ПолучитьКолвоДСвойств и _ПолучитьИмяДСвойства) все равно не использовались, т.к. неверно работали Улыбка

Код
Выбрать все
//_____________________________________________________________________________
//
Функция _ПолучитьКолвоДСвойств()
	// для отладчика: позволяет видеть динамические свойства
	//
	Возврат Сам().КоличествоКолонок();
КонецФункции // _ПолучитьКолвоДСвойств()

//_____________________________________________________________________________
//
Функция _ПолучитьИмяДСвойства(Знач чНомер)
	// для отладчика: позволяет видеть динамические свойства
	//
	Попытка
		Возврат ч_ВиртТаблица.ПолучитьПараметрыКолонки(чНомер + ч_СлужКолонок); // вначале идут служебные
	Исключение
	КонецПопытки;

	Возврат "";
КонецФункции // _ПолучитьИмяДСвойства()
 


Вот нашел у себя - видать я неудачнег.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #22 - 18. Марта 2008 :: 06:36
Печать  
spock писал(а) 18. Марта 2008 :: 06:32:
Вот нашел у себя - видать я неудачнег.
Код
Выбрать все
Функция _ПолучитьКолвоДСвойств()
	// для отладчика: позволяет видеть динамические свойства

Функция _ПолучитьИмяДСвойства(Знач чНомер)
	// для отладчика: позволяет видеть динамические свойства
 



Кирилл, сейчас этот методы не нужны, в отладчике и так все будет ок, проверено Улыбка
Их наличие/отсутствие в коде класса никак не влияет сейчас, они просто не используются и не вызываются Улыбка
Т.е. их можешь просто оставить.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #23 - 18. Марта 2008 :: 06:37
Печать  
artbear писал(а) 18. Марта 2008 :: 06:28:
Nick писал(а) 18. Марта 2008 :: 05:46:
Это всё хорошо. А совместимость?

Совместимость на 99% Улыбка - т.к. методы для чтения/записи не меняются, а остальные методы для динам.свойств (типа _ПолучитьКолвоДСвойств и _ПолучитьИмяДСвойства) все равно не использовались, т.к. неверно работали Улыбка
Т.е. сейчас в существующие классы с динамическими свойствами нужно явно добавить динамические свойства, например, в конструкторе.
Оставшийся 1% я отвожу на код удаления динамических свойств, считаю, что этого быть не должно.

т.е. классы придется править
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #24 - 18. Марта 2008 :: 06:38
Печать  
artbear писал(а) 18. Марта 2008 :: 06:36:
Т.е. их можешь просто оставить.

замечательно.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #25 - 18. Марта 2008 :: 06:47
Печать  
Nick писал(а) 18. Марта 2008 :: 06:37:
artbear писал(а) 18. Марта 2008 :: 06:28:
Т.е. сейчас в существующие классы с динамическими свойствами нужно явно добавить динамические свойства, например, в конструкторе.

т.е. классы придется править

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

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: Зачем нужны динамические свойства?
Ответ #26 - 18. Марта 2008 :: 07:06
Печать  
Если классы править не хотим и для совместимости, можно принять решение, что доступ к чтению/записи будут контролировать новые методы КОП _ПриЧтенииДинамическогоСвойства и _ПриЗаписиДинамическогоСвойства.
А старый код оставляем для совместимости - правда, с ним столько глюков Печаль Печаль
Тогда старые классы править не придется
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #27 - 18. Марта 2008 :: 07:15
Печать  
artbear писал(а) 18. Марта 2008 :: 07:06:
Если классы править не хотим и для совместимости, можно принять решение, что доступ к чтению/записи будут контролировать новые методы КОП _ПриЧтенииДинамическогоСвойства и _ПриЗаписиДинамическогоСвойства.
А старый код оставляем для совместимости - правда, с ним столько глюков Печаль Печаль
Тогда старые классы править не придется

Может сделать опрос?
Мне в принципе не слишком принципиально, т.к. таких классов не много
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #28 - 18. Марта 2008 :: 07:20
Печать  
Nick писал(а) 18. Марта 2008 :: 07:15:
Может сделать опрос?
Мне в принципе не слишком принципиально, т.к. таких классов не много

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

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: Зачем нужны динамические свойства?
Ответ #29 - 18. Марта 2008 :: 07:29
Печать  
Все-таки добавил опрос, т.к. мнение пользователей 1С++ интересно.
Прошу голосовать
Я проголосовал нет, совместимость не нужна.
  

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



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

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


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

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

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


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


Ну может существовать а может и не существовать Улыбка Но даже не это главное. Главное то, что этих констант может быть несколько сотен ..... а может и тысяч. Для каждой прописывать ДобавитьСовойство - задолбешся
Поясню что в данном контексте означает константа. Это не макроподстановка и не константа времени компиляции/интерпретации как в С++ к примеру. Это моя попытка заменить с помощью класса объект метаданных "Константа". Полностью переопределить как для документа или справочника у меня к сожалению не получилось, но примерно похоже..... в ГМ определена глобальная переменаая "Константы"
Константы = СоздатьОбъект("Константы");
А дальше в любом модуле пишу Константы.ЛюбоеИмяКонстанты. Т.е. отличается только последняя буква "а" и "ы" - а так все похоже на стандартное обращенеи к объекту метаданных  Улыбка  Теперь прийедтся все переписывать через Константы.ПолучитьАтрибут("ЛюбоеИмяКонстанты")

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


Жаль!  Плачущий Просто ДинамическиеАтрибуты сами на это напрашивались. А в нынешней реализации они врядли найдут применение. Если все прийдется через методы делать....

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #46 - 20. Мая 2008 :: 05:19
Печать  
Nick писал(а) 20. Мая 2008 :: 00:44:
По поводу констант, что мешает добавлять свойства в конструкторе?

+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: Зачем нужны динамические свойства?
Ответ #47 - 20. Мая 2008 :: 05:30
Печать  
avgreen писал(а) 20. Мая 2008 :: 05:13:
Ну может существовать а может и не существовать Улыбка Но даже не это главное. Главное то, что этих констант может быть несколько сотен ..... а может и тысяч. Для каждой прописывать ДобавитьСовойство - задолбешся
Поясню что в данном контексте означает константа. Это не макроподстановка и не константа времени компиляции/интерпретации как в С++ к примеру. Это моя попытка заменить с помощью класса объект метаданных "Константа". Полностью переопределить как для документа или справочника у меня к сожалению не получилось, но примерно похоже..... в ГМ определена глобальная переменаая "Константы"
Константы = СоздатьОбъект("Константы");
А дальше в любом модуле пишу Константы.ЛюбоеИмяКонстанты. Т.е. отличается только последняя буква "а" и "ы" - а так все похоже на стандартное обращенеи к объекту метаданных  Улыбка  Теперь прийедтся все переписывать через Константы.ПолучитьАтрибут("ЛюбоеИмяКонстанты")

Жаль!  Плачущий Просто ДинамическиеАтрибуты сами на это напрашивались. А в нынешней реализации они врядли найдут применение. Если все прийдется через методы делать....


Еще раз - само название "Константы" подразумевает, что наименования и смысл этих констант известны на момент начала работы пользователя, т.е. их создание можно юзать в конструкторе.
Вопрос: ты ведь наверняка каким-то образом получаешь их реестр у себя в виде списка/таблицы/справочника или еще как-то, так что в цикле выполнить метод по добавлению наименований разве сложно ?
Дело твое, но переписывать клиентский код, когда можно обойтись правкой класса-сервера, это полный изврат Печаль
  

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: Зачем нужны динамические свойства?
Ответ #48 - 20. Мая 2008 :: 05:38
Печать  
avgreen писал(а) 19. Мая 2008 :: 13:01:
А его я получаю из Справочника.Константы в котором я могу найти константу а могу и не найти - и верну ПолучитьПустоеЗначение()

А Справочник.Константы  подчинен Справочнику.Пользователи. Т.е. у каждого есть свои константы, а если нету своей то ищется глобальная, и уже если ее нету - тогда ПолучитьПустоеЗначение()

ИМХО тебе нужно просто преобразовать код постоянного поиска соответствующей константы в код по установке всех необходимых констант для пользователя и перенести этот код в конструктор Улыбка
  

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: Зачем нужны динамические свойства?
Ответ #49 - 20. Мая 2008 :: 08:01
Печать  
artbear писал(а) 20. Мая 2008 :: 05:38:
ИМХО тебе нужно просто преобразовать код постоянного поиска соответствующей константы в код по установке всех необходимых констант для пользователя и перенести этот код в конструктор Улыбка


Ну можно и так конечно.... просто бюсь памяти не будет это много занимать?

Но наверное таки  прийдется переделать, если я хочу вообще на тройку перейти Улыбка
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #50 - 20. Мая 2008 :: 08:08
Печать  
Цитата:
Ну можно и так конечно.... просто бюсь памяти не будет это много занимать?


Что в твоем понятии много памяти?
  
Наверх
ICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



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


Что в твоем понятии много памяти?


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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #52 - 20. Мая 2008 :: 11:55
Печать  
avgreen писал(а) 20. Мая 2008 :: 11:54:
Все равно приходится переписывать не только это...... Там еще некоторое количество несовместимого кода оказалось - сейчас выгребаю Улыбка

Описывай все расхождения, это очень интересная и полезная тема.
Жду
  

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: Зачем нужны динамические свойства?
Ответ #53 - 20. Мая 2008 :: 14:24
Печать  
artbear писал(а) 20. Мая 2008 :: 11:55:
avgreen писал(а) 20. Мая 2008 :: 11:54:
Все равно приходится переписывать не только это...... Там еще некоторое количество несовместимого кода оказалось - сейчас выгребаю Улыбка

Описывай все расхождения, это очень интересная и полезная тема.
Жду


1. Ну то что касается ДинамическихСвойств и особенностей работы с ними описнные в п.1 бага 3606 то это и так понятно что их устранили (эти самые особенности) а я, подстаиваясь под этот баг, через _ПриЧтенииСвойства и _ПриЗаписиСвойства обращался к статическим свойствам. Теперь исправляю эти куски кода .... что делаю Экспорт а что ДобавитьДинамическийАтрибут......

2. Перехватчик событий до сих пор работал с Событие_ПриОткрытии(Знач ФлагЧтенияНастроек) Экспорт как для Отчетов так и для Документов, Справочников, Журналов - хотя и не должен был-бы судя по обсуждениям в форуме. То-же касается и события Функция Событие_ВводНового(Знач ПризнКопирования, Знач ОбъектКопирования) Экспорт которое вороди как не должно было работать с отчетами - но работало. И я беззастенчиво пользовался этой глюкоподобной фичей Улыбка
В то-же время событие Функция Событие_ПриЗаписи(Знач СписокПериодическихРекв) Экспорт работало только со справочниками.
Ну не хотелось мне код для разных объектов растаскивать по разным классам. Было там кой-чего общего. Сразу предваряя предложения "нужно былосоздать общий класс родитель" - я так и сделал. Но мне не нравилась куча реквизитов Public, а Private не было..... и нету...... Теперь пришлось таки насоздавать классов, т.к. фичу убрали Улыбка Как говорится "сам виноват" Нефиг пользоваться недокументированными возможностями!  Смех
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #54 - 20. Мая 2008 :: 21:40
Печать  
avgreen писал(а) 20. Мая 2008 :: 14:24:
2. Перехватчик событий до сих пор работал с Событие_ПриОткрытии(Знач ФлагЧтенияНастроек) Экспорт как для Отчетов так и для Документов, Справочников, Журналов - хотя и не должен был-бы судя по обсуждениям в форуме.

С чего ты взял? Перехватчик перехватывает все штатные события формы. Эта вроде как штатная.
avgreen писал(а) 20. Мая 2008 :: 14:24:
То-же касается и события Функция Событие_ВводНового(Знач ПризнКопирования, Знач ОбъектКопирования) Экспорт которое вороди как не должно было работать с отчетами - но работало. И я беззастенчиво пользовался этой глюкоподобной фичей Улыбка

То же самое. Штатное событие. Так и должно быть.
avgreen писал(а) 20. Мая 2008 :: 14:24:
В то-же время событие Функция Событие_ПриЗаписи(Знач СписокПериодическихРекв) Экспорт работало только со справочниками.

Убрав отсутствующий у документов параметр в событии, ты с удивлением обнаружишь что работает и с документами.  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #55 - 21. Мая 2008 :: 03:10
Печать  
Arta писал(а) 20. Мая 2008 :: 21:40:
avgreen писал(а) 20. Мая 2008 :: 14:24:
2. Перехватчик событий до сих пор работал с Событие_ПриОткрытии(Знач ФлагЧтенияНастроек) Экспорт как для Отчетов так и для Документов, Справочников, Журналов - хотя и не должен был-бы судя по обсуждениям в форуме.

С чего ты взял? Перехватчик перехватывает все штатные события формы. Эта вроде как штатная.
avgreen писал(а) 20. Мая 2008 :: 14:24:
То-же касается и события Функция Событие_ВводНового(Знач ПризнКопирования, Знач ОбъектКопирования) Экспорт которое вороди как не должно было работать с отчетами - но работало. И я беззастенчиво пользовался этой глюкоподобной фичей Улыбка

То же самое. Штатное событие. Так и должно быть.
avgreen писал(а) 20. Мая 2008 :: 14:24:
В то-же время событие Функция Событие_ПриЗаписи(Знач СписокПериодическихРекв) Экспорт работало только со справочниками.

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

+1
Особенно про отсутствующий параметр !
Обрати внимание: Перехватчик работает со штатными событиями, практически ничего к ним не добавляя, кроме событий ГМ. Т.е. при перехвате штатного события нужно читать Синтакс-помощник и помнить, что у 1С события с одним названием для разных форм могут иметь разные параметры Печаль
  

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: Зачем нужны динамические свойства?
Ответ #56 - 21. Мая 2008 :: 04:56
Печать  
Arta писал(а) 20. Мая 2008 :: 21:40:
avgreen писал(а) 20. Мая 2008 :: 14:24:
2. Перехватчик событий до сих пор работал с Событие_ПриОткрытии(Знач ФлагЧтенияНастроек) Экспорт как для Отчетов так и для Документов, Справочников, Журналов - хотя и не должен был-бы судя по обсуждениям в форуме.

С чего ты взял? Перехватчик перехватывает все штатные события формы. Эта вроде как штатная.

Да никто-ж и не спорит - штатная! А не должно было работать по количеству параметров Цитата:
avgreen писал(а) 20. Мая 2008 :: 14:24:
То-же касается и события Функция Событие_ВводНового(Знач ПризнКопирования, Знач ОбъектКопирования) Экспорт которое вороди как не должно было работать с отчетами - но работало. И я беззастенчиво пользовался этой глюкоподобной фичей Улыбка

То же самое. Штатное событие. Так и должно быть.
avgreen писал(а) 20. Мая 2008 :: 14:24:
В то-же время событие Функция Событие_ПриЗаписи(Знач СписокПериодическихРекв) Экспорт работало только со справочниками.

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

Нет! Я удивлен что раньше работало и с этим параметром а не тем что сейчас перестало работать. И тем более не тем что при удалении параметра снова начинает работать.

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #57 - 21. Мая 2008 :: 05:08
Печать  
artbear писал(а) 21. Мая 2008 :: 03:10:
+1
Особенно про отсутствующий параметр !
Обрати внимание: Перехватчик работает со штатными событиями, практически ничего к ним не добавляя, кроме событий ГМ. Т.е. при перехвате штатного события нужно читать Синтакс-помощник и помнить, что у 1С события с одним названием для разных форм могут иметь разные параметры Печаль


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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #58 - 21. Мая 2008 :: 06:28
Печать  
avgreen писал(а) 21. Мая 2008 :: 05:08:
Все, сразу-же скороспелый вывод - "Новая версия глюкавая!"  Смех

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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #59 - 12. Августа 2008 :: 15:26
Печать  
fez писал(а) 28. Февраля 2008 :: 13:26:
Собсна субж.
Причем я не прикалываюсь, мне реально интересно.


Для себя придумал два случая.

1. Реализация класса типа ТаблицыЗначений. Когда класс не знает о том, какие у него будут колонки, и на 100% отдает эту задачу клиенту. Кстати, в этом случае очевидна необходимость возможности удаления динамических атрибутов.

2. Наследование от класса с публичным атрибутом. Рефакторинг "Замещение наследования агрегированием". Для того, чтобы не переписывать клиентский код, который работает с публичным атрибутом базового класса - можно добавить наследнику динамический атрибут. Особо актуально в ситуации, когда клиентский код недоступен (например если эти классы входят в состав опубликованной библиотеки).
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Зачем нужны динамические свойства?
Ответ #60 - 12. Августа 2008 :: 15:49
Печать  
Третий вариант, похожий на второй.

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