Задача состоит из 2-х подзадач
- Открытие тонкого клиента 1С по ссылке.
- Открытие заданного объекта при старте системы на стороне 1С.
Открытие тонкого клиента 1С по ссылке.
Данным действием мы регистрируем в операционной системе собственный протокол e1cb, к которому можно получить доступ из браузера по ссылке вида e1cb://навигационная_ссылка. При переходе по данной ссылке будет вызвана команда запуска 1с с соответствующей переданной навигационной ссылкой.
Вариант 1, подходит для 8.2 и 8.3, требует в дальнейшем модификации конфигурации.
Для этого нужно зарегистрировать в операционной системе собственный протокол. Это делается с помощью файла реестра.
Текст файла:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTe1cb] "URL Protocol"="e1cb" @="URL:e1cb"
[HKEY_CLASSES_ROOTe1cbDefaultIcon]
@="C:\Program Files (x86)\1cv8\common\1cestart.exe,0"
[HKEY_CLASSES_ROOTe1cbshell]
[HKEY_CLASSES_ROOTe1cbshellopen]
[HKEY_CLASSES_ROOTe1cbshellopencommand]
@=""C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /S"ServerName:Port\Database_Name" /C"%1""
Запускаем с правами администратора и вносим изменения, заменив предварительно пути, адрес сервера, порт и имя базы.
Данный пример иллюстрирует соединение с базой в клиент-серверном варианте. Для файловой базы нужно использовать параметр /F»путь_до_каталога_с_файловой_базой» вместо /S.
Для большего удобства рекомендуется настроить доменную аутентификацию, чтобы пользователю не нужно было вводить логин и пароль.
Пример ссылки для данного варианта:
e1cb://e1cib/data/Документ.бит_ПроектДоговора?ref=80cc00505681538311e43a7255c2162a
Вариант 1, подходит только для 8.3, не требует в дальнейшем модификации конфигурации.
Текст файла реестра аналогичен за исключением последнего параметра.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTe1cb] "URL Protocol"="e1cb" @="URL:e1cb"
[HKEY_CLASSES_ROOTe1cbDefaultIcon]
@="C:\Program Files (x86)\1cv8\common\1cestart.exe,0"
[HKEY_CLASSES_ROOTe1cbshell]
[HKEY_CLASSES_ROOTe1cbshellopen]
[HKEY_CLASSES_ROOTe1cbshellopencommand]
@=""C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /S"ServerName:Port\Database_Name" /URL "%1""
В этом случае ссылка на стороне 1С будет обработана автоматически, однако этот параметр появился только в 8.3
Открытие заданного объекта при старте системы на стороне 1С.
Для того, чтобы в первом случае при старте 1С открылся заданный объект нужно внести небольшую правку в код конфигурации.
Открываем «Модуль управляемого приложения»
Находим функцию «ПриНачалеРаботыСистемы()» и в ее конец добавляем:
Попытка
Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
ПерейтиПоНавигационнойСсылке(СтрЗаменить(ПараметрЗапуска, "e1cb://", ""));
КонецЕсли;
Исключение
КонецПопытки;
Все, теперь при старте системы будет проверяться передаваемый параметр и открываться соответствующий объект.
а если база уже открыта, в ней работают, и тут пришло письмо со ссылкой, то что? будет открыт еще один экземпляр базы? хотелось бы, чтобы открылся объект по ссылке в уже открытом экземпляре
т.е. при использовании данного метода можно сделать автоматический запуск только одной базы? К сожалению, нет прав админа, что бы проверить.
Полезная штука, плюс! Хотя 1С вроде обещало что сделает такое на уровне платформы..
(2) Puk2, Для того, чтобы организовать запуск разных баз, для каждой нужно сделать по отдельному протоколу(например e1cb2, e1cb3, e1cb4), и соответственно отдельному файлику реестра. И в ссылке указывать протокол нужной базы.
(1) mikhailovaew, будет открыта отдельная база. Чтобы сделать открытие в существующей базе, я вижу единственный вариант — это делать свою внешнюю подключаемую компоненту, которая будет реализовывать на Си взаимодействие через механизмы разделения памяти операционной системы(мьютексы или именованные каналы) между запущенными процессами, что слишком трудозатратно по сравнению с полученным преимуществом.
Вроде бы если сделать немного по-другому, то никакие пути к базам прописывать не надо, все открывается хорошо в уже открытом окне с базой 1с…
http://infostart.ru/public/293871/
как оформляете ссылку в тексте рассылки? у меня в письме просто текст (типа e1cib/data/Задача.ЗадачаИсполнителя?ref=94276cae8b4eeaf411e52a15958a1a5f) . если не трудно, покажите пример.
Ссылка должна начинаться на e1cb://, а так же письмо должно быть в формате HTML
(4)Есть два типа ссылок: внутренняя и внешняя, ту что описывает автор это внутренняя(в самой ссылке не указывается база данных) и есть внешняя она принимает вид: e1cb://filev/C/bases/Demo#e1cib/data/Документ.бит_ПроектДоговора?ref=80cc00505681538311e43a7255c2162a со всеми вытекающими.