Ошибка 1С: Не найден экспортируемый метод в общем модуле — Решение
- Крах приложения при выполнении инструкций вида
ОбщийМодуль.ИмяМетода(). - Сообщение об ошибке:
{Модуль(Строка)}: Не найден экспортируемый метод в общем модуле (ИмяМодуля). - Сбой часто возникает при фоновых заданиях, регламентных процедурах или обращении через Web-сервисы.
1. Архитектурные причины ошибки
Данная ошибка времени выполнения свидетельствует о том, что общий модуль существует и доступен, однако попытка вызвать метод внутри него провалилась по одной из следующих причин:
- В исходном коде метода отсутствует ключевое слово
Экспорт; - Опечатка в наименовании метода в точке вызова;
- Конфликт контекста исполнения: метод находится внутри блока условной компиляции препроцессора (например,
#Если Сервер), а вызов идет с клиента (где тело метода было вырезано препроцессором); - Модуль объявлен с признаком Вызов сервера (Server Call), но сам метод не опубликован.
2. Пошаговая диагностика и устранение
Шаг 1: Проверка ключевого слова Экспорт
Откройте целевой общий модуль и проверьте заголовок метода:
// БЫЛО (метод является локальным):
Функция ПолучитьПараметрыСеанса()
// ДОЛЖНО БЫТЬ:
Функция ПолучитьПараметрыСеанса() Экспорт
// Тело функции
КонецФункцииШаг 2: Проверка галочек свойств общего модуля в Конфигураторе
В палитре свойств общего модуля убедитесь в корректности выставленных флагов:
- Если метод вызывается из фонового задания → должен стоять флаг Сервер;
- Если метод вызывается напрямую с клиента (из формы) → модуль должен иметь флаг Клиент (управляемое приложение) или Вызов сервера;
- Если метод использует веб-сервис → флаг Внешнее соединение или Сервер.
Шаг 3: Проверка блоков препроцессора
Если общий модуль имеет смешанный контекст (Клиент и Сервер), проверьте, в какой блок препроцессора помещен метод:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Метод доступен ТОЛЬКО на сервере:
Процедура СерверныйРасчет() Экспорт
КонецПроцедуры
#КонецЕсли
// Если вызвать Модуль.СерверныйРасчет() из клиентского блока формы,
// платформа выдаст ошибку 'Не найден экспортируемый метод'! Частые вопросы (FAQ)
Зачем нужен флаг 'Вызов сервера' в свойствах общего модуля?
Флаг 'Вызов сервера' позволяет вызывать экспортные серверные процедуры модуля напрямую из клиентского кода формы без создания промежуточной серверной функции в модуле самой формы.
Почему после добавления метода в расширение возникает эта ошибка?
Убедитесь, что метод в расширении помечен как 'Экспорт' и само расширение успешно скомпилировалось без ошибок проверки применимости.
Что означает флаг 'Привилегированный' в свойствах общего модуля?
Он отключает проверку прав доступа текущего пользователя (RLS) при выполнении кода модуля на сервере, но не влияет на экспортность методов.
Может ли опечатка в регистре букв вызвать эту ошибку?
Нет, имена методов в 1С нечувствительны к регистру. Причиной являются неверные символы, пропущенный 'Экспорт' или блоки препроцессора.