Отображение внешних ссылок (кликабельных) на форме задачи бизнес-процесса в 1C: ДО

13.05.24

Разработка - Работа с интерфейсом

В карточках задач предусмотрена специальная область, в которой выводится описание задачи (информация, необходимая для выполнения задачи). Но внешние ссылки в типовой конфигурации в этой области не отображаются. Как быть?

В карточках задач предусмотрена специальная область, в которой выводится описание задачи (информация, необходимая для выполнения задачи).

Потребовалось отображать внешние ссылки на форме в описании задачи, как обычные гиперссылки html в браузере, с блэкджеком и подсветкой при наведении и возможностью перехода по адресам ссылок. Решения тестировались на 1С:Предприятие 8.3 (8.3.23.1865) Документооборот 8 КОРП, редакция 2.1 (2.1.19.22)

 

 

На форумах нашёл много вопросов на эту тему, и два решения (далее - решения 1 и 2), опишу их ниже. Я их не стал использовать, т.к. в результате пришло «решение 3», которое показалось более изящным (опишу его ниже).

Решение 1: добавить форму задачи в расширение, добавить для отображения описания поле вида Поле HTML-документа (в оригинальной конфигурации описание выводится в виде Поле ввода, ПутьКДанным – Объект.Описание с типом Строка). Для отображения ссылок добавить тег <a href=http_адрес>текст ссылки</a>

Решение 2: Добавить на форму новый реквизит с типом ФорматированнаяСтрока, вывести его на форму (ей по умолчанию присвоится вид Поле надписи) и уже дальше поместить значение в этот реквизит.

Переход по ссылкам при этом выполняется прямо на форме задачи в нативном web-браузере, в котором навигация оставляет желать лучшего, например, переход назад или открыть в новом окне – неочевидны. Также не открываются ссылки на видео или на (например) внешние pdf документы.

Решение 3. Переопределение стандартных процедур формирования и вывода HTML в описании задач.

В строчное поле Объект.Описание можно добавлять теги для задания гиперссылок (как в варианте 1) в нотации HTML вида

<a href=https://мойсайт.ru>кликабельный текст</a>

Проблема в том, что при выводе этого поля 1С функцией ЗаменитьСпецСимволыHTML (из общего модуля РаботаС_HTML) подменяет спецсимволы «<» на &lt; и т.д. Это позволяет избежать выполнения случайных директив, в т.ч. вредоносных, сохраненных в текстовом поле. В результате метатеги для гиперссылок воспринимаются при выводе формы как обычный текст и так и выводятся:
<a href=https:// мойсайт.ru>кликабельный текст</a>

За компоновку HTML-кода в описании задач отвечают два общих модуля:

  • ОбзорЗадачВызовСервера (для формирования текста HTML)
  • ОбзорЗадачВызовСервераПереопределяемый  (для формирования текста HTML способом, отличающимся от стандартного)

Для того, чтобы теги ссылок не конвертировались в мнемокод, можно сделать следующее:

1. Добавляем в расширение из модуля ОбзорЗадачВызовСервера функции ПолучитьОбзорЗадачи и ПолучитьОбзорЗадачиДляСпискаЗадачиМне с директивой &Вместо

2. Копируем в эти функции код из одноименных функций общего модуля

3. Там, где нужны метатеги <a> меняем в тексте функции ПолучитьОбзорЗадачи строку

ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ОписаниеЗадачиHTML, "", Задача.Описание);

на

ОписаниеЗадачиHTML = Задача.Описание;

В тексте функции ПолучитьОбзорЗадачиДляСпискаЗадачиМне меняем строку

ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ПолноеОписаниеЗадачиHTML, "", СтрокаПолноеОписаниеЗадачи);

на

ПолноеОписаниеЗадачиHTML= СтрокаПолноеОписаниеЗадачи;

Другой способ:

  1. Снимаем с поддержки модули ОбзорЗадачВызовСервера и ОбзорЗадачВызовСервераПереопределяемый.
  2. Как в п. 2 предыдущего способа.
  3. Как в п. 3 предыдущего способа. Не забываем убрать в расширении из текста функций начальные строки. Из функции ПолучитьОбзорЗадачи  убираем
HTMLТекст = ОбзорЗадачВызовСервераПереопределяемый.ПолучитьОбзорЗадачи(Задача);
Если ЗначениеЗаполнено(HTMLТекст) Тогда 
	Возврат HTMLТекст;
КонецЕсли; 

Из функции ПолучитьОбзорЗадачиДляСпискаЗадачиМне убираем

HTMLТекст = ОбзорЗадачВызовСервераПереопределяемый.ПолучитьОбзорЗадачиДляСпискаЗадачиМне(РеквизитыЗадачи);
Если ЗначениеЗаполнено(HTMLТекст) Тогда 
	Возврат HTMLТекст;
КонецЕсли;

Запускаем сеанс и открываем форму. Видим в ней ссылочки, они подсвечиваются и меняется курсор при наведении. Но ссылки не кликабельные. А хочется, чтобы они открывались в приложении по умолчанию (в Хроме или в плеере, если это видео).

 

 

За поведение HTML-кода при нажатии гиперссылок в описании задач отвечают два общих модуля:

  • ОбзорЗадачКлиент (процедуры обработки событий нажатия в поле формы)
  • ОбзорЗадачКлиентПереопределяемый (соответственно, для обработки способом, отличающимся от стандартного)

Например, используем команду ПерейтиПоНавигационнойСсылке для обработки клика по ссылке

Если Лев(ДанныеСобытия.Href, 4) = "http" Тогда
	НавигационнаяСсылкаПоля = ДанныеСобытия.Href;
		
#Если Клиент Тогда
	ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаПоля);
#КонецЕсли
КонецЕсли;

Не забываем, что в ОбзорЗадачВызовСервераПереопределяемый функции должны возвращать Истина.

Вызов процедур на клиенте происходит при открытии карточки задачи или при перемещении по задачам в списке Задачи мне.

 

 

При выводе полей с текстовой информацией (без тегов ссылок или картинок) текст имеет смысл предварительно обработать при помощи функции РаботаС_HTML.ЗаменитьСпецСимволыHTML. Эта функция поможет избежать выполнения вредоносного кода, сохраненного в текстовом поле.

документооборот задача форма ссылка гиперссылка

См. также

Управление дашбордами

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    17197    23    4    

37

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    11691    776    elcoan    47    

108

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    10221    157    acces969    31    

120

Модель состояния для MVC

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    4214    kalyaka    4    

31

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    9111    1    2    

6

Программный интерфейс для доработки форм

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    10020    AtamanovYS    19    

141
Оставьте свое сообщение