Вопрос

Получение значения справочника при помощи this.set()

Предположим, на странице редактирования раздела у меня есть атрибут Country, связанный со справочником стран.

Может возникнуть ситуация, в которой мне нужно принудительно установить значение данного справочника. Я поступаю следующим образом:

 

this.set("Country", {value: "a570b005-e8bb-df11-b00f-001d60e938c6", displayValue: "РОССИЯ"});

В результате значение поля выбора принимает соответствующее значение.



Но у атрибута Country назначены дополнительные колонки кроме value и displayValue. Если в дальнейшем потребуется обратиться к этим колонкам, мы получим ошибку, потому что в реальности значением атрибута установлены только две переменных.



Понятно, что можно принудительно назначить атрибуту больше значений, но можно ли каким-то образом восстановить выбор значения из справочника по одному Guid ? Скажем, я знаю, что Guid нужной мне страны такой то. Я пишу что-то вроде this.set("Country, {value: такой-то}), и получаю доступ к любым строкам записи справочника?

Нравится

5 комментариев
Лучший ответ

Добрый день.

Если я правильно понял, вам могут помочь две вещи:

1) Укажите в атрибутах колонки справочника, которые вам необходимы:

"Country": {
    "lookupListConfig": {
         "columns": ["Name", "CreatedOn", "CreatedBy"]
    }
}

2) Используйте метод loadLookupDisplayValue для установки справочных значений.

this.loadLookupDisplayValue("Country", valueId);

 

Добрый день!

Нет, предложенный вами способ не сработает.

Необходимо делать запрос в базу данных и вытаскивать атрибуты объекта.

Пример запроса:

var esqContract = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Contract"
});
esqContract.addColumn('CreatedOn');
esqContract.addColumn('SignedOn');
 
esqContract.getEntity(contractId, function(responseContract)
{
	var createdOn = responseContract.entity.get('CreatedOn');
}, scope);

 

Добрый день.

Если я правильно понял, вам могут помочь две вещи:

1) Укажите в атрибутах колонки справочника, которые вам необходимы:

"Country": {
    "lookupListConfig": {
         "columns": ["Name", "CreatedOn", "CreatedBy"]
    }
}

2) Используйте метод loadLookupDisplayValue для установки справочных значений.

this.loadLookupDisplayValue("Country", valueId);

 

Сизов Андрей Андреевич,

доброе утро! Этого метода:

this.loadLookupDisplayValue("Country", valueId);

будет достаточно, чтобы заполнить все выбранные для атрибута колонки (в вашем случае "Name", "CreatedOn", "CreatedBy"), или он позволяет получить только displayValue по valueId?

Developer76,

Да, только что сам проверил - колонки заполняются после выполнения данного метода.

 

Сизов Андрей Андреевич,

спасибо!

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