Как заполнить деталь данными из Json-строки?

Дорый день!

Встала задача заполнения детали на основе данных из json-строки. Строку возвращает bpmonline-сервис по нажатию кнопки. В итоге должна получиться деталь похожая на Кредитный калькулятор (BPMonline Lending).

Так вот, КАК можно заполнить нашу детальку? Разобраться в коде стандартного кредитного калькулятора не особо удалось..

Надеемся на помощь - вопрос срочный. Спасибо.

Нравится

6 комментариев

Да, забыл упомянуть версию системы - BPMonline Lending Версия 7.2.2.257

Да, забыл упомянуть версию системы - BPMonline Lending Версия 7.2.2.257

Акмаль, здравствуйте.

Кредитный калькулятор действительно заполняется из json запроса. Это реалировано в генераторе модели представления, схема BankingServiceSearchModuleViewModelGenerator:

function loadPaymentScheduleGridDataFromJson(dataJson, scope) {
	var data = Ext.JSON.decode(dataJson);
	var newCollection = Ext.create("Terrasoft.Collection");
	Terrasoft.each(data, function(item, key) {
		var model = Ext.create("Terrasoft.BaseViewModel", {
			rowConfig: {
				Id: {
					columnPath: "Id",
					dataValueType: Terrasoft.DataValueType.GUID
				},
				LoanDate: {
					columnPath: "LoanDate",
					dataValueType: Terrasoft.DataValueType.DATE
				},
				LoanPeriod: {
					columnPath: "LoanPeriod",
					dataValueType: Terrasoft.DataValueType.INTEGER
				},
				PercentageAmount: {
					columnPath: "PercentageAmount",
					dataValueType: Terrasoft.DataValueType.FLOAT
				},
				TotallyPaymentAmount: {
					columnPath: "TotallyPaymentAmount",
					dataValueType: Terrasoft.DataValueType.FLOAT
				}
			},
			values: {
				Id: Terrasoft.generateGUID(),
				LoanDate: new Date(item.LoanDate),
				LoanPeriod: item.LoanPeriod,
				PercentageAmount: item.PercentageAmount,
				TotallyPaymentAmount: item.TotallyPaymentAmount
			}
		});
		newCollection.add(model.get("Id"), model);
	}, this);
	var paymentScheduleGridData = scope.get("paymentScheduleGridData");
	scope.set("gridPaymentEmpty", newCollection.getCount() === 0);
	paymentScheduleGridData.loadAll(newCollection);
	var searchRecordId = scope.get("searchResultActiveRow");
	var loanTerm =
		scope.get("searchResultGridData").get(searchRecordId).get("LoanTermRange");
	loanTerm = loanTerm.split("-");
	var minTerm = parseInt(loanTerm[0].trim(), 10);
	var maxTerm = parseInt(loanTerm[1].trim(), 10);
	var term = scope.get("LoanPeriod");
	if (Ext.isNumber(term)) {
		term = term < minTerm ? minTerm : term;
		term = term > maxTerm ? maxTerm : term;
		var activeRow = getRowByColumnValue(paymentScheduleGridData, "LoanPeriod",
			term);
		if (activeRow) {
			setActiveRow("payment-schedule-grid", activeRow.get("Id"));
		}
	}
}

Создается BaseViewModel, в конструктор передается конфиг строк. Затем, в цикле заполняется.

Максим, здравствуйте!
Вы не могли бы описать весь набор схем, которые нужно создать, чтобы добавить такую деталь на страницу? Я так понимаю, в 7.2 все сильно отличается от 7.1...
Спасибо!

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

Да, этого будет достаточно, если Вы хотите реализовать заполнение по кнопке.

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