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