виртуальное поле
Технические вопросы
7.x

Виртуальное поле

Добрый день.
Нужна подсказка как реализовать поле на странице контакта, куда автоматически подтягивался бы номер телефона контрагента (по выбору контрагента, конечно). Поле должно быть виртуальное и только для просмотра.
Версия 7.6.0.840
Заранее спасибо за помощь

Нравится

4 комментария

Добрый день!!!

а какие у вас трудности? Работа с виртуальными полями ничем не отличается от работы полями получаемые их схем "Таблиц". Ничем не отличается Инициализация, Обработка, Валидация, Контроль и обработка событий. Вам нужен реальный пример, как решить вашу задачу. Или вам подсказать где в стандартном функционале, ваша задача уже решалась.

Михаил, здравствуйте.
Подошел бы как реальный пример, так и подсказка где такая задача реализована в системе.
Спасибо!

Коллеги, никто не может помочь в этом вопросе?

Ну вот так например
ассистент - тянем из связанной таблицы, по текущему контакту
на init я тоже вызывал метод getMainAssistant для заполнения поля

// diff
{
"operation": "insert",
"name": "Assistant",
"values": {
"caption": "Assistant",
"enabled": false
},
"parentName": "Header",
"propertyName": "items"
}
// attributes
"Assistant": {
dataValueType: Terrasoft.DataValueType.TEXT,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
dependencies: [
{
methodName: "getMainAssistant"
}
]
}
// methods
getMainAssistant: function() {
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "UsrContactAssistents"});
esq.addColumn("UsrAssistant.Name", "UsrAssistantName");
esq.filters.add("UsrContactFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrContact", this.get("Id")));
esq.getEntityCollection(function(response) {
if (response && response.success) {
if (response.collection.getCount() > 0) {
var result = response.collection.getItems()[0];
this.set("MainAssistant", result.get("UsrAssistantName"));
}
}
}, this);
}

для связи с выбранным контрагентом например надо еще в добавить зависимость данного поля от контрагента
и attributes будет выглядеть так примерно

// attributes
"Assistant": {
dataValueType: Terrasoft.DataValueType.TEXT,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
dependencies: [
{
columns: ["Account"], // это для зависимости от контрагента
methodName: "getMainAssistant"
}
]
}
Показать все комментарии