Здравствуйте, подскажите как можно заблокировать от изменений деталь "Средства связи" у контакта и контрагента. Добавоение "+" убирается без проблем, про вот изменение типа (выпадающий список) и значения как можно заблокировать?
Нравится
Александр, тут возможны два подхода: либо модифицировать схему детали 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, созданная для более старого интерфейса.