Вопрос

Можно ли заблокировать кнопку Добавить у детали?

Для объекта была создана деталь. Можно ли блокировать кнопку Добавить (или скрывать ее) в зависимости от определенного условия?

У меня такой же вопрос

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

Иван,

Есть 2 метода, которые можно переопределить getAddRecordButtonVisible и getAddRecordButtonEnabled.

Я бы на вашем месте управлял доступностью и переопределил метод getAddRecordButtonEnabled на странице детали.

        methods: {
            /**
             * Возвращает доступность кнопки добавления записи.
             * overriden
             * @returns {boolean}
             */
            getAddRecordButtonEnabled: function () {
                return (2 == 5);
            }
        },

Добрый день.

Скрытие кнопки можно реализовать следующим образом:
В схеме детали, в разделе diff, добавить следующее:

			{
				"operation": "remove",
				"name": "addRecordButton"
			}

Дмитрий, попробовал добавить метод на страницу детали, но кнопка по прежнему остается активной.

Юрий, такой подход, вероятно, не подойдет, потому что блокировать необходимо при некотором условии.

"Пажуков Иван Александрович" написал:            getAddRecordButtonEnabled: function () {
                return (2 == 5);
            }

Иван,

Можете скинуть скрипт страницы, на которую вы добавляете переопределение метода?

Дмитрий, могу скинуть.
pagescript.txt

Иван,

Вы изменяете страницу редактирования сущности "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);
},

 

Войдите или зарегистрируйтесь, чтобы комментировать