Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Зачем нужен методТекущийЭлемент()


Автор: Vaddd 16.2.2007, 11:03
    Здравствуйте, в процессе изучения языка 1С возник вопрос.

        СПР=СоздатьОбъект("Справочник.Контрагенты");
        СПР.НайтиПоКоду(<какой-нибудь код>);
        переменная=СПР.наименование;
        переменная=СПР.ТекущийЭлемент().наименование;

  Эффект от последних двух строчек одинаковый, так для чего нужен метод ТекущийЭлемент ? В описании языка написано, что "Метод ТекущийЭлемент возвращает значение элемента справочника в целом, как объекта", а ведь в моем примере СПР это и есть ссылка на объект типа Справочник.Контрагенты, который позиционирован на какой то конекретный элемент. Это разве не одно и тоже ?

Автор: Naghual 16.2.2007, 11:30
СПР - Справочник, с позиционированным элементом!
СПР.ТекущийЭлемент() - Только сам элемент.

Автор: Vaddd 16.2.2007, 11:50
Цитата

СПР - Справочник, с позиционированным элементом!
СПР.ТекущийЭлемент() - Только сам элемент.


    То есть СПР - экземляр класса Справочник.Контрагенты, и еще есть экземляр другого класса-элемента ?  Мне интересно как это реализованно в терминах ООП.  
   Или может быть ТекущийЭлемент() выбирает подмножество атрибутов, которые описывают элемент, из множетсва атрибутов объекта справочник.контрагнеты ?

Автор: Vaddd 18.2.2007, 13:09
   И еще такой вопрос, когда мы пишем спр=создатьОбъект("Справочник.<какой-то справочник>"), то
а) В памяти выделяется место под все элементы справочника и из файла базы данных загружаются все элементы справочника 
б) Выделяется место под 1 элемент справочника и когда мы позиционируем на каком то элементе, из файла базы данных в память выбирается 1 этот позиционируемый элемент ?
  Какой из двух вариантов правильный ? (Или может никакой ?)

Автор: _Valery_ 19.2.2007, 00:47
Функция СоздатьОбъект() создает объект типа "Справочник", однако не указывает на конкретный элемент этого самого справочника (т.е. вариант б) похож на правду).
Созданный таким образом объект изначально не спозиционирован. Чтобы начать с ним совершать какие-то действия, необходимо его позиционировать при помощи методов НайтиЭлемент(), НайтиПоКоду(), ПолучитьЭлемент() и т.д., в т.ч. и ТекущийЭлемент().
Если честно, не очень понимаю, зачем после применения метода НайтиПоКоду() использовать еще и ТекущийЭлемент()  smile
Однако, встречается такое часто... Надо поэкспериментировать smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)