При работе с навигационными ссылками в 1С часто возникает ситуация, когда пользователь ожидает открытия документа в уже открытом окне программы, но вместо этого система запускает «запускатор» 1cestart и предлагает выбрать базу заново. Разберемся, почему это происходит и как сделать так, чтобы ссылки открывались именно там, где нам нужно.
Для начала проанализируем, почему система ведет себя именно так. В 1С существует два основных типа ссылок, и их поведение в операционной системе кардинально различается:
e1c://): Они содержат информацию о сервере и базе данных. Когда мы кликаем по такой ссылке, операционная система «понимает», что нужно вызвать внешнее приложение 1cestart.exe. Этот процесс по умолчанию настроен на проверку запуска базы, и если он не «видит» уже активного сеанса с идентичными параметрами соединения, он инициирует открытие нового окна выбора базы.e1cib/): Это те самые ссылки, которые «понимает» сама платформа, когда она уже запущена. Они указывают непосредственно на data (объект) или команду внутри текущей информационной базы.Чтобы документ открывался в существующем сеансе, нам необходимо использовать формат e1cib/data/.... Платформа 1С устроена таким образом, что если вы «скормите» текущему запущенному клиенту такую ссылку, он интерпретирует её как команду навигации внутри текущей сессии.
Рассмотрим, как это реализовать на практике:
e1cib/data/Документ.Заявка?ref=..., документ моментально откроется в текущем окне.ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(). Этот метод является эталонным способом работы с навигацией в БСП (Библиотеке стандартных подсистем). Он корректно обрабатывает и внешние, и внутренние ссылки, при необходимости направляя запрос в текущий клиент.При разработке интеграций (например, при отправке ссылок через Telegram или почту) важно понимать: если вы передаете ссылку пользователю, который уже работает в 1С, лучше всего передавать именно внутреннюю часть e1cib/data/.... Если технически возможно, настройте ваш почтовый клиент или мессенджер так, чтобы он распознавал этот протокол. Внутренний механизм 1С самостоятельно перехватит этот запрос из текущего сеанса без необходимости перезапуска всей системы.
Важное предостережение: Убедитесь, что в текущем сеансе не открыты модальные окна (например, открытые диалоги или сообщения о необходимости подтверждения действия). Модальность блокирует обработку навигационных ссылок, так как платформа ждет закрытия активного окна, что может привести к тому, что клик по ссылке будет проигнорирован или приведет к ошибке интерфейса.
e1c:// в точности совпадает с той, что прописана в списке информационных баз 1С.e1cib/.e1c настроены с ключом /URL "%1". Это позволяет передать аргумент запуска непосредственно в запущенный процесс, если параметры соединения совпадают.Попробуйте сменить формат ссылки на e1cib/..., и вы увидите, что 1С перестанет навязчиво открывать окно запуска, а вместо этого переключится на нужный документ прямо в текущем рабочем окне!