Таблицы с переменным числом строк
Как заполнять акты, счета и накладные, в которых каждый раз разное число позиций, и как подготовить такую таблицу в своём шаблоне.
Зачем это нужно
В одном акте выполненных работ две услуги, в следующем — семь. В счёте то три товара, то двадцать. Если бы каждая строка таблицы была отдельным полем шаблона, пришлось бы держать несколько шаблонов «на 3 строки», «на 5 строк» и так далее.
DocuTract решает это иначе: таблица позиций в шаблоне описана одной строкой-образцом, а при заполнении вы сами добавляете столько строк, сколько нужно именно в этом документе. Так устроены акт выполненных работ, счёт на оплату, расходная накладная, спецификация, товарно-транспортная накладная — и любой ваш шаблон с такой таблицей.
Как заполнять
На шаге Проверка данных таблица позиций выглядит как список карточек: одна карточка — одна строка таблицы. В каждой карточке — поля этой строки, например наименование, единица измерения, количество, цена и сумма.

- Добавить строку — добавляет новую пустую карточку в конец списка. Заполните её поля.
- Удалить строку — убирает эту строку. Остальные сдвигаются вверх, пробелов в таблице не остаётся.
- Если строк ещё нет, вы увидите подсказку «Строк пока нет - добавьте первую.»
Карточки подписаны Строка 1, Строка 2 и так далее. В готовом документе строки нумеруются автоматически — номер по порядку проставлять не нужно, и после удаления строки нумерация не собьётся.
В одном документе может быть до 200 строк в одной таблице.
Итоги — это отдельные поля
«Всего», «в том числе НДС», «Сумма прописью» — это не строки таблицы, а обычные поля документа. DocuTract не пересчитывает их сам: заполните их на том же шаге проверки, как остальные значения, и перед генерацией проверьте, что итог сходится с суммой строк.
Если строки не нужны
Если вы удалили все строки, строка-образец таблицы просто не попадёт в документ: шапка таблицы и итоги останутся, а пустой строки с незаполненными ячейками не будет.
Для авторов шаблонов
Если вы создаёте шаблон из готового документа
Ничего делать не нужно. Мастер Создать из документа сам узнаёт таблицу позиций: оставляет первую строку как образец, превращает её ячейки в поля строки, а остальные примерные строки удаляет. Оформление ячеек при этом сохраняется.
Если вы размечаете бланк сами
- В таблице позиций оставьте одну строку под данными (шапку таблицы и строку итогов оставьте как есть).
- В ячейки этой строки впишите метки с общим префиксом через точку:
| {{items.#}} | {{items.name}} | {{items.unit}} | {{items.qty}} | {{items.price}} | {{items.sum}} |
{{items.#}}— это номер строки. Он не является полем и подставляется сам: 1, 2, 3…- Префикс (
items) — это название списка. Все метки одной строки должны иметь один и тот же префикс. Если в документе две разные таблицы, дайте им разные префиксы, напримерservicesиmaterials. - Все метки списка должны стоять в одной строке таблицы: именно эту строку DocuTract повторяет для каждой позиции.
Загрузите бланк — метки строки появятся в сопоставлении полей так же, как обычные.
Чем это отличается от {{#each}}
Похожая запись с точкой используется в повторяющихся блоках {{#each tenants}} —
см. Условные блоки и версии. Разница в том, откуда берутся
строки: повторяющийся блок повторяется по загруженным сканам (по одному на каждого арендатора),
а строки таблицы добавляет человек при заполнении. Если префикс совпадает с названием блока
{{#each}}, метки считаются частью блока, а не строки таблицы.