Доброго времени суток!



Проблема заключается в следующем:

Расположено две одинаковые детали на одной странице редактирования на разных табах. 

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



 

attributes: {
	"isEngineeringDivision": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"value": true
	},
	"isNotEngineeringDivision": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"value": true
	}
}
methods: {
	init: function() {
		this.callParent(arguments);
		this.checkEnabledButton();
	},
 
	checkEnabledButton: function() {
		this.sandbox.publish("checkUserInAuPublish", null, ["checkUserInAuPublish"]);
		this.sandbox.subscribe("checkUserInAU", function(result) {
			this.set("isEngineeringDivision", result);
			this.set("isNotEngineeringDivision", result === true ? false : true);
		}, this, ["checkUserInAU"]);
	}
},

 

Нравится

4 комментария

Попробуйте по-другому объявить эти детали в блоке details.

Вот аналогичный пример:

            "SamplesDetail": {

                "schemaName": "SampleInKitDetailV2",

                "entitySchemaName": "BTSample",

                "filter": {

                    "detailColumn": "BTKitIDLookup",

                    "masterColumn": "Id"

                },

                "defaultValues": {

                    "BTKitIDLookup": {

                        "masterColumn": "Id"

                    },

                    "BTFromSupply": false

                },

                "filterMethod": "samplesFilter",

               "profileKey": "PatientParametersDetail1"

            },

 

Метод фильтрации в данном случае выглядит так:

            samplesFilterMethod: function(kitId, isSupply) {

                var filterGroup = new Terrasoft.createFilterGroup();

                filterGroup.add("KitId", Terrasoft.createColumnFilterWithParameter(

                    Terrasoft.ComparisonType.EQUAL, "BTKitIDLookup", kitId));

                filterGroup.add("SamplesIsSupply", Terrasoft.createColumnFilterWithParameter(

                    Terrasoft.ComparisonType.EQUAL, "BTFromSupply", isSupply));

                return filterGroup;

            },

Обратите внимание, что в ситуации, если на разные табы добавляется одна и та же деталь, нужно добавить свойство "profileKey" и оно должно отличаться у одинаковых деталей.

Однако в такой ситуации служба поддержки рекомендует создавать разные детали.

К сожалению это не помогло

В данный момент детали зависят от разных схем, которые наследуются от одной общей ActivityDetailV2

Добавлены как две разные

Результат один и тот же

 

Попробуйте отладиться.

Уточните, возникают ли какие-то ошибки в консоли?

Также сделайте скриншот, чтобы было понятно, что отображается в первом табе и не отображается во втором.

Алла Савельева,

Нет, все проходит без ошибок, единственное, что результат выполнения не записывается в атрибут, либо же не срабатывает visible и enabled при повторной инициализации детали 

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

При биндинеге значения поля или его свойства на метод, последний вызывается при инициализации соответствующего значения.
Можно ли в последующем как либо в коде инициализировать его повторно, т.е. заставить биндинг поля отработать снова.
(Обходные пути через бизнес-правила и биндинг на атрибут мне известны).
Но если бы можно было скажем повторно инициализировать целевое свойство или значение целевого поля - это было бы более лаконичным решением, без "оверхеда" по сущностям и коду.
А так же открыло бы возможность осуществлять псевдо-реактивную привязку данных, без переработки существующих схем, просто инициализируя их повторно в нужный момент в собственной "бизнес-логике"

Нравится

1 комментарий

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

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