Многие системные администраторы и разработчики при переходе на новые версии платформы (начиная с 8.3.15 и выше, включая 8.3.17 и 8.3.20) сталкиваются с крайне неприятным поведением 1С. Суть проблемы заключается в следующем: пользователь открывает отчет в веб-клиенте, нажимает кнопку «Сформировать», но вместо данных видит абсолютно пустое белое поле. При этом, если нажать «Предварительный просмотр» или отправить документ на печать, все данные отображаются корректно. В тонком клиенте проблема также не воспроизводится.
В этой статье мы подробно разберем причины возникновения этого «глюка» и рассмотрим проверенные способы его устранения через настройку сетевой инфраструктуры, веб-серверов и браузеров.
Проанализируем ситуацию: почему форма отчета отрисовывается, а сами данные (табличный документ) — нет? Веб-клиент 1С представляет собой сложное JavaScript-приложение. Когда мы формируем отчет, платформа генерирует набор HTML-тегов, стилей и скриптов. Часто для отображения сложных таблиц 1С использует дополнительные запросы к серверу для подгрузки чанков (частей) данных.
Основная причина «невидимости» кроется в том, что 1С может генерировать абсолютные ссылки для внутренних ресурсов отчета. Если ваша информационная база опубликована за реверс-прокси (например, Nginx) или доступна через проброс портов на роутере с изменением номера порта (например, внешний порт 7777 транслируется во внутренний 80), браузер блокирует такие запросы. Хром и другие современные браузеры воспринимают попытку загрузить данные по ссылке, отличной от текущего адреса в строке браузера, как нарушение политики безопасности (CORS или Mixed Content).
Если вы используете Nginx для публикации базы в интернет или для балансировки нагрузки, решение часто заключается в правильной передаче заголовков. Выясним, какие именно параметры критичны для корректной работы веб-клиента.
Проанализируем конфигурацию и добавим необходимые директивы в блок location вашего конфига Nginx. Самым важным является информирование платформы о том, какой протокол и хост использует клиент на самом деле.
Рассмотрим пример настройки заголовков:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Особое внимание уделим строке proxy_set_header X-Forwarded-Proto $scheme;. Если пользователь обращается к 1С по HTTPS, а Nginx передает запрос на веб-сервер (IIS или Apache) по HTTP, платформа может сформировать ссылки на элементы отчета с протоколом http://. Браузер заблокирует их как «смешанный контент» (Mixed Content), и отчет останется пустым. Добавление этого заголовка помогает 1С правильно определить контекст выполнения.
Посмотрим на ситуацию со стороны сетевого оборудования. Распространенная ошибка — использование разных портов снаружи и внутри сети. Например, на роутере настроено: внешний IP, порт 1234 -> внутренний IP сервера 1С, порт 80.
Выяснилось, что 1С крайне чувствительна к такому «маппингу». Если внешний и внутренний порты не совпадают, некоторые скрипты отрисовки табличных документов в веб-клиенте пытаются обращаться к внутреннему порту 80, который недоступен пользователю из внешней сети. Рассмотрим два варианта решения этой задачи:
Default Web Site (или вашу конкретную публикацию).Важное замечание: При использовании нестандартных портов в браузерах типа Chrome или Yandex иногда требуется пробросить не только TCP, но и UDP трафик для того же порта, так как современные протоколы (например, QUIC) могут влиять на доставку контента.
Проанализируем ситуацию, когда проблема возникает внутри локальной сети. Если в организации используется корпоративный прокси-сервер, браузер может пытаться обращаться к элементам отчета через него, что вызывает задержки или блокировки.
Попробуем добавить адрес сервера 1С в исключения прокси-сервера:
Также рекомендуется проверить состояние Firewall на сервере 1С. В некоторых случаях блокировка специфических портов или динамических ответов от службы W3SVC (IIS) приводит к тому, что каркас страницы загружается, а бинарные данные отчета отсекаются сетевым экраном.
Если вышеперечисленные методы не помогли, проанализируем состояние самой публикации. При обновлении платформы 1С файлы модулей расширения веб-сервера обновляются, но в папке публикации могут остаться старые версии скриптов или закэшированные стили, которые несовместимы с новым ядром платформы.
Выполним полную очистку по шагам:
C:\inetpub\wwwroot\MyBase).iisreset для IIS).Разберем еще один нюанс: аппаратное ускорение. В редких случаях рендеринг сложных таблиц 1С конфликтует с видеодрайвером через браузер. Если отчет виден в Firefox, но не виден в Chrome, попробуйте временно отключить «Аппаратное ускорение» в настройках Chrome (раздел «Система»).
Подведем итог: «невидимость» отчетов в веб-клиенте 1С — это почти всегда проблема несоответствия сетевых адресов и протоколов между тем, что видит браузер, и тем, что генерирует сервер 1С. Использование идентичных внешних/внутренних портов и правильная передача заголовка X-Forwarded-Proto в 90% случаев полностью решают данную проблему.