Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как в КОП-наследнике вызвать базовый метод справочника (число прочтений - 3633 )
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Как в КОП-наследнике вызвать базовый метод справочника
27. Мая 2013 :: 13:41
Печать  
Приветствую!

Возникло желание опробовать переопределение метода справочника "ПолучитьЭлемент()" в классе-наследнике. И на данном примере попытаться разобраться для себя в "Полиморфизме" 1С++.

Создал класс "Спр.Артикулы" - наследник "Справочник.Артикулы".

Переопределил данный метод в КОПе:
Код
Выбрать все
Функция ПолучитьЭлемент() Экспорт
    Сообщить("ПолучитьЭлемент() - <"+СокрЛП(Вирт().ТекущийЭлемент())+">")
    // Теперь нужно вызать оригинальный метод "ПолучитьЭлемент()" и вернуть результат
    Возврат Вирт().ПолучитьЭлемент();
КонецФункции 




Далее пытаюсь получить выборку элементов справочника "Артикулы" через КОП:
Код
Выбрать все
оСпр=СоздатьОбъект("Спр.Артикулы");
оСпр.ВыбратьЭлементы();
Пока оСпр.ПолучитьЭлемент()=1 Цикл
    // ...
КонецЦикла; 


Но зацикливается на первом элементе выборки в переопределенном методе КОПа, и по итогу - вылетает 1С.

Помогите, пожалуйста, правильно сделать данное переопределение.
  
Наверх
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Как в КОП-наследнике вызвать базовый метод справочника
Ответ #1 - 27. Мая 2013 :: 13:44
Печать  
БазовыйКласс = вирт().ПолучитьБазовыйКласс("Справочник.МойСправочник");
Возврат БазовыйКласс.ТекущийЭлемент();
  
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Как в КОП-наследнике вызвать базовый метод справочника
Ответ #2 - 27. Мая 2013 :: 13:58
Печать  
Действительно, что-то я протормозил. Чем только не заморачивался, а такую простую вещь не сделал Улыбка

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



В обработке:
Код
Выбрать все
Сч=0;

Спр=СоздатьОбъект("Спр.Артикулы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
	Сч=Сч+1;
	Сообщить(""+Сч+". - "+СокрЛП(Спр.ТекущийЭлемент()));
КонецЦикла; 



Перебирает справочник - правильно!

Благодарю!
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать