Рассмотрим ситуацию, с которой часто сталкиваются пользователи и системные администраторы при работе в 1С:Управление нашей фирмой (УНФ) и других конфигурациях. В самописные или типовые обработки встроены Яндекс.Карты. В один прекрасный момент вместо привычной карты вы видите серый фон с надписью «Для этого участка местности нет данных...». При этом проблема может проявляться избирательно: на локальном компьютере или отдельном сервере карта загружается корректно, а на терминальном сервере (например, Windows Server 2019) отказывается работать наотрез.
Раньше в таких случаях часто помогал простой трюк: достаточно было открыть Яндекс.Карты через Internet Explorer (IE), чтобы обновить кэш, после чего в 1С все начинало работать. Однако в новых версиях платформы 1С 8.3 (например, начиная с 8.3.17) и при ужесточении политик безопасности на стороне серверов этот метод может перестать приносить результат. Проанализируем, почему это происходит и разберем по шагам все возможные пути решения.
Современные версии платформы 1С для поля HTML-документа используют движок WebKit (на базе Chromium). Однако платформа все равно во многом полагается на системные настройки безопасности операционной системы Windows. Когда движок пытается загрузить скрипты с сервера api-maps.yandex.ru по защищенному протоколу HTTPS, система обязана проверить валидность SSL-сертификата.
В рамках этой проверки операционная система отправляет запрос к серверам центра сертификации (CA) для загрузки списков отзыва сертификатов (CRL) или проверки статуса по протоколу OCSP. Если терминальный сервер находится в закрытом контуре, имеет строгие правила брандмауэра или работает через прокси-сервер, этот запрос может блокироваться. В результате возникает ситуация, при которой сервер отзыва сертификатов недоступен.
Из-за невозможности проверить статус сертификата, система безопасности блокирует загрузку веб-ресурса. Поэтому скрипты Яндекс.Карт не могут подгрузить так называемые «тайлы» (кусочки изображений карты), и мы видим пустой серый экран.
Рассмотрим наиболее действенное временное решение, если проблема заключается именно в невозможности достучаться до серверов отзыва (CRL). Мы можем настроить подсистему безопасности SCHANNEL так, чтобы она игнорировала недоступность серверов проверки отзыва.
regedit).
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL
DWORD (32-бит).ManualCredValidation.1.Важно: Это решение отключает проверку сертификатов на уровне системы, что позволяет обойти проблему с недоступностью серверов отзыва. Для более правильного и безопасного подхода рекомендуется разрешить доступ с терминального сервера к URL-адресам выдачи списков отзыва (они указаны в свойствах сертификата Яндекса).
Проанализируем ситуацию с сетью. Часто в браузерах (в том числе в Internet Explorer) настройки прокси-сервера задаются на уровне пользователя. Однако системные компоненты и фоновые процессы 1С используют системные настройки прокси WinHTTP.
Если на терминальном сервере доступ в интернет осуществляется через прокси, необходимо убедиться, что он корректно прописан на уровне системы. Для проверки откройте командную строку от имени администратора и выполните команду:
netsh winhttp show proxy
Если результат показывает прямой доступ (Direct access), а вам нужен прокси, настройте его с помощью команды:
netsh winhttp set proxy proxy-server="IP_адрес:порт"
После этого системные службы смогут достучаться до серверов Яндекса для валидации сертификатов.
Посмотрим на специфику работы современных версий платформы 1С. Поскольку в платформе 8.3.17+ используется движок WebKit, обычная очистка кэша базы 1С или кэша IE может не дать результата. У WebKit есть собственный каталог, где хранятся временные файлы веб-ресурсов.
Чтобы исключить «залипание» некорректного состояния страницы, очистите этот кэш. Для этого на терминальном сервере под учетной записью пользователя перейдите в папку:
%LOCALAPPDATA%\1C\1cv8\Common\SwCache
Полностью удалите содержимое этой директории. При следующем запуске обработки 1С заново скачает все скрипты и тайлы.
Иногда самописные обработки содержат старый код, который принудительно вызывает движок MSHTML (компоненты Internet Explorer). Если вы подозреваете, что система пытается использовать старый движок, необходимо проверить ветку реестра, отвечающую за режим эмуляции браузера.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
1cv8.exe или 1cv8c.exe.11001 (в десятичной системе), что указывает системе использовать движок IE11, а не устаревшие версии IE7/IE8, которые могут не поддерживать современные стандарты безопасности Яндекса.Напоследок, всегда стоит помнить об условиях использования Яндекс.Карт (API v2.1 и новее). Если вы используете карты в закрытой системе (каковой является 1С, доступная только сотрудникам компании), бесплатная версия API может быть заблокирована со стороны самого Яндекса за нарушение условий соглашения. В этом случае сервер возвращает ошибку загрузки тайлов (код 429 или отказ в доступе), что визуально выглядит точно так же — серый фон. Если технические настройки сертификатов и прокси не помогают, проверьте валидность вашего коммерческого ключа и лимиты запросов в кабинете разработчика Яндекса.