Выполняется следующий порядок действий:

 

1) Открывается мини-карточка создания объекта Х

2) На мини-карточке есть справочное поле -- переходим к выбору его значений (открывается лукап объекта Y)

3) В лукапе есть кнопка "добавить" -- нажимаем, для добавления объекта Y

 

Происходит странное: лукап закрывается, остается мини-форма создания объекта X, а под ней полноценная карточка создания объекта Y. Это известная проблема? Есть способы ее решения?

Нравится

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

Добрый день!

 

 

Причина описанного Вами поведения в том, что и окно выбора из справочника, и окно мини карточки являются модальными, а два модальных окна подряд открыть нельзя. По этой же причине в базовых мини-карточках нет справочных полей с выбором в окне, а только выпадающие списки. На команде разработчиков есть задача по изменению текущей логики в будущих версиях.
Рекомендуем в мини-карточках использовать для справочников выпадающий список.

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

На форме определенного объекта размещена кнопка "Создать актив".

По нажатию на кнопку вызывается метод, который открывает мини-карточку методом this.openMiniPage, туда подтягиваются defaultValues (поля из текущей карточки), создается другой объект.
 

После создания объекта в текущей карточке требуется выполнить определенные действия, в частности, заполнить определенное поле айдишником созданного объекта. Но только в том случае, если открытие мини-формы завершилось созданием объекта, т.е. не нажали на кнопку отмены.

 

Возможно, стоило бы заранее сформировать айдишник и заполнить им поле, но как быть, если объект не был в итоге создан? Неужели запрос для этого посылать перед заполнением?

 

Напрашивается организация колбэка, но не очень понятно как это провернуть со стандартным this.openMiniPage.

 

Просьба помочь с решением данной задачи.

 

Примерный код прикладываю:

 

//функция вызывается кнопкой
createAsset: function() 
{
    this.openMiniPage({
        recordId: Terrasoft.GUID_EMPTY,
        operation: Terrasoft.ConfigurationEnums.CardOperation.ADD,
        entitySchemaName: "NewObjectSchemaName", //схема создаваемого объекта
        valuePairs: this.getAddMiniPageDefaultValues(),
        miniPageSchemaName: "NewObjectMiniPage",
	});
    //далее требуется заполнить поле текущей карточки, что-то вроде
    //this.$Asset = newObjectId;
},

 

Нравится

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

А почему вы в процессе не хотите заполнить это поле?

Владимир Соколов,

В процессе нет информации об ID записи, из которой происходило нажатие на кнопку добавления

Вадим Курунов пишет:

как вариант, можно его передавать в default values, чтобы потом прочитать в созданном объекте 

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

Доброго дня!

 

Из-за нестандартной логики по заполнению полей по умолчанию при добавлении записей в деталь приходится вызывать мини-форму вручную. При этом не происходит обновление грида -- запись появляется на детали только после обновления страницы. 

 

Есть предположение, что нужно как-то грамотно организовать колбэки с this.reloadGridData(), но никак не выходит. Может кто сталкивался с подобным кейсом

 

Исходный код прилагаю.

addRecord: function(typeColumnValue) {
    var config = {
	    recordId: Terrasoft.GUID_EMPTY,
		operation: Terrasoft.ConfigurationEnums.CardOperation.ADD,
		entitySchemaName: "Account",
		valuePairs: this.getAddMiniPageDefaultValues(),
		miniPageSchemaName: "AccountMiniPage",
	};
    this.openMiniPage(config);
},
 
getAddMiniPageDefaultValues: function() {
    var defaultValues = [];
    defaultValues.push({
        name: "Parent", 
        value: this.get("MasterRecordId")
    });
	defaultValues.push({
	    name: "Category",
		value: "dc199b6d-e948-4598-8a12-c38ca90428d8"
	});
	return defaultValues;
}

Благодарю за ваши ответы

Нравится

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

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

Вадим, добрый день.

 

Попробуйте реализовать нужный Вам функционал через обмен сообщениями песочницы. Более подробно об этом можно почитать в статье на Академии.

Алла Савельева,

Спасибо за ответ! Однако реализация не совсем очевидна. Неужели для реализации этого кейса придется постоянно публиковать сообщение со стороны добавляемого объекта для обновления детали? Учитывая то, что добавляемый объект, помимо детали, может создаваться и из других мест

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

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