Как добавить кликабельные гиперссылки в печатные формы 1С с сохранением в Excel

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

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

Постановка задачи и анализ инструментов

Проанализируем ситуацию: у нас есть объект Номенклатура, в котором создан дополнительный реквизит (или стандартный реквизит), содержащий URL-адрес страницы товара. Нам нужно, чтобы при формировании табличного документа (печатной формы) ячейка с названием номенклатуры вела себя как ссылка. Подобный подход часто применяется, когда выполняется экспорт реквизитов справочников в Excel для внешних потребителей данных. При этом важно обеспечить работоспособность ссылки не только внутри интерфейса 1С, но и после сохранения документа в формате XLSX.

Для решения этой задачи нам понадобятся следующие свойства объекта ОбластьЯчеекТабличногоДокумента:

  1. Гиперссылка — булево свойство, определяющее визуальное и функциональное поведение ячейки.
  2. Текст — то, что увидит пользователь (название товара).
  3. Расшифровка или ПараметрРасшифровки — механизм, который будет хранить адрес ссылки.

Шаг 1. Настройка макета печатной формы

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

  1. В палитре свойств выбранной ячейки найдем флаг Гиперссылка и установим его. Это позволит платформе изменить курсор при наведении на ячейку (появится характерный «указательный палец»).
  2. В поле ПараметрРасшифровки укажем имя параметра, например, СсылкаНаСайт. Именно через этот параметр мы будем передавать URL-адрес из кода.

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

Шаг 2. Программное заполнение печатной формы

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

Предположим, у нас есть выборка товаров. Мы получаем область строки, заполняем параметры и устанавливаем свойства ссылки. Посмотрим на пример кода:


// Получаем область строки из макета
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

// Заполняем стандартные параметры (наименование, количество и т.д.)
ОбластьСтрока.Параметры.ТоварНаименование = Выборка.НоменклатураНаименование;

// Получаем URL из дополнительного реквизита номенклатуры
// Предположим, имя реквизита "СсылкаНаСайт"
URLСайта = Выборка.Номенклатура.СсылкаНаСайт;

Если Не ПустаяСтрока(URLСайта) Тогда
    // Устанавливаем ячейку как гиперссылку
    // Выбираем конкретную ячейку в области по имени или индексу
    ЯчейкаНоменклатура = ОбластьСтрока.Область("ТоварНаименование");
    ЯчейкаНоменклатура.Гиперссылка = Истина;
    
    // Записываем URL в расшифровку, чтобы он был доступен при клике
    ОбластьСтрока.Параметры.СсылкаНаСайт = URLСайта;
КонецЕсли;

// Выводим область в результирующий табличный документ
ТабДок.Вывести(ОбластьСтрока);

Шаг 3. Обеспечение интерактивности внутри 1С

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

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


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

Шаг 4. Особенности экспорта в Excel (XLSX)

Одной из ключевых задач автора было сохранение работоспособности ссылок при выгрузке в XLS. В этом контексте часто применяется специализированное сохранение табличных частей в Excel, чтобы структура данных оставалась неизменной. Рассмотрим подробнее, как ведет себя платформа 1С при сохранении табличного документа.

Важное техническое замечание: для того чтобы ссылки корректно конвертировались в формат Excel, настоятельно рекомендуется использовать формат .xlsx (OOXML), а не старый .xls. В современных версиях платформы (начиная с 8.3.15+) реализована штатная поддержка передачи свойств гиперссылок в Excel.

При сохранении файла через команду "Сохранить как" или программно методом Записать(), 1С анализирует ячейки. Программный подход во многом напоминает то, как строится выгрузка журнала регистрации в Excel с группировкой. Если у ячейки установлено Гиперссылка = Истина, а в параметре Расшифровка содержится валидный URL-адрес (начинающийся с http:// или https://), то в итоговом файле Excel эта ячейка автоматически станет «живой» гиперссылкой.

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


// Программное сохранение в формат XLSX
ИмяФайла = "C:\Temp\ЗаказКлиента.xlsx";
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

Шаг 5. Работа с длинными ссылками и ограничениями

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

Альтернативный вариант: ссылки в PDF

Если ваша задача позволяет использовать формат PDF вместо Excel, имейте в виду, что 1С также отлично справляется с сохранением гиперссылок в PDF-документах. При вызове метода Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF) все ячейки, помеченные как гиперссылки с URL в расшифровке, останутся кликабельными в любом PDF-ридере. Это часто бывает более надежным решением для отправки документов клиентам по электронной почте, так как исключает возможность случайного редактирования данных.

Резюме

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

← На главную