Почему внешние ссылки 1С (e1c://) не работают в почте и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Выясняем причину: почему почтовики «ломают» ссылки

Проанализируем ситуацию с точки зрения безопасности веб-сервисов. Когда вы открываете письмо в браузере (через интерфейс Gmail, Yandex или Mail.ru), почтовый сервис отображает не ваш исходный HTML-код в чистом виде, а его обработанную копию. За эту обработку отвечает специальный программный модуль — HTML-санитайзер.

Основная задача санитайзера — защитить пользователя от вредоносного кода и XSS-атак. У каждого почтового сервиса существует жесткий «белый список» разрешенных протоколов для атрибута href. Как правило, в него входят только:

  1. http:// и https:// — стандартные веб-протоколы.
  2. mailto: — для создания нового письма.
  3. tel: — для совершения телефонных звонков.

Протокол e1c:// является нестандартным (кастомным) URI-схемой. Почтовый клиент, видя неизвестный протокол, либо полностью удаляет тег <a>, оставляя только текст ссылки, либо деактивирует атрибут перехода. С точки зрения безопасности почтовика, запуск локального приложения через произвольную ссылку — это потенциальная уязвимость, поэтому такие ссылки блокируются «по умолчанию».

Решение №1: Использование HTTP-редиректора (самый надежный метод)

Рассмотрим наиболее универсальный способ, который позволяет обойти ограничения любых почтовых систем. Суть метода заключается в создании промежуточного «мостика» на стандартном HTTP-протоколе.

Вместо того чтобы вставлять в письмо прямую ссылку e1c://..., мы будем использовать ссылку на обычную веб-страницу, которая уже сама перенаправит пользователя в 1С. Разберем по шагам алгоритм реализации:

  1. На корпоративном веб-сервере (это может быть тот же сервер, где опубликован веб-клиент 1С) создается простая HTML-страница.
  2. Эта страница принимает в качестве параметра зашифрованную или прямую ссылку 1С.
  3. При открытии страницы срабатывает JavaScript, который инициирует переход по протоколу e1c://.

Проанализируем пример простейшего кода такой страницы-редиректора:


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Переход в 1С...</title>
    <script type="text/javascript">
        window.onload = function() {
            // Получаем URL из параметров запроса
            const urlParams = new URLSearchParams(window.location.search);
            const targetUrl = urlParams.get('url');
            if (targetUrl) {
                // Выполняем перенаправление на протокол 1С
                window.location.href = targetUrl;
            }
        };
    </script>
</head>
<body>
    <p>Выполняется переход в информационную базу 1С. Пожалуйста, подождите...</p>
</body>
</html>

Теперь в письме ваша ссылка будет выглядеть как стандартный https://my-company.ru/redirect.html?url=e1c://server/base.... Почтовый клиент воспримет её как безопасную, и она останется кликабельной.

Решение №2: Переход на HTTP-ссылки веб-клиента

Если ваша информационная база опубликована на веб-сервере (Apache или IIS), наиболее правильным подходом будет использование ссылок формата веб-клиента. Такие ссылки начинаются с http:// или https:// и всегда остаются активными в письмах.

Разберем структуру такой ссылки: http://имя_сервера/имя_базы#e1cib/data/Документ.ЗаказПокупателя?ref=.... Важно понимать, что при клике по такой ссылке у пользователя откроется браузер. Однако, если на компьютере установлен Тонкий клиент 1С и настроена интеграция, браузер предложит пользователю выбор: «Открыть в браузере» или «Открыть в 1С:Предприятие». Если пользователь выберет второй вариант и поставит галочку «Всегда использовать это приложение», дальнейшая работа будет практически бесшовной.

Настройка реестра для работы протокола e1c

Для того чтобы операционная система понимала, что делать с ссылкой, начинающейся на e1c://, необходимо правильно настроить реестр Windows на стороне клиента. Выясним, какие записи критически важны для корректной работы.

Создадим файл с расширением .reg и проанализируем его содержимое. Обратите внимание на использование кавычек и параметров:


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\e1c]
@="URL:1C:Enterprise Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\e1c\shell]

[HKEY_CLASSES_ROOT\e1c\shell\open]

[HKEY_CLASSES_ROOT\e1c\shell\open\command]
@="\"C:\\Program Files\\1cv8\\common\\1cestart.exe\" /url \"%1\""

Важный нюанс: В параметре /url "%1" кавычки вокруг %1 обязательны. Если их опустить, то ссылки, содержащие пробелы, спецсимволы или длинные навигационные пути (которые часто генерирует функция ПолучитьНавигационнуюСсылку()), будут обрезаться. В результате 1С выдаст ошибку при запуске, так как не сможет расшифровать неполный URL.

Особенности десктопных клиентов (Outlook, Thunderbird)

В отличие от браузерных почтовиков, десктопные приложения более лояльны к нестандартным протоколам. Если вы используете Microsoft Outlook, ссылки e1c:// могут работать без дополнительных ухищрений с редиректами.

Однако существует важный момент: если вы программно формируете тело письма в 1С, старайтесь избегать лишних атрибутов, таких как target="_blank" для ссылок типа e1c. Проанализируем пример формирования правильной ссылки в коде 1С:


ТекстПисьма = "<html><body>";
ТекстПисьма = ТекстПисьма + "<p>Для просмотра документа перейдите по ссылке: ";
ТекстПисьма = ТекстПисьма + "<a href=""" + НавигационнаяСсылка + """>Открыть документ в 1С</a></p>";
ТекстПисьма = ТекстПисьма + "</body></html>";

Если даже в Outlook ссылка неактивна, попробуйте добавить адрес отправителя в список «Надежных отправителей» или проверьте настройки безопасности зоны интернета в панели управления Windows, так как Outlook тесно интегрирован с системными настройками безопасности.

Взаимодействие с современными браузерами (Chrome, Edge)

Даже при использовании редиректора или активной ссылки, современные браузеры (особенно на движке Chromium) проявляют осторожность. При попытке открытия e1c:// пользователь увидит всплывающее окно с вопросом: «Разрешить этому сайту открыть приложение 1C:Enterprise?».

Необходимо проинструктировать пользователей, чтобы они установили флажок «Всегда разрешать сайту... открывать ссылки этого типа». После этого переход будет происходить мгновенно. Если окно не появляется, а ссылка не срабатывает, стоит проверить настройки браузера в разделе «Обработчики протоколов».

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

← На главную