Как настроить открытие документа по гиперссылке или расшифровке из ячейки макета 1С

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

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

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

Причина блокировки расшифровки и логика работы платформы

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

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

Пошаговая настройка ячейки и табличного документа

  1. Настройка свойств ячейки в макете. Выделим нужную ячейку в макете печатной формы и откроем ее свойства:

    - В поле Заполнение укажем значение Параметр или Шаблон (для отображения текста ячейки).

    - В свойстве Параметр расшифровки зададим имя параметра, например, ДокументСсылка.

    - Флаг Гиперссылка: если флаг установлен, курсор при наведении принимает форму указателя («рука»), а расшифровка срабатывает по одинарному клику мыши. Если флаг снят, стандартная расшифровка открывается по двойному клику или клавише Enter.

    - Свойство Защита у ячейки должно иметь значение Истина (установлено по умолчанию).

    - Свойство ИспользованиеРасшифровки должно быть установлено в значение Авто или ВыделятьЯчейку (значения НеИспользовать и БезОбработки отключают реакцию на клик).

  2. Заполнение параметров при формировании отчета или печатной формы. В программном коде вывода макета передадим значение ссылки в созданный параметр расшифровки:
    
    // Заполняем текст ячейки и параметр расшифровки
    ОбластьМакетаСтрока.Параметры.ТекстДокумента = Строка(ДетальныеЗаписи.Документ);
    ОбластьМакетаСтрока.Параметры.ДокументСсылка = ДетальныеЗаписи.Документ;
    
    ТабличныйДокумент.Вывести(ОбластьМакетаСтрока);
    
  3. Включение режима просмотра или защиты табличного документа. Это ключевой этап, без которого расшифровка не сработает. После полного формирования табличного документа необходимо включить защиту или режим только для чтения:
    
    // Вариант 1: включение защиты табличного документа
    ТабличныйДокумент.Защита = Истина;
    
    // Вариант 2 (рекомендуемый для большинства печатных форм): режим только просмотр
    ТабличныйДокумент.ТолькоПросмотр = Истина;
    

    Когда для свойства ТабличныйДокумент.ТолькоПросмотр или ТабличныйДокумент.Защита установлено значение Истина, ячейки с установленным свойством защиты блокируются от редактирования, и платформа начинает штатно отрабатывать механизм расшифровки.

Переопределение стандартной обработки расшифровки

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


&НаКлиенте
Процедура ТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    // Если расшифровка содержит ссылку на документ, открываем его явно
    Если ЗначениеЗаполнено(Расшифровка) Тогда
        СтандартнаяОбработка = Ложь;
        ПоказатьЗначение(, Расшифровка);
    КонецЕсли;

КонецПроцедуры

Обратите внимание: событие ОбработкаРасшифровки и событие Выбор вызываются платформой только тогда, когда табличный документ заблокирован от редактирования свойствами ТолькоПросмотр = Истина или Защита = Истина.

Рекомендации по стандартам разработки

Разберем важную рекомендацию по производительности: не следует передавать саму ссылку напрямую в текстовый параметр ячейки (например, Параметры.Документ = ДетальныеЗаписи.Документ). При формировании ячейки платформа будет выполнять неявные запросы к базе данных для получения строкового представления ссылки. Всегда разделяйте данные: в параметр отображаемого текста передавайте заранее полученную строку или представление, а в параметр расшифровки — саму ссылку на объект.

← На главную