Создание ссылок в 1С Предприятие — задача, с которой сталкиваются и пользователи, и разработчики. Кто-то хочет добавить кликабельную гиперссылку в печатную форму договора, кто-то — организовать переход между документами в базе, а кому-то нужно встроить URL в отчет для быстрого доступа к внешним ресурсам. В этой статье разберем все возможные сценарии: от простых ссылок в тексте до программных решений на встроенном языке.
Многие ошибочно думают, что в 1С ссылки создаются так же, как в 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
Если ваша 1С интегрирована с веб-сервисами, может потребоваться формировать ссылки с параметрами. Например, для передачи данных в 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 в 1С важно учитывать вопросы безопасности. Платформа по умолчанию блокирует потенциально опасные действия:
🔐 Ограничения безопасности:
- 🚫 Запрет на открытие
file://ссылок (местные файлы) - 🔒 Блокировка ссылок с нестандартными протоколами (
javascript:,data:) - 🛡️ Требуется подтверждение пользователя для открытия внешних ссылок
🔐 Как разрешить открытие ссылок:
В настройках информационной базы (Администрирование → Настройки программы → Безопасность) можно настроить:
- 🌐 Разрешить открытие HTTP/HTTPS ссылок без подтверждения
- 📂 Разрешить работу с файловой системой (для
file://) - 🔄 Настроить список доверенных доменов
🔐 Программный обход ограничений (для администраторов):
ПараметрыБезопасности = ПолучатьПараметрыБезопасности();
ПараметрыБезопасности.РазрешитьОткрытиеСсылок = Истина;
ПараметрыБезопасности.ДоверенныеДомены.Добавить("example.com");
УстановитьПараметрыБезопасности(ПараметрыБезопасности);
⚠️ Внимание: Изменение параметров безопасности может сделать вашу базу уязвимой для атак! Никогда не разрешайте открытие произвольных file:// ссылок в рабочих базах — это позволяет злоумышленникам получить доступ к локальным файлам пользователей.
Как проверить безопасность ссылок в 1С?
1. Откройте журнал регистрации (Администрирование → Журнал регистрации)
2. Отфильтруйте события по типу "Безопасность" и "Внешние соединения"
3. Проверьте, нет ли подозрительных попыток открытия ссылок (например, с незнакомых доменов)
4. Для дополнительной защиты используйте прокси-сервер или модуль 1С:ИТС для анализа трафика
7. Типичные ошибки и их решения
При работе со ссылками в 1С пользователи и разработчики часто сталкиваются с одними и теми же проблемами. Вот самые распространенные:
🐞 Ошибка: "Неверный формат ссылки"
- 🔹 Причина: Пробелы или спецсимволы в URL не закодированы
- 🔧 Решение: Используйте
КодироватьСтроку()для параметров
🐞 Ошибка: "Объект не найден" при открытии ссылки на документ
- 🔹 Причина: Документ был удален, но ссылка осталась в базе
- 🔧 Решение: Проверяйте существование объекта перед открытием:
Если НЕ Ссылка.Пустая() И НЕ Ссылка.ПометкаУдаления ТогдаОткрытьФорму(..., Ссылка);
КонецЕсли;
🐞 Ошибка: Ссылка не кликабельна в PDF
- 🔹 Причина: Модуль генерации PDF не поддерживает гиперссылки
- 🔧 Решение: Используйте альтернативные форматы (HTML, DOCX) или доработайте модуль вывода
🐞 Ошибка: "Доступ запрещен" при открытии внешней ссылки
- 🔹 Причина: Настройки безопасности блокируют домен
- 🔧 Решение: Добавьте домен в список доверенных или запросите права у администратора
| Ошибка | Вероятная причина | Быстрое решение | Правильное решение |
|---|---|---|---|
| Ссылка обрезается при экспорте | Ограничение длины поля в макете | Увеличить размер колонки в отчете | Использовать динамическое формирование ссылок |
| Не работают ссылки в мобильном клиенте | Ограничения мобильной платформы | Использовать веб-клиент | Создать специализированную мобильную форму |
| Ссылки открываются в новом окне браузера | Настройка браузера по умолчанию | Изменить настройки браузера | Использовать ОткрытьЗначение(Ссылка, Новый ПараметрыОткрытияЗначения(Истина)) |
Перед внедрением ссылок в рабочую базу всегда тестируйте их в копии! Особенно это касается программных решений, которые могут конфликтовать с обновлениями конфигурации.
FAQ: Частые вопросы по ссылкам в 1С
Можно ли в 1С сделать ссылку, которая открывает другой документ в новой вкладке?
Да, но не напрямую. В десктопном клиенте все документы открываются в текущем окне. Для веб-клиента можно использовать JavaScript-обработчик, который будет открывать ссылку в новой вкладке:
ЭлементФормы.Гиперссылка.Действие = "ВыполнитьJavaScript";
ЭлементФормы.Гиперссылка.Параметры = "window.open('" + Ссылка + "', '_blank')";
Однако это требует дополнительных настроек безопасности.
Как сделать кликабельный email в печатной форме?
Добавьте в текст формы адрес в формате mailto:email@example.com. Пример:
"Для вопросов пишите на " + "mailto:support@example.com"
Платформа автоматически преобразует его в кликабельную ссылку, которая откроет почтовый клиент пользователя.
Почему в моем отчете СКД не работают ссылки на документы?
Вероятные причины:
- Не настроено событие
ПриАктивизацииЯчейкив модуле отчета - Поле, используемое для ссылки, не имеет типа "Ссылка"
- Отсутствуют права на просмотр связанных документов
Проверьте настройки отчета и права пользователя.
Можно ли в 1С сделать ссылку на конкретную строку табличной части?
Да, но это требует программной доработки. Пример кода для открытия документа с прокруткой к нужной строке:
Процедура ОткрытьСтрокуТабличнойЧасти(Документ, НомерСтроки)
Форма = ОткрытьФорму("Документ." + Документ.Метаданные().Имя + ".ФормаОбъекта", Документ.Ссылка);
Форма.ЭлементыФормы.ТабличнаяЧасть.ТекущаяСтрока = Форма.ЭлементыФормы.ТабличнаяЧасть.НайтиСтрокуПоНомеру(НомерСтроки);
КонецПроцедуры
Как запретить пользователям открывать внешние ссылки?
Это настраивается в параметрах безопасности:
ПараметрыБезопасности = ПолучатьПараметрыБезопасности();
ПараметрыБезопасности.РазрешитьОткрытиеСсылок = Ложь;
УстановитьПараметрыБезопасности(ПараметрыБезопасности);
Также можно удалить обработчики открытия ссылок из форм или заменить их на сообщение "Доступ запрещен".