Как сделать открытие ссылки из ячейки табличной части по клику в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Настройка элемента формы

Первым делом необходимо правильно настроить само поле в табличной части. Простого отображения текста недостаточно. Чтобы система «поняла», что ячейка является ссылкой, выполним следующие шаги:

  1. Откройте форму документа в конфигураторе (хотя существуют способы выполнять добавление реквизитов и элементов формы без кодирования).
  2. Выберите нужный элемент колонки в табличной части или используйте инструменты для программного изменения форм — есть готовые инструменты создания интерактивных рабочих столов 1С.
  3. В палитре свойств установите свойство Гиперссылка в значение Истина (свойства также поможет изменить редактор форм в режиме предприятия).
  4. Для улучшения визуального восприятия можно также настроить свойство Вид, установив значение Поле гиперссылки.

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

Реализация логики в событии Выбор

Основная сложность, с которой сталкиваются разработчики — это конфликт двойного клика и события Выбор. Если написать обработчик без проверок, любое действие с ячейкой будет приводить к попытке запуска браузера. Чтобы этого избежать, мы будем использовать проверку на Имя элемента.

Рассмотрим структуру кода, который необходимо разместить в модуле формы. В этом обработчике мы проверяем, по какому именно полю был совершен клик, и только при совпадении имени поля выполняем переход:


&НаКлиенте
Процедура УчастникиСтудентыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    // Проверяем имя поля, чтобы действие срабатывало только в нужной колонке
    Если Поле.Имя = "УчастникиСтудентыСсылкаНаПортфолио" Тогда
        // Получаем текущие данные строки
        ТекДанные = Элементы.УчастникиСтуденты.ТекущиеДанные;
        
        // Получаем значение ссылки из данных
        АдресСсылки = ТекДанные.СсылкаНаПортфолио;
        
        // Выполняем запуск приложения
        Если ЗначениеЗаполнено(АдресСсылки) Тогда
            ЗапуститьПриложение(АдресСсылки);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Разбор критических ошибок

При реализации данного решения часто допускаются ошибки, приводящие к неработоспособности кода. Давайте разберем их:

Рекомендации по отладке

Если после настройки функционал не работает, мы рекомендуем выполнить следующие действия для поиска причины: для этой задачи есть инструмент отладки кода 1С в режиме предприятия.

Добавьте в начало обработчика оператор Сообщить(Поле.Имя);. Если при клике в окно сообщений не выводится имя вашего поля, значит, событие Выбор по какой-то причине не доходит до вашего кода. Также полезно проверить значение переменной через Сообщить(ТекДанные.ВашеПоле);, чтобы убедиться, что оно не пустое и имеет ожидаемый строковый формат. Для этой задачи есть инструменты анализа и отладки управляемых форм.

Использование метода ЗапуститьПриложение является стандартным способом для открытия внешних ресурсов. Однако помните, что в веб-клиенте работа этого метода может быть ограничена политиками безопасности браузера. Для открытия внутренних ссылок на объекты системы всегда лучше использовать ПерейтиПоНавигационнойСсылке.

← На главную