Вопрос

Логика страницы редактирования продукта в редактируемом реестре детали

Добрый день!

Есть настроенная страница редактирования продукта. Где то вычитал (уже не найду) что она транслируется на деталь с реестром. Так ли это на самом деле или все надо дублировать в схеме детали? Если да, то в моем случае на странице запрещенные для редактирование поля в детали доступны для редактирования. При выборе справочного поля изменялись зависимые поля, в реестре нет. 

Нравится

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

Руслан, не совсем понял, как у Вас связаны деталь и карточка и где что вычитали, но, вероятнее всего, это разные сущности, их логика между собой не связана, скрипты в карточке работают только в ней, аналогично и со схемой детали. Для запрета редактирования полей можно воспользоваться правами доступа на поля для роли «Все пользователи». 

Да, на самом деле не могу найти описание, опытным путем вывел, что колонки в детали пересчитываются по алгоритму заданному на странице редактирования. Это правило работает для числовых полей, а для справочного поля нет, т.е. настроенные фильтры и методы не работают.

Для числовых полей не бывает фильтрации, а их значения вычисляют на уровне или встроенных БП объекта, или отдельных БП, или вообще какой-то внешней по отношению к объекту логикой. Но если значение числового поля в открытой карточке вычислили и изменили на уровне скриптов карточки, а затем сохранили её, то новое числовое значение попадёт в базу и при открытии или обновлении страницы реестра отобразится уже оно.

Видимо я выразился неточно. Имел ввиду что настроенные фильтры и методы для справочника на странице редактирования не применяются в детали, хотя методы расчетов по числовым полям, настроенные на странице, работают в детали.

Страница карточки (например, AccountPageV2) и детали (например, AccountRelationshipDetailV2) задаются в разных схемах со своей логикой и связаны с разными объектами и их таблицами в базе.

Александр, в моем случае это OpportunityProductPageV2 и OpportunityProductDetailV2. 

Это не меняет сути.

Подскажите, пожалуйста, Александр, где прописана логика расчета стоимости продукта для детали OpportunityProductDetailV2. Я в схеме детали не вижу методов расчета суммы. Они есть в схеме страницы детали OpportunityProductPageV2. Я считал что метод расчета колонок берется из страницы детали.

Вероятно, во встроенном БП объекта OpportunityProductInterest в скрипте CalckOpportunityAmountAfterSevedScriptTask и вызываемой им функции CalckOpportunityAmount.

Видимо так и есть. Туда я еще не заглядывал. Я ошибочно предположил что пересчет происходит по методам страницы добавления записи детали OpportunityProductPageV2, т.к. нашел в нем код который пересчитывает сумму

recalculateAmount: function() {
	var price = this.get("Price");
	var quantity = this.get("Quantity");
	if (price && quantity) {
		this.set("Amount", price * quantity);
	}
}

 

К тому же бизнес-правила на странице добавления продукта работают и для детали. Почему же тогда на справочные поля (при редактировании детали в реестре) не накладываются фильтры, которые указаны в OpportunityProductPageV2? 

Карточка и деталь — две разных страницы со своей логикой. Бизнес-правила можно настроить в мастере раздела. Приведенный Вами код пересчёта суммы используется, чтобы она считалась прямо в открытой карточке ещё до сохранения.

Подскажите, пожалуйста, Александр, как настроить фильтр для справочного поля в детали редактируемой в реестре. 

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