не отрабатывает this. get("Status") , в консоле ругается на метод get
пытаюсь получить значение поля активной строки детали.
Нравится
Посмотрите еще раз на предложенный пример. В вашем случае валидный код будет таким:
isMyselected : function () { var activeRow = this.getActiveRow(); if (!activeRow) {return false;} var activeRowId =activeRow.get("UsrState"); // если колонка справочная, то тут будет объект if (activeRowId && activeRowId.value ==="d44d767e-ebc3-4982-8669-577dbc048327") { // var ican2 = this.isAnySelected(); return ican2; } }, //activeRowId.value потому что справочные колонки представляют из себя объект. примерно такой. и id хранится у них в value: //{value: "4b8be1bc-aaca-48a3-bb76-3bd916916b03", displayValue: "Состояние1", primaryImageValue: ""}
var activeRow = this.getActiveRow(); var activeRowId = activeRow.get("Status");
пробовал так , не получается
в консоле ошибка
message: Cannot read property 'get' of undefined
а в какой момент и где именно пытаетесь метод этот вызывать?
пытаюсь написать метод по результату которого делается видимым пункт меню в Действиях Детали
Caption : "Отклонена",
Enabled: {"bindTo": "isMyselected"},
а в методах описание isMyselected далее в зависимости от тог чему равно поле Status включаю видимость пункта меню this.isAnySelected();
вот полный код
define("UsrSchema2Detail", [],
function() {
return {
entitySchemaName: "UsrReqVis",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
methods: {
addToolsButtonMenuItems: function() {
this.callParent(arguments);
var tbm = this.get("ToolsButtonMenu");
tbm.addItem(this.getButtonMenuSeparator());
tbm.addItem(this.getButtonMenuItem({
"Caption": {"bindTo": "Resources.Strings.ApproveButton"},
"Enabled": {"bindTo": "isMyselected"},
"Click": {"bindTo": "isApprove"},
"Visible": true
})
);
tbm.addItem(this.getButtonMenuSeparator());
tbm.addItem(this.getButtonMenuItem({
Caption : "Отклонена",
Enabled: {"bindTo": "isMyselected"},
Click: {"bindTo": "isNotApprove"},
Visible: true
})
);
this.set("ToolsButtonMenu", tbm);
},
isMyselected : function () {
var activeRow = this.get("ActiveRow");
var activeRowId =this.activeRow.get("UsrState");
// this.showInformationDialog(activeRowId);
if (activeRowId ==="d44d767e-ebc3-4982-8669-577dbc048327") {
var ican2 = this.isAnySelected(); return ican2;}
},
},
};
});
для проверки вывожу this.showInformationDialog(activeRowId); в окне пусто
Посмотрите еще раз на предложенный пример. В вашем случае валидный код будет таким:
isMyselected : function () { var activeRow = this.getActiveRow(); if (!activeRow) {return false;} var activeRowId =activeRow.get("UsrState"); // если колонка справочная, то тут будет объект if (activeRowId && activeRowId.value ==="d44d767e-ebc3-4982-8669-577dbc048327") { // var ican2 = this.isAnySelected(); return ican2; } }, //activeRowId.value потому что справочные колонки представляют из себя объект. примерно такой. и id хранится у них в value: //{value: "4b8be1bc-aaca-48a3-bb76-3bd916916b03", displayValue: "Состояние1", primaryImageValue: ""}
А еще для отладки можно использовать debugger, точки останова. И на крайний случай:
console.log("вывод информации в консоль бразуера");
Почитать про отладку можно тут https://academy.terrasoft.ru/documents/technic-sdk/7-14/instrumenty-otladki-klientskogo-koda
Попробуйте так
var activeRowId = this.get("ActiveRow"); var gridData = this.get("GridData"); var status = gridData.get(activeRowId).get("Status");
Только что бы колонка со статусом была на гриде.
Как вариант добавьте атрибут логического типа
isMyselected = false а при инициализации выполните проверку и если условия соблюдены сделайте его true. Оставьте биндинг вашего свойства на добавленный атрибут те оставьте Enabled: {"bindTo": "isMyselected"}, оста