[Практика программирования] Управляемые формы 1С 8: как программно добавить поле HTML документа и поле форматированного документа
 
Существует отличие в том, как организовать программный вывод на управляемую форму поля HTML-документа. И в отличие от обычных форм - поле HTML-документа выводится только для просмотра. Чтобы была возможность организовать редактируемое поле в формате HTML потребуется использовать отдельно тип "Форматированный документ". Так же рассмотрен вопрос программного добавления командной панели управляемой формы.

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

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

Нажатие на изображении увеличит его
1С 8, обычная форма, размещение поля HTML документа

При открытии формы с таким элементом в режиме редактирования автоматически появлялась командная панель с соответствующими кнопками для управления форматирования html-текста.

Нажатие на изображении увеличит его
1С 8, обычное приложение, командная панель редактирования, форматирования текста HTML-поля обычной формы

Так же на обычных формах 1С 8 программно вывести подобное редактируемое HTM-поле с последующим сохранением данных в текстовый реквизит не составляло больших трудов.

ПолеHTML = Элементы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTML", Истина, ОсновнаяПанель);

ДопОписаниеПолеHTML.УстановитьРежим(РежимПоляHTMLДокумента.Редактирование);
ПолеHTML.УстановитьТекст(ТекстHTML);

 

На управляемых формах

В формах, работающих в режиме управляемого приложения есть отличия, которые нужно учитывать, чтобы достичь желаемого результата.

Элемент формы вида "Поле HTML документа" можно разместить на форме как интерактивно, так и программно, но такой элемент будет доступен только для просмотра и отображения содержимого выводимого HTML-текста. И только так.

1С 8, управляемые формы, вывод, размещение поля формы, поле HTML документа

ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеФормы"), Элементы.ГруппаСтраницы);
ПолеОписание.Вид = ВидПоляФормы.ПолеHTMLДокумента;
ПолеОписание.Заголовок = "Описание"; 
ПолеОписание.ПутьКДанным = "Объект.Описание";

1С 8, управляемая форма, программное размещение, вывод поля формы, поле HTML документа

Если реализовать код по привычке, как в случае для обычного приложения, используя в качестве второго параметра Тип("ПолеHTMLДокумента") метода "Добавить()" элементов формы, то получим ошибку:

Тип не определен (ПолеHTMLДокумента) {ВнешняяОбработка.ВнешняяОбработка.Форма.Форма.Форма(6)}: ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеHTMLДокумента"), Элементы.ГруппаСтраницы);

Нажатие на изображении увеличит его
1С 8 ошибка Тип не определен (ПолеHTMLДокумента) при программном добавлении, выводе, размещении на управляемой форме

А для попытки указать в качестве типа создаваемого программно элемента управляемой формы Тип("ПолеHTMLДокументаФормы") так же будет получена ошибка, но другая:

Недопустимое значение параметров
{ВнешняяОбработка.ВнешняяОбработка.Форма.Форма.Форма(6)}: ПолеОписание = Элементы.Добавить("_Описание", Тип("ПолеHTMLДокументаФормы"), Элементы.ГруппаСтраницы);
по причине:
Недопустимое значение параметров

Нажатие на изображении увеличит его
1С 8 ошибка, Недопустимое значение параметров, ПолеHTMLДокументаФормы, при программном выводе, размещении, добавлении на форму в управляемом приложении

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

Нажатие на изображении увеличит его
1C 8, управляемая форма, приложение, программное добавление, размещение, вывод поля формы, вид форматированный документ

Таким образом возможно и программно вывести поле форматированного документа. Но для начала нужно программно создать реквизит формы типа "ФорматированныйДокумент, чтобы можно было с помощью метода "Установить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. Будем надеяться на появлении в ближайших последующих релизах.

Нажатие на изображении увеличит его
1С 8 управляемая форма программно установить источник команд группы формы командная панель

Оцените, оказалась ли эта публикация полезна для Вас?

© www.azhur-c.ru 2013-2025. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

19-10-2021

Журавлев А.С. (Сайт azhur-c.ru)

Назад

 
 

Здесь можно
приобрести лицензии

1С 8
​ и типовые решения

ural-rosaudit.ru - Аудит в сфере ЖКХ, www.ural-rosaudit.ru
azhur-blog.ru - мошенничество в интернете, www.azhur-blog.ru
info-compas.ru - каталог, инфокурсы, видеокурсы, видео курсы, обучение он-лайн, www.info-compas.ru
https://vk.com/effective_ideas - Группа вКонтакте Методы заработка и работы при помощи Интернет

 

Проверить аттестат
Cистема приема платежей, касса для сайта
Cистема управления контентом Santafox&trade. Санкт-Петербург, Ленинский проспект, д. 23 (812) 545-47-48
Яндекс.Метрика