Коллеги, добрый день!
У нас в системе реализовано кастомное модальное окно, на котором расположен ряд фильтров. Подскажите, пожалуйста, как реализовать поле типом "Выбор из справочника" в модальном окне. Именно не список, а справочник.
Спасибо!
Нравится
Сергей, для полного понимания просьба прикрепить листинг кода.
Также скриншот как окно расположено и для чего поле "Выбор из справочник" необходим.
В поддержке сказали, что архитектура приложения не позволяет открывать окно выбора из справочника в модальном окне. Но если у вас есть идеи, буду благодарен)
Скриншот расположения окна - https://db.tt/gOBNhNzPCI.
Выбор из справочника необходим, например, для таких полей, как ОКВЭД.
Добрый день, Сергей.
Отображение модального окна в модальном окне является извечной проблемой не только в рамках bpb'online. Рекомендую Вам смотреть в сторону использования выпадающих списков и свойства prepareList для наполнения их в рантайме.
Коллеги, спасибо!
У кого-нибудь есть примеры реализации выпадающих список в модальных окнах с использованием этого свойства?
Вот пример для OrderPageV2. Для модального окна отличий быть не должно.
[javascript]
define("OrderPageV2", [], function() {
return {
entitySchemaName: "Order",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"name": "myEnum",
"values": {
"caption": "myEnum",
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 2,
"layoutName": "Header"
},
"controlConfig": {
"className": "Terrasoft.ComboBoxEdit",
"list": {
"bindTo": "myList"
},
"change": {
"bindTo": "onMyValueChange"
},
"prepareList": {
"bindTo": "prepareMyList"
}
},
"labelConfig": {},
"enabled": true,
"bindTo": "myEnum"
},
"parentName": "Header",
"propertyName": "items",
"index": 4
}]/**SCHEMA_DIFF*/,
methods: {
onPageInitialized: function(callback, scope) {
if (!this.get("myList")) {
this.set("myList", this.Ext.create("Terrasoft.Collection"));
}
if (callback) {
callback.call(scope || this);
}
},
prepareMyList: function(filter, list) {
if (list === null) {
return;
}
list.clear();
var columns = {};
var value1 = {
displayValue: "a123",
value: "1"
};
var value2 = {
displayValue: "b234",
value: "2"
};
var value3 = {
displayValue: "c345",
value: "3"
};
columns[1] = value1;
columns[2] = value2;
columns[3] = value3;
list.loadAll(columns);
},
onMyValueChange: function(val) {
if (val && val.displayValue) {
console.log("you pick: ", val.displayValue);
}
}
},
attributes: {
"myEnum": {
"dataValueType": Terrasoft.DataValueType.ENUM,
"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
"caption": "myEnum"
},
"myList": {
"dataValueType": Terrasoft.DataValueType.ENUM,
"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
"isCollection": true
}
},
rules: {}
};
});
[/javascript]
Не знаю что у вас там не работает... Написал свой контрол (да, немного кривой:smile:), все сохраняется.




Сергей, Выше уже есть наглядный пример кода OrderPageV2. У Вас что-то не получается?