Для реализации такого документа в шаблоне можно заранее определить отдельные возможные строки таблицы, дать им имя, а затем из этих строк собирать таблицу так же, как бусинки насаживаются на нить, как нити укладываются слой за слоем в ткань с требуемым узором.
В процессе генерации эти вспомагательные строки удаляются из документа. Какая именно строка должна быть вставлена в документ определяется по ее имени. Именованная строка не обязательно должна быть строкой таблицы, это может быть текст с нужными атрибутами отображения.
Таким образом можно собрать документ, где текст чередуется с разнообразными таблицами. В шаблоне задается помимо именованных строк место, откуда начинается построчная печать. Задача программиста в данном случае сводится к формированию XML, в котором помимо данных будет указано, какой строкой их отображать. Т.о. достигается почти полное (только имя строки задает формат) разделение данных от их представления. И что приятно, имена строк могут быть осмысленными, а генерация происходит быстро.
В заключение хочу добавить, что мест в шаблоне, куда надо впечатывать строки с данными, может быть несколько. Каждое место имеет свое имя (идентификатор). В XML с входными данными необходимо передавать в определенном тэге это имя перед тем как печатать строка за строкой данные. Естественно, данные для печати должны быть отсортированы в порядке следования строк.
Комментарии (14)
sHinE
28.08.2017 23:02+2Очень надеюсь, что это пример работы какого-нибудь инскуственного интеллекта :-D
PennyLane Автор
02.09.2017 10:30Эта статья — попытка на пальцах рассказать о проблемах генерации документов.Естественно, описание опирается на существующую систему генерации.
staticlab
02.09.2017 10:56Извините, но вы ни проблем не привели, ни предложили что-то конкретное. Чем текущие системы шаблонизации не устраивают?
x893
28.08.2017 23:59winword это же лет как 10 умеет.
Да и генератор из winword xml с нужными данными — два-три занимает в реализации.
Какие то абстракные рассуждения ни о чем.
AlexZaharow
29.08.2017 00:19Надеюсь, что настанет тот день, когда можно будет совмещать документ word и данные, без программирования )))
PennyLane Автор
02.09.2017 10:37На данный момент всю разметку шаблонов и диалоги по вводу информации делают сотрудники Бэк офиса (без IT). А вот заполнение полей из БД требует программирования. Но это относится только к новым полям, которые еще не запрограммированы программистом. Спустя определенное время, большинство полей заполняется автоматически и поэтому ваша надежда близка к реализаци. К сожалению, для новых полей я не вижу возможности убрать программирование.
norguhtar
29.08.2017 09:54+1Генерация документа ничем не отличается от генерации веб-страницы. MVC модель отлично тут работает. Как и собственно разметка шаблонизаторов. К примеру xdocreport поддерживает аж два шаблонизатора velocity и freemaker
PennyLane Автор
02.09.2017 10:47Отличие в том, что: 1.результат будет в MS Word или Excel. 2.Документы могут быть более 100 страниц и генерация их должна происходить быстро. 3.Должно быть минимальное участие сотрудников IT, т.к. документы нужны бизнесу и очень удобно, когда бизнес сам для себя делает документы.
michael_vostrikov
30.08.2017 02:29Прочитайте уже книжку по PHP и перестаньте писать ерунду
PennyLane Автор
02.09.2017 10:58Чтение книг, это очень важно. Очень. Однако еще важнее при чтении понимать смысл прочитанного, а не слушать свой внутренний голос. Если бы вы реально видели то, что назвали ерундой, то, возможно, вы бы перестали так легко бросать слова на ветер. Такие слова как Хрень, дребедень, ерунда -это не из словаря ИТишника. Стив Джобс так не выражался. И Линус Торвальдс.
staticlab
02.09.2017 11:07+1Если бы вы реально видели то, что назвали ерундой, то, возможно, вы бы перестали так легко бросать слова на ветер.
Так покажите же нам, откройте глаза, а не балабольте.
Стив Джобс так не выражался. И Линус Торвальдс.
Думается, что как раз эти ребята могли выражаться ещё грубее.
michael_vostrikov
02.09.2017 16:42Я сужу по описанию в вашей статье. Что вам мешало показать в ней то, что я назвал ерундой? А описана у вас самая обычная шаблонизация, из которой вы почему-то сделали проблему.
Такие слова как Хрень, дребедень, ерунда -это не из словаря ИТишника.
А где в вашей статье ИТ-детали? Нет, такие умные слова как "XML" или "шаблон" не являются техническими деталями. Вы просто сказали, что они у вас есть, но не показали, как они используются. Нет ИТ-информации, значит и обсуждать из этой области нечего.
Стив Джобс так не выражался.
Тут вот написано, что он иногда и посильнее выражался.
staticlab
Вы бы хоть пример привели.