Печатные формы (боль)


#1

Может конечно вопрос слишком банален для этого форума, но таки решил спросить совета.
Часто встречаемся с задачей реализовать вывод из 1С довольно сложных вещей, типа красивого коммерческого предложения (средствами макета, не реализуемого в 1С, конечно) с данными из 1С (таблицами и прочим фееричным барахлом). Решается это, естественно, втыканием doc файла в макеты, его доставанием и манипуляциями через API ворда, и, конечно, оно умудряется меняться раз в неделю.
Но может кто-то уже нашел или имеет идеи как отделить верстку макета от 1Сников и кода, соответственно.
Мои мысли такие:

  1. данные печатной формы в JSON, дальше макет html.erb, wicked_pdf, на выходе pdf, макет может нарисовать не-1с-персонал, все счасливы
  2. какой-нибудь FastReport ?
  3. сделать свой ERB с блэкджеком и 1Script? :slight_smile:

#2

Попробуйте макеты на Latex. Хранить их легко, т.к. это по сути текст - т.е. макет текстового документа вполне подойдет. Запускать на сборку можно через выполнить приложение - консольных утилит собирающих латех в пдф много. Качество будет всегда стабильно уровня типографии.Вот только верстать их обыкновенные клерки не смогут.


#3

Latex еще и весит порядка 2.5 Гб, если не вдвое больше. Но результат, да, красив.


#4

Ну, так все равно на серваке будет болтаться.
MikTex для винды умеет сам докачивать нужные модули, если чего-то не будет хватать. Комфорт работы с ним достаточно высок. Только опять все будет упираться в в вопрос изменения шаблонов. Если нужно будет менять наполнение - тут вопросов не возникнет. А вот если верстку изменять - то да, нужно будет залезать в файл шаблона.


#5

ну Latex конечно восхитительные документы позволяет делать, но верстать их в нем некому :frowning:


#6

Может pollen (http://docs.racket-lang.org/pollen/index.html) ? простой и расширяемый DSL.


#7

архитектурно это выглядит как code-chunks

пример можно подсмотреть у моего любимого в этом году расширения https://shd101wyy.github.io/markdown-preview-enhanced/#/code-chunk?id=code-chunk

То есть логика работы такая

  • есть утилита рендера в формат
  • она бежит по исходникам - markdown. LateX вставки и т.д. что тебе еще нужно.
  • в части исходников есть блоки помеченные
Сообщить("Привет я строка которая попаду в итоговый документ " + ТекущаяДата());

они выполнятся - и в финальном документе (собранном) будет уже нужная тебе информация

Например

Я бы в эту сторону копал :wink:

А макет пусть рисует ВЕБ дизигнер :wink:


#8

НО - это скорее всего не то что нужно.

Формально нам нужно повторить функциональность JasperReports

Последний раз мы такое делали хитро

  1. сервер jasperReports
  2. HTTP сервисы из 1С в качестве источника https://youtu.be/EfRhl1DyCjU
  3. http сервисы в 1С из jasper https://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v56/running-report-asynchronously

То есть - это выглядело очень прикольно

КлиентJasper.ПолучитьPDF("КоммерческоеПреложение");

а jasper в свою очередь вызывал 1С :wink:

И тогда дизигнеров - вот сюда https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v60/creating-and-customizing-templates