Почему веб-клиент 1С не отображает элементы формы до изменения масштаба?

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

Мы сталкиваемся с распространенной проблемой, когда веб-клиент 1С:Предприятия не всегда корректно отображает элементы формы сразу после ее открытия. В частности, речь идет о ситуации, когда форма элемента справочника «Контрагенты» в конфигурации «Управление нашей фирмой» (редакция 1.6) на платформе 1С:Предприятие 8.3 (версия 8.3.19.1229) изначально выглядит пустой. Интересно, что элементы появляются только после изменения масштаба окна браузера или при установке специфических значений масштаба внутри платформы (например, 63% или 150%). Эта аномалия наблюдается в различных браузерах, таких как Chrome, Mozilla и Edge, при использовании веб-сервера Internet Information Services (IIS).

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

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

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

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

Шаг 1: Очистка сеансовых данных на сервере

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

Мы можем выполнить очистку следующими способами:

  1. Перезапуск службы агента сервера 1С:Предприятия: Этот метод приведет к принудительному завершению всех активных сеансов и очистке их данных. Важно учитывать, что это затронет всех пользователей, работающих с данной базой.
  2. Очистка кэша конфигурации: Для конкретной базы данных мы можем очистить кэш на сервере. Это делается через оснастку администрирования серверов 1С.
  3. Очистка кэша браузера: Хотя автор указал, что пробовал разные браузеры, повторная полная очистка кэша, истории и файлов cookie для каждого браузера, используемого для доступа к веб-клиенту, может быть полезной.

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

Шаг 2: Проверка и настройка веб-сервера IIS

Поскольку мы используем Internet Information Services (IIS) в качестве веб-сервера, необходимо тщательно проверить его настройки, так как они могут существенно влиять на работу веб-клиента 1С. Существует несколько известных проблем, связанных с конфигурацией IIS, которые могут вызывать некорректное отображение.

  1. Пул приложений и разрядность wsisapi.dll:

    Мы должны убедиться, что разрядность модуля wsisapi.dll соответствует настройкам пула приложений в IIS. Если модуль был установлен с 32-битного клиента, а пул приложений настроен на 64-битный режим, это может привести к сбоям. Мы можем проверить и изменить этот параметр следующим образом:

    • Откройте «Диспетчер служб IIS».
    • Перейдите к «Пулам приложений».
    • Выберите пул приложений, используемый для публикации вашей базы 1С.
    • Нажмите «Дополнительные параметры...» (Advanced Settings...).
    • Найдите параметр «Включить 32-разрядные приложения» (Enable 32-Bit Applications).
    • Если ваш wsisapi.dll 32-разрядный, а пул приложений работает в 64-битном режиме, установите этот параметр в True.

    После изменения настроек не забудьте перезапустить пул приложений.

  2. Разрешения NTFS для файла web.config:

    Нам необходимо убедиться, что разрешения NTFS для файла web.config, который находится в корневом каталоге опубликованной базы 1С, корректны и предоставляют достаточный доступ. Учетная запись компьютера веб-сервера (часто это IIS_IUSRS или IUSR) должна иметь права на чтение и выполнение для этого файла. Недостаточные права могут привести к ошибкам при загрузке конфигурации веб-клиентом.

  3. Компонент "Расширяемость .NET" для веб-сервера:

    Мы также должны проверить, установлен ли компонент "Расширяемость .NET" для веб-сервера. Для этого:

    • Откройте «Диспетчер серверов».
    • Выберите «Роли и компоненты».
    • Перейдите к разделу «Роли веб-сервера (IIS)».
    • Разверните «Сервер приложений».
    • Убедитесь, что флажок напротив «Расширяемость .NET» установлен. При отсутствии данного компонента его необходимо добавить.
  4. Добавление сопоставления сценария для wsisapi.dll:

    В некоторых случаях для корректного отображения иконок и других элементов в веб-клиенте на опубликованной базе через IIS требуется явное добавление сопоставления сценария для wsisapi.dll. Мы выполняем это следующим образом:

    • Откройте «Диспетчер служб IIS».
    • Выберите сайт или приложение, соответствующее вашей опубликованной базе 1С.
    • В разделе «IIS» дважды щелкните на «Сопоставления обработчиков» (Handler Mappings).
    • В правой панели действий выберите «Добавить сопоставление сценария» (Add Script Map).
    • В поле «Путь запроса» (Request path) введите *.
    • В поле «Исполняемый файл» (Executable) укажите полный путь к файлу wsisapi.dll вашей платформы 1С (например, C:\Program Files\1cv8\8.3.19.1229\bin\wsisapi.dll).
    • В поле «Имя» (Name) введите любое понятное имя, например, «1C ISAPI Handler».
    • Нажмите «ОК». При запросе на разрешение ISAPI-расширений нажмите «Да».

    После выполнения этих настроек крайне важно перезапустить службу веб-сервера IIS для применения изменений.

Шаг 3: Рассмотрение возможности использования другого веб-сервера (Apache)

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

Установка и публикация базы 1С через Apache включает в себя:

  1. Установку Apache HTTP Server: Мы скачиваем и устанавливаем стабильную версию Apache, совместимую с вашей операционной системой.
  2. Установку модуля mod_1c.so: Для работы 1С с Apache нам потребуется специальный модуль (аналог wsisapi.dll для IIS), который входит в состав дистрибутива платформы 1С:Предприятие. Мы копируем его в соответствующую папку модулей Apache.
  3. Конфигурацию Apache: Мы редактируем файл конфигурации httpd.conf для подключения модуля mod_1c.so и настройки виртуального хоста или алиаса для публикации вашей информационной базы. Важно правильно указать путь к базе данных и настроить права доступа.
  4. Перезапуск Apache: После всех изменений мы перезапускаем службу Apache.

Если проблема исчезнет при работе через Apache, это однозначно укажет на то, что причина крылась в специфической конфигурации или взаимодействии 1С с IIS.

Шаг 4: Обновление платформы 1С:Предприятие

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

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

  1. Сделать резервную копию всей информационной базы и файловой системы сервера 1С.
  2. Провести тестирование обновленной платформы на тестовой копии базы данных. Это позволит убедиться в отсутствии новых проблем и совместимости с вашей конфигурацией.

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

Дополнительные рекомендации и проверки

Помимо основных шагов, мы можем рассмотреть и другие факторы, которые могут влиять на отображение форм в веб-клиенте.

  1. Настройки браузеров:

    Хотя автор пробовал несколько браузеров, мы должны убедиться, что для работы с веб-клиентом 1С в них разрешены:

    • JavaScript: Веб-клиент активно использует JavaScript для динамического формирования и взаимодействия с интерфейсом.
    • Файлы cookie: Используются для управления сессиями и сохранения пользовательских настроек.
    • Всплывающие окна: Некоторые функции 1С могут открываться в новых окнах.

    Для браузера Internet Explorer (хотя он менее актуален, но может использоваться в некоторых корпоративных средах) также важны настройки безопасности, такие как "Активные сценарии" и "Отображение разнородного содержимого" в зоне интрасети или надежных узлов.

  2. Масштабирование в 1С:Предприятии:

    Платформа 1С:Предприятие, начиная с версии 8.3.10, включает штатный механизм масштабирования форм. Эта функция позволяет пользователю самостоятельно настраивать масштаб отображения элементов. Команда "Изменить масштаб" обычно доступна в системных командах или в подменю "Вид" главного меню. Хотя в нашем случае изменение масштаба решает проблему, мы можем попробовать установить желаемый масштаб по умолчанию через эту функцию, чтобы избежать ручных манипуляций каждый раз.

  3. Метод ОбновитьОтображениеДанных():

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

  4. Расширения браузера:

    Хотя автор упомянул отсутствие расширений, кроме тех, что нужны для работы с файлами 1С, иногда другие, казалось бы, безобидные расширения могут конфликтовать или влиять на процесс отрисовки веб-страниц. Мы можем попробовать запустить браузер в режиме инкогнито или с полностью отключенными расширениями, чтобы исключить их влияние.

  5. "Пустой" интерфейс при работе с тонкими клиентами:

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

Итак, мы рассмотрели комплексный подход к диагностике и устранению проблемы с отображением элементов формы в веб-клиенте 1С. Начиная от базовых проверок кэша и настроек браузеров, переходя к более глубокой настройке веб-сервера IIS и заканчивая обновлением платформы, мы можем последовательно выявить и решить причину некорректной работы. Мы рекомендуем начать с наиболее простых шагов и двигаться к более сложным, внимательно анализируя результат после каждого изменения.

← На главную