Коллеги, нужна помощь.
В inputBox пытаюсь вывести колонку DateTime.
Сам вывод получился как то вот так:
Terrasoft.utils.inputBox("Make task value", function(result, arg) {
if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
alert(result);
}
}, [{
className: "Terrasoft.Button",
caption: "Next",
returnCode: "yes"
}, "Cancel"],
this,
{
name: {
dataValueType: Terrasoft.DataValueType.TEXT,
caption: "Caption",
customConfig: {
className: "Terrasoft.MemoEdit",
height: "77px"
},
isRequired: true
},
startDate: {
dataValueType: Terrasoft.DataValueType.DATE_TIME,
caption: "Start date",
customConfig: {
className: "Terrasoft.Container",
value: {"bindTo" : "startDate"},
items: [
{
className: "Terrasoft.DateEdit",
id: "newStartDateEdit",
width: "50%"
},
{
className: "Terrasoft.TimeEdit",
id: "newStartTimeEdit",
width: "50%"
}
]
}
}
}Выглядит это дело вот так:
![]()
При клике на кнопку Next закрывается форма и консоль в red-style с содержимым:
Uncaught TypeError: b[c].control.getValue is not a function
at i.updateCustomControl (all-combined.js:formatted:79169)
at i.onStateChanged (all-combined.js:formatted:78983)
at i.fire (all-combined.js:formatted:6223)
at i.continueFireEvent (all-combined.js:formatted:7144)
at i.fireEventArgs (all-combined.js:formatted:7129)
at i.fireEvent (all-combined.js:formatted:7120)
at i. (all-combined.js:formatted:79078)
at i.fire (all-combined.js:formatted:6223)
at i.continueFireEvent (all-combined.js:formatted:7144)
at i.fireEventArgs (all-combined.js:formatted:7129)
Кто сталкивался или кто знает как решить этот вопрос?
Нравится
потестил, он пытается взять value контейнера (этого сделать конечно же нельзя). А по другому никак, ибо Date_Time - это по сути контейнер из 2х других контролов. Можно попробовать раздробить
startDate: {
caption: "Start date",
dataValueType: Terrasoft.DataValueType.DATE_TIME,
value: {"bindTo" : "startDate"},
customConfig: {
className: "Terrasoft.DateEdit"
}
},
startTime: {
caption: "Strat time",
dataValueType: Terrasoft.DataValueType.DATE_TIME,
value: {"bindTo" : "startDate"},
customConfig: {
className: "Terrasoft.TimeEdit"
}
}
Пробовали, className: "Terrasoft.TimeEdit" напрочь отказывается показывать. В консоли сообщение о том что присутствует недопустимое значение.
В любом случае логика контролов с типами DATE_TIME и TIME фейлятся в inputBox, похоже это деффект платформы:
DATE_TIME

TIME

Господа, не знаю, что у вас там не работает... У меня завелось вот так:
Terrasoft.utils.inputBox("Make task value", function(result, args) {
if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
//alert(result);
debugger;
console.log(args);
}
}, [{
className: "Terrasoft.Button",
caption: "Next",
returnCode: "yes"
}, "Cancel"],
this,
{
kappa: {
dataValueType: Terrasoft.DataValueType.TEXT,
caption: "Caption",
customConfig: {
className: "Terrasoft.MemoEdit",
height: "80px"
},
value: "",
isRequired: true
},
startDate: {
caption: "Start date",
dataValueType: Terrasoft.DataValueType.DATE,
value: new Date(),
customConfig: {
className: "Terrasoft.DateEdit"
}
},
endDate: {
caption: "Start time",
dataValueType: Terrasoft.DataValueType.TIME,
value: new Date(),
customConfig: {
className: "Terrasoft.TimeEdit"
}
}
});Правды выглядит это всё сомнительно

И значения придётся вытаскивать из args, которые приходят из модуля в коллбеке.
ps. 12 часов ночи, чем я, блин, занимаюсь...
Так. всё. я вконец упоролся, но таки сделал.
Хочется передать привет товарищу из террасофта, который лепит затычки в Terrasoft.utils.controls.getControlConfigByDataValueType. Там в свитчере:
switch (a) {
case Terrasoft.DataValueType.TEXT:
b = {
className: "Terrasoft.TextEdit"
};
//тут куча других типов
//....
//А для 3х оставшихся сделать поленились
case Terrasoft.DataValueType.GUID:
case Terrasoft.DataValueType.DATE_TIME:
case Terrasoft.DataValueType.BLOB:
b = null
}
Ну и то, что в итоге получилось у меня:


Terrasoft.utils.inputBox("Make task value", function(result, args) {
if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
//alert(result);
debugger;
console.log(args);
}
}, [{
className: "Terrasoft.Button",
caption: "Next",
returnCode: "yes"
}, "Cancel"],
this,
{
kappa: {
dataValueType: Terrasoft.DataValueType.TEXT,
caption: "Caption",
customConfig: {
className: "Terrasoft.MemoEdit",
height: "80px"
},
value: "",
isRequired: true
},
DateTimer: {
dataValueType: Terrasoft.DataValueType.DATE_TIME,
caption: "Start date",
value: new Date(),
customConfig: {
className: "Terrasoft.Container",
getValue: function() {
//debugger;
var dateValue = this.items.items[0].value;
var timeValue = this.items.items[1].value;
dateValue.setHours(timeValue.getHours());
dateValue.setMinutes(timeValue.getMinutes());
return dateValue;
},
items: [
{
className: "Terrasoft.DateEdit",
id: "newStartDateEdit",
value: new Date(),
width: "50%"
},
{
className: "Terrasoft.TimeEdit",
id: "newStartTimeEdit",
value: new Date(),
width: "50%"
}
]
}
}
});
Варфоломеев Данила, отдельное вам спасибо!)
Кстати, как насчет вывода в InputBox справочных полей (Terrasoft.DataValueType.LOOKUP)
Есть идеи ?
само по себе справочное поле выводится без проблем, но связать его с какой либо схемой у меня не получилось.