Возникла необходимость редактирования детали "Средства связи" в разделе контакты. Через мастер деталей это невозможно, т.к деталь неизменяема. Остается вариант с изменением исходного кода. Как можно заместить/редактировать необходимый модуль? В частности необходимо изменить код (или заместить на другой модуль) в модуле ContactCommunicationDetailV2.
Нравится
Доброе утро.
Как показывает практика, в таких случаях лучше реализовать свою деталь и подключить её вместо базовой.
Реализовать новую деталь можете через мастер, а вносить уже все необходимые в неё изменения в конфигурации.
Алла Савельева,
Спасибо за ответ! И все таки: каким образом будет грамотнее заменить существующий клиентский модуль на кастомный? С сохранением ключевых зависимостей, но изменением кода.
Тимур Макаев,
Возможны оба варианта: иногда нужно сохранить ключевые зависимости, иногда - нет.
Также возможен вариант, когда лучшим решением будет сделать свою таблицу и на её основании разрабатывать требуемую логику.
А чтобы отобразить уже внесенные данные, их можно перенести в новую таблицу с помощью запросов на уровне базы данных.
Всё зависит от того, насколько сильно будет изменена базовая логика.
Создаем новый модуль, например:
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*/ }; });
Естественно делаем все на свой страх и риск.