Открытие объекта 1С в тонком клиенте по ссылке

Управляемый режим 1С позволяет получить ссылку на любой объект базы вида: "e1c://server/<сервер>/<Имя базы>#e1cib/data/<Тип>?ref=<Ид>. Предлагаемый файл настройки реестра позволяет настроить открытие таких ссылок сразу в клиенте 1С, например, при получении ссылки по почте.
Управляемый режим 1С позволяет получить ссылку на любой объект базы вида: «e1c://server/<сервер>/<Имя базы>#e1cib/data/<Тип>?ref=<Ид>. Предлагаемый файл настройки реестра позволяет настроить открытие таких ссылок сразу в клиенте 1С, например, при получении ссылки по почте.
Работает начиная с версии 1С: Предприятие 8.3, т.к. только там появилась возможность открытия ссылок из командной строки.

Текст файла регистрации:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTe1c]
@="URL:e1c"
"URL Protocol"="e1c"
"EditFlags"=hex:02,00,00,00

[HKEY_CLASSES_ROOTe1cDefaultIcon]
@="C:\Program Files (x86)\1cv8\common\1ceunt.dll,17"

[HKEY_CLASSES_ROOTe1cshell]

[HKEY_CLASSES_ROOTe1cshellopen]

[HKEY_CLASSES_ROOTe1cshellopencommand]
@=""C:\Program Files (x86)\1cv8\common\1cestart.exe" /URL "%1""

31 Comments

  1. iov

    как полагаете почему нет плюсов? Вроде как люди скачали а плюсов нет )))

    раскройте код в статье и люди потянутся ))

    Reply
  2. RomanRomans

    Было бы хорошо, если 1cestart.exe понимал ссылки без прямого пути к базе, например по заранее настроенному соответствию.

    Т.е. вместо:

    e1c://server/server_name/base_name#e1cib/data/Документ.ЗаказКлиента?ref=80dc3d2b871a973a11e4ee771f1d4b2f

    достаточно было указать:

    e1c://server/Условное_Имя/Документ.ЗаказКлиента?ref=80dc9d2b871a973a11e4ee771f1d4b2f

    а в настройках 1cestart.exe имелась возможность указать соответствие:

    «Условное_Имя» соответствует «server_name/base_name»

    Если бы была такая возможность

    Reply
  3. Puk2

    Кстати, если использовать этот метод для 1С:Документооборота, то в настройках уведомлений веб-адрес базы можно указать:

    e1c://server/<сервер>/<Имя базы># и тогда в почтовых уведомлениях будет приходить ссылка, которая откроется приложением 1С без изменения типовой конфигурации.

    Если веб-адрес базы не указан, то рассылается внутренняя ссылка, т.е. часть после знака #

    Reply
  4. severnyj

    (3) Puk2,

    В письме почему-то ссылка e1c:// не выделяется как гиперссылка, а если ее скопировать-вставить в адресную строку то работает только через Internet Explorer, через Google Chrome не работает. У вас не так?

    Reply
  5. 2tvad

    Спасибо.

    Reply
  6. Zhilyakovdr

    Как заставить outlook воспринимать e1c:// как гиперссылку?

    Reply
  7. ktb

    (6) Zhilyakovdr, Зависит от того, каким образом формируется письмо:

    1. Если письмо формируется программно, то достаточно сформировать его в формате HTML и оформить ссылку соответствующим образом.

    2. Если письмо создается вручную и ссылка вставляется руками (через буфер обмена, например), то необходимо, при вставке адреса, самостоятельно оформить его как гиперссылку средствами редактора Outlook (ВставкаГиперссылка).

    Reply
  8. ramir

    Почему 1Ска сама при установке это в реестр не прописывает? Интересно…

    А по теме однозначно плюс.

    Reply
  9. wmonref1

    Здравствуйте!

    Подскажите, пожалуйста, можно ли при открытии таких ссылок записать, например, новых контрагентов в базе… Есть ли у вас какой-то пример использования данного метода? Или может посоветуете где найти информацию?

    Спасибо.

    Reply
  10. ktb

    (9) wmonref1, Нет, эти ссылки предназначены только для открытия объектов. На тему манипуляции данными ИБ по ссылкам рекомендую поискать информацию по интерфейсу OData.

    Reply
  11. colinsn

    В версии 8.2 переход по ссылке не работает. Открывается нужна ИБ, авторизация, но ссылка не открывается. Можно дополнить в реестре строчку, добавив параметр:

    @=»»C:\Program Files (x86)\1cv8\common\1cestart.exe» /URL «%1» /C «%1″» и обработать переданный параметр ПриНачалеРаботы(). Но и тут сложность. Если ИБ не прописана в загрузчике, то параметр будет пустым.

    Reply
  12. ktb

    (11) colinsn, я собственно и написал, что работает начиная с 8.3. С 8.2 можно настроить только открытие объекта через web-клиент.

    Reply
  13. Maxis

    (4)

    В веб-версиях почтовых сайтов (например, Mail.ru и Яндекс) ссылка e1c:// выделяется цветом, но не кликабельна. А если пользоваться почтовой программой, например, Outlook — то ссылка кликабельна.

    Наверное, кликабельность ссылок блокируется в целях безопасности.

    Reply
  14. vs84

    Есть варианты, как сделать так, что бы при переходе по ссылке не открывалась новая 1Ска, еси она уже открыта (сейчас оно так работает, при каждом клике открывает новую)?

    Reply
  15. ktb

    (14) Таких экспериментов не ставил. Подозреваю, что т.к. может быть открыто несколько экземпляров 1С с разными ИБ, то поиска экземпляра с «нужной» ИБ не происходит.

    Reply
  16. Fuego

    1. При необходимости внести в реестр изменения без административных прав, можно воспользоваться ключом в пользовательской ветке. То есть, вместо

    узла HKEY_CLASSES_ROOT использовать узел HKEY_CURRENT_USERSoftwareClasses

    Если необходимо в путях использовать расширяемые переменные (например %AppData%), то текст следует задавать в параметрах типа REG_EXPAND_SZ, а в файле реестра это будет выглядеть как @=hex(2):25,00…. Чтобы сформировать параметр по умолчанию в таком виде подручными средствами, можно в реестре в нужном узле создать параметр такого типа, и вставить в него текст с расширяемыми переменными , затем экспортировать узел с параметром, отредактировать экспортированный файл так, чтобы вместо названия параметра в кавычках был установлен знак @ (без кавычек). После импорта файла в реестр, параметр по умолчанию будет иметь нужный тип.

    Пример простого работающего файла реестра:

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USERSoftwareClassese1c]
    @=»1С:Предприятие»
    «URL Protocol»=»»
    
    [HKEY_CURRENT_USERSoftwareClassese1cDefaultIcon]
    @=hex(2):25,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,25,00,5c,00,31,00,43,\r
    00,5c,00,31,00,63,00,76,00,38,00,5c,00,63,00,6f,00,6d,00,6d,00,6f,00,6e,00,\r
    5c,00,31,00,63,00,65,00,75,00,6e,00,74,00,2e,00,64,00,6c,00,6c,00,2c,00,31,\r
    00,37,00,00,00
    
    [HKEY_CURRENT_USERSoftwareClassese1cshellopencommand]
    @=hex(2):22,00,25,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,25,00,5c,00,31,\r
    00,43,00,5c,00,31,00,63,00,76,00,38,00,5c,00,63,00,6f,00,6d,00,6d,00,6f,00,\r
    6e,00,5c,00,31,00,63,00,65,00,73,00,74,00,61,00,72,00,74,00,2e,00,65,00,78,\r
    00,65,00,22,00,20,00,2f,00,55,00,52,00,4c,00,20,00,22,00,25,00,31,00,22,00,\r
    00,00

    Показать

    Reply
  17. Fuego

    (16)

    Этот же вариант, но без танцев с бубном ручного редактирования реестра и файлов реестра:

    @echo off
    reg add HKCUSoftwareClassese1c /ve /t REG_SZ /d 1С:Предприятие /f
    reg add HKCUSoftwareClassese1c /v «URL Protocol» /t REG_SZ /f
    reg add HKCUSoftwareClassese1cDefaultIcon /ve /t REG_EXPAND_SZ /d %%AppData%%1C1cv8common1ceunt.dll,17 /f
    reg add HKCUSoftwareClassese1cshellopencommand /ve /t REG_EXPAND_SZ /d «»%%AppData%%1C1cv8common1cestart.exe» /URL «%%1″» /f
    
    Reply
  18. mihail_nikulin

    Добрый день! А как настроить открытие таких ссылок сразу из html-документа? Нажал — открылся клиент на нужном объекте. Не копируя ссылку в командную строку.

    Reply
  19. ktb

    (18) прям так и пишешь:

     <a href=»e1c:⁄⁄server/[АдресСервера]/[ИмяБазы]#e1cib/data/Справочник.Контрагенты?ref=00000000000000000000000000000000″>Мой контрагент</a>

    Надо только убедиться, что существует 1cestart.exe по пути указанному в реестре.

    Reply
  20. mihail_nikulin

    Через командную строку всё работает

    e1c://server/[АдресСервера]/[ИмяБазы]#e1cib/data/Справочник.Контрагенты?ref=80bf001e67d4b29711e5794d1a2e5ce6

    Через html-файл:

    <html>

    Тест

    </html>

    Система 1С стартует, но пишет ошибку:

    server_addr=erver Этот хост неизвестен.

    Т.е., как я понимаю, система раскладывает строку «e1c://server/…» и считает последовательность символов «/s» как параметр клиент-сервер и ,соответственно, «erver» как имя сервера.

    Reply
  21. ktb

    (20) В своем коментарии я указал точно работающий вариант (проверил прям при написании коментария), значит проблема где-то в другом месте. Если сделаете выгрузку ключа реестра [HKEY_CURRENT_USERSoftwareClassese1c], могу попробовать помочь разобраться.

    Reply
  22. mihail_nikulin

    Спасибо! Проблема в Mozzila Firefox. IE отрабатывает корректно!

    Reply
  23. mihail_nikulin

    И Google Chrome отрабатывает правильно!

    Reply
  24. mihail_nikulin

    Подскажите, пожалуйста, если сохранить HTML как PDF нужны ли какие-то доп. настройки?

    Открываю в «Adobe Acrobat Reader DC», при нажатии на гиперссылку ничего не происходит…

    Reply
  25. ktb

    (24) Не в курсе, не пробовал. Возможно есть какие-то проблемы с безопасностью.

    Reply
  26. check2

    Чувак, 🙂 Спасибо тебе! То что доктор прописал.

    Reply
  27. susumanin

    А можно ли как-то открыть ссылку e1c:// через терминал (remote app, rdp файл), т.е. когда на компе нет тонкого клиента?

    Reply
  28. ktb

    (27) Можно, но с дополнительными костылями. Простыми словами — нужен обработчик протокола, который разберёт адрес на составляющие и передаст дальше, на обработку.

    Reply
  29. Olenevod

    Подскажите, пожалуйста, никак не могу разобраться

    Для запуска тонкого клиента (не браузера) опубликованной базы как следует задать путь у ссылки?

    Т.е. для серверных баз понятно что так:

    e1c://server/<сервер>/<Имя базы>

    а для веб как?

    Вот так не проходит

    e1c://server/http://путь.ru<и т.д. навигационня ссылка>

    Говорит этот хост неизвестен

    Есть особенности?

    Reply
  30. ktb

    (29) Тут проблема! В таком случае (при подключении тонкого клиента по протоколу http(s)) путь к базе задается также как и в браузере, т.е. не содержит ни каких «e1c:», соответственно в системе для таких путей уже зарегистрировано приложение по умолчанию — браузер.

    Если поменять на 1С, то все web-ссылки будут путаться открываться в 1С.

    Reply
  31. user1309868

    Добрый день. Проблема с OWA. Хоть убей, не открывает в браузерах ссылки из письма.

    В реестр добавил параметр.

    В Outlook что в пакет офиса входит все отлично. Проблема именно в OWA.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *