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


Автор: AxlGhost 27.1.2009, 16:16
Доброе время суток!
возник вопрос, можно ли как-либо сделать так, чтобы в качестве имени реквизита использовалась переменная?
пробую сделать примерно следующее:

спр = СоздатьОбъект("Справочник.Сотрудники");
спр.использоватьРодителя(ВыбСправочник);
спр.выбратьЭлементы();
таб = СоздатьОбъект("таблица");
пока спр.получитьЭлемент() = 1 Цикл
    Если Лев(спр.имяРекв,КолСимв) = СокрЛП(Лев(клСлово,КолСимв)) Тогда
        таб.вывестиСекцию("строка");
    КонецЕсли;
КонецЦикла;
таб.показать();

здесь "имяРекв" - переменная, равная названию реквизита справочника "сотрудники".
"колСимв" - количество символов слева по которым производится сравнение.
"клСлово" - набор символов с которым производится сравнение.

1С ругается на то, что ИмяРекв не является полем агрегатного объекта. Как сделать так, чтобы это безобразие заработало?

Автор: geka6pucT 27.1.2009, 22:09
Имя реквезита можно получить через метаданные:
Код

Процедура Сформировать()
    Для инд = 1 по Метаданные.Справочник("ВидыДеятельности").Реквизит() Цикл
        Сообщить(Метаданные.Справочник("ВидыДеятельности").Реквизит(инд).Идентификатор);
    КонецЦикла;
КонецПроцедуры


http://www.kb.mista.ru/article.php?id=176 все хорошо расписано.

Автор: AxlGhost 28.1.2009, 14:36
Это конечно хорошо и даже замечательно. Но как выбрать реквизиты я и чуть раньше додумался. Сейчас интересует именно то, как сделать чтобы происходил поиск по реквизиту "ИмяРекв", являющимся переменной с выбираемым значением. То есть чтобы пользователь мог сам выбирать тот реквизит, по которому происходит поиск.

Автор: geka6pucT 28.1.2009, 15:10
Попробуй с применением шаблона:

спр = СоздатьОбъект("Справочник.Сотрудники");
спр.использоватьРодителя(ВыбСправочник);
спр.выбратьЭлементы();
таб = СоздатьОбъект("таблица");
пока спр.получитьЭлемент() = 1 Цикл
    Если Лев(Шаблон("[спр."+имяРекв+"]"),КолСимв) = СокрЛП(Лев(клСлово,КолСимв)) Тогда
        таб.вывестиСекцию("строка");
    КонецЕсли;
КонецЦикла;
таб.показать();

Автор: AxlGhost 28.1.2009, 16:49
шаблон помог. спасибо!

Автор: geka6pucT 28.1.2009, 18:18
Вот еще лучше:

спр.ПолучитьАтрибут(имяРекв)

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