Вопрос

Передать Id записи из Section в Page

Коллеги, подскажите. Мне надо при копировании записи взять Id копируемой записи и передать его на пейджу, чтобы в новой скопированной записи получить его и на onEntityInitialized поработать с ним, вытянув некоторые данные из деталей, привязанных к копируемой записи.

Изображение удалено.

Нравится

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

Руслан Хасанов пишет:

Подскажите, пожалуйста, в какой момент происходит публикация сообщения? Или более подробный пример. Спасибо!

Публикацию сообщения делаете тогда, когда получили нужную вам Id, которую хотите куда-либо передать, например выделенную запись, можно сразу передать в isAnySelected так:

this.sandbox.publish("Название сообщения", config, ["_Подпись сообщения для однозначной идентификации"]);
this.sandbox.publish("TestMesag", config, ["_TestMesag"]);



Так же не забываем добавить сами сообщения на странице:

 

messages: {
			"TestMesag": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		}

config - объект нужных параметров, например:

 var config = {
                            Id: rowId,
                            Contract: contractId,
                            Type: typeId
                        };

 

Для выделенной записи реестра:

 

isAnySelected: function() {
	this.callParent(arguments);
	var row = this.getActiveRow();
}

 

Литвинко Павел,

Но как эту переменную row передать из Секции в пейджу?

Можно например через сообщение передать

this.sandbox.publish("RowSelectedz", { Id: rowId }, ["_RowSelectedz"]);

А на странице потом получить

onEntityInitialized: function() {
                this.callParent(arguments);
                this.sandbox.subscribe("RowSelectedz", function(arg) {
                    this.set("И например в атрибут значение установить", arg.Id);
}

Либо, второй вариант, вызывать openCardInChain и туда конфиг параметров передать, но это удобно когда просто карточку открыть новую, а при копировании надо глянуть, что там вызывается и как и доработать

 

var config = {
	sandbox: this.sandbox,
	schemaName: this.getEditPageSchemaName(typeColumnValue),
	operation: ConfigurationEnums.CardStateV2.COPY,
	moduleId: this.getChainCardModuleSandboxId(typeColumnValue),
	defaultValues: defaultValues
};
this.openCardInChain(config);

 

По идее может быть достаточно будет CardStateV2.COPY, поправил в коде выше это

Литвинко Павел,

благодарю за помощь, попробуем сендбоксами.

Подскажите, пожалуйста, в какой момент происходит публикация сообщения? Или более подробный пример. Спасибо!

Руслан Хасанов пишет:

Подскажите, пожалуйста, в какой момент происходит публикация сообщения? Или более подробный пример. Спасибо!

Публикацию сообщения делаете тогда, когда получили нужную вам Id, которую хотите куда-либо передать, например выделенную запись, можно сразу передать в isAnySelected так:

this.sandbox.publish("Название сообщения", config, ["_Подпись сообщения для однозначной идентификации"]);
this.sandbox.publish("TestMesag", config, ["_TestMesag"]);



Так же не забываем добавить сами сообщения на странице:

 

messages: {
			"TestMesag": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		}

config - объект нужных параметров, например:

 var config = {
                            Id: rowId,
                            Contract: contractId,
                            Type: typeId
                        };

 

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