Решение задач 1С:Предприятие 8 на примерах

«Метод объекта не обнаружен» в 1С: причины и решение

Ошибки 1СОшибки в кодеОпубликовано

Код вызывает у объекта или модуля процедуру либо функцию, которой там нет или которая недоступна снаружи. Имя метода платформа указывает в скобках.

Текст ошибки

Метод объекта не обнаружен (ИмяМетода)

Причины

Пошаговая проверка

  1. Найдите вызываемый метод в конфигураторе: через «Перейти к определению» (F12) или глобальный поиск (Ctrl+Shift+F).
  2. Убедитесь, что после списка параметров стоит Экспорт. Без него метод виден только внутри своего модуля.
  3. Проверьте свойства общего модуля. Модуль только с флагом «Сервер» не виден из клиентского кода. Чтобы вызвать его с клиента, нужен модуль с флагами «Сервер» и «Вызов сервера».
  4. Проверьте тип объекта: ТипЗнч(Объект) в отладчике. Например, у ссылки на документ нет метода Записать(), он есть у объекта, полученного через ПолучитьОбъект().

Типичные ситуации

Ссылка вместо объекта

// Ошибка: у ссылки нет метода Записать
// Ссылка.Записать();

ДокументОбъект = Ссылка.ПолучитьОбъект();
ДокументОбъект.Комментарий = "Проверено";
ДокументОбъект.Записать();

Вызов процедуры модуля объекта из формы

В управляемой форме процедуры модуля объекта доступны только на сервере через объект, полученный из реквизита формы:

&НаСервере
Процедура ЗаполнитьНаСервере()
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ДокументОбъект.ЗаполнитьТовары(); // в модуле объекта: Процедура ЗаполнитьТовары() Экспорт
    ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
КонецПроцедуры

Метод формы с клиента другой формы

Чтобы вызвать процедуру другой открытой формы, она должна быть клиентской и экспортной. Серверные процедуры формы извне не вызываются.

Для пользователя

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

Расширения и внешние обработки

Если вызываемый метод добавлен в расширении, проверьте, что расширение подключено и активно для этой базы, а также что у него нет ошибок применения. В списке расширений видно, применено ли оно. Внешняя обработка, которая вызывает методы общих модулей конфигурации, работает только с теми релизами, где эти методы существуют и экспортируются. При обновлении конфигурации такие вызовы стоит проверять в первую очередь.

Частые вопросы

Метод есть в модуле, но 1С пишет, что не обнаружен. Почему?

Чаще всего не хватает слова Экспорт или модуль не компилируется в том контексте, откуда идёт вызов. Проверьте флаги общего модуля и директиву компиляции у вызывающей процедуры.

Можно ли проверить, что метод существует, до вызова?

Прямого метода для этого нет. Надёжный путь — проверять тип объекта перед вызовом. Перехват исключения через Попытка допустим, но скрывает настоящие ошибки внутри метода.

Процедуры и функции в 1С: синтаксис, параметры, экспорт и общие модули

Алгоритмы

Разбор процедур и функций встроенного языка 1С: отличия, параметры, возврат нескольких значений, экспортные методы, флаги общих модулей, рекурсия и динамическое выполнение кода.

&НаКлиенте и &НаСервере в 1С: директивы компиляции в управляемых формах

Управляемые формы

Чем отличаются директивы &НаКлиенте, &НаСервере и &НаСервереБезКонтекста, что доступно на клиенте и на сервере, как передавать данные в управляемой форме и не делать лишних серверных вызовов.

Расширение конфигурации 1С: создание, установка и перехват методов

Алгоритмы

Практическое руководство по расширениям конфигурации 1С: как создать и подключить расширение, перехватывать типовые методы аннотациями, безопасно обновлять конфигурацию и отключать расширение.

Похожие ошибки