Метод объекта не обнаружен в 1С 8.3
После обновлений, доработок и других подобных изменений конфигурации пользователи могут столкнуться с ошибкой Метод объекта не обнаружен. В качестве метода выступают процедуры и функции, выполняющие некоторые действия с объектом. За каждым типом метаданных закреплены свои методы. Сообщение Метод объекта не обнаружен программа выдает в случаях, когда не находит во встроенном языке метод с таким именем или одноименную процедуру/функции в модулях объекта.
Примеры появления и исправления ошибки рассмотрены нами на конфигурации 1С:Бухгалтерия 8.3.
Причины возникновения ошибки в 1С 8.3
Пользователь получает предупреждение в виде всплывающего окна с текстом «Метод объекта не обнаружен ([Имя_метода])», если:
- метод не принадлежит к типу метаданных;
- опечатка в имени метода;
- у процедуры или функции, вызываемой в качестве метода объекта, не указанно ключевое слово Экспорт.
Для решения проблемы следует разобраться в структуре объектов конфигурации и их наборе методов.
Объекты и методы
Объекты или метаданные — основные составляющие конфигурации, куда сохраняются данные информационной базы. Состав метаданных закреплен на уровне платформы и не может дополняться программистом.
В список стандартных объектов 1С входят:
- константы;
- справочники;
- документы;
- отчеты;
- регистры сведений;
- и т. д.
Состав метаданных не ограничен объектами, перечисленными в окне дерева конфигурации: их в несколько раз больше. К тому же один объект может иметь несколько типов: например, ДокументОбъект, ДокументСсылка, ДокументВыборка и т. д. У каждого типа есть свой набор методов, которые позволяют выполнить определенную последовательность действий с отдельным экземпляром объекта.
Методы делятся на два вида:
- встроенные в платформу;
- написанные программистом в модулях объектов.
Встроенные методы объектов описаны в Синтакс-Помощнике: например, записать документ позволит метод Записать(). Имена методов созвучны с глаголом действия, которое будет произведено с метаданными.
Процедуры и функции, описанные в модулях объектов с ключевым словом Экспорт, дополняют типовые методы своих объектов и могут вызываться из любых программных модулей, где используются эти метаданные.
Исправление ошибки
Сообщение «Метод объекта не обнаружен» может возникнуть, например, при нажатии кнопки в документе.
Для детального анализа ошибки запустите конфигурацию в режиме отладки из конфигуратора Отладка — Начать отладку и повторите те же действия, чтобы вызвать повторное появление ошибки на экране. Кнопка Подробно раскроет окно с указанием строчки программного кода, где возникает сбой.
Для перехода в конфигуратор нажмите Конфигуратор.
В режиме конфигурирования курсор автоматически установится в месте появления ошибки, а информация из окна с подробным описанием сбоя в 1С отразится в служебном окне Конфигуратора.
Решение вопроса с ошибкой «Метод объекта не обнаружен» в 1С 8.3 будет зависеть от вида метода: созданный вручную или типовой.
Встроенные в платформу методы
Стандартные методы перечислены в Синтакс-Помощнике на ветках соответствующих объектов. Откройте Ситнакс-Помощник через меню конфигуратора Справка или по одноименной кнопке на панели инструментов. Для быстрого поиска на вкладке Индекс введите часть имени типа объекта, а для перехода к его описанию нажмите кнопку Найти текущий элемент в дереве.
Программа перейдет на вкладку Содержание и выделит искомый объект. Раскройте ветвь с методами и попытайтесь отыскать похожий по наименованию. Если такой нашелся, замените на него метод в строке кода с ошибкой.
Запустите 1С в режиме отладки и проверьте работу конфигурации в месте возникновения ошибки. Если окно со сбоем больше не выходит, обратите внимание на корректность обработки данных программой. Исправляйте имя метода в коде на типовое, только если видите явную опечатку в наименовании и не нашли одноименной процедуры/функции в моделях объекта.
Методы, добавленные вручную
Программисты могут добавлять экспортные процедуры и функции (со словом Экспорт) в модулях объектов, например, вкладке Прочее в окне редактирования объекта конфигурации.
Перед поиском метода узнают тип объекта, от которого запускается выполнение. Возможны варианты:
- для типов ДокументОбъект, СправочникОбъект и т. д. методы прописывают в Модуле объекта;
- типы ДокументМенеджер, ПеречислениеМенеджери т. д. — Модуль менеджера;
- типы РегистрСведенийНаборЗаписей и т. д. — Модуль набора записей (у регистров);
- тип КонстантаМенеджерЗначения — Модуль менеджера значения (у констант);
- и др.
Чтобы определить тип объекта, воспользуйтесь одним из способов:
1. Разберите в окне ошибки строку кода, где идет обращение к методу:
- Документ.СчетНаОплатуПоставщика.Форма.ФормаДокумента — метод выполняется в модуле формы документа;
- Документ — объект, от которого запускается метод;
- Добавить() — имя метода. Характерная черта — наличие круглых скобок в конце, в них перечисляются параметры, если они необходимы для выполнения операций;
- ПодборТовараСервер() — имя процедуры/функции, где возникает ошибка.
В данном примере Документ является переменной, содержащей объект с типом ДокументОбъект, получаемый встроенным методом ПолучитьОбъект().
2. Если конфигурация допускает вносить изменения, выведите тип объекта в окне сообщений в пользовательском режиме с помощью встроенных функций Сообщить() и ТипЗнч():
- впишите в процедуру строку кода с функцией, указав в скобках обращение к объекту без имени метода;
- запустите 1С в режиме отладки и повторите действия, вызывающие сбой;
- проигнорируйте окно с ошибкой, нажав ОК. В нижней части рабочей области программы появится сообщение с типом объекта.
3. Через команду контекстного меню Вычислить выражение в Конфигураторе
- в строчке, где возникает сбой, поставьте точку останова для принудительной остановки выполнения программного кода, имеет вид красного круга на полях с левой стороны;
- запустите программу в режиме отладки;
- повторите действия, при которых возникала ошибка;
- работа программы остановится, откроется окно конфигуратора;
- выделите часть кода, где идет обращение к объекту, без метода;
- правой кнопкой вызовите контекстное меню, выберите команду Вычислить выражение;
- в открывшемся окне в колонке Тип будет указан тип объекта.
Переменная Документ тип ДокументОбъект.СчетНаОплатуПостащика, поэтому запускаемые методы программа ищет среди экспортных процедур/функций в модуле объекта документа СчетНаОплатуПоставщику.
Для поиска метода:
- откройте модуль объекта/менеджера/набора записей;
- найдите одноименную процедуру или функцию, для быстрого перехода к нужной части текста модуля воспользуйтесь окном поиска, набрав в нем часть имени метода;
- проверьте наличие ключевого слова Экспорт. При его отсутствии программа не сможет передать процедуру/функцию в другой модуль. Соответственно, она не будет обнаружена, что приведет к появлению ошибки «Метод объекта не обнаружен»;
- имя процедуры/функции должно совпадать с вызываемым методом: если имеются явные орфографические ошибки или опечатки, исправьте их;
- если наименование процедуры/функции полностью совпадает с методом, и ключевое слово Экспорт указано, возможно, причина — в неверном типе объекта.
Если тип объект задан неверно, то программа будет производить поиск экспортных процедур/функции вне тех модулях и пользователь получит ошибку «Метод объекта не обнаружен». Для решения проблемы потребуется переписать программный код, пользователю стоит обратиться к программисту.
Если ни один из вариантов исправления ошибки не дал результата, попробуйте закомментировать строку кода, где происходит сбой, добавив в начале строки два правых слеша.
Эти действия приведут к отключению строки кода с методом для выполнения программой. Возможно, это устранит появление ошибки, но может исказить или повредить данные в базе из-за нарушения алгоритма их обработки, т. к. из него исключена последовательность действий, описанная в методе. Поэтому вносить самостоятельные правки в программный код нужно с осторожностью.
Метод объекта не обнаружен Connect 1С 8.3
Ошибку «Метод объекта не обнаружен (Connect)» 1С может показать при попытке обновить конфигурацию, синхронизации или загрузке/выгрузке данных из другой программы, базы.
Connect — наименование встроенного метода, принадлежит COM-объектам, которые 1С создает на основании объектов базы данных для их передачи или получения из других источников.
Поскольку метод типовой, следует проверить в конфигураторе корректность написания его имени в коде программы.
Ошибка «Метод объекта не обнаружен (Сonnect)» в 1С 8.3 не всегда связана с конфигурацией, причина может заключаться в операционной системе. Перед использованием метода Connect программа 1С должна создать COM-объект с помощью специальных компонентов, которые не всегда есть в системе компьютера. Проблему решают через регистрацию dll компонентов обмена, процедуру выполняют на сервере:
- в папке C:Windows найдите и запустите от имени администратора файл cmd.exe;
- в зависимости от вида операционной системы выполните команду:
- для x32: %windir%System32RegSvr32.exe “С:[путь до каталога 1С]bincomcntr.dll”;
- для x64: %windir%SysWoW64RegSvr32.exe “С:[путь до каталога 1С] bincomcntr.dll”;
- перезагрузите компьютер.
Стандартная утилита RegSvr32 автоматически зарегистрирует файл dll с компонентами обмена в реестре операционной системы, что устранит сбой в 1С, связанный с отсутствием метода connect. В Windows есть инструменты для ручного внесения компонент в реестр через пункт Администрирование на Панели управления, но эту задачу лучше поручить системному администратору компьютеров.
Запасным вариантом для решения вопроса с отсутствующим методом Connect остается чистка кэш-памяти 1С.
«Метод объекта не обнаружен» в 1С — ошибка серьезная, говорящая об отсутствии в программе алгоритмов, необходимых для выполнения действий пользователя. Если 1С сообщает о невозможности найти поле, элемент, реквизит или объект — такие проблемы сотрудник может решить самостоятельно. Но при недоступности методов необходимы знания о типах объектов, умения разбираться в программном коде, поэтому, когда ни один из способов не помог устранить сбой, следует обращаться к специалисту 1С.
Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
После обновления информационной базы 1С, установки новой версии Платформы, доработки конфигурации 1C можно получить ошибку:
- Метод объекта не обнаружен.
В статье вы познакомитесь с новым инструментом разработчиков Синтаксис помощник и научитесь использовать его при работе с ошибками программного кода 1С.
БухЭксперт8 подготовил 3 примера формирования ошибки Метод объекта не обнаружен в 1С 8.3. Изучив их, вы узнаете причины появления ошибки и получите рекомендации для ее исправления с использованием встроенной справки 1С.
Содержание
- Причины ошибки в 1C Метод объекта не обнаружен
- Метод объекта не обнаружен (Счет покупателю — Подбор)
- Метод объекта не обнаружен (Печатная форма)
- Метод объекта не обнаружен (connect) в 1С 8.3
Причины ошибки в 1C Метод объекта не обнаружен
Причина появления ошибки Метод объекта не обнаружен, как правило, заключается в обращении к несуществующему методу работы с объектом конфигурации.
Объектами в 1С являются данные конфигурации 1С. В специальной литературе такие объекты еще называют Метаданными 1С. В состав объектов конфигурации входят:
- справочники;
- документы;
- регистры сведений;
- регистры накоплений;
- табличные документы;
- и т. д.
Каждый из объектов обладает определенными им разработчиками наборами Свойств и Методами. Посмотреть эту информацию позволяет специальный инструмент разработчиков — Синтаксис помощник. Инструмент встроен в справку Конфигурации 1С. Вызов Синтаксис помощника происходит:
Синтаксис-помощник содержит подробное описание заданных свойств и методов объектов конфигурации. Добавить свои свойства и методы пользователь не может. Изменить — тоже. Задача программиста, дорабатывающего 1С — использовать очень точно методы, что даны в описании. Если в программном коде допускается ошибка в использовании метода объекта, пользователь получает ошибку Метод объекта не обнаружен.
Рассмотрим возникновение ошибки на примерах. Для исправления будем обращаться к справке Синтаксис-помощника.
Метод объекта не обнаружен (Счет покупателю — Подбор)
После программной доработки операции Подбор в документе Счет покупателю появляется ошибка Метод объекта не обнаружен:
Согласно сообщению в окне ошибки, метод Копировать() не обнаружен в списке методов объекта 1С. Для уточнения вида объекта, который использует этот метод, перейдем в Конфигуратор:
- место доработки — процедура ПодборТовары;
- строка ошибки — ТЗ = ЭтотОбъект.Товары.Копировать().
Из программного кода видно, что программист создает таблицу значений ТЗ, используя метод Копировать(). Откроем список методов объекта Таблица значений:
- кнопка Синтаксис-помощник — Содержание;
- объект Универсальные коллекции значений — Таблица значений — Методы.
Согласно Синтаксис-помощнику для объекта Таблица значений нет метода Копировать(). Правильный метод — Скопировать(). После того как метод будет исправлен на правильный, подбор товара в документе Счет покупателю станет выполняться без ошибки.
Метод объекта не обнаружен (Печатная форма)
После программного изменения печатной формы Приложение к договору в документе Счет покупателю появляется ошибка Метод объекта не обнаружен:
Согласно сообщению в окне ошибки, метод ПолучитьРазмерОбластиДанных() не обнаружен в списке методов объекта 1С. Для уточнения вида объекта, который использует этот метод, перейдем в Конфигуратор:
- место доработки — функция ПечатьПриложениякДоговору;
- строка ошибки — ТабличныйДокумент.ПолучитьРазмерОбластиДанных().
В программном коде используется метод Табличного документа ПолучитьРазмерОбластиДанных(). Уточним используемые методы табличного документа через Синтаксис-помощник.
Согласно справке Синтаксис-помощника, нет метода ПолучитьРазмерОбластиДанных(). Для получения размера области данных по горизонтали используется метод ПолучитьРазмерОбластиДанныхПоГоризонтали().
После исправления программного кода печатная форма формируется без ошибки.
Метод объекта не обнаружен (connect) в 1С 8.3
В обработке внешнего подключения к информационной базе Управление Торговлей при попытке соединения появляется ошибка Метод объекта не обнаружен в 1С:
Для исправления ошибки откроем обработку в Конфигураторе базы:
- место возникновения ошибки — процедура ERRORНаСервере;
- строка ошибки — connection = cntr.Connector(“File=””c:InfoBasesTrade””;Usr=””Director””;”)
Для объекта COM-соединений определим в Синтаксис помощнике правильный метод новым способом через вкладку Поиск. Этот вариант часто используют в работе программисты и те пользователи, кто уже знаком с программным языком 1С. По первым буквам набранной в строке поиска команды программа отбирает объекты, использующие данный метод.
Согласно справке Синтаксис-помощника, нет метода Connector. Команду соединения с информационной базой Управление Торговлей нужно исправить на Connect.
После исправления команды соединение с базой Управление Торговлей по заданным параметрам выполнится без ошибки.
В качестве небольшого бонуса наши подписчики могут скачать внешнюю обработку с демонстрацией неправильного и правильного кода
Скачать внешнюю обработку с демонстрацией неправильного и правильного кода
См. также:
- Ошибка. Поле объекта не обнаружено
- Ошибка. Поле объекта недоступно для записи
- Ошибка. Переменная не определена
- Ошибка. Недостаточно фактических параметров
- Ошибка. Слишком много фактических параметров
- Поле объектов недоступно для записи
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Как сделать в 1С, 1С: Конвертация данных, Конвертация данных, Обмен между базами, Закрытие месяца, Оценка задач, Отчеты в 1С, Моделирование, HTTP, Управление проектами, БУ, com-объекты, 1С: WMS Управление складом, РСБУ, 1С: Сценарное тестирование , Запросы 1С, LINUX, WEB, Оптимизация, 1С:Зарплата и Управление Персоналом, Excel, 1С: ERP, ADO, 1С:Управление производственным предприятием, Внедрение, Продажи, Отчетность, 1С: Розница, 1С: CRM , 1С:Бухгалтерия, 1С:Комплексная автоматизация, Производство, Интеграция 1С , Налоги , Отпуск, MS SQL Server , Расширение конфигурации, МСФО, СКД, Word, WEB-сервисы 1С, Внедрение ERP, Перенос данных, Торговое оборудование, Лизинг, 1С:Управление нашей фирмой, Администрирование 1С, 1С: Колледж, Правила обмена, 1С: Платформа — Наши эксперты
Метод объекта не обнаружен при вызове функции
В управляемом приложении при вызове функции общего модуля из клиентской процедуры возникает ошибка «Метод объекта не обнаружен»
Скриншот ошибки
Выяснение причины
Проверить:
- написание имени функции/процедуры;
- наличие директивы «экспорт» в конце имени функции;
- работоспособность при вызове с «серверной» процедуры;
- соответствие количества параметров функции;
- корректность написание директивы «&НаСервере», «&НаКлиенте» (нет ли опечаток);
- Зайти в свойства вызываемого модуля:
Платформы, к которым относится ошибка
- 8.2
- 8.3
Поведение системы
Выполнение кода прерывается.
Большой рекламный бюджет не ведет к высокому уровню сбыта. Наоборот, высокий уровень сбыта ведет к большому рекламному бюджету.
Ошибка «Метод объекта не обнаружен» при вызове экспортной процедуры модуля документа из мо |
Я |
02.11.17 — 11:57
Из модуля обработки идет вызов экспортной процедуры ЗаполнитьУсловияПродажПоCоглашению() модуля документа АктВыполненыхРабот.
При этом возникает ошибка «Метод объекта не обнаружен». Процедура ЗаполнитьУсловияПродажПоCоглашению() с «волшебным» словом Экспорт в модуле документа АктВыполненыхРабот есть. Оба модуля (модуль обработки и модуль документа) выполняются на сервере. Смотрите вложенные файлы. Тогда почему возникла ошибка? Это я что-то неправильно написал или чего-то не понимаю? Или это ошибка платформы 1С? Какие есть идеи как исправить или обойти?
Ошибка возникает как в файловой, так и в серверной версиях. Ошибка возникла после перехода в июле 2017 года на версию платформы 8.3.10. До этого код обработки функционировал без сбоя почти год. Вернуться на предыдущую версию платформы — уже нельзя. На тестовой версии 8.3.11 ошибка также имеет место быть.
Какие есть идеи как исправить или обойти?
1 — 02.11.17 — 12:00
кеш продуй, для начала
2 — 02.11.17 — 12:02
ошибка в коде и никак не зависит от платформы
3 — 02.11.17 — 12:31
(0) всё-таки в модуле менеджера документа должно быть. а не в модуле документа.
4 — 02.11.17 — 12:48
(0) как вызываешь и где? УФ-ОФ?
5 — 02.11.17 — 12:50
«Какие есть идеи как исправить или обойти?» // Сколько платят за решение вопроса?
6 — 02.11.17 — 13:08
вложенные файлы где?
7 — 02.11.17 — 13:08
«модуля документа АктВыполненыхРабот.» — это модуль объекта или менеджера?
8 — 02.11.17 — 13:10
(0)Может ты пытаешься добиться ответа от ссылки, а не от объекта?
9 — 02.11.17 — 13:55
(3) Почему именно в модуле менеджера, а не модуля документа? Чем модуль документа плох, тем более что вызываю стандартную функцию написанную разработчиками конфигурации, которая находится в модуле документа? Поясните, плиз…
10 — 02.11.17 — 13:57
(6) Где и как цеплять файлы для этого форума? Не нашел, подскажите…
11 — 02.11.17 — 13:57
(7) «модуля документа АктВыполненыхРабот.» — конечно речь и идет про модуль объекта
12 — 02.11.17 — 13:58
Нет такого модуля — модуль документа. Есть модуль объекта. Вас уже спрашивали в (8), не пытаетесь ли вы вызвать процедуру модуля объекта из ссылки?
13 — 02.11.17 — 14:01
(8) Нет, переменная Акт имеет тип ДокументОбъект.АктВыполненныхРабот. В отладчике на скрине это видно. К сожалению, непонятно, как подцепить скриншот к форуму?
14 — 02.11.17 — 14:06
Воспользуйтесь каким-либо ресурсом для скриншотов и укажите ссылку.
15 — 02.11.17 — 14:16
16 — 02.11.17 — 14:17
(15) эх, а он не у всех работает )))
17 — 02.11.17 — 14:19
(15) А вы уверены что в обработке у вас действительно выполняется условие «Если Сервер Или ТолстыйКлиентОбычноеПриложение…»?
18 — 02.11.17 — 14:24
(17) Не уверен. Как можно проверить так это или нет?
И потом мне всегда казалось что модуль обработки всегда выполняется на сервере? Разве не так?
И наконец, из модуля документа я убирал условие «#Если Сервер Или ТолстыйКлиентОбычноеПриложение…» — никакой разницы.
19 — 02.11.17 — 14:25
(16) А какой сервис скриншотов работает у всех?
20 — 02.11.17 — 14:34
(18)>> И потом мне всегда казалось что модуль обработки всегда выполняется на сервере? Разве не так?
не так
21 — 02.11.17 — 14:36
(20) В каких случаях «не так»? Поясните, пожалуйста.
22 — 02.11.17 — 15:46
(21) В режиме обычного приложения почти все выполняется на клиенте, если только специально ты не предпринимал действия по вынесению кода на сервер
23 — 02.11.17 — 16:45
Просто перенести ЗаполнитьУсловияПродажПоCоглашению() в менеджер Документы.АктВыполненыхРабот — нельзя. Это стандартная процедура написанная разработчиками конфигурации «1С:Комплексная автоматизация 2». Но идея для обхода ошибки — правильная. Поэтому сделал так.
В модуле менеджера Документ.АктВыполненыхРабот добавил:
// Квант ***
Процедура Квант_ЗаполнитьУсловияПродажПоСоглашению(Объект) Экспорт
Объект.ЗаполнитьУсловияПродажПоСоглашению();
КонецПроцедуры
// *** Квант
В модуле обработки заменил строку
// Акт.ЗаполнитьУсловияПродажПоCоглашению();
на
Документы.АктВыполненныхРабот.Квант_ЗаполнитьУсловияПродажПоСоглашению(Акт);
На тестовой базе пока работает. Сейчас проверяю на рабочей… Проверил вроде работает.
P.S. Это уже наверно моя четвертая попытка переписать модуль обработки, так чтобы обойти ошибку «Модуль объекта не обнаружен». Все-таки Акт.ЗаполнитьУсловияПродажПоCоглашению() — должно работать в данном контексте и работало почти год(!) до перехода на платформу 8.3.10
kvant_ltd
24 — 02.11.17 — 16:45
Всем спасибо!