Как сообщить ссылку на сервере с возможностью перехода по ней в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Рассмотрим частую задачу: в процедуре &НаСервере мы программно создаем новый документ (например, заказ поставщику) и хотим вывести об этом оповещение пользователю. При этом нужно, чтобы всплывающее сообщение не было обычным текстом, а содержало интерактивную ссылку для моментального перехода в созданный объект. Разберем по шагам, почему обычный текстовый вывод не работает и как правильно реализовать кликабельное оповещение.

Почему стандартный вывод текста не дает результата?

Если мы просто выводим текст через конкатенацию вроде Сообщение.Текст = "Записан:" + СокрЛП(ЗакПостНовый); или используем устаревший метод Сообщить(), система сформирует обычную строку. Серверный контекст не предназначен для прямого управления интерфейсом, поэтому ссылка остается текстом без возможности перехода. Выясним причину и проанализируем несколько правильных подходов к решению.

Способ 1: Правильная передача управления на клиент (Рекомендуемый)

Самый корректный и надежный способ — это разделить логику. На сервере мы создаем объект и записываем его, а затем возвращаем ссылку обратно на клиент. На клиенте мы уже используем интерфейсные методы. Посмотрим на пример, как это реализовать:


&НаСервере
Функция СоздатьДокументНаСервере()
    ЗакПостНовый = Документы.ЗаказПоставщику.СоздатьДокумент();
    ЗакПостНовый.Дата = ТекущаяДата();
    // ... заполнение необходимых реквизитов ...
    ЗакПостНовый.Записать();
    
    // Возвращаем ссылку на клиент
    Возврат ЗакПостНовый.Ссылка;
КонецФункции

&НаКлиенте
Процедура СоздатьИПоказатьДокумент(Команда)
    // Получаем ссылку с сервера
    СсылкаНаНовыйДокумент = СоздатьДокументНаСервере();
    
    // Получаем навигационную ссылку для перехода
    НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(СсылкаНаНовыйДокумент);
    
    // Выводим кликабельное оповещение
    ПоказатьОповещениеПользователя(
        "Документ успешно создан!", 
        НавигационнаяСсылка, 
        Строка(СсылкаНаНовыйДокумент)
    );
КонецПроцедуры

В данном случае, когда пользователь нажмет на всплывающее окно оповещения, 1С автоматически выполнит переход и откроет форму созданного документа, а само окно оповещения будет закрыто. В качестве альтернативы штатным оповещениям можно использовать инструмент для вывода уведомлений 1С в центр уведомлений Windows.

Способ 2: Использование объекта СообщениеПользователю

Разберем еще один встроенный инструмент — СообщениеПользователю. Чтобы сообщение в панели сообщений стало кликабельным, недостаточно просто задать текст. Обязательно нужно заполнить свойство КлючДанных.

Проанализируем пример кода на сервере:


&НаСервере
Процедура ОповеститьОСоздании(ДокументСсылка)
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Создан новый заказ: " + Строка(ДокументСсылка);
    
    // Именно это свойство делает ссылку интерактивной
    Сообщение.КлючДанных = ДокументСсылка; 
    
    Сообщение.Сообщить();
КонецПроцедуры

Важно: для более точного позиционирования (если на открытой форме есть реквизит, связанный с этим документом), желательно также заполнять свойство Поле. Также стоит учитывать ограничение: если этот код выполняется в фоновом задании, обычные сообщения пользователь не увидит, пока не будет реализован специальный механизм получения сообщений из фона.

Способ 3: Использование Системы взаимодействия

Если процесс создания документа длительный или происходит в фоновом режиме, рассмотрим применение Системы взаимодействия. Это мощный инструмент, который позволяет отправить уведомление прямо во внутренний мессенджер платформы.

  1. Создаем сообщение с помощью метода СистемаВзаимодействия.СоздатьСообщение().
  2. Адресуем его конкретному пользователю или группе (например, инициатору задачи).
  3. К сообщению прикрепляем данные — саму ссылку на созданный заказ поставщику.

Преимущество этого метода в том, что пользователь получит оповещение в виде новой задачи. Он сможет в любой момент кликнуть по ссылке в истории обсуждений и перейти в документ, даже если во время его создания работал совершенно с другим разделом программы.

Итоги

Мы подробно разобрали основные механизмы формирования интерактивных ссылок. Для моментального отклика в рамках текущего окна лучше всего использовать возврат ссылки на клиент и вызов ПоказатьОповещениеПользователя. Если нужно привязать сообщение к элементам формы, используйте СообщениеПользователю с заполненным ключом данных. А для отложенных или фоновых задач отлично подойдет Система взаимодействия.

← На главную