Когда использовать rows.*
rows.* применяется только для масок вида {{tables.name}}, расположенных в Table v2. Пример таблицы шаблона:
{{tables.name}} | {{tables.count}} | {{tables.price}}
В запросе эти поля становятся:
rows.tables.name
rows.tables.count
rows.tables.price
Разделитель строк
Используется только вертикальная черта |.
-F "rows.tables.name=Насос|Шкаф|Кабель" \
-F "rows.tables.count=2|1|5" \
-F "rows.tables.price=30,59|59,10|100,00"
Запятая остаётся частью значения. Поэтому цены, суммы, названия компаний и любые обычные тексты не требуют экранирования из-за строк таблицы.
Разная длина полей
Сервис создаёт столько строк, сколько значений в самом длинном поле.
rows.tables.name=Насос|Шкаф|Кабель
rows.tables.count=2|1
Результат: три строки. В третьей строке значение tables.count будет пустым.
Статические строки после товаров
Если в таблице есть строка без масок tables.*, например «Итого», она остаётся после созданных динамических строк. Это позволяет заложить в шаблон структуру:
- заголовок;
- одна или несколько строк с
{{tables.*}}; - статический итог, примечание или подпись.
Обычная маска в статической строке, например {{deal.amount}}, не участвует в размножении. Она подставляется один раз.
Ограничения
- Обычный HTML
<table>с масками не получает новых строк. Нужен Table v2. - Маска
tables.*, случайно размещённая вне Table v2, будет требовать значение, но не станет динамической таблицей. - Если логика требует несколько независимых наборов строк на одной странице, каждую таблицу нужно проектировать и тестировать отдельно.
- Сложные объединения ячеек рядом с динамическими строками следует проверить на тестовых данных до отправки клиентам.