Тип: Число. Содержит высоту поля. Задается в строках.
Полное описание, параметры и ограничения
Расширение поля формы для поля HTML-документа.Высота (Form extension for a HTML document field.Height)
Расширение поля формы для поля HTML-документа (Form extension for a HTML document field)
Высота (Height)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: Число.
Содержит высоту поля. Задается в строках.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте требует обращения к серверу.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Показать собственный расчёт в HTML-поле и ограничить его размеры
Формируем страницу для 3 книг по 250. Название с угловыми скобками, амперсандом и кавычками вставляем как текст, а поле настраиваем отдельно от HTML-содержимого.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяHTMLКарточка85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.
Не добавляйте вручную УчебныйHTML, УчебныйHTMLГотов, УчебноеHTMLПоле или учебные кнопки: полный модуль создаёт реквизиты, элементы и команды.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте один полный модуль урока на уровне модуля, сохраните собственную EPF и откройте её в учебной базе.
Строковый реквизит УчебныйHTML хранит свою страницу. ПолеФормы имеет ВидПоляФормы.ПолеHTMLДокумента и ПутьКДанным = УчебныйHTML.
Страница собирается из собственных 3 книг по 250. Нет внешних URL, изображений, скриптов, файлов, запросов и записей в базу.
Дождитесь отображения карточки. Обработчик ДокументСформирован назначен программно; в модуле управляемой формы он получает Элемент.
Отдельный флаг готовности не подменяет чтение объекта браузера. Не обращайтесь к Документ при серверном создании или до завершения формирования HTML.
Каждый урок запускайте в отдельной копии формы. Работа в 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);
Сообщить(Поле.РастягиватьПоВертикали И Поле.РастягиватьПоГоризонтали);
Сообщить(Поле.Вывод = ИспользованиеВывода.Запретить);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭкранироватьУчебныйТекст(Текст)
Результат = СтрЗаменить(Текст, "&", "&");
Результат = СтрЗаменить(Результат, "<", "<");
Результат = СтрЗаменить(Результат, ">", ">");
Результат = СтрЗаменить(Результат, """", """);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция СформироватьСобственнуюКарточку()
Название = "Книга <учебная> & ""цена""";
Количество = 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>";
КонецФункции
Разбор по шагам
Строка HTML создаётся собственной серверной функцией и связывается с управляемым полем правильного вида.
Амперсанд экранируем первым, затем угловые скобки и кавычку. Иначе можно повторно закодировать уже созданные HTML-сущности.
Это экранирование текстового узла, а не универсальный санитайзер произвольного HTML, JavaScript, CSS или URL.
Высота поля — в строках, ширина и максимумы — в символах по установленной справке. Отключаем автоматические максимумы и задаём свои.
После события формирования кнопка проверяет строку и настройки поля. Сумма вычислена умножением, а не получена из оформления.
Как проверить результат
После формирования ожидаются семь Истина. В карточке должно быть видно Книга <учебная> & "цена" и Сумма: 750.
Проверьте масштаб и изменение размеров окна вручную. Карточка не должна загружать внешние ресурсы.
Ожидаемый результат
Реальная собственная HTML-карточка связана с управляемым реквизитом и безопасно выводит конкретный текст в текстовом контексте.
На что обратить внимание
Присваивание Поле.Документ = строка неверно: это readonly объект браузера. Содержимое задаётся через реквизит УчебныйHTML.
Проверка СтрНайти исследует исходную строку, не доказывает фактический DOM и внешний вид.
ИспользованиеВывода.Запретить — ограничение интерфейса, не защита от чтения данных серверным кодом.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Переходить назад и вперёд по истории своей учебной карточки
Две внутренние ссылки ведут к началу и сумме одной собственной страницы. Отдельные команды вызывают Назад и Вперед только у этого HTML-поля; внешние адреса не открываем.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяHTMLКарточка85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.
Не добавляйте вручную УчебныйHTML, УчебныйHTMLГотов, УчебноеHTMLПоле или учебные кнопки: полный модуль создаёт реквизиты, элементы и команды.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте один полный модуль урока на уровне модуля, сохраните собственную EPF и откройте её в учебной базе.
Строковый реквизит УчебныйHTML хранит свою страницу. ПолеФормы имеет ВидПоляФормы.ПолеHTMLДокумента и ПутьКДанным = УчебныйHTML.
Страница собирается из собственных 3 книг по 250. Нет внешних URL, изображений, скриптов, файлов, запросов и записей в базу.
Дождитесь отображения карточки. Обработчик ДокументСформирован назначен программно; в модуле управляемой формы он получает Элемент.
Отдельный флаг готовности не подменяет чтение объекта браузера. Не обращайтесь к Документ при серверном создании или до завершения формирования HTML.
Каждый урок запускайте в отдельной копии формы. Работа в 1С, визуальное отображение и история встроенного браузера не проверены; веб-клиент и мобильный клиент в упражнение не входят.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTML", Новый ОписаниеТипов("Строка")));
Реквизиты.Добавить(Новый РеквизитФормы("УчебныйHTMLГотов", Новый ОписаниеТипов("Булево")));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
ЭтаФорма.УчебныйHTMLГотов = Ложь;
Поле = Элементы.Добавить("УчебноеHTMLПоле", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеHTMLДокумента;
Поле.ПутьКДанным = "УчебныйHTML";
Поле.УстановитьДействие("ДокументСформирован", "УчебныйДокументСформирован");
Поле.Вывод = ИспользованиеВывода.Запретить;
Поле.Высота = 16;
Поле.Ширина = 80;
Поле.РастягиватьПоВертикали = Истина;
Поле.РастягиватьПоГоризонтали = Истина;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить свою HTML-карточку";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КомандаИстории = ЭтаФорма.Команды.Добавить("СвояИсторияНазад");
КомандаИстории.Действие = "УчебнаяИсторияНазад";
КомандаИстории.Заголовок = "Назад по своей карточке";
КомандаИстории.ИзменяетСохраняемыеДанные = Ложь;
КнопкаИстории = Элементы.Добавить("КнопкаСвояИсторияНазад", Тип("КнопкаФормы"));
КнопкаИстории.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
КнопкаИстории.ИмяКоманды = "СвояИсторияНазад";
КомандаИстории = ЭтаФорма.Команды.Добавить("СвояИсторияВперед");
КомандаИстории.Действие = "УчебнаяИсторияВперед";
КомандаИстории.Заголовок = "Вперёд по своей карточке";
КомандаИстории.ИзменяетСохраняемыеДанные = Ложь;
КнопкаИстории = Элементы.Добавить("КнопкаСвояИсторияВперед", Тип("КнопкаФормы"));
КнопкаИстории.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
КнопкаИстории.ИмяКоманды = "СвояИсторияВперед";
ЭтаФорма.УчебныйHTML = СформироватьСобственнуюКарточку();
КонецПроцедуры
&НаКлиенте
Процедура УчебныйДокументСформирован(Элемент)
УчебныйHTMLГотов = Истина;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если Не УчебныйHTMLГотов Тогда
Сообщить("Собственный HTML ещё формируется; нажмите после появления карточки");
Возврат;
КонецЕсли;
Поле = Элементы.УчебноеHTMLПоле;
Сообщить(СтрНайти(УчебныйHTML, "Сумма: 750") > 0);
Сообщить(СтрНайти(УчебныйHTML, "Книга <учебная> & "цена"") > 0);
Сообщить("Нажмите ссылку К собственной сумме, затем К началу; после этого используйте отдельные кнопки истории");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭкранироватьУчебныйТекст(Текст)
Результат = СтрЗаменить(Текст, "&", "&");
Результат = СтрЗаменить(Результат, "<", "<");
Результат = СтрЗаменить(Результат, ">", ">");
Результат = СтрЗаменить(Результат, """", """);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция СформироватьСобственнуюКарточку()
Название = "Книга <учебная> & ""цена""";
Количество = 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>";
КонецФункции
&НаКлиенте
Процедура УчебнаяИсторияНазад(Команда)
Если Не УчебныйHTMLГотов Тогда
Сообщить("Дождитесь своей карточки");
Возврат;
КонецЕсли;
Элементы.УчебноеHTMLПоле.Назад();
КонецПроцедуры
&НаКлиенте
Процедура УчебнаяИсторияВперед(Команда)
Если Не УчебныйHTMLГотов Тогда
Сообщить("Дождитесь своей карточки");
Возврат;
КонецЕсли;
Элементы.УчебноеHTMLПоле.Вперед();
КонецПроцедуры
Разбор по шагам
Своя страница содержит две ссылки только на фрагменты #own-total и #own-summary. Между ними оставлена собственная область для видимого прокручивания.
Сначала пользователь нажимает обе ссылки; до этих переходов история может быть пустой, и назад переходить некуда.
Кнопки истории вызывают методы без параметров. Возвращаемый результат не присваиваем булевой переменной: справка его не обещает.
Назад и Вперед выполняются отдельными действиями пользователя, не подряд внутри одного синхронного обработчика.
Урок ограничен тонким клиентом. В веб-клиенте поля могут разделять общую историю; Chrome/Safari не поддерживают такую навигацию по содержимому, заданному строкой.
Как проверить результат
После формирования обычная проверка ожидаемо выводит два Истина и инструкцию. Выполните обе внутренние ссылки, затем отдельно Назад и Вперёд.
Проверьте фактическое возвращение к положению суммы и начала в встроенном просмотре. Если ваш клиент не создаёт историю фрагментов, зафиксируйте ограничение; не открывайте внешний URL ради прохождения проверки.
Ожидаемый результат
Оба метода истории показаны на собственном источнике с отдельными обработчиками и явными клиентскими ограничениями.
На что обратить внимание
Эти методы не являются командами навигации по формам 1С и не закрывают EPF.
Вызов при пустой истории может ничего не изменить; это не доказательство ошибки или существования скрытого перехода.
История и прокрутка требуют запуска конкретного клиента; статическая проверка не доказывает их работу.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.