Отображение внешних ссылок (кликабельных) на форме задачи бизнес-процесса в 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 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55303    17    23    

43

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

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63697    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    19548    27    6    

42

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

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

1500 руб.

06.10.2020    10768    7    7    

11

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

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

20.08.2024    20815    mrXoxot    44    

128

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

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

27.05.2024    10301    smielka    37    

105

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

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

27.12.2023    17739    1223    elcoan    53    

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