Публикация

Заполнение полей карточки значениями из полей объекта выбранного в справочном поле

Задача: Например, на карточке контрагента, при выборе в справочном поле Контрагент.Документ, необходимо заполнить поля Контрагент.Объект, Контрагент.Ответственный по Договору значениями полей Документ.Объект, Документ.Ответственный.

Решение:
1. На карточке контрагента добавить в список атрибутов поле Документ (Document)

2. Дописать ему в lookupListConfig в свойство columns набор колонок, которые должны выбираться, кроме стандартных Name, Id. В массив columns указываются пути к колонкам, которые необходимо так же выбирать. Сюда же можно написать колонку вида [ResourcesReservation:Document:Id].IsActual, соответственно обращаться к ней надо будет примерно следующим образом: document["[ResourcesReservation:Document:Id].IsActual"] поскольку алиас задать здесь нельзя.

attributes: {
    "Document": {
        lookupListConfig: {
            columns: ["Facility", "Owner"]
        }
    }
},

3. Далее необходимо дописать зависимость полей Контрагент.Объект, Контрагент.Ответственный по договору от поля Контрагент.Документ. Дополним атрибуты.

[javascript]
attributes: {
    "Document": {
        lookupListConfig: {
            columns: ["Facility", "Owner"]
        }
    },
    "Facility": {
        dependencies: [
            {
                columns: ["Document"],
                methodName: "setDocumentValues"
            }
        ]
    }
    "DocumentOwner": {
        dependencies: [
            {
                columns: ["Document"],
                methodName: "setDocumentValues"
            }
        ]
    }
}

4. Опишем метод setDocumentValues (комментарии в нем)

methods: {
    setDocumentValues: function() {
        var document = this.get("Document"); //получаем документ, выбранный в справочном поле (на этом этапе в нем уже есть две дополнительных колонки Owner и Facility
       [javascript]
 if (document) {
            if (document.Facility) { //проверяем наличие значения в колонке
                this.set("Facility", document.Facility);    
            }
            if (document.Owner) {
                this.set("DocumentOwner", document.Owner);
            }
        }
    }
}

Нравится

Поделиться

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

Планируется ли реализовывать такую возможность для настройки аналитиком через мастер страницы?

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