Часто при разработке печатных форм для документов, таких как Заказ клиента или Счет на оплату, возникает необходимость сделать документ более интерактивным. Одной из самых востребованных функций является добавление гиперссылок. Например, чтобы клиент или менеджер, открыв печатную форму (даже в формате Excel), мог нажать на наименование товара и сразу попасть на страницу этого товара на сайте компании. Рассмотрим подробно, как реализовать этот механизм, используя корректный пример построения внешней печатной формы и стандартные средства платформы 1С:Предприятие 8.3.
Проанализируем ситуацию: у нас есть объект Номенклатура, в котором создан дополнительный реквизит (или стандартный реквизит), содержащий URL-адрес страницы товара. Нам нужно, чтобы при формировании табличного документа (печатной формы) ячейка с названием номенклатуры вела себя как ссылка. Подобный подход часто применяется, когда выполняется экспорт реквизитов справочников в Excel для внешних потребителей данных. При этом важно обеспечить работоспособность ссылки не только внутри интерфейса 1С, но и после сохранения документа в формате XLSX.
Для решения этой задачи нам понадобятся следующие свойства объекта ОбластьЯчеекТабличногоДокумента:
Гиперссылка — булево свойство, определяющее визуальное и функциональное поведение ячейки.Текст — то, что увидит пользователь (название товара).Расшифровка или ПараметрРасшифровки — механизм, который будет хранить адрес ссылки.Рассмотрим первый этап — подготовку макета. В конфигураторе откроем макет нашей печатной формы. Если вы только осваиваете азы, рекомендуем предварительно изучить практические советы по редактированию печатных форм — для этого подойдёт конструктор настройки и выгрузки печатных форм. Выберем ячейку, в которую выводится наименование номенклатуры. Нам необходимо выполнить следующие действия:
СсылкаНаСайт. Именно через этот параметр мы будем передавать URL-адрес из кода.Важный момент: если мы установим свойство Гиперссылка непосредственно в макете, все ячейки этой области по умолчанию будут считаться ссылками. Если ссылка нужна не для всех строк, это свойство лучше устанавливать программно в процессе заполнения документа.
Теперь перейдем к коду модуля менеджера объекта или команды, которая отвечает за формирование печатной формы. Разберем по шагам, как передать данные из реквизитов номенклатуры в табличный документ.
Предположим, у нас есть выборка товаров. Мы получаем область строки, заполняем параметры и устанавливаем свойства ссылки. Посмотрим на пример кода:
// Получаем область строки из макета
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
// Заполняем стандартные параметры (наименование, количество и т.д.)
ОбластьСтрока.Параметры.ТоварНаименование = Выборка.НоменклатураНаименование;
// Получаем URL из дополнительного реквизита номенклатуры
// Предположим, имя реквизита "СсылкаНаСайт"
URLСайта = Выборка.Номенклатура.СсылкаНаСайт;
Если Не ПустаяСтрока(URLСайта) Тогда
// Устанавливаем ячейку как гиперссылку
// Выбираем конкретную ячейку в области по имени или индексу
ЯчейкаНоменклатура = ОбластьСтрока.Область("ТоварНаименование");
ЯчейкаНоменклатура.Гиперссылка = Истина;
// Записываем URL в расшифровку, чтобы он был доступен при клике
ОбластьСтрока.Параметры.СсылкаНаСайт = URLСайта;
КонецЕсли;
// Выводим область в результирующий табличный документ
ТабДок.Вывести(ОбластьСтрока);
Если пользователь просматривает печатную форму непосредственно в 1С, простого указания свойства Гиперссылка может быть недостаточно для автоматического открытия браузера. Выясним причину: платформе нужно знать, что делать при нажатии на расшифровку.
Для этого в форме, где отображается ТабличныйДокумент, необходимо создать обработчик события ОбработкаРасшифровки. Проанализируем пример реализации этого обработчика:
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
// Если в расшифровке передана строка, похожая на URL
Если ТипЗнч(Расшифровка) = Тип("Строка") И (Лев(Расшифровка, 4) = "http") Тогда
// Отменяем стандартное действие 1С (открытие значения)
СтандартнаяОбработка = Ложь;
// Переходим по ссылке во внешнем браузере
ПерейтиПоСсылке(Расшифровка);
КонецЕсли;
КонецПроцедуры
Одной из ключевых задач автора было сохранение работоспособности ссылок при выгрузке в XLS. В этом контексте часто применяется специализированное сохранение табличных частей в Excel, чтобы структура данных оставалась неизменной. Рассмотрим подробнее, как ведет себя платформа 1С при сохранении табличного документа.
Важное техническое замечание: для того чтобы ссылки корректно конвертировались в формат Excel, настоятельно рекомендуется использовать формат .xlsx (OOXML), а не старый .xls. В современных версиях платформы (начиная с 8.3.15+) реализована штатная поддержка передачи свойств гиперссылок в Excel.
При сохранении файла через команду "Сохранить как" или программно методом Записать(), 1С анализирует ячейки. Программный подход во многом напоминает то, как строится выгрузка журнала регистрации в Excel с группировкой. Если у ячейки установлено Гиперссылка = Истина, а в параметре Расшифровка содержится валидный URL-адрес (начинающийся с http:// или https://), то в итоговом файле Excel эта ячейка автоматически станет «живой» гиперссылкой.
Проанализируем программный способ сохранения документа, который гарантирует корректность данных:
// Программное сохранение в формат XLSX
ИмяФайла = "C:\Temp\ЗаказКлиента.xlsx";
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
При реализации данного механизма стоит учитывать несколько нюансов, которые могут привести к ошибкам. Если после выгрузки вы заметили проблемы с форматированием или данными, используйте набор инструментов Коррекция 1С для Excel для их устранения. Также обратите внимание на следующие моменты:
http://). Если в реквизите хранится просто www.mysite.com, Excel может не распознать её как внешнюю ссылку. В коде 1С желательно делать проверку и добавлять префикс автоматически.Если ваша задача позволяет использовать формат PDF вместо Excel, имейте в виду, что 1С также отлично справляется с сохранением гиперссылок в PDF-документах. При вызове метода Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF) все ячейки, помеченные как гиперссылки с URL в расшифровке, останутся кликабельными в любом PDF-ридере. Это часто бывает более надежным решением для отправки документов клиентам по электронной почте, так как исключает возможность случайного редактирования данных.
Мы выяснили, что утверждение «Забудь» в контексте данной задачи является ошибочным. Платформа 1С предоставляет мощный инструментарий для работы с интерактивными печатными формами. Главное — правильно комбинировать визуальные свойства ячейки (Гиперссылка) и данные расшифровки (Расшифровка). Правильная настройка макета и программная обработка параметров позволяют создавать профессиональные и удобные документы, которые сохраняют свою функциональность даже за пределами экосистемы 1С.