Добрый день!
Необходимо реализовать в разделе Лиды в карточке Лида разделение поля "ФИО контакта" на 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.