В связи со все большим использованием LINUX как основной ОС для сервера приложения и для клиента, вопрос формирования печатных форм приказов и т.п. с учетом всех требований по оформлению встал очень остро. Ранее для этого использовали макеты в формате doc и обрабатывали, запуская word или writer в фоне как com приложение.
Пользователи очень требовали работы под Cent OS и «родилось» решение без использования com.
Пользователи очень требовали работы под Cent OS и «родилось» решение без использования com.
Новые версии MS Office хранят файлы в формате docx и xlsx, которые представляют собой zip архив с описанием структуры файла в виде xml файла.
Приступим.
- Готовим печатную форму, в те места куда необходимо внести информацию отмечаем уникальными тегами.
- Загружаем печатную форму в макет как двоичные данные.
- При печати получаем макет как файл и распаковываем.
- В папке находим файл document.xml
- Обрабатываем его как строку (заменяем теги на данные)
- Сохраняем обратно в файл document.xml
- Упаковываем папку в zip архив и отдаем документ пользователю.
В результате получили 2 плюса:
- Форма выводится со всеми отступами и форматированием как в исходном шаблоне.
- Скорость формирования такой печатной формы намного выше.
Во вложении пример.
p.s. Теперь вообще неважно, какой текстовый редактор используется, и на какой ОС работает пользователь.
Что насчет формирования таблиц с переменным количеством строк?
Надо копать глубже структуру xml, пока не было необходимости.
Формат называется Office Open XML — реализаций на 1С не встречал — может быть кто-то в комментариях ниже поделится ссылками.
(1) а в чем трудность? Сделай таблицу с тремя строками, в каждую строку напиши «Строка_1(2,3)» и погляди, что там в XML получилось. Думаю минут 10 надо от силы, чтобы разобраться, как и что с таблицами делать.
ЗЫ: Совсем программисты любопытство потеряли. Или это только 1С-неги таковы? )))
Просто оставлю это здесь:http://infostart.ru/public/16215/
(5)спасибо хорошая обработка, но это универсальное решение для создания документа. Основная мысль моего решения, что заказчики сами готовят документ в том виде, и форматировании в котором хотят получить, работа программиста в этом случае только заменить слова на теги.
Возьму ознакомиться с генерацией Office Open XML. Спасибо.
Не совсем авоматизированная обработка, все равно нужно вручную исправлять
(7) исправь обработку — и не парься.
Пользователю нужна не обработка с кучей настроек, а кнопка формирующая нужный ему документ (печатную форму), а это идея как упростить труд программиста по созданию такой кнопки. Можно дальше развивать, до хранения в отдельном справочнике реестра заменяемых полей и алгоритма как их заполнять по каждой печатной форме и т.д. Надо просто посчитать что выгоднее по времени и дальнейшему сопровождению, сделать печатные формы отдельными обработками или делать делать универсальный механизм?
Очень хорошая идея, спасибо.