Вопрос

Указать дату и время на странице через логику в клиентском модуле

На страницу выведено поле с датой и временем, нужно передать в него время из справочника при изменении значения в выпадающем списке. Стандартные js способы new Data(dataCode) не работает

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

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

Добрый день!

А что именно "стандартное" не работает? Какой тип у dataCode? Возможно просто напросто вы не можете создать дату? Так как значение устанавливается просто. Например:

//...
attributes: {
	"SomeDate": {
		"dataValueType": this.Terrasoft.DataValueType.DATE_TIME,
		"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"dependencies": [{
			columns: ["Type"],
			methodName: "setSomeDate"
		}]
	},
	"Type": {
		"lookupListConfig": {
			columns: ["CreatedOn"]
		}
	}
},
//...
methods: {
	setSomeDate: function () {
		var value = (this.get("Type") || {}).CreatedOn || null;
		this.set("SomeDate", value);
	}
}
//...

И Вам, наверное, стоит заглянуть в консоль, там скорее всего ошибка, которая прояснит ситуацию

Добрый день!

А что именно "стандартное" не работает? Какой тип у dataCode? Возможно просто напросто вы не можете создать дату? Так как значение устанавливается просто. Например:

//...
attributes: {
	"SomeDate": {
		"dataValueType": this.Terrasoft.DataValueType.DATE_TIME,
		"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"dependencies": [{
			columns: ["Type"],
			methodName: "setSomeDate"
		}]
	},
	"Type": {
		"lookupListConfig": {
			columns: ["CreatedOn"]
		}
	}
},
//...
methods: {
	setSomeDate: function () {
		var value = (this.get("Type") || {}).CreatedOn || null;
		this.set("SomeDate", value);
	}
}
//...

И Вам, наверное, стоит заглянуть в консоль, там скорее всего ошибка, которая прояснит ситуацию

Лопатин Константин Николаевич,

Ошибке в консоли нет, в том и дело. Мне по факту нужно понимать как в поле с датой положить значение, его формат.

Пробовал this.set("dataColume", new Date(); - не работает, хотя в js даёт текущую дату и время. Так же пробовал из другого поля скопировать дату this.set("date", new Date(this.get("date2").toString()))

И

this.set("date1", this.get("date2"))

Prime Source,

А в каком методе Вы это делаете? По событию? Запрос может быть к базе какой-то выполняете? Контекст верный? Вариант с

this.set("SomeDate", new Date());

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

Лопатин Константин Николаевич,

define("PsPPsPApprovalPuRequests1Page", [], function() {
	return {
		entitySchemaName: "PsPApprovalPuRequests",
		attributes: {
			"PsPDateTimeApproval": {
				dataValueType: Terrasoft.DataValueType.FLOAT,
				dependencies: [
					{
						columns: ["PsPsPMatchResult"],
						methodName: "approvalDate"
					}
				]
			}
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{
			"PsPsPMatchResult": {
				"b7a163a0-228d-4005-bfd3-3d19229a6328": {
					"uId": "b7a163a0-228d-4005-bfd3-3d19229a6328",
					"enabled": true,
					"removed": false,
					"ruleType": 0,
					"property": 1,
					"logical": 0,
					"conditions": [
						{
							"comparisonType": 3,
							"leftExpression": {
								"type": 3,
								"value": "CurrentUserContact",
								"dataValueType": 10
							},
							"rightExpression": {
								"type": 1,
								"attribute": "PsPApprovalMan"
							}
						},
						{
							"comparisonType": 1,
							"leftExpression": {
								"type": 1,
								"attribute": "PsPsPMatchResult"
							}
						}
					]
				}
			},
			"PsPComent": {
				"e39449ef-895f-4341-8133-2e773a4dec7d": {
					"uId": "e39449ef-895f-4341-8133-2e773a4dec7d",
					"enabled": true,
					"removed": false,
					"ruleType": 0,
					"property": 1,
					"logical": 0,
					"conditions": [
						{
							"comparisonType": 3,
							"leftExpression": {
								"type": 3,
								"value": "CurrentUserContact",
								"dataValueType": 10
							},
							"rightExpression": {
								"type": 1,
								"attribute": "PsPApprovalMan"
							}
						}
					]
				}
			}
		}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			approvalDate: function() {
				var matchResult = this.get("PsPsPMatchResult");
				if (matchResult) {
					var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "PsPMatchResult"});
					//esq.addColumn("PsPTimeLimit", "PsPTimeLimit");
					debugger;
					esq.getEntity(matchResult.value, function(result) {
						if (!result.success) {
							// обработка/логирование ошибки, например
							this.showInformationDialog("Ошибка запроса данных");
							return;
						}
						this.set("PsPDateTimeApproval", new Date());
					}, this);
				}
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "PsPApprovalMan",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "PsPApprovalMan"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "PsPsPMatchResult",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 2,
						"layoutName": "Header"
					},
					"bindTo": "PsPsPMatchResult",
					"labelConfig": {
						"caption": {
							"bindTo": "Resources.Strings.PsPsPMatchResultLabelCaption"
						}
					},
					"enabled": true,
					"contentType": 5
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "PsPComent",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 3,
						"layoutName": "Header"
					},
					"bindTo": "PsPComent"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 2
			},
			{
				"operation": "insert",
				"name": "PsPDateTimeApproval27fcf723-04c0-4c5d-86d1-e4ef52f8b467",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "PsPDateTimeApproval",
					"enabled": false
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 3
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Лопатин Константин Николаевич,

attributes: {
	"PsPTimeLimit": {
		dataValueType: Terrasoft.DataValueType.FLOAT,
		dependencies: [
			{
				columns: ["PsPProcurementType"],
				methodName: "calculateTimeLimit"
			}
		]
	}
},
methods: {
	onEntityInitialized: function() {
		this.callParent(arguments);
		this.calculateTimeLimit();
		this.calculateDepartment();
	},
	calculateTimeLimit: function() {
		var recordId = this.get("PsPProcurementType");
		var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "PsPProcurementType"});
		esq.addColumn("PsPTimeLimit", "PsPTimeLimit");
		if (recordId) {
			esq.getEntity(recordId.Id, function(result) {
				if (!result.success) {
					// обработка/логирование ошибки, например
					this.showInformationDialog("Ошибка запроса данных");
					return;
				}
				var timeLimit = result.entity.get("PsPTimeLimit").toString();
				this.set("PsPTimeLimit", {
					displayValue: new Date(timeLimit)
				});
			}, this);
		}
	}
}

Это из базы уже

Prime Source,

А что Вы ожидаете получить в целом? Колонка PsPTimeLimit имеет  тип FLOAT, и в нее различными способами пытаются запихнуть дату, логично что не работает. А способ

this.set("PsPTimeLimit", { displayValue: new Date(timeLimit) });

Вы где подсмотрели?

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

Лопатин Константин Николаевич,

Спасибо, тип изменил и все заработало, нужно больше спать)))

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