Расширение поля формы для поля HTML-документа.МаксимальнаяВысота

Свойства · MaxHeight

Тип: Число. Содержит максимальную высоту элемента. Используется, если свойство АвтоМаксимальнаяВысота установлено в значение Ложь. Задается в символах. Значение 0 означает, что максимальная высота не ограничена.

Полное описание, параметры и ограничения

Расширение поля формы для поля HTML-документа.МаксимальнаяВысота (Form extension for a HTML document field.MaxHeight)

Расширение поля формы для поля HTML-документа (Form extension for a HTML document field)

МаксимальнаяВысота (MaxHeight)

Доступен, начиная с версии 8.3.6.

Использование:
Чтение и запись.
Описание:
Тип: Число.
Содержит максимальную высоту элемента.
Используется, если свойство АвтоМаксимальнаяВысота установлено в значение Ложь.
Задается в символах.
Значение 0 означает, что максимальная высота не ограничена.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте требует обращения к серверу.

Использование в версии:

Доступен, начиная с версии 8.3.6.

Методическая информация

Практические примеры

Показать собственный расчёт в HTML-поле и ограничить его размеры

Формируем страницу для 3 книг по 250. Название с угловыми скобками, амперсандом и кавычками вставляем как текст, а поле настраиваем отдельно от HTML-содержимого.

Где и как запускать

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

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяHTMLКарточка85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

  2. Не добавляйте вручную УчебныйHTML, УчебныйHTMLГотов, УчебноеHTMLПоле или учебные кнопки: полный модуль создаёт реквизиты, элементы и команды.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте один полный модуль урока на уровне модуля, сохраните собственную EPF и откройте её в учебной базе.

  4. Строковый реквизит УчебныйHTML хранит свою страницу. ПолеФормы имеет ВидПоляФормы.ПолеHTMLДокумента и ПутьКДанным = УчебныйHTML.

  5. Страница собирается из собственных 3 книг по 250. Нет внешних URL, изображений, скриптов, файлов, запросов и записей в базу.

  6. Дождитесь отображения карточки. Обработчик ДокументСформирован назначен программно; в модуле управляемой формы он получает Элемент.

  7. Отдельный флаг готовности не подменяет чтение объекта браузера. Не обращайтесь к Документ при серверном создании или до завершения формирования HTML.

  8. Каждый урок запускайте в отдельной копии формы. Работа в 1С, визуальное отображение и история встроенного браузера не проверены; веб-клиент и мобильный клиент в упражнение не входят.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTML", Новый ОписаниеТипов("Строка")));
    Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTMLГотов", Новый ОписаниеТипов("Булево")));
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    ЭтаФорма.УчебныйHTMLГотов = Ложь;
    Поле = Элементы.Добавить("УчебноеHTMLПоле", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеHTMLДокумента;
    Поле.ПутьКДанным = "УчебныйHTML";
    Поле.УстановитьДействие("ДокументСформирован", "УчебныйДокументСформирован");
    Поле.Вывод = ИспользованиеВывода.Запретить;
    Поле.АвтоМаксимальнаяВысота = Ложь;
    Поле.АвтоМаксимальнаяШирина = Ложь;
    Поле.Высота = 18;
    Поле.Ширина = 90;
    Поле.МаксимальнаяВысота = 28;
    Поле.МаксимальнаяШирина = 120;
    Поле.РастягиватьПоВертикали = Истина;
    Поле.РастягиватьПоГоризонтали = Истина;

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить свою HTML-карточку";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
    ЭтаФорма.УчебныйHTML = СформироватьСобственнуюКарточку();
КонецПроцедуры

&НаКлиенте
Процедура УчебныйДокументСформирован(Элемент)
    УчебныйHTMLГотов = Истина;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Не УчебныйHTMLГотов Тогда
        Сообщить("Собственный HTML ещё формируется; нажмите после появления карточки");
        Возврат;
    КонецЕсли;
    Поле = Элементы.УчебноеHTMLПоле;
    Сообщить(СтрНайти(УчебныйHTML, "Сумма: 750") > 0);
    Сообщить(СтрНайти(УчебныйHTML, "Книга <учебная> & "цена"") > 0);
    Сообщить(Не Поле.АвтоМаксимальнаяВысота И Не Поле.АвтоМаксимальнаяШирина);
    Сообщить(Поле.Высота = 18 И Поле.Ширина = 90);
    Сообщить(Поле.МаксимальнаяВысота = 28 И Поле.МаксимальнаяШирина = 120);
    Сообщить(Поле.РастягиватьПоВертикали И Поле.РастягиватьПоГоризонтали);
    Сообщить(Поле.Вывод = ИспользованиеВывода.Запретить);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЭкранироватьУчебныйТекст(Текст)
    Результат = СтрЗаменить(Текст, "&", "&");
    Результат = СтрЗаменить(Результат, "<", "&lt;");
    Результат = СтрЗаменить(Результат, ">", "&gt;");
    Результат = СтрЗаменить(Результат, """", "&quot;");
    Возврат Результат;
КонецФункции

&НаСервереБезКонтекста
Функция СформироватьСобственнуюКарточку()
    Название = "Книга <учебная> & ""цена""";
    Количество = 3;
    Цена = 250;
    Сумма = Количество * Цена;
    Если Сумма <> 750 Тогда
        ВызватьИсключение "Нарушен собственный учебный расчёт";
    КонецЕсли;
    Возврат "<!doctype html><html lang=""ru""><head><meta charset=""utf-8""><title>Собственная учебная карточка</title></head>"
        + "<body style=""font-family:Arial,sans-serif;font-size:16px;line-height:1.6;padding:16px""><h1 id=""own-summary"">Учебный расчёт</h1>"
        + "<p id=""own-name"">" + ЭкранироватьУчебныйТекст(Название) + "</p>"
        + "<p><a href=""#own-total"">К собственной сумме</a></p>"
        + "<div style=""min-height:550px""><p>Только собственные данные: 3 книги по 250.</p></div>"
        + "<h2 id=""own-total"">Сумма: " + Строка(Сумма) + "</h2>"
        + "<p><a href=""#own-summary"">К началу собственной карточки</a></p></body></html>";
КонецФункции

Разбор по шагам

  1. Строка HTML создаётся собственной серверной функцией и связывается с управляемым полем правильного вида.

  2. Амперсанд экранируем первым, затем угловые скобки и кавычку. Иначе можно повторно закодировать уже созданные HTML-сущности.

  3. Это экранирование текстового узла, а не универсальный санитайзер произвольного HTML, JavaScript, CSS или URL.

  4. Высота поля — в строках, ширина и максимумы — в символах по установленной справке. Отключаем автоматические максимумы и задаём свои.

  5. После события формирования кнопка проверяет строку и настройки поля. Сумма вычислена умножением, а не получена из оформления.

Как проверить результат

  1. После формирования ожидаются семь Истина. В карточке должно быть видно Книга <учебная> & "цена" и Сумма: 750.

  2. Проверьте масштаб и изменение размеров окна вручную. Карточка не должна загружать внешние ресурсы.

Ожидаемый результат

Реальная собственная HTML-карточка связана с управляемым реквизитом и безопасно выводит конкретный текст в текстовом контексте.

На что обратить внимание

  1. Присваивание Поле.Документ = строка неверно: это readonly объект браузера. Содержимое задаётся через реквизит УчебныйHTML.

  2. Проверка СтрНайти исследует исходную строку, не доказывает фактический DOM и внешний вид.

  3. ИспользованиеВывода.Запретить — ограничение интерфейса, не защита от чтения данных серверным кодом.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.