Синхронизация колонок карточки контрагента и детали Средства связи
Всем доброго времени суток.
Версия 7.9 sales.
При создании или изменении, допустим, основного телефона на странице Контрагента (также Контакта и др., но для примера рассмотрим контрагента) у нас создаётся (изменяется) запись на детали Средств связи.
Для других задач (интеграция) пришлось на детали средства связи заменить стандартные колонки телефонов на свои (см. скриншот).
Вопрос - как восстановить синхронизацию между колонками?
В атрибутах схемы AccountPageV2 нашёл вот такой метод:
"dependencies": [
{
"columns": ["Phone"],
"methodName": "syncEntityWithCommunicationDetail"
}
]
},
Этого метода не могу найти в схемах. Кроме того, есть и обратная синхронизация при изменении телефона на детали.
Как настроить связь?
Нравится
Вроде нашёл, что где-то есть таблица соответствия типов:
[javascript]
var typeId = config.communicationTypeId ||
this.getMappingValue("CommunicationType", "MasterEntityColumn", config.syncColumnName);
[/javascript]
[javascript]
getMappingValue: function(getParamName, byParamName, byParamValue) {
byParamValue = byParamValue.value || byParamValue;
var masterDetailColumnMapping = this.get("MasterDetailColumnMapping");
var typeMapping = this.Ext.Array.findBy(masterDetailColumnMapping, function(item) {
return item[byParamName] === byParamValue;
});
return typeMapping ? typeMapping[getParamName] : "";
},
[/javascript]
Соответственно, вопрос получается - где следует её искать, и можно ли добавить свои изменения?
Здравствуйте,
Метод syncEntityWithCommunicationDetail находится в схеме: CommunicationSynchronizerMixin в пакете NUI. Метод публикует сообщение, которое слушает схема базовой детали комуникаций и вызывается метод который вы нашли: syncMasterEntityWithDetail. Таблица же соответствия типов, это не таблица, а атрибут MasterDetailColumnMapping который заполняется для каждой из типов детали средств связи, методом initMasterDetailColumnMapping
Посмотрите пакет NUI, схему: AccountCommunicationDetail там в этом методе вы увидите:
[javascript]
initMasterDetailColumnMapping: function() {
this.set("MasterDetailColumnMapping",[
{
"CommunicationType": ConfigurationConstants.CommunicationTypes.MainPhone,
"MasterEntityColumn": "Phone"
},
{
"CommunicationType": ConfigurationConstants.CommunicationTypes.AdditionalPhone,
"MasterEntityColumn": "AdditionalPhone"
},
{
"CommunicationType": ConfigurationConstants.CommunicationTypes.Fax,
"MasterEntityColumn": "Fax"
},
{
"CommunicationType": ConfigurationConstants.CommunicationTypes.Web,
"MasterEntityColumn": "Web"
}
]);
}
[/javascript]
Вот этот метод вам и нужно переопределить еще в замещающей схеме детали средств связи контрагента. Указав там свои зависимости.