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

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Принцип работы расшифровки в 1С 7.7

В платформе 7.7 взаимодействие пользователя с таблицей при нажатии на ячейку реализуется через глобальную процедуру ОбработкаЯчейкиТаблицы. Когда пользователь кликает по ячейке, система проверяет, заполнено ли свойство «Расшифровка» у этой ячейки. Если оно заполнено, значение из этого свойства передается в качестве аргумента в нашу процедуру.

Рассмотрим, как заставить этот механизм открывать ссылки на сайты.

Шаг 1: Настройка макета в конфигураторе

Сначала нам необходимо подготовить макет отчета. Откройте нужную таблицу в конфигураторе:

  1. Выделите ячейку, которая должна стать гиперссылкой.
  2. Вызовите свойства ячейки (правой кнопкой мыши — «Свойства»).
  3. В поле «Расшифровка» укажите ключевое слово или идентификатор. Например, напишем там сайт.

Шаг 2: Программная обработка клика

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

Разберем пример простейшей реализации:


Процедура ОбработкаЯчейкиТаблицы(ЗначЯч)
    // Проверяем, на что именно кликнул пользователь
    Если ЗначЯч = \"сайт\" Тогда
        // Запускаем браузер для открытия ссылки
        ЗапуститьПриложение(\"http://www.yandex.ru\");
    КонецЕсли;
КонецПроцедуры

В данном примере мы жестко прописали адрес, но что делать, если в каждой строке отчета должен быть свой уникальный адрес? Здесь на помощь приходит динамическое управление расшифровкой.

Шаг 3: Динамическая передача данных в расшифровку

Чтобы каждая строка вела на свой адрес, нам не обязательно создавать уникальные идентификаторы для каждого сайта. Мы можем передавать в расшифровку непосредственно строку с адресом URL. При выводе секции в таблице мы программно присваиваем свойство расшифровки для нужной области.

Давайте посмотрим, как организовать универсальный код, чтобы не писать длинные конструкции Если...ИначеЕсли:


Процедура ОбработкаЯчейкиТаблицы(ЗначЯч)
    // Если в расшифровку передана строка с адресом сайта
    Если Лев(ЗначЯч, 4) = \"http\" Тогда
        ЗапуститьПриложение(ЗначЯч);
    Иначе
        // Стандартная обработка для других расшифровок
        ОткрытьФорму(ЗначЯч);
    КонецЕсли;
КонецПроцедуры

Таким образом, наша процедура становится универсальной: она не «запоминает» каждый сайт, а просто проверяет, является ли значение в ячейке ссылкой, и если да — открывает её через метод ЗапуститьПриложение.

Важные нюансы реализации

Проанализируем некоторые особенности работы данного подхода:

Теперь вы можете создавать отчеты с полноценной навигацией, делая работу пользователей с данными более удобной и продуктивной!

← На главную