Атрибуты связанных записей

From Memento Database Wiki
Revision as of 00:24, 8 November 2017 by Admin (talk | contribs) (Created page with "{{Stamp|2017-11-07|4.4.0|1.2.0}} Для поля Link To Entry можно добавить один или несколько атрибутов. Ат...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Jump to navigation Jump to search
« Page as of 2017-11-07, editions Mobile 4.4.0, Desktop 1.2.0 »

Для поля Link To Entry можно добавить один или несколько атрибутов. Атрибут похож на поле записи, он имеет имя и тип. Определение атрибутов выполняется на карточке редактирования поля Link To Entry: карточка редактирования > вкладка Атрибуты.

Значения атрибутов отображаются непосредственно в поле “Ссылка на запись” и заполняются после добавления новой записи в поле.

Пример использования атрибутов

Например у нас есть библиотека Items, содержащая информацию о товарах. Также у нас есть библиотека Order содержащая информацию о заказах. В библиотеке Order есть поле типа Link To Entry в которое добавляются товары из библиотеки Items. Мы можем к полю Link To Entry добавить числовой атрибут Count, который будет отображать количество товара в заказе.

Доступ к атрибутам из скриптов

Триггеры и Действия

Для получения значения атрибута связанной записи, необходимо сначала получить соответствующую связанную запись через метод field(name) объекта Entry. Для связанной записи доступны метод получения значения атрибута - attr(name) и метод установки атрибута setAttr(name , value).

entry().field(field_name)[0].attr(attribute_name) 
entry().field(field_name)[0].setAttr(attribute_name , newValue);

Пример получения значения атрибута Count у поля Items:

//Пример получения значения атрибута Count у поля Items:
var count = entry().field(Items)[0].attr(Count);

//Пример установки значения атрибута Date у поля Items:
entry().field(Items)[0].setAttr(Date , new Date());

JavaScript поле

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

field(field_name)[0].attr(attribute_name)

Пример скрипта получения стоимости элемента добавленного в поле Items. Элемент в Items имеет поле Price, поле Link To Entry имеет атрибут Count:

field(Items)[0].attr(Count) * field(Items)[0].field(Price)

Доступ к атрибутам в вычисляемых полях

Доступ к значению атрибута в Calculation field выполняется с помощью символа - ?:

#{link field name?attribute name}

Например для доступа к атрибуту Count используем следующий синтаксис:

#{items?count}

Если поле содержит несколько ссылок на записи, то можно использовать индекс для доступа к атрибуту:

#{items@0?count}  , #{items@1?count}

Агрегация атрибутов в вычислимых полях

Если поле Link To Entry содержит несколько ссылок на записи, каждая из которых имеет свое значение атрибута, то к этим атрибутам можно применить одну из функций агрегации, например для вычисления суммы всех атрибутов.

Сумма всех атрибутов поля:

$sum('link field name?attribute name')

Функции агрегации поддерживают попарные операции между различными полями связанных записей и атрибутами:

//Данная функция умножает поле linked_feld_name каждой связанной записи на соответствующей этой связи атрибут attribute_name. 
//Набор чисел полученный после умножения - суммируется. 
$sum('link_field_name.linked_feld_name','link_field_name?attribute_name', ‘@mul)

Например, для вычисления общей суммы заказа можно воспользоваться формулой:

//Данная формула попарно перемножает значение поля price у связанной записи и значение соответствующего связи атрибута count. 
//Набор чисел полученный после умножения - суммируется. 
$sum('items.price' , 'items?count' , '@mul' );