Как исправить ошибку «Метод объекта не обнаружен (ВыполнитьКоманду)» в веб-клиенте 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

В процессе эксплуатации конфигураций на базе управляемых форм, таких как 1С:Управление нашей фирмой (УНФ), разработчики часто сталкиваются со специфическим поведением системы в веб-клиенте. Одной из наиболее неприятных проблем является ошибка Метод объекта не обнаружен (ВыполнитьКоманду), возникающая при попытке запуска внешних обработок или дополнительных отчетов. Рассмотрим детально, почему это происходит и как устранить данную проблему, проанализировав технические нюансы платформы и программного кода.

Анализ ситуации и проявление ошибки

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

{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(395)}:ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения, СозданныеОбъекты);

Из этого сообщения видно, что подсистема «Дополнительные отчеты и обработки» пытается вызвать экспортный метод ВыполнитьКоманду в форме внешней обработки, но по какой-то причине «не видит» его. Выясним основные причины такого поведения.

Причина 1: Некорректная версия платформы 1С:Предприятие

Одной из наиболее вероятных причин, как показывает практика, является наличие критических ошибок в конкретных сборках платформы. Проанализируем ситуацию на примере ветки 8.3.20. В версиях платформы (например, 8.3.20.1549) наблюдались проблемы с десериализацией объектов при передаче контекста между сервером и веб-клиентом.

В веб-клиенте объект формы создается средствами JavaScript в браузере. Если платформа некорректно передает описание методов формы, браузер не может проинициализировать соответствующие функции. В результате объект Форма существует, но его экспортные методы недоступны. Решить эту проблему можно следующими способами:

  1. Обновление платформы: Рекомендуется перейти на исправленные версии, например, последние релизы веток 8.3.21, 8.3.22 или выше. Если вы используете ветку 8.3.20, убедитесь, что версия не ниже 8.3.20.1674.
  2. Откат на стабильную версию: Как показывает опыт пользователей, переход на более старые, но стабильные ветки (например, 8.3.18) также может устранить проблему, если специфика проекта позволяет использовать старую платформу.

Причина 2: Требования к оформлению экспортного метода

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

Рассмотрим правильный пример оформления процедуры:


&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты = Неопределено) Экспорт
    
    // Логика выполнения команды на стороне клиента
    Если ИдентификаторКоманды = "ПечатьДокумента" Тогда
        // Вызов серверного метода или открытие формы
    КонецЕсли;

КонецПроцедуры

Важные моменты:

Причина 3: Особенности работы веб-сервера и браузера

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

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

2. MIME-типы: Убедитесь, что веб-сервер корректно отдает статические файлы и расширения 1С. Иногда блокировка определенных типов данных браузером приводит к потере части функционала интерфейса.

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

Причина 4: Режим совместимости конфигурации

Проанализируем влияние режима совместимости. Если ваша конфигурация (например, старая версия УНФ) использует режим совместимости ниже 8.3.10, механизмы взаимодействия веб-клиента с внешними объектами могут работать нестабильно. Платформа 1С постоянно совершенствует протоколы обмена данными (JSON/HTTP) между клиентом и сервером. Несоответствие версии платформы и режима совместимости часто приводит к «исчезновению» методов объектов.

Альтернативное решение: Использование расширений

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

Преимущества расширений для веб-клиента:

Для реализации этого метода перенесите логику из формы внешней обработки в новую форму, созданную внутри расширения, и вызовите её стандартными средствами платформы.

Заключение

Подводя итог, при возникновении ошибки Метод объекта не обнаружен (ВыполнитьКоманду) в веб-клиенте, в первую очередь следует проверить версию платформы. Если версия 8.3.20.1549 — обновление является приоритетным шагом. Во вторую очередь необходимо убедиться в наличии экспортного метода в модуле формы с директивой &НаКлиенте. Сочетание этих мер в большинстве случаев полностью устраняет проблему и обеспечивает стабильную работу пользователей через браузер.

← На главную