Вопрос

Автоматическое заполнение поля Контакт при открытии формы создания счета

Вопрос такой - как правильно сделать, чтобы при создании Счета (в моем случае из Активности) поле Контакт сразу заполнялось при открытии формы (значение нужно брать из родительского объекта Активность).

Правильно это делать в клиентской части? В каком методе это нужно реализовать?

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

Подход с вычисляемыми полями (https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-vych…) тут сработает или нужно по другому? Как правильнее?

 

Нравится

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

В вашем случае нужно сделать запрос в базу для получения контакта из активности, а дальше устанавливать это значение

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Activity"
});
esq.addColumn('Contact');
esq.rowCount = 1;
 
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'InvoiceId', this.get("Id")));
 
esq.getEntityCollection(function(response)
{
	if(response.success)
	{
		var entities = response.collection.getItems();
		Terrasoft.each(entities, function(item){
			var contact = item.get('Contact');
		});
	}
});

 

Добрый день!

Правильнее будет сделать заполнение во внутреннем бизнес процессе создания объекта Счет.

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

Сидоров Александр В.,

С БП сложно, нужно будет публиковать сообщение для обновления формы и тп. Думаю мне подойдет вот такой способ - 

https://academy.terrasoft.ru/documents/technic-sdk/7-13/ustanovka-dlya-polya-znacheniya-po-umolchaniyu?_ga=2.190413355.1459825563.1560677956-1988094352.1550757899

Только вопрос - как в методе обратиться к родительскому объекту Активность и получить оттуда значение поля контакт. Хотелось бы пример кода.

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

В вашем случае нужно сделать запрос в базу для получения контакта из активности, а дальше устанавливать это значение

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Activity"
});
esq.addColumn('Contact');
esq.rowCount = 1;
 
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'InvoiceId', this.get("Id")));
 
esq.getEntityCollection(function(response)
{
	if(response.success)
	{
		var entities = response.collection.getItems();
		Terrasoft.each(entities, function(item){
			var contact = item.get('Contact');
		});
	}
});

 

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