Синхронизация колонок карточки контрагента и детали Средства связи
Всем доброго времени суток.
Версия 7.9 sales.
При создании или изменении, допустим, основного телефона на странице Контрагента (также Контакта и др., но для примера рассмотрим контрагента) у нас создаётся (изменяется) запись на детали Средств связи.
Для других задач (интеграция) пришлось на детали средства связи заменить стандартные колонки телефонов на свои (см. скриншот).
Вопрос - как восстановить синхронизацию между колонками?
В атрибутах схемы AccountPageV2 нашёл вот такой метод:
"dependencies": [
{
"columns": ["Phone"],
"methodName": "syncEntityWithCommunicationDetail"
}
]
},
Этого метода не могу найти в схемах. Кроме того, есть и обратная синхронизация при изменении телефона на детали.
Как настроить связь?
Нравится
Вроде нашёл, что где-то есть таблица соответствия типов:
var typeId = config.communicationTypeId || this.getMappingValue("CommunicationType", "MasterEntityColumn", config.syncColumnName);
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] : ""; },
Соответственно, вопрос получается - где следует её искать, и можно ли добавить свои изменения?
Здравствуйте,
Метод syncEntityWithCommunicationDetail находится в схеме: CommunicationSynchronizerMixin в пакете NUI. Метод публикует сообщение, которое слушает схема базовой детали комуникаций и вызывается метод который вы нашли: syncMasterEntityWithDetail. Таблица же соответствия типов, это не таблица, а атрибут MasterDetailColumnMapping который заполняется для каждой из типов детали средств связи, методом initMasterDetailColumnMapping
Посмотрите пакет NUI, схему: AccountCommunicationDetail там в этом методе вы увидите:
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" } ]); }
Вот этот метод вам и нужно переопределить еще в замещающей схеме детали средств связи контрагента. Указав там свои зависимости.