Указать дату и время на странице через логику в клиентском модуле
На страницу выведено поле с датой и временем, нужно передать в него время из справочника при изменении значения в выпадающем списке. Стандартные js способы new Data(dataCode) не работает
Нравится
Добрый день!
А что именно "стандартное" не работает? Какой тип у 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, подставить свои названия полей и все заработает
Лопатин Константин Николаевич,
Спасибо, тип изменил и все заработало, нужно больше спать)))