8.х НайтиПоРеквизиту находит не указанный реквезит.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем DemiChron, 12 авг 2012.

  1. TopicStarter Overlay
    DemiChron
    Offline

    DemiChron

    Регистрация:
    20 июн 2012
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    спрКарты= Справочники.ИнформационныеКарты ;
    хрень = спрКарты.НайтиПоРеквизиту("КодКарты",НомерКарты);

    собственно что так, что :


    хрень = Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",НомерКарты);


    в результате получаем хрень = наименование, а не КодКарты. Ищем параметр типа Строка, он однозначно есть и собственно наименование выбирается от нужного элемента справочника, но мне же кодКарты нужен) реквезит помечен индексируемым, длина фиксирована. Что не так?

    ногами сильно не пинать, пожалуйста. Программирование под 1С для меня тёмный лес. После ассемблера разбираться крайне тяжко. Буду крайне признателен за любую подмогу)
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    На самом деле в результате получаем элемент справочника "ИнформационныеКарты" с заданным номером карты. Просто этот элемент представлен вам в виде наименования.

    Все правильно. С помощью метода "НайтиПоРеквизиту()" Вы осуществляете поиск по справочнику "ИнформационныеКарты", соответственно и находите элемент этого справочника.
    А "НомерКарты" - это уже реквизит этого справочника. К нему можно обратиться так (в Вашем случае):

    Код:
    Хрень.НомерКарты
  3. TopicStarter Overlay
    DemiChron
    Offline

    DemiChron

    Регистрация:
    20 июн 2012
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    огромное спасибо за конкретность, а главное очень понятную по сути форму ответа.
    немного поэкспериментировав - разобрался весьма детально в работе метода.

    Возник побочный вопрос - а как средствами самого языка, можно узнать, что именно нам возвращается в результате операции? Т.е. в данном случае - я пользовался: сообщить(хрень) - и видел в служебных сообщениях текстовую строку. Есть какой-то способ вывода, показывающий что "хрень" это по сути ссылка на элемент справочника, а не скажем текстовая строка/число ?
  4. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    688
    Симпатии:
    8
    Баллы:
    29
    ТипЗнч (TypeOf)

    Встроенные функции языка
    ТипЗнч (TypeOf)
    Синтаксис:ТипЗнч(<Значение>)
    Параметры:
    <Значение> (обязательный)Тип: Произвольный. Значение, тип которого необходимо получить.
    Возвращаемое значение:Тип: Тип.
    Описание:Получает тип значения.
    Пример:
    Код:
    Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
    ...
    КонецЕсли;
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Прежде всего, что именно возвращает метод, можно посмотреть в Синтакс-помощнике.
    Средствами встроенного языка можно попробовать так:

    Код:
    Сообщить(ТипЗнч(Хрень));
    В результате в сообщении выйдет, насколько знаю, просто наименование справочника. Т.е. "ИнформационныеКарты".
    Т.е. опять же не очень понятно, что это: ссылка или объект или еще какой-то прикладной тип.
    Зато понятно, что это элемент справочника, а не СТРОКА :)

    А вот если воспользоваться отладчиком, он покажет точно, что это: "СправочникСсылка", "СправочникОбъект", "СправочникВыборка", "Строка" и т.д.

Поделиться этой страницей