Записи и коллекции. Объединение значений из коллекции в строку
Введение
Атрибут типа «Запись» может хранить ссылки на несколько записей в связанном шаблоне (то есть коллекцию или список ссылок).
Для реализации бизнес-требований может потребоваться объединить значения атрибутов связанного шаблона в одну строку. Например, так это позволяет собрать список из гиперссылок, номеров телефонов или артикулов.
При объединении элементов списка в строку можно задать произвольный текстовый разделитель.
Здесь представлен пример вывода значений атрибута из нескольких записей в виде списка с разделителем.
Прикладная задача
Требуется сформировать список артикулов товаров, на которые оформлен заказ.
Список артикулов необходимо вывести в виде строки, разделённой запятыми.
Исходные данные
Имеются шаблон записи «Заказы» и «Товары».
Шаблон «Заказы» связан с атрибутом «Товары» посредством атрибута «Позиции заказа» типа запись, в котором хранится несколько записей.
В шаблоне «Товары» имеется текстовый атрибут «Артикул».
Настройка вычисления
-
В шаблоне «Заказы» создайте атрибут:
- Название: Перечень артикулов
- Тип данных: текст
- Формат отображения: обычный
- Вычислять автоматически
- Вычисляемое значение: 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 чел.