Открытие объекта 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 не будет опубликован. Обязательные поля помечены *