При автоматизации бизнес-процессов часто возникает задача отправки уведомлений из 1С на электронную почту пользователя. Идеальный сценарий подразумевает, что пользователь получает письмо, кликает по ссылке и у него сразу открывается нужный документ или отчет в тонком клиенте. Однако на практике разработчики часто сталкиваются с тем, что ссылка формата e1c:// отображается в письме как обычный текст, по которому невозможно кликнуть. Разберем подробно, почему это происходит и какие существуют надежные способы решения данной проблемы. Для отладки и проверки отправки сообщений пригодится инструмент для тестирования почтовой рассылки.
Проанализируем ситуацию с точки зрения безопасности веб-сервисов. Когда вы открываете письмо в браузере (через интерфейс Gmail, Yandex или Mail.ru), почтовый сервис отображает не ваш исходный HTML-код в чистом виде, а его обработанную копию. За эту обработку отвечает специальный программный модуль — HTML-санитайзер.
Основная задача санитайзера — защитить пользователя от вредоносного кода и XSS-атак. У каждого почтового сервиса существует жесткий «белый список» разрешенных протоколов для атрибута href. Как правило, в него входят только:
http:// и https:// — стандартные веб-протоколы.mailto: — для создания нового письма.tel: — для совершения телефонных звонков.Протокол e1c:// является нестандартным (кастомным) URI-схемой. Почтовый клиент, видя неизвестный протокол, либо полностью удаляет тег <a>, оставляя только текст ссылки, либо деактивирует атрибут перехода. С точки зрения безопасности почтовика, запуск локального приложения через произвольную ссылку — это потенциальная уязвимость, поэтому такие ссылки блокируются «по умолчанию».
Рассмотрим наиболее универсальный способ, который позволяет обойти ограничения любых почтовых систем. Суть метода заключается в создании промежуточного «мостика» на стандартном HTTP-протоколе.
Вместо того чтобы вставлять в письмо прямую ссылку e1c://..., мы будем использовать ссылку на обычную веб-страницу, которая уже сама перенаправит пользователя в 1С. Разберем по шагам алгоритм реализации:
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.... Почтовый клиент воспримет её как безопасную, и она останется кликабельной.
Если ваша информационная база опубликована на веб-сервере (Apache или IIS), наиболее правильным подходом будет использование ссылок формата веб-клиента. Такие ссылки начинаются с http:// или https:// и всегда остаются активными в письмах.
Разберем структуру такой ссылки: http://имя_сервера/имя_базы#e1cib/data/Документ.ЗаказПокупателя?ref=.... Важно понимать, что при клике по такой ссылке у пользователя откроется браузер. Однако, если на компьютере установлен Тонкий клиент 1С и настроена интеграция, браузер предложит пользователю выбор: «Открыть в браузере» или «Открыть в 1С:Предприятие». Если пользователь выберет второй вариант и поставит галочку «Всегда использовать это приложение», дальнейшая работа будет практически бесшовной.
Для того чтобы операционная система понимала, что делать с ссылкой, начинающейся на 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.
В отличие от браузерных почтовиков, десктопные приложения более лояльны к нестандартным протоколам. Если вы используете Microsoft Outlook, ссылки e1c:// могут работать без дополнительных ухищрений с редиректами.
Однако существует важный момент: если вы программно формируете тело письма в 1С, старайтесь избегать лишних атрибутов, таких как target="_blank" для ссылок типа e1c. Проанализируем пример формирования правильной ссылки в коде 1С:
ТекстПисьма = "<html><body>";
ТекстПисьма = ТекстПисьма + "<p>Для просмотра документа перейдите по ссылке: ";
ТекстПисьма = ТекстПисьма + "<a href=""" + НавигационнаяСсылка + """>Открыть документ в 1С</a></p>";
ТекстПисьма = ТекстПисьма + "</body></html>";
Если даже в Outlook ссылка неактивна, попробуйте добавить адрес отправителя в список «Надежных отправителей» или проверьте настройки безопасности зоны интернета в панели управления Windows, так как Outlook тесно интегрирован с системными настройками безопасности.
Даже при использовании редиректора или активной ссылки, современные браузеры (особенно на движке Chromium) проявляют осторожность. При попытке открытия e1c:// пользователь увидит всплывающее окно с вопросом: «Разрешить этому сайту открыть приложение 1C:Enterprise?».
Необходимо проинструктировать пользователей, чтобы они установили флажок «Всегда разрешать сайту... открывать ссылки этого типа». После этого переход будет происходить мгновенно. Если окно не появляется, а ссылка не срабатывает, стоит проверить настройки браузера в разделе «Обработчики протоколов».
Подводя итог, можно сказать, что наиболее стабильным и профессиональным решением является использование HTTP-редиректора. Это гарантирует доставку ссылки до пользователя в кликабельном виде независимо от того, пользуется ли он веб-интерфейсом почты или тяжелым почтовым клиентом.