Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_ERR_METHOD_NOT_DEFINED 1С:Предприятие и СУБД

Ошибка 1С: Процедура или функция с указанным именем не определена — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка синтаксического анализа или времени выполнения при попытке вызова процедуры/функции.
  • Текст сбоя: {Модуль(Строка)}: Процедура или функция с указанным именем не определена (ИмяМетода).
  • Сбой при обращении к серверным процедурам из клиентского контекста или к неэкспортным методам других модулей.

1. Причины недоступности процедуры/функции

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

  • Опечатка в названии процедуры/функции в месте вызова;
  • Попытка вызова процедуры из другого модуля без указания имени модуля (например, Метод() вместо ОбщийМодуль.Метод());
  • В объявлении целевой процедуры пропущено ключевое слово Экспорт;
  • Контекстная недоступность: вызов серверного метода из клиентского кода (или наоборот), когда модуль не скомпилирован для соответствующего окружения.

2. Пошаговые сценарии исправления

Сценарий 1: Добавление ключевого слова Экспорт

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

// В исходном модуле (было):
Процедура РассчитатьИтоги()

// ИСПРАВЛЕНИЕ (стало):
Процедура РассчитатьИтоги() Экспорт
    // Тело метода
КонецПроцедуры

Сценарий 2: Указание префикса общего модуля

// ОШИБКА: попытка прямого вызова из формы:
СтрокаБезПробелов = СократитьВсеПробелы(Текст); // Не определена!

// ИСПРАВЛЕНИЕ: явное указание общего модуля БСП:
СтрокаБезПробелов = СтроковыеФункцииКлиентСервер.СократитьВсеПробелы(Текст);

Сценарий 3: Разрешение клиент-серверного вызова в модуле формы

Клиентский код формы (&НаКлиенте) не может напрямую вызывать процедуры модуля объекта. Требуется создать серверную процедуру-адаптер:

&НаКлиенте
Процедура КомандаОбработать(Команда)
    // Вызываем промежуточный серверный метод формы
    ОбработатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОбработатьНаСервере()
    // Получаем объект и вызываем его экспортный метод
    ОбъектРеквизит = РеквизитФормыВЗначение("Объект");
    ОбъектРеквизит.ВыполнитьДействие();
    ЗначениеВРеквизитФормы(ОбъектРеквизит, "Объект");
КонецПроцедуры
💡 Практика специалистов: Если ошибка возникает для системной функции (например, 'Предупреждение'), значит вы пытаетесь вызвать устаревший модальный метод в режиме управляемого приложения без синхронных вызовов. Замените его на ПоказатьПредупреждение().

Частые вопросы (FAQ)

Почему процедура объявлена с Экспорт, но ошибка все равно возникает?

Проверьте флаги компиляции общего модуля в свойствах: если модуль имеет флаг 'Сервер', но выключен флаг 'Клиент (управляемое приложение)', клиентский код не увидит этот модуль.

Влияет ли порядок объявления процедур в модуле на их видимость?

Нет. В отличие от языков типа C/Pascal, компилятор 1С собирает карту сигнатур всех методов модуля на первом проходе, поэтому метод можно вызывать выше строки его объявления.

Почему метод формы не виден из модуля команды?

Процедуры формы инкапсулированы внутри контекста экземпляра формы. Модуль команды может вызывать только экспортные методы общих модулей или менеджеров объектов.

Как вызвать метод подсистемы, добавленный в расширении?

Убедитесь, что расширение подключено, активно, и имя метода расширения не содержит опечаток. Если метод переопределен аннотацией &ИзменениеИКонтроль, его имя остается прежним.

Полезные материалы
Рекомендуем