Доброго времени суток, коллеги!
И, в продолжение Темы звонков мы с Вами будем модернизировать этот замечательный функционал!

Как было замечено, по клику на «ссылку позвонить», в карточку звонка не подтягиваются данные контакта из карточки контакта. Требуется небольшая доработка, чтобы это исправить. Но, хочу заметить, что это не является ошибкой, просто данный функционал не предусматривался в коробочной версии при работе с ссылками типа calltonumber. Изначально совершение звонка передавалось в программу для звонков по умолчанию на уровне операционной системы, а это может быть что угодно - и скайп, и телефония.

Для реализации поставленной цели, запустим Terrasoft Administrator. Откроем сервис Common\Library\CommunicationActionSmartTag\scr_CommunicationActionSmartTag и найдем в нем функцию HandleCommunicationActionSmartTag().

В указанную функцию следует добавить следующие изменения:

  1. Строка var dlDataDataset = ParentWindow.ComponentsByName('dlData').Dataset;
  2. Переменная dlDataDataset в принимаемые параметры функции ProcessCommunicationAction()

        var DataControl = ParentWindow.ComponentsByName(ActionMenuItem.Tag);
        //added current Dataset value
        var dlDataDataset = ParentWindow.ComponentsByName('dlData').Dataset;
        ProcessCommunicationAction(DataControl.DataField.Tag,
                DataControl.DataField.Value,dlDataDataset);

handlecommunicationactionsmarttag_0.png

Затем, в этом же сервисе, следующая функция ProcessCommunicationAction():

  1. В объявление функции добавьте принимаемый параметр Dataset
  2. Условие if (Assigned(Dataset)) { Params.Dataset = Dataset; }

// add dataset to Params Array
                if (Assigned(Dataset)) {
                        Params.Dataset = Dataset;
                }
// -------------------------

processcommunicationaction.png

После этого, перейдите к сервису Common\Library\scr_HyperlinkUtils, найдите функцию HyperlinkCallToNumber() и внесите в нее изменения:

// Добавляем значения карточки звонка по умолчанию.
      var USI = ExtractUSICodeEx(Params.Dataset.USI);
      if (USI  == 'ds_Contact') {
            DefaultValues('ContactID') = Params.Dataset('ID');
            DefaultValues('AccountID') = Params.Dataset('AccountID');
            }

hyperlinkcalltonumber.png

Сохраните изменения, проверьте работу.
Логика работы в условии if, переведенная здесь чуть выше - примерная. Измените ее по своему Вкусу, в зависимости какой USI датасета Вы получаете.

Нравится

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