Добрый день!
Необходимо реализовать в разделе Лиды в карточке Лида разделение поля "ФИО контакта" на 3 отдельных поля "Фамилия", "Имя" и "Отчество".
В мастере разделов я добавил 3 новых поля и хочу сделать стандартное поле "ФИО контакта" скрытым, но чтоб не переделывать логику работы карточек, думаю при сохранении Лида записывать значения полей фамиля+имя+отчество в поле "ФИО контакта"
Подскажите, пожалуйста, нормальное будет такое решение? И как можно реализовать автоматическое сохранение?
Я пока только разбираюсь в системе и её документации, нужной информации пока не нашел.
Нравится
Сделать поле ФИО контакта вычисляемым полем. статья https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vychislyaemyh-poley
по аналогии делал для поля Название в разделе конфигурации:
attributes: {
"Name": {
dataValueType: Terrasoft.DataValueType.STRING,
dependencies: [
{
columns: ["Type", "Model", "EPMManufacturer"],
methodName: "generateNewName"
}
]
}
},
methods: {
onEntityInitialized: function() {
this.callParent(arguments);
this.generateNewName();
},
generateNewName: function() {
var sType = Ext.isEmpty(this.get("Type"))
? ""
: this.get("Type").displayValue ;
var sModel = Ext.isEmpty(this.get("Model"))
? ""
: " " + this.get("Model").displayValue;
var sEPMManufacturer = Ext.isEmpty(this.get("EPMManufacturer"))
? ""
: " " + this.get("EPMManufacturer").displayValue;
var result = sType + sEPMManufacturer + sModel;
this.set("Name", result);
}
}
Сделать поле ФИО контакта вычисляемым полем. статья https://academy.terrasoft.ru/documents/technic-sdk/7-15/dobavlenie-vychislyaemyh-poley
по аналогии делал для поля Название в разделе конфигурации:
attributes: {
"Name": {
dataValueType: Terrasoft.DataValueType.STRING,
dependencies: [
{
columns: ["Type", "Model", "EPMManufacturer"],
methodName: "generateNewName"
}
]
}
},
methods: {
onEntityInitialized: function() {
this.callParent(arguments);
this.generateNewName();
},
generateNewName: function() {
var sType = Ext.isEmpty(this.get("Type"))
? ""
: this.get("Type").displayValue ;
var sModel = Ext.isEmpty(this.get("Model"))
? ""
: " " + this.get("Model").displayValue;
var sEPMManufacturer = Ext.isEmpty(this.get("EPMManufacturer"))
? ""
: " " + this.get("EPMManufacturer").displayValue;
var result = sType + sEPMManufacturer + sModel;
this.set("Name", result);
}
}
Алексей Следь,
Спасибо большое!
В итоге получился вот такой код:
attributes: {
"Contact": {
dataValueType: Terrasoft.DataValueType.TEXT,
dependencies: [
{
columns: ["UsrLastName", "UsrFirstName", "UsrMiddleName"],
methodName: "calculateContact"
}
]
}
},
modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
methods: {
onEntityInitialized: function() {
this.callParent(arguments);
this.calculateContact();
},
calculateContact: function() {
var sLastname = Ext.isEmpty(this.get("UsrLastName"))
? ""
: this.get("UsrLastName");
var sFirstname = Ext.isEmpty(this.get("UsrFirstName"))
? ""
: this.get("UsrFirstName");
var sMiddlename = Ext.isEmpty(this.get("UsrMiddleName"))
? ""
: this.get("UsrMiddleName");
var result = sLastname + " " + sFirstname + " " + sMiddlename;
this.set("Contact", result);
}
},DisplayValue убрал, так как с ним подставлялось в строку "не найденное значение".
Теперь не понятно, что делать со старыми Лидами делать, где контакт забит одной строкой, а разделенные поля фамилия, имя, отчество не заполнены.. Я там понимаю, что нужно сделать дополнительную обработку существующих лидов и заполнить значения разделив поле Контакт.. Только как это сделать лучше и в какую сторону копать не знаю. Можете подсказать? Может через БП или напрямую через SQL?
Сергей Бер пишет:
Может через БП или напрямую через SQL?
Без разницы - оба варианта подойдут. Реализуйте тот способ, что для Вас проще.
Если на объекте лида есть какая-то логика во встроенном или отдельном БП, уже завязанная на изменение названия, то при изменении поля при помощи SQL-запроса привязанное событие не запустится, это на всякий случай нужно учитывать.
Сергей Бер пишет:
DisplayValue убрал, так как с ним подставлялось в строку "не найденное значение".
да, забыл предупредить. У меня это поля справочники. Поэтому я использую displayValue.