Почему в 1С не отображаются картинки в поле HTML документа и как это исправить

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

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

Рассмотрим подробно причины возникновения этой неисправности и разберем по шагам все способы ее устранения.

Причины неисправности: почему появляется красный крестик

Проанализируем архитектуру работы элемента «Поле HTML документа» в платформе 1С:Предприятие. На платформах серии 8.3 (до версии 8.3.14) операционная система Windows использует системный компонент WebBrowser (MSHTML/Internet Explorer) для отрисовки HTML-содержимого внутри тонкого и толстого клиентов.

Выясним основные факторы, которые приводят к блокировке или неверному рендерингу картинок:

  1. Устаревшая версия Internet Explorer и режим совместимости по умолчанию. Если в системе установлен IE8 (или компонент работает в режиме эмуляции IE7/IE8), современная разметка и зашифрованные медиаданные блокируются. В IE11 встроенные графические элементы обрабатываются штатно.
  2. Использование идентификаторов Content-ID (протокол cid:). Почтовые клиенты при отправке писем зашивают встроенные изображения как вложения с адресами вида <img src="cid:image001.png@...">. Компонент браузера не умеет самостоятельно извлекать файлы из почтового сообщения. Если 1С не подменяет ссылки во временные файлы или хранилище, браузер выводит рамку ошибки.
  3. Настройки безопасности IE и блокировка кэширования HTTPS. Если изображения загружаются по внешним ссылкам с защищенных сайтов, групповая политика или параметр IE «Не сохранять зашифрованные страницы на диск» (DisableCachingOfSSLPages) запрещает сохранение медиафайлов во временный кэш, из-за чего рендеринг становится невозможен.
  4. Ограничения формата Base64 в старых версиях IE. При передаче картинок непосредственно в коде HTML (<img src="data:image/png;base64,...">) устаревший движок IE8 имеет жесткий лимит на длину строки Data URL (не более 32 Кб) и критичен к строгости указания MIME-типа.

Способ 1. Настройка эмуляции браузера через реестр Windows

Даже если на компьютере установлен Internet Explorer 11, встроенный компонент WebBrowser для сторонних приложений по умолчанию запускается в режиме эмуляции устаревшего IE7 (значение 7000). Чтобы заставить 1С использовать движок IE11, необходимо внести изменения в реестр Windows.

Разберем по шагам порядок настройки реестра:

  1. Откроем редактор реестра (regedit.exe).
  2. Перейдем в ветку для текущего пользователя:

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

    Если настройка выполняется для всех пользователей 64-битной системы с 32-битным клиентом 1С, перейдем в ветку:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

  3. Создадим новый параметр типа DWORD (32 бита).
  4. В качестве имени параметра укажем имя исполняемого файла 1С: 1Cv8c.exe (для тонкого клиента) или 1Cv8.exe (для толстого клиента).
  5. Установим значение параметра равным 11000 в десятичной системе счисления (или 2AF8 в шестнадцатеричной). Это принудительно включает режим IE11.

Способ 2. Преобразование изображений в формат Base64

Если у нас есть возможность повлиять на формирование или обработку HTML-кода письма на стороне 1С, проанализируем вариант с программной заменой внешних ссылок и cid: на строки Base64.

Посмотрим на пример функции 1С, которая подменяет ссылки на картинки в HTML-тексте на формат Data URL:


// Функция принимает исходный текст HTML и соответствие вложенных картинок
Функция ПодготовитьHTMLСКартинками(ТекстHTML, СоответствиеКартинок) Экспорт
	
	Для Каждого Вложение Из СоответствиеКартинок Цикл
		Идентификатор = Вложение.Ключ; // Например, "image001.png@01D78910"
		ДвоичныеДанные = Вложение.Значение; // ДвоичныеДанные картинки
		
		СтрокаBase64 = ДвоичныеДанныеВСтрокуBase64(ДвоичныеДанные);
		
		// Формируем готовый Data URL
		ПутьDataURL = "data:image/png;base64," + СтрокаBase64;
		
		// Заменяем внутреннюю ссылкуcid: на закодированную строку
		ТекстHTML = СтрЗаменить(ТекстHTML, "cid:" + Идентификатор, ПутьDataURL);
	КонецЦикла;
	
	Возврат ТекстHTML;
КонецФункции

Использование этого подхода позволяет полностью абстрагироваться от временных файлов на диске и прав доступа к папкам пользователя.

Способ 3. Проверка настроек Internet Explorer и прав доступа

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

  1. Обновим Internet Explorer на проблемном ПК до 11-й версии.
  2. Откроем «Свойства браузера» (inetcpl.cpl) и перейдем на вкладку «Дополнительно».
  3. Снимем флаг с пункта «Не сохранять зашифрованные страницы на диск» в разделе «Безопасность». Это позволит отображать картинки, загружаемые по протоколу HTTPS.
  4. Убедимся, что у пользователя есть права на запись в папку временных файлов AppData\Local\Temp, а путь к профилю Windows не содержит некорректных спецсимволов.

Способ 4. Переход на современную платформу 1С (движок Chromium)

Кардинальным и наиболее надежным решением проблемы является обновление платформы 1С:Предприятие до версии 8.3.14 или выше. Начиная с этого релиза, фирма 1С полностью отказалась от использования устаревшего системного компонента Internet Explorer в элементах Поле HTML документа под Windows, переведя их на встроенный движок Chromium/WebKit.

При работе на актуальных версиях платформы 8.3 отображение современно сформированных HTML-писем, стилей и встроенных изображений происходит корректно и одинаково на всех рабочих местах без необходимости настройки реестра Windows и Internet Explorer.

← На главную