Для объекта была создана деталь. Можно ли блокировать кнопку Добавить (или скрывать ее) в зависимости от определенного условия?
Нравится
Иван,
Есть 2 метода, которые можно переопределить getAddRecordButtonVisible и getAddRecordButtonEnabled.
Я бы на вашем месте управлял доступностью и переопределил метод getAddRecordButtonEnabled на странице детали.
[javascript]
methods: {
/**
* Возвращает доступность кнопки добавления записи.
* overriden
* @returns {boolean}
*/
getAddRecordButtonEnabled: function () {
return (2 == 5);
}
},
[/javascript]
Добрый день.
Скрытие кнопки можно реализовать следующим образом:
В схеме детали, в разделе diff, добавить следующее:
[javascript]
{
"operation": "remove",
"name": "addRecordButton"
}
[/javascript]
Дмитрий, попробовал добавить метод на страницу детали, но кнопка по прежнему остается активной.
Юрий, такой подход, вероятно, не подойдет, потому что блокировать необходимо при некотором условии.
"Пажуков Иван Александрович" написал: getAddRecordButtonEnabled: function () {
return (2 == 5);
}
Иван,
Можете скинуть скрипт страницы, на которую вы добавляете переопределение метода?
Иван,
Вы изменяете страницу редактирования сущности "UsrNomMeterValues", а замещать метод нужно на странице детали данной сущности.
Поместил на страницу детали, результат тот же.
detailscript.txt
Иван, добрый день!
Во вложении пример замещающей схемы детали. Результат выглядит следующим образом:
![]()
disableaddbutton.txt
После сохранения схемы необходимо очистить кэш браузера.
А в какой момент эта кнопка будет блокироваться? При открытии страницы? Или при изменении условия во время редактирования/сохранения страницы?
Добрый день!
Подскажите, а как нибудь можно сделать, чтобы допустим в контрагентах выводилась кнопка добавления, а например в контактах - нет для сервисных договоров при рабочее месте общее
Это схема ServicePactRecipientsDetail, там в одной функции как раз проверяют, контакт или контрагент, а в другой — показывают или скрывают кнопку добавления (по другой причине). Вам нужно переопределить вторую функцию, добавить логику, подобную той, что в первой:
/**
* @inheritdoc Terrasoft.BaseManyToManyGridDetail#getSchemaInsertQuery
* @overridden
*/
getSchemaInsertQuery: function() {
var insert = this.callParent(arguments);
var detailColumnName = this.get("DetailColumnName");
if (detailColumnName) {
var detailColumnType = detailColumnName === "Contact" ?
ServiceDeskConstants.ServiceObjectType.Contact :
ServiceDeskConstants.ServiceObjectType.Account;
insert.setParameterValue("Type", detailColumnType,
this.Terrasoft.DataValueType.GUID);
}
return insert;
},
/**
* @inheritDoc Terrasoft.BaseGridDetailV2#getAddRecordButtonVisible
* @overridden
*/
getAddRecordButtonVisible: function() {
return !Terrasoft.isCurrentUserSsp() && this.callParent(arguments);
},