Как очистить поле HTML документа на управляемой форме 1С?

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

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

В этой статье мы подробно разберем, почему возникает данное поведение, выясним технические причины работы встроенного браузера и рассмотрим проверенные способы корректной очистки поля HTML документа.

Почему присвоение пустой строки не очищает поле HTML?

Проанализируем механику работы поля формы с видом Поле HTML документа. Этот элемент представляет собой встроенный браузерный компонент операционной системы. Когда мы связываем его со строковым реквизитом формы, платформа ожидает получить либо корректный исходный код HTML, либо валидный URL-адрес (путь к локальному файлу или веб-ссылку).

Если для обычного текстового поля или поля картинки запись Картинка = ""; приводит к сбросу отображения, то браузерный движок при получении пустой строки "" не считает ее командой на переход к новому ресурсу. Навигация просто не инициируется, и компонент продолжает удерживать в буфере последнее успешно загруженное состояние.

Ситуация осложняется, когда в поле отображается PDF-документ. При открытии PDF браузер активирует установленный в системе плагин (например, Foxit Reader или Adobe Acrobat). Плагин блокирует файл дескриптором на чтение и отображает свой интерфейс до тех пор, пока веб-контейнер явно не загрузит другую страницу.

Способ 1. Передача минимальной HTML-разметки

Рассмотрим самый простой, быстрый и эффективный способ очистки поля. Чтобы заставить браузерный компонент принудительно обновить страницу и выгрузить ранее отображаемый документ, достаточно передать минимальную базовую структуру HTML-документа.

Посмотрим на пример кода в процедуре очистки:


// Очищаем поле путем передачи пустой разметки
АдресПДФ = "<html><head></head><body></body></html>";

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

Способ 2. Использование системной страницы about:blank

Разберем еще один стандартный вариант, широко применяемый в веб-разработке. Если реквизит используется преимущественно для хранения путей к файлам или URL-ссылок, браузеру можно отправить специальную системную команду перехода на пустую страницу:

АдресПДФ = "about:blank";

Браузерный движок интерпретирует about:blank как команду полной очистки контекста документа. Это не требует генерации файлов и моментально освобождает дескрипторы ранее занятых локальных файлов.

Способ 3. Загрузка пустого временного HTML-файла

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

Разберем реализацию этого алгоритма по шагам:

  1. Создаем объект ТекстовыйДокумент.
  2. Устанавливаем пустую строку в качестве его содержимого.
  3. Получаем уникальный путь к временному файлу с расширением .html через метод ПолучитьИмяВременногоФайла().
  4. Записываем файл на диск и передаем путь к нему в реквизит формы.

Посмотрим на пример реализации в коде 1С:


ТД = Новый ТекстовыйДокумент;
ТД.УстановитьТекст("");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".html"); 
ТД.Записать(ИмяВременногоФайла);

АдресПДФ = ИмяВременногоФайла;

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

Важные нюансы работы с PDF-файлами и блокировками

Проанализируем сопутствующие проблемы, которые часто возникают при интеграции просмотра PDF в управляемых формах:

  1. Запуск сторонних процессов. Если для открытия файла вызывается процедура ЗапуститьПриложение(), файл открывается в отдельном окне внешней программы, не связанном с формой 1С. Закрыть такое внешнее приложение стандартными средствами платформы невозможно — закрытие формы 1С не приведет к завершению внешнего процесса.
  2. Блокировка временных файлов. Пока поле HTML отображает локальный PDF-файл, компонент просмотрщика блокирует его. Попытка удалить этот файл с помощью метода УдалитьФайлы() приведет к ошибке совместного доступа. Поэтому перед удалением файла из рабочего каталога обязательно нужно очистить поле HTML (например, передав about:blank) и дать операционной системе несколько миллисекунд для снятия блокировки.
  3. Управление видимостью. Если в объекте файл отсутствует вовсе, хорошей практикой является управление свойством видимости элемента формы. Например: Элементы.ПолеПДФ.Видимость = ЗначениеЗаполнено(Объект.ФайлПДФ); Это позволяет избежать отображения пустой серой рамки компонента на форме.

Используя явную передачу пустой HTML-разметки или адреса about:blank, вы гарантируете корректную очистку интерфейса и стабильную работу формы без зависания внешних модулей.

← На главную