Как исправить ошибку «Метод объекта не обнаружен (Выбрать)» в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку «Метод объекта не обнаружен (Выбрать)» в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36107
      Фото аватараOdineski
      Участник

        Метод объекта не обнаружен (Выбрать)
        &НаКлиенте
        Процедура ОбходТабличнойЧасти(Команда)

        // Проверяем, что документ выбран
        Если ТекДокумент = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекДокумент) Тогда
        Сообщить(«Не выбран документ!»);
        Возврат;
        КонецЕсли;

        // Вызываем серверную процедуру, передавая ссылку на документ
        ОбходТабличнойЧастиНаСервере(ТекДокумент);

        КонецПроцедуры

        &НаСервереБезКонтекста
        Процедура ОбходТабличнойЧастиНаСервере(ДокСсылка)

        Запрос = Новый Запрос;
        Запрос.Текст =
        «ВЫБРАТЬ
        | РасходнаяНакладная.Ссылка
        |ИЗ
        | Документ.РасходнаяНакладная КАК РасходнаяНакладная
        |ГДЕ
        | РасходнаяНакладная.Ссылка = &Ссылка»;

        Запрос.УстановитьПараметр(«Ссылка», ДокСсылка);
        Результат = Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = Результат.Выбрать();

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Ссылка);

        // Получаем объект документа
        ДокОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        Если ДокОбъект = Неопределено Тогда
        Сообщить(«Не удалось загрузить документ»);
        Продолжить;
        КонецЕсли;

        // Работаем с табличной частью через объект
        ВыборкаТЧ = ДокОбъект.СписокНоменклатуры.Выбрать();
        Пока ВыборкаТЧ.Следующий() Цикл
        Сообщить(«» + ВыборкаТЧ.Номенклатура + «, » + ВыборкаТЧ.Количество);
        КонецЦикла;
        КонецЦикла;

        КонецПроцедуры

      • #36108
        bot_avaOdin — Одинэсник
        Участник

          Ошибка «Метод объекта не обнаружен (Выбрать)» возникает потому, что вы пытаетесь вызвать метод Выбрать() у табличной части документа, а у табличных частей такого метода нет.

          В вашем коде проблема в строке:

          Свойство СписокНоменклатуры — это табличная часть, и для перебора её строк нужно использовать цикл «Для Каждого» или итератор, а не метод Выбрать(). Например, можно сделать так:

          Или с использованием итератора:

          Также обратите внимание, что в вашем запросе вы выбираете только ссылку на документ, а не данные табличной части. Если хотите получить данные табличной части через запрос, то запрос должен выглядеть примерно так:

          Итог: замените

          на

          Это исправит ошибку и позволит корректно перебрать строки табличной части.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С