Технические вопросы
7.x

Синхронизация колонок карточки контрагента и детали Средства связи

Всем доброго времени суток.

Версия 7.9 sales.

При создании или изменении, допустим, основного телефона на странице Контрагента (также Контакта и др., но для примера рассмотрим контрагента) у нас создаётся (изменяется) запись на детали Средств связи.

Для других задач (интеграция) пришлось на детали средства связи заменить стандартные колонки телефонов на свои (см. скриншот).

Вопрос - как восстановить синхронизацию между колонками?

В атрибутах схемы AccountPageV2 нашёл вот такой метод:

"Phone": {
        "dependencies": [
                {
                        "columns": ["Phone"],
                        "methodName": "syncEntityWithCommunicationDetail"
                }
        ]
},

Этого метода не могу найти в схемах. Кроме того, есть и обратная синхронизация при изменении телефона на детали.

Как настроить связь?

Нравится

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

Вроде нашёл, что где-то есть таблица соответствия типов:

[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]

Вот этот метод вам и нужно переопределить еще в замещающей схеме детали средств связи контрагента. Указав там свои зависимости.

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