В современной корпоративной среде интеграция 1С с мессенджерами, такими как Telegram, становится стандартом. Мы часто настраиваем ботов для отправки уведомлений о задачах, заказах или согласованиях. Однако здесь возникает распространенная проблема: при клике по ссылке из мессенджера по умолчанию открывается веб-браузер. Если ваша цель — работа пользователя в Тонком клиенте 1С (для использования торгового оборудования, ключей защиты или просто привычного интерфейса), поведение "по умолчанию" становится препятствием.
Давайте разберемся, как устроены ссылки в экосистеме 1С, почему Telegram ведет себя именно так, и какие существуют способы, включая прямое взаимодействие через API, заставить ссылку открывать именно Тонкий клиент.
Прежде чем переходить к настройке, нам необходимо понять фундаментальную разницу в типах ссылок. Когда мы формируем ссылку для пользователя, она обычно выглядит так:
https://адрес_сервера/база#e1cib/data/Документ.Заказ?ref=...
Давайте проанализируем эту строку. Она начинается с https://. Для операционной системы Windows (и любой другой) это сигнал: "Этот адрес должен обработать браузер". Именно поэтому, когда пользователь кликает по такой ссылке в Telegram, запускается Chrome, Edge или другой браузер по умолчанию. Браузер переходит по адресу, видит веб-публикацию 1С и запускает веб-клиент.
Для того чтобы ссылка открылась в установленном на компьютере приложении "1С:Предприятие" (Тонком клиенте), ссылка должна использовать специальный протокол — e1c. Схема такой ссылки выглядит иначе:
e1c://server/АдресСервера/ИмяБазы#e1cib/data/Документ.Заказ?ref=...
Когда операционная система встречает протокол e1c://, она ищет в реестре приложение, ассоциированное с этим протоколом, и передает управление ему. В нашем случае — это стартер 1С или конкретная версия платформы.
Казалось бы, решение на поверхности: просто отправлять пользователю ссылку, начинающуюся с e1c://. Однако давайте посмотрим на это с точки зрения мессенджера.
Большинство мессенджеров, включая Telegram (особенно его десктопную версию), в целях безопасности и стандартизации распознают как активные гиперссылки только стандартные протоколы:
http:// и https://ftp://mailto:tel:Если вы отправите ботом текст e1c://server/base..., он придет пользователю как обычный черный текст, не подсвеченный синим цветом. Кликнуть по нему нельзя. Пользователю придется выделять текст, копировать его и вставлять куда-то еще, что убивает удобство использования.
Самый надежный способ подружить "кликабельность" Telegram и запуск Тонкого клиента — использование промежуточной страницы. Давайте разберем алгоритм действий.
Мы не можем заставить Telegram открыть e1c напрямую. Но мы можем отправить пользователю ссылку https, которая приведет его на специальную страницу, а эта страница уже перенаправит его в приложение 1С.
Шаг 1. Формирование ссылки для отправки
Вместо прямой ссылки на базу, мы формируем ссылку на наш скрипт-редиректор, передавая параметры объекта:
https://myserver.ru/go_to_1c.html?link=e1c://server/base/data/Ref...
Шаг 2. Создание страницы переадресации
На веб-сервере создается простая HTML-страница. Рассмотрим логику, которую она должна выполнять (на языке JavaScript):
e1c.window.location.href = ...).В этот момент браузер покажет пользователю всплывающее окно: "Сайт пытается открыть приложение 1C:Enterprise. Разрешить?". После подтверждения запустится Тонкий клиент.
Если галочка "Всегда разрешать" будет установлена пользователем, в следующий раз запуск произойдет практически мгновенно.
Если по каким-то причинам вы хотите разобраться, как именно Windows понимает, что нужно запустить 1С, или если стандартная ассоциация слетела, давайте рассмотрим работу с реестром. Это решение также полезно, если вы хотите создать свой собственный "псевдо-протокол", например myapp1c://, чтобы разделить потоки запуска разных баз.
Внимание! Правка реестра требует осторожности. Перед внесением изменений рекомендуется создать точку восстановления или резервную копию реестра.
Для регистрации обработчика нам нужно создать структуру ключей в разделе HKEY_CLASSES_ROOT. Разберем пример командного файла, который создает нужные записи.
Сначала мы объявляем протокол и даем ему описание:
reg add HKEY_CLASSES_ROOT\e1c /t REG_SZ /d "1C thin client handler" /f
reg add HKEY_CLASSES_ROOT\e1c /v "URL Protocol" /t REG_SZ /d "" /f
Ключ URL Protocol (пустой строковый параметр) критически важен — именно он сообщает системе, что e1c — это протокол, а не расширение файла.
Далее мы создаем структуру командной оболочки:
reg add HKEY_CLASSES_ROOT\e1c\shell /f
reg add HKEY_CLASSES_ROOT\e1c\shell\open /f
И, наконец, самое главное — команда запуска. Мы указываем путь к стартеру 1С и передаем ему аргумент %1 (это и будет наша ссылка):
reg add HKEY_CLASSES_ROOT\e1c\shell\open\command /t REG_EXPAND_SZ /d "\"C:\Program Files (x86)\1cv8\common\1cestart.exe\" /URL \"%1\"" /f
Обратите внимание на использование параметра /URL. Стартер 1С (1cestart.exe) умеет корректно обрабатывать ссылки, начинающиеся с e1c://, если они переданы через этот ключ или просто как аргумент (в зависимости от версии платформы).
Чтобы вся схема работала, нам нужно правильно сформировать "хвост" ссылки внутри конфигурации 1С перед отправкой в Telegram. Для этого используем встроенный метод глобального контекста.
Рассмотрим использование функции ПолучитьНавигационнуюСсылку:
// Получаем ссылку на конкретный документ или элемент справочника
СсылкаНаОбъект = ПолучитьНавигационнуюСсылку(ВыбранныйДокумент);
// Результат будет вида: e1cib/data/Документ.ЗаказКлиента?ref=...
Эта функция возвращает только внутреннюю часть пути (относительно базы данных). Чтобы превратить её в глобальную ссылку для Тонкого клиента, нам нужно добавить префикс сервера и базы.
Если мы используем клиент-серверный вариант, итоговая строка для отправки должна формироваться так:
АдресСервера = "my-server-1c";
ИмяБазы = "upp_prod";
ВнутренняяСсылка = ПолучитьНавигационнуюСсылку(ОбъектСсылка);
// Формируем полную строку протокола e1c
ПолнаяСсылка = "e1c://server/" + АдресСервера + "/" + ИмяБазы + "#" + ВнутренняяСсылка;
Если у вас возникают проблемы с открытием ссылок, всегда полезно проверить (как мы это делаем при тестировании REST API), работает ли сама команда запуска. Вы можете протестировать это через командную строку Windows (Win+R -> cmd).
Попробуйте выполнить следующую команду:
"C:\Program Files\1cv8\common\1cestart.exe" /URL "e1c://server/BaseName/..."
Если при выполнении этой команды 1С запускается и открывает нужный объект — значит, проблема находится на уровне ассоциации ссылок в браузере или реестре. Если же 1С не запускается или выдает ошибку — проверьте корректность пути к 1cestart.exe и правильность написания самой ссылки.
https://... в сообщениях Telegram.e1c:// активными, используйте веб-прокладку (redirect page) или сокращатель ссылок, который умеет делать редирект на кастомные протоколы.Используя этот подход, вы обеспечите пользователям бесшовный переход из мессенджера прямо в рабочее окно 1С:Предприятие.