Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема icpp vs Rainbow как подружить? (число прочтений - 2080 )
mvgfirst
Full Member
***
Отсутствует


В борьбе бобра с ослом
всегда побеждает бобро!

Сообщений: 152
Местоположение: Украина г. Кривой Рог
Зарегистрирован: 17. Августа 2007
Пол: Мужской
icpp vs Rainbow как подружить?
12. Мая 2008 :: 11:12
Печать  
Рабочая конфигурация, куда я потихонечку пробую внедрять icpp вся построена на прямых запросах с использованием компоненты rainbow. И в принципе никаких нареканий за исключением одного.
Наткнулся на него при попытка прикрутить поиск "а ля V8"...
В одном из методов набора классов реализующих этот поиск есть строка которая "превращает" внутреннее представление элемента в объект 1С.
Код
Выбрать все
	МД = СоздатьОбъект("MetaDataWork");
	_Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
 


вроде бы все замечательно, печально только то что у Rainbow есть объект MetaDataWork и он не имеет такого метода. Этот метод в библиотеке Rainbow принадлежит объетку "RainbowService".
Вот и получается что придется лезть внутрь класса и изменять его функционал.

Можно ли каким либо образом указать как создавать одноименные объекты из разных компонент?
И как обойти данную проблему не изменяя класс... и не отключая пока библиотеку Rainbow (слишком много мест где придется подравлять... я не выдержу этого за один раз Улыбка )
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: icpp vs Rainbow как подружить?
Ответ #1 - 12. Мая 2008 :: 11:15
Печать  
mvgfirst писал(а) 12. Мая 2008 :: 11:12:
Можно ли каким либо образом указать как создавать одноименные объекты из разных компонент?
И как обойти данную проблему не изменяя класс... и не отключая пока библиотеку Rainbow (слишком много мест где придется подравлять... я не выдержу этого за один раз Улыбка )

1. Нет, нельзя
2. Самый простой путь - делай наследника от класса Rainbow и переписывай клиентский код.
После полного перехода на 1С++ можешь унаследовать свой класс от класса 1С++, т.е. уже не нужно будет еще раз переделывать клиентский код.
  

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


Будьте профессионалами!

Сообщений: 180
Местоположение: KIEV
Зарегистрирован: 17. Сентября 2007
Пол: Мужской
Re: icpp vs Rainbow как подружить?
Ответ #2 - 12. Мая 2008 :: 18:41
Печать  
mvgfirst писал(а) 12. Мая 2008 :: 11:12:
Рабочая конфигурация, куда я потихонечку пробую внедрять icpp вся построена на прямых запросах с использованием компоненты rainbow. И в принципе никаких нареканий за исключением одного.
Наткнулся на него при попытка прикрутить поиск "а ля V8"...
В одном из методов набора классов реализующих этот поиск есть строка которая "превращает" внутреннее представление элемента в объект 1С.
Код
Выбрать все
	МД = СоздатьОбъект("MetaDataWork");
	_Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
 


вроде бы все замечательно, печально только то что у Rainbow есть объект MetaDataWork и он не имеет такого метода. Этот метод в библиотеке Rainbow принадлежит объетку "RainbowService".
Вот и получается что придется лезть внутрь класса и изменять его функционал.

Можно ли каким либо образом указать как создавать одноименные объекты из разных компонент?
И как обойти данную проблему не изменяя класс... и не отключая пока библиотеку Rainbow (слишком много мест где придется подравлять... я не выдержу этого за один раз Улыбка )


Ну а че нельзя так:
Попытка
    МД = СоздатьОбъект("MetaDataWork");
    _Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
Исключение
   МД = СоздатьОбъект("RainbowService");
    _Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
КонецПопытки;
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: icpp vs Rainbow как подружить?
Ответ #3 - 13. Мая 2008 :: 04:28
Печать  
Да, можно и так.
Но лучше этот код закинуть в спец.класс и создавать объект именно этого класса вместо Метадатаворк.
  

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


В борьбе бобра с ослом
всегда побеждает бобро!

Сообщений: 152
Местоположение: Украина г. Кривой Рог
Зарегистрирован: 17. Августа 2007
Пол: Мужской
Re: icpp vs Rainbow как подружить?
Ответ #4 - 13. Мая 2008 :: 15:47
Печать  
Zealot писал(а) 12. Мая 2008 :: 18:41:
Ну а че нельзя так:
Попытка
   МД = СоздатьОбъект("MetaDataWork");
   _Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
Исключение
  МД = СоздатьОбъект("RainbowService");
   _Объект = МД.ЗначениеИзСтрокиБД("Справочник."+ВидСправочника, идЭлемент);
КонецПопытки;

Да собственно так я и сделал... Подмигивание Еще до того как написал здесь вопрос...
Просто искла более красивый способ...
Но я все понимаю - незачем тащить за собой этот Паровоз RAINBOW... будем переходить на новые рельсы...
Но не резко... шоб не испугацца
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать