Редактирование/Замещение клиентского модуля

Возникла необходимость редактирования детали "Средства связи" в разделе контакты.  Через мастер деталей это невозможно, т.к деталь неизменяема. Остается вариант с изменением исходного кода. Как можно заместить/редактировать необходимый модуль? В частности необходимо изменить код (или заместить на другой модуль) в модуле ContactCommunicationDetailV2.  

Нравится

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

Доброе утро.

 

Как показывает практика, в таких случаях лучше реализовать свою деталь и подключить её вместо базовой.

Реализовать новую деталь можете через мастер, а вносить уже все необходимые в неё изменения в конфигурации.

 Алла Савельева,

Спасибо за ответ! И все таки: каким образом будет грамотнее заменить существующий клиентский модуль  на кастомный? С сохранением ключевых зависимостей, но изменением кода.

Тимур Макаев,

 

Возможны оба варианта: иногда нужно сохранить ключевые зависимости, иногда - нет.

Также возможен вариант, когда лучшим решением будет сделать свою таблицу и на её основании разрабатывать требуемую логику.

А чтобы отобразить уже внесенные данные, их можно перенести в новую таблицу с помощью запросов на уровне базы данных.

Всё зависит от того, насколько сильно будет изменена базовая логика.

Создаем новый модуль, например:

define("UsrBaseCommunicationViewModel", ["ext-base",
	"terrasoft", "UsrBaseCommunicationViewModelResources",
	"BaseCommunicationViewModel",],
	function(Ext, Terrasoft, resources, BaseCommunicationViewModel) {
		Ext.define("Terrasoft.configuration.UsrBaseCommunicationViewModel", {
			extend: "Terrasoft.BaseCommunicationViewModel",
			alternateClassName: "Terrasoft.UsrBaseCommunicationViewModel",
			methodName: function(value) { //метод, который нужно заместить в базовой логике
 
			},
		});
	});

Подключаем этот модуль в базовую деталь (создав замещающую страницу):

define("BaseCommunicationDetail", ["UsrBaseCommunicationViewModel"], function(UsrBaseCommunicationViewModel) {
	return {
		attributes: {
		},
		methods: {
			init: function(callback, scope) {
				this.set("BaseCommunicationViewModelClassName", "Terrasoft.UsrBaseCommunicationViewModel");
				this.callParent(arguments);
			},
		},
		diff: /**SCHEMA_DIFF*/[
		]/**SCHEMA_DIFF*/
	};
});

Естественно делаем все на свой страх и риск.

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