[Практика программирования] Управляемые формы 1С 8: как программно добавить поле HTML документа и поле форматированного документа
Существует отличие в том, как организовать программный вывод на управляемую форму поля HTML-документа. И в отличие от обычных форм - поле HTML-документа выводится только для просмотра. Чтобы была возможность организовать редактируемое поле в формате HTML потребуется использовать отдельно тип "Форматированный документ". Так же рассмотрен вопрос программного добавления командной панели управляемой формы.
При попытке программно вывести поле HTML-документа на управляемую форму по аналогии, как это делалось в обычном интерфейсе, будет ожидать неудача. Т.к. управляемое приложение подразумевает другие методы и другую реализацию исполняемого кода. Смотрим, как все было относительно просто в простом интерфейсе - на форме в режиме обычного приложения на форме создавали элемент вида поле HTML-документа Нажатие на изображении увеличит его При открытии формы с таким элементом в режиме редактирования автоматически появлялась командная панель с соответствующими кнопками для управления форматирования html-текста. Нажатие на изображении увеличит его Так же на обычных формах 1С 8 программно вывести подобное редактируемое HTM-поле с последующим сохранением данных в текстовый реквизит не составляло больших трудов. ПолеHTML = Элементы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTML", Истина, ОсновнаяПанель); ДопОписаниеПолеHTML.УстановитьРежим(РежимПоляHTMLДокумента.Редактирование);
На управляемых формах В формах, работающих в режиме управляемого приложения есть отличия, которые нужно учитывать, чтобы достичь желаемого результата. Элемент формы вида "Поле HTML документа" можно разместить на форме как интерактивно, так и программно, но такой элемент будет доступен только для просмотра и отображения содержимого выводимого HTML-текста. И только так. ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеФормы"), Элементы.ГруппаСтраницы);
ПолеОписание.Вид = ВидПоляФормы.ПолеHTMLДокумента;
ПолеОписание.Заголовок = "Описание";
ПолеОписание.ПутьКДанным = "Объект.Описание";
Если реализовать код по привычке, как в случае для обычного приложения, используя в качестве второго параметра Тип("ПолеHTMLДокумента") метода "Добавить()" элементов формы, то получим ошибку: Тип не определен (ПолеHTMLДокумента) {ВнешняяОбработка.ВнешняяОбработка.Форма.Форма.Форма(6)}: ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеHTMLДокумента"), Элементы.ГруппаСтраницы); Нажатие на изображении увеличит его А для попытки указать в качестве типа создаваемого программно элемента управляемой формы Тип("ПолеHTMLДокументаФормы") так же будет получена ошибка, но другая: Недопустимое значение параметров
{ВнешняяОбработка.ВнешняяОбработка.Форма.Форма.Форма(6)}: ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеHTMLДокументаФормы"), Элементы.ГруппаСтраницы);
по причине:
Недопустимое значение параметров
Нажатие на изображении увеличит его Чтобы вывести что-то наподобие редактируемого HTML-поля на управляемой форме, которое по своему смыслу соответствует тому, что было ранее рассмотрено на примере обычной формы, нужно использовать "форматированный документ". Рассмотрим сначала на примре интерактивного добавления. Нажатие на изображении увеличит его Таким образом возможно и программно вывести поле форматированного документа. Но для начала нужно программно создать реквизит формы типа "ФорматированныйДокумент, чтобы можно было с помощью метода "УстановитьHTML()" добавленного реквизита выводить в поле формы текстовое содержимое в виде HTML-кода. Как программно создавать реквизиты управляемой формы в 1С 8 можно изучить по этой ссылке. // где HTMLДокумент - программно добавленный реквизит формы типа "ФорматированныйДокумент"
ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеФормы"));
ПолеОписание.Заголовок = "Описание (поле форматированного документа)";
ПолеОписание.Вид = ВидПоляФормы.ПолеФорматированногоДокумента;
ПолеОписание.ПутьКДанным = "HTMLДокумент";
Структура = Новый Структура;
HTMLДокумент.УстановитьHTML("<html><head></head><body>Hello world!</body></html>", Структура);
Потом уже с помощью метода "ПолучитьHTML()" добавленного реквизита формы можно сохранить в реквизит объекта конфигурации. Наиболее подробно по работе с форматированным документом в 1С можно ознакомиться по ссылке "Форматированный документ в 1С 8" Таким образом будет выведено только поле формы. Но без командной панели это будет немного неполноценно, т.к. без кнопок форматирования текста будет неудобно, хотя и возможно. Но нужно выводить программно и командную панель. Но это невозможно. Точнее программно разместить группу формы вида "Командная панель" возможно, но не получиться указать в качестве источника команд такой группы ранее созданное поле формы. По крайней мере на релизе 8.3.18 это остается невозможным. Код программного добавления командной панели следующий. КоманднаяПанель = Элементы.Вставить("_КомПанельОписание", Тип("ГруппаФормы"), СтрДоп, ПолеОписание);
КоманднаяПанель.Вид = ВидГруппыФормы.КоманднаяПанель;
Но, так как установка "источника команд" возможна пока только интерактивно, то нужно принимать решение о том что, либо все обсуждаемые элементы размещать интерактивно, либо выводить программно только одно поле форматированного документа. Невозможность установки программно определена из обсуждения на форуме forum.infostart. Как не было возможности в релизе платформы 1С 8.3.10, так до сих пор не появилась и в релизе 8.3.18. Будем надеяться на появлении в ближайших последующих релизах. Нажатие на изображении увеличит его Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2025. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу. 19-10-2021 Журавлев А.С. (Сайт azhur-c.ru) |
|
|||||||||||||
Copyright 2013-. Azhur-c.ru
ИП Журавлев Александр Сергеевич ИНН 667000271590 ОГРНИП 312667014300041 |