Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Вопрос ЗаменитьБазовыйОбъект (число прочтений - 9433 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Вопрос ЗаменитьБазовыйОбъект
27. Апреля 2007 :: 06:28
Печать  
Как проверить как отработал  метод ЗаменитьБазовыйОбъект?
Не могу найти справку по этому методу скиньте ссылку плз...

Так делать коректно:

     НоваяБаза = СоздатьОбъект(сИмяБазовогоКласса);
      Сам().ЗаменитьБазовыйОбъект("Отчет", НоваяБаза);
     
     _Отчет = Этот(Контекст).ПолучитьБазовыйКласс("Отчет");
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #1 - 27. Апреля 2007 :: 07:07
Печать  
Из за чего замена класса может не происходить?
Т.е. ЗаменитьБазовыйОбъект возвращает 0
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #2 - 27. Апреля 2007 :: 08:50
Печать  
Nick писал(а) 27. Апреля 2007 :: 06:28:
Как проверить как отработал  метод ЗаменитьБазовыйОбъект?
Не могу найти справку по этому методу скиньте ссылку плз...

Так делать коректно:

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

1. Справка есть в официальной доке.
2. Там же написано, что метод ЗаменитьБазовыйОбъект возвращает 1 в случае успеха или 0 если неуспех.
3. Замена возможна только в том случае, если определении класса четко указан его наследник и объект, на который мы меняем базу, является или объектом базового типа или его наследником
Т..е в иерархии
класс Потомок = Потомок.txt : Родитель
{}
может заменять базу-родителя на другой объект типа Родитель.

или в более сложной иерархии
класс Отец = Потомок.txt : Дед
{}
класс Внук = Потомок.txt : Отец
{}
Можно базу-Дед менять на любой объект типа Дед или Отец
« Последняя редакция: 27. Апреля 2007 :: 10:23 - artbear »  

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: Вопрос ЗаменитьБазовыйОбъект
Ответ #3 - 27. Апреля 2007 :: 09:03
Печать  
artbear писал(а) 27. Апреля 2007 :: 08:50:
1. Справка есть в официальной доке.
2. Там же написано, что метод ЗаменитьБазовыйОбъект возвращает 1 в случае успеха или 0 если неуспех.
3. Замена возможна только в том случае, если определении класса четко указан его наследник и объект, на который мы меняем базу, является или объектом базового типа или его наследником
Т..е в иерархии
класс Потомок = Потомок.txt : Родитель
{}
может заменять базу-родителя на другой объект типа Родитель.

или в более сложной иерархии
класс Отец = Потомок.txt : Дед
{}
класс Внук = Потомок.txt : Отец
{}
Можно базу-Дед менять на любой объект типа Дед или Отец


А еслли класс является наследником от двух

класс НовыйОтчет = Потомок.txt : Отчет, База
{}

класс НовыйОтчетSQL = ПотомокSQL.txt : Отчет, База
{}


Тогда для класса НовыйОтчет вот так сделать можно:

ЗаменитьБазовыйОбъект("Отчет", ОбъектНовыйОтчетSQL)
?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #4 - 27. Апреля 2007 :: 09:07
Печать  
Конечно, нет.
Где у тебя написано, что класс НовыйОтчет может быть наследником от НовыйОтчетSQL ?
  

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: Вопрос ЗаменитьБазовыйОбъект
Ответ #5 - 27. Апреля 2007 :: 09:24
Печать  
Мне нужно построить вот такую иерархию:

МойОтчет ---------------
                   |               |
                   |         ОтчетДЛяБазы1
                   |
            ОтчетДляБазы2
                   |
SQL  -------------------- ДБФ

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #6 - 27. Апреля 2007 :: 09:26
Печать  
artbear писал(а) 27. Апреля 2007 :: 09:07:
Конечно, нет.
Где у тебя написано, что класс НовыйОтчет может быть наследником от НовыйОтчетSQL ?

Тогда я не понимаю вот эту строчку "является или объектом базового типа или его наследником"
Я меняю класс "отчет" на класс "НовыйОтчетSQL" который является его наследником что не так?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #7 - 27. Апреля 2007 :: 09:39
Печать  
Nick писал(а) 27. Апреля 2007 :: 09:26:
artbear писал(а) 27. Апреля 2007 :: 09:07:
Конечно, нет.
Где у тебя написано, что класс НовыйОтчет может быть наследником от НовыйОтчетSQL ?

Тогда я не понимаю вот эту строчку "является или объектом базового типа или его наследником"

С "или наследником" оговорился Печаль
Можно только объект базового типа.
  

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: Вопрос ЗаменитьБазовыйОбъект
Ответ #8 - 27. Апреля 2007 :: 09:41
Печать  
artbear писал(а) 27. Апреля 2007 :: 09:39:
Nick писал(а) 27. Апреля 2007 :: 09:26:
artbear писал(а) 27. Апреля 2007 :: 09:07:
Конечно, нет.
Где у тебя написано, что класс НовыйОтчет может быть наследником от НовыйОтчетSQL ?

Тогда я не понимаю вот эту строчку "является или объектом базового типа или его наследником"

С "или наследником" оговорился Печаль
Можно только объект базового типа.


Какой тогда вообще смысл в этом методе?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #9 - 27. Апреля 2007 :: 09:44
Печать  
Nick писал(а) 27. Апреля 2007 :: 09:24:
Мне нужно построить вот такую иерархию:

МойОтчет ---------------
                   |               |
                   |         ОтчетДЛяБазы1
                   |
            ОтчетДляБазы2
                   |
SQL  -------------------- ДБФ

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


Можно существующимим средствами добится такого поведения класса?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #10 - 27. Апреля 2007 :: 09:59
Печать  
А зачем здесь нужна замена базового объекта?
тебе нужно менять именно итоговый объект, а не базовый.
Используй фабричный метод и все у тебя получится
  

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: Вопрос ЗаменитьБазовыйОбъект
Ответ #11 - 27. Апреля 2007 :: 10:02
Печать  
artbear писал(а) 27. Апреля 2007 :: 09:59:
А зачем здесь нужна замена базового объекта?
тебе нужно менять именно итоговый объект, а не базовый.
Используй фабричный метод и все у тебя получится

А пример можно? Кто есть "фабричный метод"?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #12 - 27. Апреля 2007 :: 10:09
Печать  
Nick писал(а) 27. Апреля 2007 :: 09:41:
Какой тогда вообще смысл в этом методе?

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 записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #13 - 27. Апреля 2007 :: 10:28
Печать  
artbear писал(а) 27. Апреля 2007 :: 10:09:
Nick писал(а) 27. Апреля 2007 :: 09:41:
Какой тогда вообще смысл в этом методе?

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



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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос ЗаменитьБазовыйОбъект
Ответ #14 - 27. Апреля 2007 :: 10:36
Печать  
Т.е. фабричный метод сам знает, какие классы ему нужно создавать.
Типа метод СоздатьОтчет(КакиеТоПараметры) сам вернет объект нужного класса в зависимости от параметров.
Как правило, подобные методы возвращают настоящих наследников от какого-то класса, как у тебя, Отчет.
  

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