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

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

Версия 7.9 sales.

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

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

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

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

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

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

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

Нравится

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

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

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"
					}
				]);
			}

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

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