Таблицы с переменным числом строк

Как заполнять акты, счета и накладные, в которых каждый раз разное число позиций, и как подготовить такую таблицу в своём шаблоне.

Зачем это нужно

В одном акте выполненных работ две услуги, в следующем — семь. В счёте то три товара, то двадцать. Если бы каждая строка таблицы была отдельным полем шаблона, пришлось бы держать несколько шаблонов «на 3 строки», «на 5 строк» и так далее.

DocuTract решает это иначе: таблица позиций в шаблоне описана одной строкой-образцом, а при заполнении вы сами добавляете столько строк, сколько нужно именно в этом документе. Так устроены акт выполненных работ, счёт на оплату, расходная накладная, спецификация, товарно-транспортная накладная — и любой ваш шаблон с такой таблицей.

Как заполнять

На шаге Проверка данных таблица позиций выглядит как список карточек: одна карточка — одна строка таблицы. В каждой карточке — поля этой строки, например наименование, единица измерения, количество, цена и сумма.

Шаг проверки акта: строки таблицы услуг в виде карточек с кнопками добавления и удаления

  • Добавить строку — добавляет новую пустую карточку в конец списка. Заполните её поля.
  • Удалить строку — убирает эту строку. Остальные сдвигаются вверх, пробелов в таблице не остаётся.
  • Если строк ещё нет, вы увидите подсказку «Строк пока нет - добавьте первую.»

Карточки подписаны Строка 1, Строка 2 и так далее. В готовом документе строки нумеруются автоматически — номер по порядку проставлять не нужно, и после удаления строки нумерация не собьётся.

В одном документе может быть до 200 строк в одной таблице.

Итоги — это отдельные поля

«Всего», «в том числе НДС», «Сумма прописью» — это не строки таблицы, а обычные поля документа. DocuTract не пересчитывает их сам: заполните их на том же шаге проверки, как остальные значения, и перед генерацией проверьте, что итог сходится с суммой строк.

Если строки не нужны

Если вы удалили все строки, строка-образец таблицы просто не попадёт в документ: шапка таблицы и итоги останутся, а пустой строки с незаполненными ячейками не будет.

Для авторов шаблонов

Если вы создаёте шаблон из готового документа

Ничего делать не нужно. Мастер Создать из документа сам узнаёт таблицу позиций: оставляет первую строку как образец, превращает её ячейки в поля строки, а остальные примерные строки удаляет. Оформление ячеек при этом сохраняется.

Если вы размечаете бланк сами

  1. В таблице позиций оставьте одну строку под данными (шапку таблицы и строку итогов оставьте как есть).
  2. В ячейки этой строки впишите метки с общим префиксом через точку:
| {{items.#}} | {{items.name}} | {{items.unit}} | {{items.qty}} | {{items.price}} | {{items.sum}} |
  1. {{items.#}} — это номер строки. Он не является полем и подставляется сам: 1, 2, 3…
  2. Префикс (items) — это название списка. Все метки одной строки должны иметь один и тот же префикс. Если в документе две разные таблицы, дайте им разные префиксы, например services и materials.
  3. Все метки списка должны стоять в одной строке таблицы: именно эту строку DocuTract повторяет для каждой позиции.

Загрузите бланк — метки строки появятся в сопоставлении полей так же, как обычные.

Чем это отличается от {{#each}}

Похожая запись с точкой используется в повторяющихся блоках {{#each tenants}} — см. Условные блоки и версии. Разница в том, откуда берутся строки: повторяющийся блок повторяется по загруженным сканам (по одному на каждого арендатора), а строки таблицы добавляет человек при заполнении. Если префикс совпадает с названием блока {{#each}}, метки считаются частью блока, а не строки таблицы.