Суть:
Есть некая карточка (н/п MyCustomPageV2) которая содержит справочное поле (н/п Owner).
В бизнес-логике карточки, необходимо значение поля (н/п Status) сущности экземпляр которой выбран в справочном поле Owner
используем для этого штатный механизм конфигурирования поля как атрибута, lookupListConfig и его свойства columns

attributes: {
...
"Owner": {
        lookupListConfig: {
                columns: ["Status"],
        }
}

...
}

Что позволяет организовать как-бы "просмотр внутрь" справочного поля и предоставление значения колонки Status выбранного значения.
Проблема:
Юзер открывает карточку MyCustomPageV2, в модели для поля Owner было загружено так же поле Status (к примеру оно содержит значение "X").
Теперь пользователь через гиперссылку справочного поля перешел на карточку сущности Owner изменил там значение Status (к примеру на значение "Y"), нажал "Сохранить", и тем самым вернулся в MyCustomPageV2 (из Chain). Теперь если мы обратимся к полю Owner и его колонке Status
this.get("Owner").Status

то оно по прежнему содержит значение "X"
Вопросы:
  1. Это баг ? или так и должно быть ?
  2. Если так и должно быть, то вероятно есть способ акутализировать данные колонок полей указанных в lookupListConfig -> columns? Как это сделать ?
  3. Как вообще можно отреагировать на "возвращение в карточку" при переходе из Chain (по "Закрыть" или "Сохранть" и т.д. открытых "поверх" карточек других сущностей) ? В таком случае, в виде "костыля" можно было бы хоть сделать ESQ запрос и актуализировать данные вручную

вот...

Нравится

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

Добрый день!
Это не баг. У вас в первой карточке своя модель, которая загрузила значение Х. Изменения этого значения в БД не приведет к изменению значения в модели (Именно это вы и делаете из другой карточки - сохраняете в БД).
Задача в 2 этапа:
1. Нотификация изменений
2. Загрузка актуальных значений

Варианты решений:
1. Можно сделать обмен сообщениями между модулями
2. Загрузка актуальных...у всех наследников BasePage есть метод reloadEntity - он актуализирует данные

Хорошо, про reloadEntity мне известно,
но как мне инициировать его в момент когда пользователь "вернулся" в карточку,
есть ли какая-то событийная модель на этот случай, какой-то прием который позволит этот самый reloadEntity запустить тогда когда он нужен ?

Сейчас веду маленькое исследование на этот счет, отвечу в вашем дубле здесь:
http://www.community.terrasoft.ru/forum/topic/25727

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

Обнаружено следующее поведение,
В некотором объекте н/п Tender есть поле н/п "Stage" (Справочное), на уровне конфигурации установлено значение по-умолчанию, н/п элемент с Name ='Создание'
В схеме карточки для этого поля в lookupListConfig добавляем "просмотр внутрь" и извлечение дополнительных полей выбранного элемента справочника.

...
attributes: {
"Stage": {
        lookupListConfig: {
                 columns: ["Name"]
        }
},
...

Так, открываем карточку существующей записи, н/п созданной и тут-же сохраненной, но повторно открытой в режиме редактирования
this.get("Stage");

получаем вполне ожидаемый результат
{value: "16886c2b-1388-45d3-9514-3ca70b9a4858", displayValue: "Создание", primaryImageValue: "", Name: "Создание"}

Так теперь просто открываем карточку в режиме создания и повторяем эксперимент:
this.get("Stage");

получаем результат неожиданный:
{value: "16886c2b-1388-45d3-9514-3ca70b9a4858", displayValue: "Создание"}

а где же наш Name который мы указали в lookupListConfig для нашего поля ?
про свойство primaryImageValue не ясно, но его как бы тоже нет.

И вот не ясно - так и должно быть, в силу каких-то более не менее объективных причин, или это выявленный дефект ?

Нравится

1 комментарий

Создали проблему для реализации данного функционала и при открытии карточки в режиме создания. Будет исправлено в рамках работы над новыми релизами. Тем временем можете проверять режим карточки и получать эти данные через esq.

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

Здравствуйте, подскажите пожалуйста, аналог свойства "columns" в 7.3 либо формат его использования.

Есть раздел "Услуги" и "Запросы". В разделе "Запросы" есть деталь услуги. Необходимо в этой детали получить значения некоторых полей из раздела "Услуги"

                 {
                    "operation":"insert",
                    "parentName": "Header",
                    "propertyName": "items",
                    "name": "Service",
                    "columns": ['Unit', 'Cost', 'Price'],
                    values: {
                        "layout": {
                            "column": 0,
                            "row": 0,
                            "colSpan": 12
                        },
                        "contentType": Terrasoft.ContentType.ENUM
                    }
                },

Нравится

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

Александр, в качестве примера обратите внимание на InvoiceProductPageV2. А именно, выделенный ниже блок кода:
define("InvoiceProductPageV2", ["MoneyModule"],
function(MoneyModule) {
return {
entitySchemaName: "InvoiceProduct",
attributes: {
"Invoice": {
lookupListConfig: {
columns: ["CurrencyRate"]
}
}
},

details: /**SCHEMA_DETAILS*/{
}/**SCHEMA_DETAILS*/,
methods: {
/**
...

Работает, спасибо большое! Поиском почему-то не нашел.

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