Вопрос

Формирование значения поля по другим значениям

добрый день.

Нигде не смог найти пример на формирование значения поля на основании других полей.

Например для конфигурационной единицы. Автоматически генерировать Название КЕ по формуле Тип КЕ + Производитель КЕ (собственное поле) + Модель КЕ. 

Как вариант повесить БП и после создания КЕ автоматически делать название, но лучше, чтобы пользователь видел результат еще до сохранения КЕ.

Подскажите в каком направлении идти.

Нравится

3 комментария
Лучший ответ

Это можно сделать с помощью зависимостей атрибутов. Более подробно посмотрите пример настройки вычисляемого поля на Академии.

Исходя из Ваших требований, вариант с БП не подойдет.

Это можно сделать с помощью зависимостей атрибутов. Более подробно посмотрите пример настройки вычисляемого поля на Академии.

Исходя из Ваших требований, вариант с БП не подойдет.

Что не работает. Сделал как описано в примере. Для начала решил сделать просто заполнение текстовым значением, потом переделать на заполнение значениями из справочника. Но даже так поле не заполняется. Что не так сделал?

define("ConfItemPage", [], function() {
	return {
		entitySchemaName: "ConfItem",
		attributes: {
			"EpmName": {
				dataValueType: Terrasoft.DataValueType.TEXT,
				dependencies: [
					{
						columns: ["TypeId", "ModelId", "EPMManufacturerId", "Name"],
						methodName: "generateNewName"
					}
					]
			}
		},
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				this.generateNewName();
			},
			generateNewName: function() {
				var result = this.get("Name") + " Hello word!";
				this.set("EpmName", result);
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "EpmName",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 5,
						"layoutName": "Header"
					},
					"bindTo": "EPMName",
					"labelConfig": {
						"caption": {
							"bindTo": "Resources.Strings.EpmNameCaption"
						}
					},
					"enabled": true
				},
				"parentName": "Header",
				"propertyName": "items"
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Разобрался. 

В разделе attributes указывается поле страницы Оно у меня записано как EmpName

А вот в методе в строке this.set("EPMName", result); надо писать уже имя поля куда сохраняем значение bindTo. У меня было записано как имя поля EpmName.  А такого поля в схеме нет. Поменял на EPMName или все заработало.

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