← Назад к заметкам

Заметки

Как считать суммы в Word-шаблоне документа

Как считать суммы в Word-шаблоне: формулы Word, таблицы, подготовка итогов в коде и ограничения DocumentGenerator.

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

Задача

В документе нужно вывести таблицу работ или товаров и посчитать итоги: сумму строки, общий итог, НДС, сумму с НДС.

Где считать

Есть два подхода. Первый — считать всё заранее в CRM, роботе или коде и передавать в шаблон готовые числа. Второй — использовать формулы Word внутри таблицы.

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

Формулы Word

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

=SUM(ABOVE)

Если пользователь открыл документ в Word, формулы можно обновить. В автоматической PDF-версии такой пересчёт может вести себя иначе.

Итоги в коде

Если документ формируется автоматически и сразу уходит клиенту, лучше передать итог как отдельное поле.

$total = 0;

foreach ($rows as $row) {
    $total += (float)$row['SUM'];
}

$fields['TOTAL_SUM'] = number_format($total, 2, ',', ' ');

Так меньше сюрпризов при конвертации в PDF и онлайн-редактировании.