Здравствуйте, возможно ли открыть страницу записи детали по URL ссылке, используя Id записи?

Проблема, на странице редактирования "Контакта" есть деталь, хотелось бы получить url записей этой детали, при открытии детали в адресной строке браузера по прежнему такое 

http://[someSite]/Nui/ViewModule.aspx#CardModuleV2/ContactPageV2/edit/a36a54a2-3c6c-44eb-aa2f-a7e75305270a , 

не url детали.

Спасибо

Нравится

2 комментария
Лучший ответ

Добрый день!
Да, BPM не меняет адрес в адресной строке.
Адрес записи детали будет следующим:
ttp://[someSite]/Nui/ViewModule.aspx#CardModuleV2/[Страница редактирования записи детали]/edit/[Id записи детали]

Добрый день!
Да, BPM не меняет адрес в адресной строке.
Адрес записи детали будет следующим:
ttp://[someSite]/Nui/ViewModule.aspx#CardModuleV2/[Страница редактирования записи детали]/edit/[Id записи детали]

Сидоров Александр В.,

Спасибо, так раньше пробовал не получилось, оказалось одна буква была не в том регистре.

Показать все комментарии

Коллеги,

Еще один маленький вопросик: Есть ли возможность создать ссылку на запись в Террасофт в отчете FastReport?

Как сформировать строку вида Открыть, чтобы это ушло в рассылку из джоба в БД и открылось из письма - ясно, а вот как то же самое сделать в FR - не очень... (чтобы это потом работало после экспорта в PDF, Word, Excel)

Спасибо!

Нравится

6 комментариев

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

Прежде всего скопируйте ссылку на объект Terrasoft вида: terrasoft://goto/wnd_IncidentsWorkspace/{552428BE-388C-4D83-9048-620884657FB7} . Для этого в клиентском приложении Terrasoft на нужной записи нажмите правой кнопкой мыши и нажмите "Скопировать ссылку".
После этого, выделите объект FastReport, где находится Ваша строка (к примеру "Кликни на меня!") и в свойство URL добавьте ссылку на объект Terrasoft.

Данная ссылка будет работать в отчете FastReport, однако, после экспорта отчета в Word, Excel, PDF она, естественно работать не будет, так как будет экспортирована как текст.

Можно также попробовать установить свойство AllowHTMLTags объекта FastReport значение true, после чего добавить текст вида

<a href="terrasoft://goto/wnd_IncidentsWorkspace/{552428BE-388C-4D83-9048-620884657FB7}"> CLick me! </a>

, однако я не могу гарантировать что отчет FastReport "поймет" этот HTML Tag.

Спасибо, Дмитрий,

AllowHTMLTags не поможет, он понимает только таги форматирования текста...
Вот то то и плохо, что после экспорта ссылки не работают...

К сожалению, это особенность работы FartReport - т.е. даже ссылки вида http://ya.ru в свойстве URL, после экспорта в Word не распознаются.

Начиная с FastReport 4.12 в отчетах введена поддержка активных ссылок, так что после выпуска Terrasoft 3.4.1 можно будет пользоваться такой возможностью

Михаил, начиная с какой версии 3.4.1? У меня в 3.4.1.145 ссылки в FastReport так и не работают.

Добрый день!

Опишите пожалуйста, каким образом вы пытаетесь вставлять в отчёт гиперссылки? Мне удалось это сделать с помощью контрола RichText object. При этом ссылки отлично работают при экспорте в RTF.
Последовательность действий следующая:
1. Добавляем контрол RichText object в тело отчёта
RichText

2. В редактор контрала, нужно вставить подготовленную гиперссылку, например скопированную из MS Word, т.к. RichText работает с данным в формате RTF
RichText

3. При формировании отчёта и экспорте его в формат RTF (для отображения/редактирования в MS Word), получаем рабочую гиперссылку
MS Word

Механизм проверенно работает как на актуальной версии бинарных файлов (3.4.1.165), так и на 3.4.1.145

Показать все комментарии

Всем привет!

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

Поскольку на комюнити по этому поводу ничего конкретно не нашел - решил поделится.

В системе есть сервис scr_HyperlinkUtils, который и отвечает за этот функционал. Поскольку там много всего перейду к самому главному - как сделать ссылку.

Есть конструкция:

#[Link;%1:;//%1:ID]#, где

  1. - Название макроса соответствующего поля
  2. - Одно из действий, которое произойдет по нажатию на ссылку, а именно
  • open - открытие карточки редактирования записи
  • goto - переход к записи в реестре
  • calltonumber - звонок по номеру средствами call-центра системы
  • - название сущности в системе (Инцидент - Incident, Задача - Task и т.д.)
  • Получается, что для решения задачки, которую я описал в начале, нам необходимо:
    Макрос #Номер# заменить на #[Link;%1:Номер;goto/Incident/%1:ID]#

    Нравится

    Поделиться

    20 комментариев

    Не могли бы описать этот механизм подробнее?

    Что значит Макрос #Номер#? Вместо чего нужно подставить номер (или ID в базе) проекта, к которому нужно перейти из письма?

    "Росинская Лена" написал:

    Не могли бы описать этот механизм подробнее?

    Что значит Макрос #Номер#? Вместо чего нужно подставить номер (или ID в базе) проекта, к которому нужно перейти из письма?

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

    пример

    2. При настройке шаблонов сообщений в Террасофте Вы можете добавлять макросы из пользовательского запроса.
    пример2
    В нашем случае мы используем макрос Номер, который в тело письма вставится в формате #Номер#.
    пример3
    И для того, что бы при отправке письма номер отображаемого инцидента стал ссылкой необходимо заменить #Номер# на #[Link;%1:Номер;goto/Incident/%1:ID]#

    видимо, надо изначально написать этот макрос, который в нужное место письма подставляет строку.

    Пытаюсь просто вставить её в письмо - как ссылка не работает. Что я делаю не так? =)
    И можно ли из кода при формировании письма вместо номера подставлять эту строку (чтобы работало как ссылка)?

    Попыталась из кода отправить письмо со строкой
    #[Link;%1:Номер;goto/Opportunities/%1:{ED24FAA0-13E3-423A-BBBF-9C61B58D7FE7}]#

    Не воспринимается как ссылка.

    Елена, здесь, вероятно, дело не в том, что Вы отправляете письмо из кода. Проверьте, верно ли создан шаблон сообщения, а именно:
    - сформирован пользовательский запрос;
    - шаблон сообщения создан с использованием пользовательского запроса;
    - выполнен пункт 2 из ответа Дмитрия (http://www.community.terrasoft.ru/blogs/7544#comment-35998)

    Спасибо, но всё-таки важно то, что письмо отправляется из кода следующим образом:

    var Body = Body + FormatStr("Создал: %1\nДата создания: %2\n\nНазвание проекта: %3\nНаправление: %4\nТочка продаж: %5\nОтветственный: %6",
    Author, DateStr, GetCorrectStringForSendEmail(Title), Direct, Department, Owner);
    var Link = FormatStr("%1", OwnerID)
    Link = '#[Link;%1:Номер;goto/Opportunities/%1:'+ Link+']#';
    Body = Body+Link;

    var SQL = "EXEC msdb.dbo.sp_send_dbmail @profile_name = '%1', ";
    SQL += "@recipients = '%2', @body = '%3', @subject = '%4', @body_format = '%5'";
    var body_format = 'HTML';
    SQL = FormatStr(SQL, ProfileName, AddressStr, Body, Subject, body_format);
    Connector.DBEngine.ExecuteCustomSQL(SQL, System.EmptyValue);

    в формате html. Но текст #[Link;%1:Номер;goto/Opportunities/%1:'+ Link+']# всё так же не распознаётся как ссылка.

    Скрипты, указанные в ответе Дмитрия, не используются (это видно по отладчику).

    Елена,
    при отправке писем через dbMail, с использованием Body_Format="HTML" следует использовать следующий формат ссылки:

    <a href="terrasoft://open/Opportunities/' + CONVERT(NVARCHAR(250),@ID) + '">Перейти</a>

    где
    Open - операция открытия записи
    Goto - переход к записи в реестре

    @ID - ID Продажи (в Вашем случае).

    Это то, что надо. Спасибо!

    Вопрос в продолжение темы: можно ли настроить переход по ссылке к разделу, но так, чтобы фильтр был настроен на по ID записи, а по ContactID, к примеру?

    "Росинская Лена" написал:

    Вопрос в продолжение темы: можно ли настроить переход по ссылке к разделу, но так, чтобы фильтр был настроен на по ID записи, а по ContactID, к примеру?


    Лена, все возможно с Террасофт :smile:
    Вам необходимо будет переопределить метод: HyperlinkGotoWorkspace. То есть в существующий формат передачи ссылок добавить параметр, опредиляющий поле по которому необходимо осуществить фильтрацию.

    terrasoft://goto/wnd_ХХХWorkspace/{b365C4C25-D782-4F14-89DA-1BB5C1D993CA}/ContactID - например.

    А уже в самой функции распарсить сам параметр

    	if (Params.length < 2) {
    		return;
    	}
    	var Module = Params[0];
    	var IDValue = Params[1].replace(/%7b/g, '{').replace(/%7d/, '}');	
    // Опредиляем парамет из строки ссылки
    	var FieldName = Params[2];

    и уже соответственно обработать дальше

    Спасибо за быстрый ответ!

    И ещё один вопрос: можно ли сделать поле в датасете так, чтобы оно являлось ссылкой? Как в письме?

    То есть, к примеру, в текстовом поле написать Перейти

    так, чтобы это воспринималось как ссылка?

    "Росинская Лена" написал:

    Спасибо за быстрый ответ!

    И ещё один вопрос: можно ли сделать поле в датасете так, чтобы оно являлось ссылкой? Как в письме?

    То есть, к примеру, в текстовом поле написать Перейти

    так, чтобы это воспринималось как ссылка?


    Если речь идет о карточке, то я бы лучше сделал кнопку, при нажатии на которую, вычитывал данные из поля в котором указана сформирована ссылка, или же формировал её динамически.

    К сожалению, речь идёт именно о гриде.

    "Росинская Лена" написал:
    можно ли сделать поле в датасете так, чтобы оно являлось ссылкой? Как в письме?

    Если я верно понял, может, так?

    Добрый день, подскажите пожалуйста как правильно сформировать BodyText, чтобы письмо в формате HTML отправлялось со ссылкой?
    Я делаю так :

    BodyText = 'Здравствуйте!/nВы добавлены в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>./n/nЭто сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.'

    На выходе получается следующее письмо:

    Здравствуйте!
    Вы добавлены в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>. 
     
    Это сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.

    Валентин, проверьте, какой формат устанавливается?
    Сам текст Вы формируете правильно, такое ощущение, что формат сообщения текстовый.

    Вот полный вызов процедуры:

    SendEmail({Address:  TeamSelectDataset.Values('eMail'), 
    Subject: 'Вы добавлены в команду проекта!', BodyFormat: 2, 
    HTMLBody: 'Здравствуйте!/nВы <b>добавлены</b> в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>./n/nЭто сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.', 
    AutoSend: true, SendImmediately: true});

    Валентин, завтра проверю корректность формирования BodyText с учетом добавленной Вами процедуры вызова и сообщу результат.

    Валентин, в функции CreateOutlookMessage скрипта scr_OutlookUtils замените блок кода

    if (Params.HTMLBody) {
     Message.BodyFormat = 2;
     Message.Body = Params.HTMLBody;
    			}

    На:

    if (Params.HTMLBody) {
     Message.BodyFormat = 2;
     Message.HTMLBody = Params.HTMLBody;
    			}

    Спасибо! Все получилось.

    Показать все комментарии