Заблокировать от изменений деталь "Средства связи"

Здравствуйте, подскажите как можно заблокировать от изменений деталь "Средства связи" у контакта и контрагента. Добавоение "+" убирается без проблем, про вот изменение типа (выпадающий список) и значения как можно заблокировать?

Нравится

5 комментариев

Александр, тут возможны два подхода: либо модифицировать схему детали ContactCommunicationDetailV2, добавив элементам свойство только для чтения, или AccountCommunicationDetailV2, либо настроить нужным пользователям права доступа только для чтения на объект этой детали. Но в случае последнего подхода нужно помнить, что в объекты разделов Contact и Account во встроенные БП добавлена логика синхронизации с деталью средств связи. Чтобы отсутствие прав не приводило к ошибкам, нужно в своём пакете переопределить функцию SynchronizeCommunication в процессах этих объектов.

Зверев Александр,

первый вариант только на чтение - не выходит заблокировать выпадающий список

Александр, сложно сказать, не зная, что Вы меняли.

Это поле и выпадающий список формируются в ContactCommunicationDetailV2 здесь:

var typeMenuItems = [];
var communicationTypes = this.get("CommunicationTypes");
communicationTypes.each(function(item) {
	var name = item.get("Name");
	var value = item.get("Id");
	typeMenuItems.push({
		id: value,
		caption: name,
		tag: value,
		click: { bindTo: "typeChanged" }
	});
}, this);
var typeButtonConfig = {
	id: "type",
	className: "Terrasoft.Button",
	classes: {
		wrapperClass: ["label-wrap", "detail-type-btn-user-class"],
		textClass: ["detail-type-btn-inner-user-class"]
	},
	style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	selectors: {wrapEl: "#type"},
	caption: {
		bindTo: "CommunicationType",
		bindConfig: { converter: "typedStringValueConverter" }
	},
	menu: { items: typeMenuItems }
};

В случае блокировки можно попробовать сделать список пустым, тогда будет отображаться только нынешнее значение.

Зверев Александр,

Имеете ввиду сделать override модуля, и в функции удалить 

var communicationTypes = this.get("CommunicationTypes");
communicationTypes.each(function(item) {
	var name = item.get("Name");
	var value = item.get("Id");
	typeMenuItems.push({
		id: value,
		caption: name,
		tag: value,
		click: { bindTo: "typeChanged" }
	});
}, this);

 

 

?

Прежде, чем менять, надо сначала ещё проверить в отладке, используется ли в этой версии логика из ContactCommunicationDetailV2 или из ContactCommunicationDetail и BaseCommunicationDetail, созданная для более старого интерфейса.

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