При разработке отчетов в 1С:Предприятие 7.7 часто возникает необходимость сделать печатную форму интерактивной. Например, вы хотите, чтобы пользователь мог кликнуть по ячейке с адресом сайта или идентификатором документа и сразу перейти к открытию внешнего ресурса или формы объекта. Разберем по шагам, как реализовать механизм гиперссылок в табличном документе.
В платформе 7.7 взаимодействие пользователя с таблицей при нажатии на ячейку реализуется через глобальную процедуру ОбработкаЯчейкиТаблицы. Когда пользователь кликает по ячейке, система проверяет, заполнено ли свойство «Расшифровка» у этой ячейки. Если оно заполнено, значение из этого свойства передается в качестве аргумента в нашу процедуру.
Рассмотрим, как заставить этот механизм открывать ссылки на сайты.
Сначала нам необходимо подготовить макет отчета. Откройте нужную таблицу в конфигураторе:
сайт.Теперь перейдем в модуль отчета. Нам нужно создать процедуру, которая будет перехватывать нажатие. Система 1С 7.7 автоматически вызывает процедуру ОбработкаЯчейкиТаблицы(ЗначЯч), если она определена в глобальном модуле или модуле формы.
Разберем пример простейшей реализации:
Процедура ОбработкаЯчейкиТаблицы(ЗначЯч)
// Проверяем, на что именно кликнул пользователь
Если ЗначЯч = \"сайт\" Тогда
// Запускаем браузер для открытия ссылки
ЗапуститьПриложение(\"http://www.yandex.ru\");
КонецЕсли;
КонецПроцедуры
В данном примере мы жестко прописали адрес, но что делать, если в каждой строке отчета должен быть свой уникальный адрес? Здесь на помощь приходит динамическое управление расшифровкой.
Чтобы каждая строка вела на свой адрес, нам не обязательно создавать уникальные идентификаторы для каждого сайта. Мы можем передавать в расшифровку непосредственно строку с адресом URL. При выводе секции в таблице мы программно присваиваем свойство расшифровки для нужной области.
Давайте посмотрим, как организовать универсальный код, чтобы не писать длинные конструкции Если...ИначеЕсли:
Процедура ОбработкаЯчейкиТаблицы(ЗначЯч)
// Если в расшифровку передана строка с адресом сайта
Если Лев(ЗначЯч, 4) = \"http\" Тогда
ЗапуститьПриложение(ЗначЯч);
Иначе
// Стандартная обработка для других расшифровок
ОткрытьФорму(ЗначЯч);
КонецЕсли;
КонецПроцедуры
Таким образом, наша процедура становится универсальной: она не «запоминает» каждый сайт, а просто проверяет, является ли значение в ячейке ссылкой, и если да — открывает её через метод ЗапуститьПриложение.
Проанализируем некоторые особенности работы данного подхода:
ЗапуститьПриложение в 1С 7.7 является системным вызовом. Если ваш URL содержит сложные параметры, рекомендуется следить за тем, чтобы путь был корректно сформирован. В случае проблем с запуском адресов с пробелами, используйте команду cmd /c start \"\" \"ваш_адрес\".Теперь вы можете создавать отчеты с полноценной навигацией, делая работу пользователей с данными более удобной и продуктивной!