Рассмотрим реализацию функционала на конкретном примере.Видоизменяем карточку контакта для собственных нужд: создаем отдельные поля "Фамилия", "Имя", "Отчество". Но также оставляем поле "ФИО", которое должно заполняться автоматически на основании суммы значений в вышеуказанных полях.

Для реализации подобного функционала во-первых, требуется создать функцию, которая будет заполнять поле ФИО. Эту функцию можно создать вначале скрипта, в котором будет обработчик события OnDatasetDataChange:

function CreateName(Dataset) {
var FirstName = Dataset.Values('FirstName');
FirstName = (IsEmptyValue(FirstName) ? '' : ' ' + FirstName);
var Surname = Dataset.Values('Surname');
Surname = (IsEmptyValue(Surname) ? '' : Surname);
var PatronymicName = Dataset.Values('PatronymicName');
PatronymicName = (IsEmptyValue(PatronymicName) ? '' : ' ' + PatronymicName);
Dataset.Values('Name') = Surname + FirstName + PatronymicName;
}

Затем на событии OnDatasetDataChange датасета необходимо для каждого из полей вызывать созданную предварительно функцию:

function SelfOnDatasetDataChange(DataField) {
var Dataset = DataField.ParentDataFields.ParentDataset;
if (DataField.Name == 'Surname') {
CreateName(Dataset);
return;
}
if (DataField.Name == 'FirstName') {
CreateName(Dataset);
return;
}
if (DataField.Name == 'PatronymicName') {
CreateName(Dataset);
return;
}
if ((Contact.IsUpdating || !Assigned(DataField) ||
(IsEmpty(DataField.Value)))) {
return;
};
}

По аналогии с предоставленным примером Вы можете реализовать функционал по заполнению, например поля "Адрес" в карточках или же каких-либо других полей, в которых должна храниться сумма значений одного или нескольких других полей карточек.

Нравится

Поделиться

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

Всем известно, что в поле "Обращение" должно подставляться имя и отчество. Это логично и это прекрасно реализовано в стандартной версии приложения. Но как быть, если используется английская версия приложения и базу наполняют американцы? Вводишь в поле "Name" John Smith, а в поле "Обращение" подставляется Smith (фамилия), делаешь рассылку с макросом по полю обращения и только потом обнаруживаешь, что тебе делают замечания типа "My name is John"....

Оказывается, для повышения клиенториентированности компании достаточно закомментировать почти все строки одной маленькой функции.

Открою тайну, где это необходимо сделать.Открываем scr_ContactAccountUtils, функция GetDearFromName.
Эта функция должна иметь следующий вид:

f

unction GetDearFromName(ContactName) {
 var NameArray = ContactName.split(' ');
 var Result = '';
 if (NameArray.length 2) {
  return Result;
 }
/* for (var i = 1; i NameArray.length; i++) {
  if (Result != '') {
   Result += ' ';
  }
  Result += NameArray[i];
 }
*/

 Result = NameArray[0];
 return Result;
}

Сохраняем изменения, перезапускаем рабочее приложение Terrasoft CRM.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

3 комментария

Добрый день!
Подскажите, пожалуйста, как реализовать в отчете вывод Фамилии и инициалов контакта, имея стандартное в TS CRM поле ФИО?
Заранее спасибо!

var FIO = 'Иванов Петр Федорович';
var surname = FIO.substr(0, FIO.indexOf(' ')) + ' ';
var d1 = FIO.indexOf(' ');
surname += FIO.substr(d1 + 1, 1) + '. ';
surname += FIO.substr(FIO.indexOf(' ', d1 + 1) + 1, 1) + '.';

surname = 'Иванов П.Ф.'

Спасибо большое! Все работает:smile:

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

Здравствуйте!
Возможно ли как нибудь создать на карточке вкладку, чтобы на эту вкладку вынести необходимые атрибуты?
Если возможно то как это сделать?
С уважением, Гашникова Екатерина

Нравится

3 комментария

Добрый день, Екатерина.

Конечно, создать вкладку на карточке можно, для этого нужно использовать компонент PageControl и создать внутри него нужное количество страниц (Page).

Спасибо за ответ!
Только у меня этот компонент называется Pages.

Да, конечно, это Pages, в предыдущий ответ закралась ошибка :)
Если возникнут вопросы, всегда рад помочь.

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