База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Метод объекта не обнаружен (Выбрать)» в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 12 часов, 23 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
12 марта 2026 в 12:15 #36107
Метод объекта не обнаружен (Выбрать)
&НаКлиенте
Процедура ОбходТабличнойЧасти(Команда)// Проверяем, что документ выбран
Если ТекДокумент = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекДокумент) Тогда
Сообщить(«Не выбран документ!»);
Возврат;
КонецЕсли;// Вызываем серверную процедуру, передавая ссылку на документ
ОбходТабличнойЧастиНаСервере(ТекДокумент);КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбходТабличнойЧастиНаСервере(ДокСсылка)Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| РасходнаяНакладная.Ссылка
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| РасходнаяНакладная.Ссылка = &Ссылка»;Запрос.УстановитьПараметр(«Ссылка», ДокСсылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка);// Получаем объект документа
ДокОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Если ДокОбъект = Неопределено Тогда
Сообщить(«Не удалось загрузить документ»);
Продолжить;
КонецЕсли;// Работаем с табличной частью через объект
ВыборкаТЧ = ДокОбъект.СписокНоменклатуры.Выбрать();
Пока ВыборкаТЧ.Следующий() Цикл
Сообщить(«» + ВыборкаТЧ.Номенклатура + «, » + ВыборкаТЧ.Количество);
КонецЦикла;
КонецЦикла;КонецПроцедуры
-
12 марта 2026 в 12:15 #36108
Ошибка «Метод объекта не обнаружен (Выбрать)» возникает потому, что вы пытаетесь вызвать метод Выбрать() у табличной части документа, а у табличных частей такого метода нет.
В вашем коде проблема в строке:
1С (Код)1ДокОбъект.СписокНоменклатуры.Выбрать();Свойство
СписокНоменклатуры— это табличная часть, и для перебора её строк нужно использовать цикл «Для Каждого» или итератор, а не метод Выбрать(). Например, можно сделать так:1С (Код)123Для Каждого СтрокаТЧ Из ДокОбъект.СписокНоменклатуры ЦиклСообщить(СтрокаТЧ.Номенклатура + ", " + СтрокаТЧ.Количество);КонецЦикла;Или с использованием итератора:
1С (Код)1234Итератор = ДокОбъект.СписокНоменклатуры.ПолучитьИтератор();Пока Итератор.Следующий() ЦиклСообщить(Итератор.Номенклатура + ", " + Итератор.Количество);КонецЦикла;Также обратите внимание, что в вашем запросе вы выбираете только ссылку на документ, а не данные табличной части. Если хотите получить данные табличной части через запрос, то запрос должен выглядеть примерно так:
1С (Код)12345678Запрос.Текст ="ВЫБРАТЬ| ТЧ.Номенклатура,| ТЧ.Количество|ИЗ| Документ.РасходнаяНакладная.Товары КАК ТЧ|ГДЕ| ТЧ.Ссылка = &Ссылка";Итог: замените
1С (Код)1234ВыборкаТЧ = ДокОбъект.СписокНоменклатуры.Выбрать();Пока ВыборкаТЧ.Следующий() ЦиклСообщить("" + ВыборкаТЧ.Номенклатура + ", " + ВыборкаТЧ.Количество);КонецЦикла;на
1С (Код)123Для Каждого СтрокаТЧ Из ДокОбъект.СписокНоменклатуры ЦиклСообщить(СтрокаТЧ.Номенклатура + ", " + СтрокаТЧ.Количество);КонецЦикла;Это исправит ошибку и позволит корректно перебрать строки табличной части.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.