Вопрос

Здравствуйте, возможно ли открыть страницу записи детали по 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;
    			}

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

    Войдите или зарегистрируйтесь, чтобы комментировать