Ошибки платформы 1С

Метод объекта не обнаружен в 1С: тип, имя и контекст вызова

Коротко

При ошибке «Метод объекта не обнаружен» сначала проверяют значение слева от точки, а не параметры справа. Метод может принадлежать другому типу, называться иначе или быть недоступным в текущем контексте. Для платформенных методов источник — синтакс-помощник установленной версии; для прикладных — исходник нужного модуля.

Что означает «Метод объекта не обнаружен» в 1С

Вызов состоит из получателя, имени метода и аргументов. Если у получателя нет доступного метода с этим именем, перестановка аргументов не поможет. Например, структура и массив — коллекции, но добавление в них устроено по-разному.

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

Пример: у структуры нет метода Добавить

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

// Намеренно ошибочный пример.
Данные = Новый Структура("Код", "001");
Данные.Добавить("Артикул", "А-100"); // У Структуры нет Добавить.

Для пары «ключ — значение» используйте метод структуры Вставить. Он добавляет отсутствующий ключ или заменяет значение существующего.

Данные = Новый Структура("Код", "001");
Данные.Вставить("Артикул", "А-100");
Результат = Данные.Артикул;
// Ожидается: Результат = "А-100".
Структура.Вставить
Ключимя свойства структуры
Значениезначение свойства; в примере передано явно
Не возвращает значение

Когда нужен массив, меняйте контракт, а не только имя метода

Если задача — упорядоченный набор значений без строковых ключей, нужен массив. У него есть Добавить, но элемент извлекают по индексу, а не по имени свойства.

Коды = Новый Массив(0);
Коды.Добавить("001");
ПервыйКод = Коды.Получить(0);
ЧислоКодов = Коды.Количество();
// Ожидается: ПервыйКод = "001", ЧислоКодов = 1.
Массив.Добавить
Значениеэлемент, добавляемый в конец массива
Не возвращает значение; Получить(Индекс) возвращает элемент

Не заменяйте структуру массивом только ради исчезновения ошибки. Сначала выясните, должен ли вызывающий код передавать именованные параметры или последовательность. Иначе следующий потребитель сломается при обращении к ключу.

Ссылка, объект и данные формы имеют разные методы

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

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

Экспорт и место объявления прикладного метода

Для собственной процедуры проверьте точное имя, модуль объявления и наличие Экспорт, если обращаетесь к ней извне модуля. Экспортная процедура модуля объекта не становится методом ссылки или менеджера. Процедура формы не становится методом прикладного объекта.

У общего модуля сопоставьте его свойства с местом вызова: сервер, клиентский контекст, доступность серверного вызова. Наличие слова Экспорт само по себе не исправляет неправильный адресат и не переносит код на нужную сторону. Такие методы не описываются платформенным HbkMember: проверять нужно конкретную конфигурацию.

Клиент, сервер и версия платформы

В синтакс-помощнике проверьте раздел доступности метода для того режима, где выполняется строка: тонкий клиент, веб-клиент, сервер, толстый клиент или внешнее соединение. Работа в одном режиме не доказывает доступность в другом. Учитывайте версию платформы и режим совместимости.

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

Внешняя обработка, печать и ошибка Connect

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

Для ошибки с именем Connect отдельно выясните, какой COM-объект создан, где исполняется код и какие версия и разрядность компоненты используются. Не смешивайте отсутствие метода с ошибкой создания COM-объекта или отказом подключения. Перерегистрация DLL — изменение окружения, а не безопасная первая проверка; универсальную команду из чужого кейса применять нельзя.

Порядок проверки перед исправлением

  1. Зафиксируйте имя метода, строку, тип клиента и версию платформы.
  2. В отладчике посмотрите фактический тип получателя непосредственно перед вызовом.
  3. Для платформы найдите метод у этого типа и проверьте доступность; для прикладного кода — объявление, экспорт и модуль.
  4. Проследите, где переменная получила другой тип, либо установите, почему вызов предназначен другому контексту.
  5. После исправления проверьте контракт результата и вызывающий код, а не только исчезновение сообщения.
В Консоли кода можно попросить агента сравнить методы структуры и массива на синтетических данных. Для ошибки внешней обработки приложите обезличенный вызов и версии; без исходника агент не должен угадывать сигнатуру БСП.

Частые ошибки при исправлении

  • Искать метод по имени без проверки типа его владельца: одноимённые методы разных объектов имеют разные контракты.
  • Добавлять Экспорт в случайный модуль, не проверив получателя вызова.
  • Считать уменьшение или увеличение числа аргументов лечением отсутствующего метода.
  • Копировать реализацию внутренней функции БСП из старой статьи вместо адаптации к публичному API нужной версии.
  • Ловить любое исключение и сообщать об успехе, хотя требуемая операция не выполнена.

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

Почему Добавить работает у массива, но не у структуры?

Это разные типы коллекций. Массив добавляет элемент методом Добавить, а структура устанавливает именованное свойство методом Вставить. Выбор зависит от контракта данных.

Всегда ли достаточно добавить Экспорт?

Нет. Экспорт открывает прикладную процедуру для внешнего обращения, но нужно также проверить модуль, тип получателя и клиентский или серверный контекст.

Чем отличается «Ошибка при вызове метода контекста»?

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

Тарифы

ИИ Консоль кода 1С

Лайт

Бесплатно
≈ 1,5 млн токенов

Для ознакомления с возможностями

  • Все функции бесплатно на 2 дня +2 дня за подписку на Telegram или Max
  • Полный набор инструментов без урезаний
  • Без ввода карты
Начать бесплатно

Старт

1990 руб. в месяц
≈ 10 млн токенов

Для индивидуального использования

Выбрать тариф

Продвинутый

Популярный выбор
3990 руб. в месяц
≈ 25 млн токенов

Для интенсивного использования или команд

  • До 15 конфигураций
  • Встроенный агент запросов 1С
  • Свои подписки Codex, Claude и любые OpenAI-совместимые
  • Внешние обработки без Конфигуратора
  • Приоритетная техническая поддержка
Выбрать тариф