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

Многие ошибочно думают, что в ссылки создаются так же, как в Word или Excel. На самом деле здесь есть свои нюансы: ограничения платформы, особенности хранения данных и даже различия между конфигурациями (например, 1С:Бухгалтерия и 1С:Управление торговлей). Мы рассмотрим универсальные методы, которые работают в большинстве версий 1С 8.3, а также укажем на подводные камни, о которых редко пишут в официальной документации.

Если вы не программист, не пугайтесь кода — в статье есть готовые решения "из коробки", которые не требуют знания 1С-программирования. А для разработчиков мы подготовили примеры кода с комментариями и объяснением логики.

📊 Для чего вам нужны ссылки в 1С?
Для печатных форм документов
Для переходов между справочниками
Для интеграции с внешними сайтами
Для отчетов с кликабельными данными
Другое

1. Гиперссылки в текстах и печатных формах

Самый простой способ добавить ссылку в — вставить её в текстовое поле или печатную форму. Платформа поддерживает автоматическое преобразование URL-адресов (начинающихся с http://, https:// или ftp://) в кликабельные гиперссылки. Однако есть важные ограничения:

Где работает автоматически:

  • 📄 Поля типа "Строка неограниченной длины" в справочниках и документах
  • 📑 Печатные формы (если поле имеет тип "Текст" или "HTML-документ")
  • 📊 Текстовые ячейки в отчетах (например, в СКД)

Где НЕ работает без доработок:

  • 📋 Поля типа "Строка" с фиксированной длиной
  • 🖼️ Табличные части документов (требуется программная обработка)
  • 📎 Вложения файлов (ссылки в именах файлов неактивны)

Чтобы добавить гиперссылку в печатную форму, достаточно вставить текст вида:

Дополнительная информация доступна по ссылке: https://example.com/documents

Платформа автоматически сделает адрес кликабельным в предварительном просмотре и экспортированном PDF (если используется модуль 1С:Предприятие PDF).

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

2. Программное создание ссылок в 1С

Если автоматическое распознавание не подходит (например, нужно динамически формировать URL или обрабатывать клики), потребуется написать код на встроенном языке. Основные методы:

🔹 Открытие внешней ссылки в браузере:

ОткрытьФормуМодально("Обработка.ОткрытиеСсылки", Новый Структура("Адрес, https://example.com"));

Или проще (для версий 8.3.10+):

ОткрытьСсылку("https://example.com");

🔹 Создание кликабельного текста в форме:

ЭлементФормы.Гиперссылка.Заголовок = "Перейти на сайт";

ЭлементФормы.Гиперссылка.Ссылка = "https://example.com";

ЭлементФормы.Гиперссылка.Действие = "ОткрытьСсылку";

🔹 Динамическая генерация URL в отчете:

В Схеме компоновки данных (СКД) можно использовать выражение вида:

ВЫРАЗИТЬ("https://example.com?id=" + Документ.Номер КАК СТРОКА)

Для обработки клика по такой ссылке потребуется добавить обработчик события ПриАктивизацииЯчейки в модуль отчета.

Проверить версию платформы (минимально 8.3.8 для полной поддержки)

Создать обработку для тестирования кода

Подключить права на работу с внешними ресурсами (если нужно)

Сделать резервную копию базы перед экспериментами-->

3. Ссылки между объектами 1С (переходы по документам)

Частая задача — организовать переход между связанными документами. Например, из заказа покупателя перейти к счету на оплату или накладной. Для этого используются:

🔸 Стандартные механизмы платформы:

  • 🔗 Поле "Ссылка" в формах (автоматически создается для ссылочных типов)
  • 📋 Табличные части с колонками типа "ДокументСсылка"
  • 🔍 Поисковые поля с возможностью выбора документа

🔸 Программные решения для сложных связей:

Процедура ОткрытьСвязанныйДокумент(Ссылка)

Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда

Документ = Ссылка.ПолучитьОбъект();

ОткрытьФорму("Документ.ЗаказПокупателя.ФормаОбъекта", Документ.Ссылка);

КонецЕсли;

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

Для удобства пользователей можно добавить кнопку "Перейти" рядом с полем ссылки или использовать гиперссылку в тексте вида:

"Счет №" + Счет.Номер + " от " + Формат(Счет.Дата, "ДФ=dd.MM.yyyy")

При клике на такой текст можно открывать связанный документ.

⚠️ Внимание: При массовом удалении документов ссылки между объектами не обновляются автоматически! Это может привести к ошибкам вида "Объект не найден". Решение — использовать обработку, которая проверяет актуальность ссылок перед открытием.

4. Работа с URL-параметрами и API

Если ваша интегрирована с веб-сервисами, может потребоваться формировать ссылки с параметрами. Например, для передачи данных в Bitrix24, Трелло или собственную CRM.

📌 Пример формирования URL с параметрами:

БазовыйURL = "https://api.example.com/orders";

Параметры = Новый Структура();

Параметры.Вставить("id", Документ.Номер);

Параметры.Вставить("date", Формат(Документ.Дата, "ДФ=yyyy-MM-dd"));

СтрокаПараметров = "";

Для Каждого Ключ Из Параметры Цикл

Если СтрокаПараметров <> "" Тогда

СтрокаПараметров = СтрокаПараметров + "&";

КонецЕсли;

СтрокаПараметров = СтрокаПараметров + Ключ.Ключ + "=" + КодироватьСтроку(Ключ.Значение);

КонецЦикла;

ПолныйURL = БазовыйURL + "?" + СтрокаПараметров;

📌 Кодирование специальных символов:

Для корректной работы с кириллицей и спецсимволами используйте функцию КодироватьСтроку():

ЗакодированнаяСтрока = КодироватьСтроку("Привет мир! Как дела?");

// Результат: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D0%BC%D0%B8%D1%80%21+%D0%9A%D0%B0%D0%BA+%D0%B4%D0%B5%D0%BB%D0%B0%3F

📌 Обработка ответа от API:

Для работы с ответами веб-сервисов используйте HTTPСоединение и HTTPЗапрос:

HTTP = Новый HTTPСоединение(ПолныйURL);

Ответ = HTTP.Получить("");

Метод Описание Пример использования
КодироватьСтроку() Преобразует строку в URL-кодировку Для передачи кириллических параметров в GET-запросах
HTTPСоединение Устанавливает соединение с сервером Для отправки POST/GET-запросов к API
РазобратьСтрокуJSON() Парсит JSON-ответ сервера Для обработки данных, возвращаемых REST API
ХэшироватьДанные() Создает хэш (например, для подписи запросов) Для авторизации в защищенных API

5. Ссылки в отчетах (СКД и не только)

В отчетах на основе Схемы компоновки данных (СКД) можно сделать ячейки кликабельными. Для этого:

1️⃣ Настройка в конструкторе СКД:

  • 📊 В разделе "Настройки" выберите поле, которое должно быть ссылкой
  • 🔗 В свойствах поля установите "Тип значения" = "Ссылка"
  • 🖱️ В событии "При активизации ячейки" добавьте обработчик

2️⃣ Пример кода для обработки клика:

Процедура ОтчетКлиентСервер_ПриАктивизацииЯчейки(Элемент, Поле, СтандартнаяОбработка)

Если Поле.Имя = "НомерДокумента" Тогда

Документ = Поле.Значение.ПолучитьОбъект();

ОткрытьФорму("Документ." + Документ.Метаданные().Имя + ".ФормаОбъекта", Документ.Ссылка);

СтандартнаяОбработка = Ложь;

КонецЕсли;

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

3️⃣ Динамические ссылки в вычисляемых полях:

Можно создать вычисляемое поле с формулой:

ВЫРАЗИТЬ("app://" + Документ.Ссылка.УникальныйИдентификатор() КАК СТРОКА)

Затем обработать клик по такому полю для открытия документа.

💡

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

6. Внешние ссылки и безопасность

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

🔐 Ограничения безопасности:

  • 🚫 Запрет на открытие file:// ссылок (местные файлы)
  • 🔒 Блокировка ссылок с нестандартными протоколами (javascript:, data:)
  • 🛡️ Требуется подтверждение пользователя для открытия внешних ссылок

🔐 Как разрешить открытие ссылок:

В настройках информационной базы (Администрирование → Настройки программы → Безопасность) можно настроить:

  • 🌐 Разрешить открытие HTTP/HTTPS ссылок без подтверждения
  • 📂 Разрешить работу с файловой системой (для file://)
  • 🔄 Настроить список доверенных доменов

🔐 Программный обход ограничений (для администраторов):

ПараметрыБезопасности = ПолучатьПараметрыБезопасности();

ПараметрыБезопасности.РазрешитьОткрытиеСсылок = Истина;

ПараметрыБезопасности.ДоверенныеДомены.Добавить("example.com");

УстановитьПараметрыБезопасности(ПараметрыБезопасности);

⚠️ Внимание: Изменение параметров безопасности может сделать вашу базу уязвимой для атак! Никогда не разрешайте открытие произвольных file:// ссылок в рабочих базах — это позволяет злоумышленникам получить доступ к локальным файлам пользователей.
Как проверить безопасность ссылок в 1С?

1. Откройте журнал регистрации (Администрирование → Журнал регистрации)

2. Отфильтруйте события по типу "Безопасность" и "Внешние соединения"

3. Проверьте, нет ли подозрительных попыток открытия ссылок (например, с незнакомых доменов)

4. Для дополнительной защиты используйте прокси-сервер или модуль 1С:ИТС для анализа трафика

7. Типичные ошибки и их решения

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

🐞 Ошибка: "Неверный формат ссылки"

  • 🔹 Причина: Пробелы или спецсимволы в URL не закодированы
  • 🔧 Решение: Используйте КодироватьСтроку() для параметров

🐞 Ошибка: "Объект не найден" при открытии ссылки на документ

  • 🔹 Причина: Документ был удален, но ссылка осталась в базе
  • 🔧 Решение: Проверяйте существование объекта перед открытием:
    Если НЕ Ссылка.Пустая() И НЕ Ссылка.ПометкаУдаления Тогда
    

    ОткрытьФорму(..., Ссылка);

    КонецЕсли;

🐞 Ошибка: Ссылка не кликабельна в PDF

  • 🔹 Причина: Модуль генерации PDF не поддерживает гиперссылки
  • 🔧 Решение: Используйте альтернативные форматы (HTML, DOCX) или доработайте модуль вывода

🐞 Ошибка: "Доступ запрещен" при открытии внешней ссылки

  • 🔹 Причина: Настройки безопасности блокируют домен
  • 🔧 Решение: Добавьте домен в список доверенных или запросите права у администратора
Ошибка Вероятная причина Быстрое решение Правильное решение
Ссылка обрезается при экспорте Ограничение длины поля в макете Увеличить размер колонки в отчете Использовать динамическое формирование ссылок
Не работают ссылки в мобильном клиенте Ограничения мобильной платформы Использовать веб-клиент Создать специализированную мобильную форму
Ссылки открываются в новом окне браузера Настройка браузера по умолчанию Изменить настройки браузера Использовать ОткрытьЗначение(Ссылка, Новый ПараметрыОткрытияЗначения(Истина))
💡

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

FAQ: Частые вопросы по ссылкам в 1С

Можно ли в 1С сделать ссылку, которая открывает другой документ в новой вкладке?

Да, но не напрямую. В десктопном клиенте все документы открываются в текущем окне. Для веб-клиента можно использовать JavaScript-обработчик, который будет открывать ссылку в новой вкладке:

ЭлементФормы.Гиперссылка.Действие = "ВыполнитьJavaScript";

ЭлементФормы.Гиперссылка.Параметры = "window.open('" + Ссылка + "', '_blank')";

Однако это требует дополнительных настроек безопасности.

Как сделать кликабельный email в печатной форме?

Добавьте в текст формы адрес в формате mailto:email@example.com. Пример:

"Для вопросов пишите на " + "mailto:support@example.com"

Платформа автоматически преобразует его в кликабельную ссылку, которая откроет почтовый клиент пользователя.

Почему в моем отчете СКД не работают ссылки на документы?

Вероятные причины:

  1. Не настроено событие ПриАктивизацииЯчейки в модуле отчета
  2. Поле, используемое для ссылки, не имеет типа "Ссылка"
  3. Отсутствуют права на просмотр связанных документов

Проверьте настройки отчета и права пользователя.

Можно ли в 1С сделать ссылку на конкретную строку табличной части?

Да, но это требует программной доработки. Пример кода для открытия документа с прокруткой к нужной строке:

Процедура ОткрытьСтрокуТабличнойЧасти(Документ, НомерСтроки)

Форма = ОткрытьФорму("Документ." + Документ.Метаданные().Имя + ".ФормаОбъекта", Документ.Ссылка);

Форма.ЭлементыФормы.ТабличнаяЧасть.ТекущаяСтрока = Форма.ЭлементыФормы.ТабличнаяЧасть.НайтиСтрокуПоНомеру(НомерСтроки);

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

Как запретить пользователям открывать внешние ссылки?

Это настраивается в параметрах безопасности:

ПараметрыБезопасности = ПолучатьПараметрыБезопасности();

ПараметрыБезопасности.РазрешитьОткрытиеСсылок = Ложь;

УстановитьПараметрыБезопасности(ПараметрыБезопасности);

Также можно удалить обработчики открытия ссылок из форм или заменить их на сообщение "Доступ запрещен".