Атрибут типа «Запись». Объединение значений из коллекции в строку
Введение
Атрибут типа «Запись» может хранить ссылки на несколько записей в связанном шаблоне (то есть коллекцию или список ссылок).
Для реализации бизнес-требований может потребоваться объединить значения атрибутов связанного шаблона в одну строку. Например, так это позволяет собрать список из гиперссылок, номеров телефонов или артикулов.
При объединении элементов списка в строку можно задать произвольный текстовый разделитель.
Здесь представлен пример вывода значений атрибута из нескольких записей в виде списка с разделителем.
Прикладная задача
Требуется сформировать список артикулов товаров, на которые оформлен заказ.
Список артикулов необходимо вывести в виде строки, разделённой запятыми.
Исходные данные
Имеются шаблон записи «Заказы» и «Товары».
Шаблон «Заказы» связан с атрибутом «Товары» посредством атрибута «Позиции заказа» типа запись, в котором хранится несколько записей.
В шаблоне «Товары» имеется текстовый атрибут «Артикул».
Настройка вычисления
-
В шаблоне «Заказы» создайте атрибут:
- Название: Перечень артикулов
- Тип данных: текст
- Формат отображения: обычный
- Вычислять автоматически
- Вычисляемое значение: N3
# Импортируем функции для работы с объектами и строками
@prefix object: <http://comindware.com/ontology/object#>.
@prefix cmwstring: <http://comindware.com/logics/string#>.
{
# Находим атрибуты «Позиции заказа» и «Артикул»
# в соответствующих шаблонах.
("Заказы" "Позициизаказа") object:findProperty ?collectionAttribute.
("Товары" "Артикул") object:findProperty ?referencedAttribute.
# Собираем список товаров, связанных с текущей записью.
from {
?item ?collectionAttribute ?collectionAttributeVal.
?collectionAttributeVal ?referencedAttribute ?referencedAttributeVal.
} select ?referencedAttributeVal -> ?PartNumber.
# Объединяем значения атрибута «Артикул» в строку,
# разделённую запятыми.
(", " ?PartNumber) cmwstring:join ?concatenatedString.
# Возвращаем результирующую строку.
?concatenatedString -> ?value.
}
-
Поместите атрибут «Позиции заказа» и «Перечень артикулов» на форму заказа.
- Для поля «Позиции заказа» выберите представление в виде таблицы.
- В таблицу «Позиции заказа» добавьте атрибут «Артикул» и кнопку «Создать», чтобы создавать и добавлять товары в заказ.
Тестирование
- Создайте запись в шаблоне «Заказы».
- Создайте несколько позиций заказа и заполните артикулы.
- Сохраните заказ.
- В перечне артикулов должен отобразиться список артикулов, разделённых запятыми.
Эта статья была полезна 1 чел.