Отображение внешних ссылок (кликабельных) на форме задачи бизнес-процесса в 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С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56399    31    25    

45

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36000 руб.

28.08.2025    2701    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

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

6000 руб.

14.01.2016    58239    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

5160 руб.

29.06.2020    22865    32    6    

51

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

5040 руб.

06.10.2020    12852    8    8    

14

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

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

20.08.2024    43395    mrXoxot    44    

138

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

27.05.2024    24834    smielka    38    

111
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vde69 935 26.09.25 12:54 Сейчас в теме
для кликабельности формируем ссылку в формате (добавляем v8doc:), и не надо ничего допиливать :)

href=v8doc:https://bitrix/crm/deal/details/3008/
Для отправки сообщения требуется регистрация/авторизация