справочники
Технические вопросы
7.x

Подстановка платежного реквизита

Здравствуйте!

При выборе контрагента в поле [Клиент] хотелось бы, чтобы поле [Реквизиты клиента] заполнялось автоматически, если у контрагента один реквизит. Возможно ли это сделать?

Заранее благодарю за помощь.

Нравится

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

Настолько частая задача, что хотелось бы, чтобы её в коробку добавили.

Так как же эта задача решается не из коробки?

Спасибо за Ваш комментарий. Пожелание на доработку в базовой конфигурации системы отправлено соответствующей команде разработки продукта.

ставим attributes

[javascript]
"CustomerBillingInfo": {
dependencies: [
{
columns: ["Account"],
methodName: "setCustomerBillingInfo"
}
]
}
[/javascript]

пишем функцию, которая делает всю работу (кроме того, есть колонка в реквизитах, которая определяет, что этот реквизит должен ставиться по умолчанию).

[javascript]
/**
* Установка BillingInfo по условию: 1) Если у контрагента всего один BillingInfo то
* 2) Вставляем его объект в BillingInfo
* 3) Если больше - ищем по умолчанию
*/
setCustomerBillingInfo: function() {
var account = this.get("Account");
if (account) {
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "AccountBillingInfo"
});
esq.addColumn("Id");
esq.addColumn("Name");
esq.addColumn("UsrDefault");
esq.filters.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Account", account.value));
esq.getEntityCollection(function(response) {
if (response && response.success) {
var collection = response.collection;
if (collection && collection.getCount() > 0) {
var items = collection.getItems();
if (items.length === 1) {
var item = items[0];
this.set("CustomerBillingInfo", {value: item.get("Id"), displayValue: item.get("Name")});
}
else {
items.forEach(function(item) {
if (item.get("UsrDefault")) {
this.set("CustomerBillingInfo", {value: item.get("Id"),
displayValue: item.get("Name")});
return;
}
}, this);
}
}
}
}, this);
}
}
[/javascript]

Владимир, благодарю! Я был на правильном пути, но мне не хватало вот этой строчки кода:

[javascript]
this.set("CustomerBillingInfo",
{value: item.get("Id"), displayValue: item.get("Name")});
[/javascript]

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