Как исправить ошибку «Конструктор не обнаружен» в веб-клиенте 1С:УНФ после обновления?

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

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

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

Анализ технической информации об ошибке

Давайте внимательно изучим технологический лог ошибки, который записывается в журнал регистрации при запуске системы:


{ОбщийМодуль.ГлобальныйПоискКлиент.Модуль(108)}: Возврат Вычислить("Новый ПланГлобальногоПоиска");
{ОбщийМодуль.ГлобальныйПоискКлиент.Модуль(123)}: ПланПоиска = НовыйПланГлобальногоПоиска;
{ОбщийМодуль.ГлобальныйПоискКлиент.Модуль(11)}: УстановитьПланГлобальногоПоиска;
{ОбщийМодуль.ОбщегоНазначенияКлиентПереопределяемый.Модуль(177)}: ГлобальныйПоискКлиент.ПослеНачалаРаботыСистемы;
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(1307)}: ОбщегоНазначенияКлиентПереопределяемый.ПослеНачалаРаботыСистемы;

Обратим внимание на ключевую строчку: Возврат Вычислить("Новый ПланГлобальногоПоиска"). Возникает логичный вопрос: для чего разработчики платформы и БСП используют обертку в виде функции Вычислить() вместо прямого создания объекта через конструктор Новый ПланГлобальногоПоиска?

Дело в том, что объект метаданных ПланГлобальногоПоиска появился в платформе «1С:Предприятие 8» начиная с версии 8.3.15. Разработчики БСП стремятся обеспечить обратную совместимость конфигураций с более старыми релизами платформы. Если бы код содержал прямую декларацию Новый ПланГлобальногоПоиска, то на любой платформе ниже версии 8.3.15 конфигурация вообще не смогла бы скомпилироваться и запуститься — система сразу выдала бы критическую ошибку синтаксиса.

Использование конструкции Вычислить() позволяет платформе обходить жесткую компиляцию кода и пытаться создать объект динамически непосредственно в режиме исполнения (runtime). Если запущенная платформа поддерживает этот класс, объект успешно создается. Если же среда исполнения не знает такого типа данных, функция Вычислить() возвращает исключение, которое мы и наблюдаем: «Конструктор не обнаружен».

Ниже мы подробно разберем четыре основные причины, по которым веб-клиент «не видит» данный конструктор, и методы их решения.

Решение 1. Обновление платформы «1С:Предприятие» до стабильного релиза

Первое, на что необходимо обратить внимание — это версия используемой платформы «1С». Механизм глобального поиска в веб-клиенте на начальных этапах его внедрения содержал ряд недоработок. В частности, на ранних сборках ветки 8.3.16 (например, на релизе 8.3.16.1063) регулярно проявлялась ошибка интеграции JS-движка веб-клиента и объектной модели платформы.

Для устранения этой проблемы выполним следующие шаги:

  1. Проверим текущую версию платформы 1С, установленную на сервере приложений и на компьютерах пользователей (в случае использования тонкого клиента).
  2. Если версия ниже 8.3.16.1359, запланируем обновление платформы. Практика показывает, что начиная с релиза 8.3.16.1359 (и в последующих стабильных сборках веток 8.3.17, 8.3.18 и новее) данная ошибка была полностью исправлена разработчиками фирмы «1С».
  3. Скачаем актуальный дистрибутив платформы и произведем установку на сервере.

Решение 2. Проверка и изменение режима совместимости конфигурации

Даже если физически на сервере установлена самая современная версия платформы, ее новые возможности могут быть программно заблокированы на уровне самой конфигурации. За это отвечает специальное свойство — Режим совместимости.

Если после обновления конфигурации УНФ режим совместимости остался установленным на значении ниже, чем 8.3.15 (например, совместимость с 8.3.14), платформа искусственно отключает работу новых механизмов, включая глобальный поиск. В результате попытка инициализировать ПланГлобальногоПоиска вызовет ошибку «Конструктор не обнаружен».

Проанализируем этот параметр в конфигураторе:

  1. Запустим базу в режиме Конфигуратор.
  2. В дереве метаданных нажмем правой кнопкой мыши на корневой элемент (название конфигурации) и выберем пункт Свойства.
  3. В открывшейся панели свойств прокрутим список в самый низ до раздела Совместимость.
  4. Найдем параметр Режим совместимости. Убедимся, что его значение соответствует требованиям текущего релиза УНФ (как правило, это отсутствие совместимости или совместимость с версией не ниже актуальной для вашей версии БСП). При необходимости повысим его.

Решение 3. Устранение несоответствия библиотек (DLL) на веб-сервере

Это одна из самых частых скрытых причин сбоя при работе через веб-клиент. Администраторы часто устанавливают новую версию платформы «1С» на сервер, но забывают скорректировать настройки публикации на веб-сервере (Apache или IIS).

Если веб-сервер продолжает использовать старые библиотеки (например, модуль wsap24.dll для Apache), то веб-клиент физически запускается под управлением старого движка (например, версии 8.3.14), который ничего не знает о глобальном поиске.

Проанализируем конфигурацию веб-сервера Apache по шагам:

  1. Откроем конфигурационный файл Apache (обычно это httpd.conf, расположенный в каталоге установки веб-сервера в папке conf).
  2. Найдем строчку подключения модуля 1С. Она выглядит примерно так: LoadModule _1cws_module "C:/Program Files/1cv8/8.3.15.1565/bin/wsap24.dll"
  3. Обратим внимание на указанный путь. Если там прописан путь к старой версии платформы (например, 8.3.15.x или 8.3.14.x), заменим его на путь к каталогу новой, установленной нами платформы (например, 8.3.16.1359): LoadModule _1cws_module "C:/Program Files/1cv8/8.3.16.1359/bin/wsap24.dll"
  4. Сохраним изменения в файле httpd.conf.
  5. Перезапустим службу веб-сервера Apache через консоль администрирования служб Windows или с помощью терминала Linux.

Решение 4. Полная перепубликация информационной базы и очистка кэша

Если обновление платформы выполнено, а пути к библиотекам на веб-сервере настроены верно, старые скрипты могут оставаться в кэше. Веб-клиент «1С» активно кэширует тяжелые файлы с описанием логики интерфейса непосредственно на стороне веб-сервера и в браузере пользователя.

Проведем комплексную очистку кэша и перепубликацию базы:

  1. Остановим службу веб-сервера (Apache или IIS).
  2. Запустим Конфигуратор 1С от имени администратора компьютера.
  3. Перейдем в меню Администрирование -> Публикация на веб-сервере....
  4. Нажмем кнопку Отменить публикацию. Закроем окно публикации и выйдем из Конфигуратора.
  5. Перейдем в каталог публикации на диске (путь, который был указан в поле «Каталог» при публикации, например, C:\inetpub\wwwroot\UNF или C:\inetpub\wwwroot\unf_promo) и полностью удалим оттуда все файлы, включая файл default.vrd.
  6. Выполним очистку серверного кэша 1С. Для этого остановим службу «Server 1C:Enterprise» и очистим содержимое папок srvinfo\reg_1541\snccntry* и локальных временных папок AppData\Local\1C\1Cv8 на сервере.
  7. Снова откроем Конфигуратор нашей базы, перейдем в Администрирование -> Публикация на веб-сервере..., укажем чистый каталог публикации, проверим активность необходимых флагов и нажмем кнопку Опубликовать.
  8. Запустим веб-сервер.
  9. Крайне важный шаг на стороне клиента: откроем браузер на компьютере пользователя, перейдем по адресу нашей базы и обязательно нажмем комбинацию клавиш Ctrl + F5 для полной очистки кэша браузера. Также рекомендуется проверить работу системы в режиме приватного просмотра («Инкогнито»), чтобы исключить влияние локально сохраненных устаревших скриптов JavaScript.

Реализуя описанный комплекс мер, мы гарантированно избавимся от системной ошибки инициализации глобального поиска и обеспечим стабильную, быструю работу пользователей в веб-клиенте 1С:УНФ.

← На главную