gifts2017

Альтернативная подсистема печати

Опубликовал UncleVader (UncleVader) в раздел Программирование - Практика программирования

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

Пришлось наморщить лоб...

В итоге получилось все очень даже симпатично на мой взгляд. Конечно 95% за меня сделали великолепные компоненты FastReport 3. Те кто знаком с ними сразу поймут все вкусности. Ну а кто незнаком, рекомендую посетить офсайт проекта и ознакомится с руководством пользователя http://ns.fast-report.com/pbc_download/FR4.6.UserManual-ru.chm , в котором подробно изложены принципы и тонкости построения отчетов.

Процесс перевода печатных форм 7.7 в формат FR3 заключается в создании с помощью специального редактора макетов с аналогичными секциями и размещения на них полей с переменными. Создание макетов проходит довольно быстро без кардинальных изменений в содержимом исходного прототипа: добавил секцию, накидал на нее текстовых секций и скопипастил в них формулы. У меня создание полной копии одной печатной формы средней тяжести занимало до получаса.

Использование компоненты очень простое:

  • свойство "ОбщиеДанные", типа "СписокЗначений", в котором задаются параметры, видимые в любом месте отчета
  • свойство "Секции", типа "ТаблицаЗначений" со структурой

ТЗПечать = СоздатьОбъект("ТаблицаЗначений");
ТЗПечать.НоваяКолонка("ИмяСекции","Строка",128);
ТЗПечать.НоваяКолонка("Данные","СписокЗначений");

      В которую надо заносить имя выводимой секции и ее данные.

  • метод Показать(ИмяФайлаМакета,"Заголовок окна")


В архиве демка, в которой реализованы штатный и нештатный методы печати счета

Скачать файлы

Наименование Файл Версия Размер
Демо-база с компонентой, макетом и редактором макетов 181
.rar 1,26Mb
02.04.10
181
.rar 1,26Mb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артур Аюханов (artbear) 03.04.10 08:35
"Специальный редактор макетов" где находится? в ВК или в отдельной программе?
2. UncleVader (UncleVader) 03.04.10 11:52
(1) В отдельной программе, забыл сказать что она лежит в каталоге базы в \ExtForms\PrnForms рядом с примером макета
3. Анатолий (Anatolka) 05.04.10 09:41
описание канешно никакое, но за реализацию +
4. Сергей (spectator) 07.04.10 10:33
Очень толково сделано. Давно искал альтернативу штатным средствам. Автору уважуха. :idea:
5. LiS XtZ (lis) 07.04.10 10:40
FastReport? уже и в клюшках? :) +
6. Александр Рытов (Арчибальд) 07.04.10 10:46
7. UncleVader (UncleVader) 07.04.10 12:40
Кто заюзает у себя в бою, отпишитесь как впечатления. У меня пока реализовано около десятка форм, полет нормальный
8. Александр (alex_serb) 09.04.10 10:20
Обязательно себе в архив полезных обработок. Жизнь ширше, вполне может пригодиться и даже очень. Спасибо!!
9. Сергей (Che) Коцюра (CheBurator) 25.05.10 02:06
ндя... чего только не намутят ради логотипов в нижнем колонтитуле ;-)
10. UncleVader (UncleVader) 25.05.10 09:12
11. Kostya Kostik (Kostik_) 29.06.10 15:16
Подскажите, пожалуйста, с помощью этой компоненты и внешнего редактора можно решить следующую задачу???

Задача: есть накладные которые помещаются на половине А4 листа, в альбомном режиме. Нужно создать обработку которая бы печатала все накладные введенные за день по 2-ве на одном А4 в альбомном формате (в накладных может быть разное количество наименований). При реализации штатными средствами 1с ("ВывестиСекцию" и "ПрисоединитьСекцию") не могу этого сделать из-за разного количества наименований, появляться пустое пространство в одной из накладных.
12. UncleVader (UncleVader) 29.06.10 16:03
(11) Кажется мне у тебя не совсем верный подход к формированию печатных форм, твою задачу можно легко решить и штатным методом, ну и естественно этой компонентой тоже! Я такую печать накладных организовываю путем создания 2-х макетов - один в одну колонку для печати одной накладной в портрете и второй макет из двух одинаковых накладных в ландшафте. Таким образом не надо использовать горизонтальные секции - только вертикальные строковые секции.
13. Kostya Kostik (Kostik_) 29.06.10 20:58
(12)
один в одну колонку для печати одной накладной в портрете и второй макет из двух одинаковых накладных в ландшафте. Таким образом не надо использовать горизонтальные секции - только вертикальные строковые секции


Все это прокатило бы если:
- это были бы одинаковые накладные (а не разные с разным количеством ТОВАРОВ);
- это были бы накладные без табличной части.

При твоем подходе я просто не понимаю как вывести, например, 100 наименований товаров
14. UncleVader (UncleVader) 29.06.10 21:17
(13) А, я понял, у тебя на одном листе слева и справа разные накладные, тогда да, надо покумекать... Вообще-то надо покурить мануал от FR на предмет формирования многоколоночных отчетов, и исходя из логики построения подсунуть ему в нужный момент нужные данные. Но это теория, на практике надо пробовать, если что придумаю - скажу, а ты пока глянь оф. документацию. Если надо будет подкрутить компоненту - не вопрос, помогу
15. kosoy 09.02.11 13:18
можно ли аналогичный функционал реализовать на 1С 8.1/8.2? У меня падает на "гМояПечать.Показать(ИмяФайлаПечатнойФормы,"ПЕЧАТЬ: Счет-фактура");"
16. Владимир Простая (Vladimirzz) 07.04.11 10:24
А как работать с группами. Формирую секцию в *.frp3, но заставить ее работать не удается ...
Не получается работать с функциями fastreport.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа