Вопрос

Печатная форма с выгрузкой в один файл

Добрый день!

Судя по публикация в сообществе, данный вопрос уже поднимался. Как выгрузить записи в один файл? Т.е. выделить несколько записей и "собрать" их в один pdf или word документ, что бы не сохранять большое количество файлов?

Конкретно у меня задача следующая:

выделить или отфильтровать в объекте записи и сгенерировать печатную форму. Но это должен быть 1 файл, где каждый лист (или каждых 2-3) - это новый документ, т.е. если бы я печатал по одной записи. 

Идея озвучивалась здесь https://community.terrasoft.ua/ideas/pecatnaa-forma-s-vygruzkoi-v-odin-fail , вроде как она было одобрена, но я так и не понял, разработан ли данный функционал?

Кое-что обсуждалось здесь https://community.terrasoft.ua/questions/massovaa-pecat-izmenit-logiku , но сохранение списка файлов в одной папке по умолчанию не подходит.

https://community.terrasoft.ru/forum/topic/9434 пост, увы, удален, поэтому не знаю, придумали ли какое-нибудь решение.

Больше информации я не нашел. Если есть какие-то решения, мысли, идеи, то просьба поделиться. Буду очень благодарен, если подскажете, в какую сторону двигатья, что искать и как закрыть эту задачу.

У меня такой же вопрос

9 комментариев
Лучший ответ

Андрей Корень,

Для on-site вы можете использовать сторонии dll на

c# например: itextsharp или уже упомянутый выше PDFSharp для объединения нескольких pdf в один или аналогичные для docx формата (Например openXML)

Те вам нужно получить ваши печатные формы (docx/pdf файлы)

При формировании печатных форм вызывается ReportService который сохраняет сформированый отчет во временной сессии UserConnection по ключу. Вам нужно сэмулировать вызов сервиса отчетов, получить ключ отчета в сесионном сторадже и затем забрать из стораджа готовые отчеты (файлы) по полученому ключу

Как то так:

object reportObj = UserConnection.SessionData[key];
var report = (ReportData)reportObj;
var reportStream = new MemoryStream(report.Data);

Получив файлы вам остается лишь погуглить как объеденить несколько файлов в один.

В общем технически все решаемо.

 

 

 

Для такого рода вопросов желательно чтобы вы уточняли хотя бы версию вашего crm и способ размещения On-Site или On-Demand?

Григорий Чех, 7.12 и выше (on-site). 

Указанную тему (https://community.terrasoft.ru/forum/topic/9434 ) можно найти по этой ссылке, если вам это поможет https://community.terrasoft.ru/questions/problema-s-propuskom-masterdata-headera-i-footera-v-seredine-otceta

Добрый день!
Насколько знаю, PDFSharp умеет конвертировать и объединять pdf документы: пример

Андрей Корень,

Для on-site вы можете использовать сторонии dll на

c# например: itextsharp или уже упомянутый выше PDFSharp для объединения нескольких pdf в один или аналогичные для docx формата (Например openXML)

Те вам нужно получить ваши печатные формы (docx/pdf файлы)

При формировании печатных форм вызывается ReportService который сохраняет сформированый отчет во временной сессии UserConnection по ключу. Вам нужно сэмулировать вызов сервиса отчетов, получить ключ отчета в сесионном сторадже и затем забрать из стораджа готовые отчеты (файлы) по полученому ключу

Как то так:

object reportObj = UserConnection.SessionData[key];
var report = (ReportData)reportObj;
var reportStream = new MemoryStream(report.Data);

Получив файлы вам остается лишь погуглить как объеденить несколько файлов в один.

В общем технически все решаемо.

 

 

 

Григорий Чех,

Огромное спасибо! Буду пробовать.

Коллеги, всем спасибо за помощь. После решения задачи отпишусь, как в итоге решили все сделать.

Последняя ссылка не подойдёт, там для 3.Х.

В случае автора вопроса, насколько понимаю, нужно просто построить по выбранным или отфильтрованным записям отчёт определённого вида, вроде такого:

Можно сделать как в стандартных отчётах в разделе, которые вызываются из режима итогов, например, «Data entry compliance» в разделе контрагентов. Для построения отчёта в реестре фильтруют или помечают галочками нужные записи, переключаются в итоги, выбирают этот отчёт, а потом строят по выделенным, по отфильтрованным или по всем:

Схема этого отчёта AccountDataCompletenessReport, привязка таких отчётов к разделам задаётся в таблице SysModuleAnalyticsReport. Для выбора вариантов формирования используется страница BaseReportParameterInModulePageFilter.

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

Андрей Корень,

Добрый день. Проблема как-то решилась, если да, то не подскажите как?

Войдите или зарегистрируйтесь, чтобы комментировать