Выбор из справочника в модальном окне

Коллеги, добрый день!

У нас в системе реализовано кастомное модальное окно, на котором расположен ряд фильтров. Подскажите, пожалуйста, как реализовать поле типом "Выбор из справочника" в модальном окне. Именно не список, а справочник.

Спасибо!

Нравится

9 комментариев

Сергей, для полного понимания просьба прикрепить листинг кода.
Также скриншот как окно расположено и для чего поле "Выбор из справочник" необходим.

В поддержке сказали, что архитектура приложения не позволяет открывать окно выбора из справочника в модальном окне. Но если у вас есть идеи, буду благодарен)

Скриншот расположения окна - https://db.tt/gOBNhNzPCI.

Выбор из справочника необходим, например, для таких полей, как ОКВЭД.

Добрый день, Сергей.

Отображение модального окна в модальном окне является извечной проблемой не только в рамках bpb'online. Рекомендую Вам смотреть в сторону использования выпадающих списков и свойства prepareList для наполнения их в рантайме.

Коллеги, спасибо!

У кого-нибудь есть примеры реализации выпадающих список в модальных окнах с использованием этого свойства?

Вот пример для OrderPageV2. Для модального окна отличий быть не должно.

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: {}
	};
});

Не знаю что у вас там не работает... Написал свой контрол (да, немного кривой:smile:), все сохраняется.
1
2
3
4

Можете поделиться примером кода?)

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

Получилось. Всем большое спасибо!

Показать все комментарии