Возвращаясь к напечатанному…, или опять про массовую печать документов в 1С 7.7

09.07.12

Задачи пользователя - Пакетная печать

Еще один способ массовой печати документов в 1С 7.7 для любой конфигурации.
Возможна печать как "внутренних" печатных форм документов, так и внешних.
Помимо прикладного применения, для непосвященных в ООП данная публикация служит хорошим примером, что такое классы и как их применять на практике.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Демо-конфигурация с примером
.rar 3,26Mb
33 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Вопрос о необходимости распечатывания в 1С большого количества документов поднимался не раз, и в сети можно найти немалое количество обработок, посвященных решению данной проблемы. Данный вопрос не так давно встал и передо мной в следующей постановке: «Мне нужна обработка, позволяющая распечатать много накладных, печатная форма – “ТОРГ-12 (форма 2011г.)” (есть у нас такая внешняя печатная форма – прим. автора)».

Не мудрствуя лукаво, беру за основу ту самую внешнюю печатную форму, вешаю на диалоговое окно всякие красивости для отбора накладных, подправляю код и, вуаля - все готово! Дальше - больше: «А еще мне нужно массово распечатывать эти накладные, но в печатной форме “ТОРГ-12 (Пром)” (есть у нас и такая внешняя печатная форма – прим. автора). Тут уже нужно было что-то делать более универсальное на случай, если через некоторое время понадобятся опять или новые документы, или новые печатные формы.

Выход я нашел следующий: классы! Суть: каждую внешнюю печатную форму оборачиваем в класс и вызываем его из обработки массовой печати документов. Доработки внешней печатной формы под класс совсем небольшие и занимают меньше времени, чем их описание в этой статье. А доработать необходимо следующее:

  • - объявляем экспортными переменную «Докум» и процедуру «Печать()»;
  • - решительно удаляем процедуру «ПриОткрытии()»;
  • - исходную таблицу копируем из обработки в файл «.mxl» (поскольку класс не увидит ее внутри обработки, на то он и класс) и, соответственно, заменяем выражение типа «Таблица.ИсходнаяТаблица(«Таблица»);» на выражение типа «Таблица.ИсходнаяТаблица(глКаталогПечФорм + «Торг12.mxl»);»;
  • - чтобы получить одну портянку с кучей документов, а не кучу портянок по одному документу, убираем объявление типа «Таблица = СоздатьОбъект(«Таблица»);» и «Таблица.ИсходнаяТаблица(глКаталогПечФорм + «Торг12.mxl»);» из процедуры «Печать()» и вставляем его в модуль обработки (добавляем в конец модуля). Соответственно, переменную «Таблица» объявляем переменной модуля;
  • - также убираем из процедуры «Печать()» выражение типа «Таблица.Показать()», вместо этого добавляем экспортную процедуру «Показать()» с единственной строкой: «Таблица.Показать();». Этот метод будем вызывать после цикла с методом «Печать();
  • - для того, чтобы новый документ печатался на новой странице, в конце процедуры «Печать()» добавляем строку типа «Таблица.НоваяСтраница()»;
  • - проверяем модуль на наличие строк типа «Таблица.ПовторятьПриПечатиСтроки();».  Иначе будет сюрприз!
  • - ну и естественно, предусмотреть загрузку внешней компоненты 1срр.dll (если она у вас до сих пор не предусмотрена) и описать классы в defcls.prm.

В результате мы имеем:

  1. Обработка является универсальной - ее можно внедрить в любую конфигурацию.
  2. С помощью примера, приведенного в  данной обработке, можно распечатать любой документ в любой внутренней или внешней печатной форме. При выходе в свет новой печатной формы она элементарно добавляется в обработку.
  3. Код обработки стал до предела кратким и понятным (и содержит порядка сотни строк). Для добавления нового документа нужно добавить лишь несколько строк кода в конец модуля путем копи-паста. Для добавления новой печатной формы к уже существующему документу нужно добавить всего одну строку кода.
  4. Для непосвященных в ООП это отличный пример, что такое классы и как их применять на практике.

Если процедура вывода на печать находится в модуле формы документа, то логика работы та же самая: процедуру «Печать()» копируем и оборачиваем в класс. Правда, здесь доработок будет побольше: нужно будет добавить ссылку на документ (т.е. то, что передается контекстом во внешнюю печатную форму).

Недостатки: я уже написал по поводу строк кода типа «Таблица.ПовторятьПриПечатиСтроки();», с помощью которых выводится на следующую страницу заголовок табличной части документа. Поскольку у меня подавляющее большинство документов помещалось на одной странице, я закомментировал эти строки и убрал колонтитулы из печатных форм. Если кому-нибудь понадобится выводить эти строки - обработку надо будет доработать. Но это недостаток конкретной реализации, а не самой идеи.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Пакетная печать Оперативный учет 7.7 Бухгалтерский учет 7.7 Россия Абонемент ($m)

В стандартный универсальный отчет "Печать документов" из ИТС внесено изменение. Список документов отсортирован по алфавиту. В исходном отчете он отсортирован по положению документа в конфигураторе. При большом количестве документов найти нужный документ в несортированном списке занятие мало приятное.

1 стартмани

24.05.2012    13170    18    mig2008    3    

3

Пакетная печать Кассовые операции Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Абонемент ($m)

Обработка позволяет в пакетном режиме печатать ПКО И РКО

1 стартмани

04.05.2012    10464    41    Alook    3    

4

Печатные формы Кассовые операции Пакетная печать Программист Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 Россия Бухгалтерский учет Абонемент ($m)

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

1 стартмани

25.04.2012    12561    38    Leannet    7    

5

Пакетная печать Документооборот и делопроизводство (СЭД) Бухгалтер Бухгалтерский учет 7.7 1С:Производство+Услуги+Бухгалтерия Россия Бухгалтерский учет Абонемент ($m)

Обработка позволяет пакетную и выборочную печать форм: 1. СФ 283 2. СФ 451 3. СФ 1137 4. Акт оказания услуг На основании документов вида "ПоступлениеУслугПрочее" Пользовательское название "Услуги сторонних организаций"

1 стартмани

16.04.2012    16202    25    juker    11    

4

Пакетная печать Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Карточки для склада - учет материалов. Делал по требованию аудиторов.

1 стартмани

05.04.2012    9874    21    mix1201    1    

1

Пакетная печать Печатные формы Документооборот и делопроизводство (СЭД) Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Обработка выводит печатную форму документов "Поступление товара" и "Услуги сторонних организаций", а также формирует к ним счет-фактуру поставщика по форме 2012 года.

1 стартмани

18.03.2012    14996    140    marvm    24    

3

Зарплата Пакетная печать Бухгалтер Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет Абонемент ($m)

Расчетные листки выводятся по 3 шт. на лист с разделительной линией для удобства разрезания большого количества РЛ резаком для бумаг. Удобно для организаций с большим кол-вом сотрудников.

1 стартмани

15.02.2012    12215    41    _MPV_    4    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1068 09.07.12 09:02 Сейчас в теме
Наиболее подходящая для этих целей обработка от Ёпрст (Печать внешних форм документов для 7.7) не выводит печатную форму на экран

Вранье!
Еще как выводит, там даже галка есть - выводить на просмотр.
3. gimalaj 17 09.07.12 09:51 Сейчас в теме
(1) Ёпрст,
Тогда извини, не увидел.
23. gimalaj 17 11.07.12 19:19 Сейчас в теме
(1) Ёпрст,
"- Наиболее подходящая для этих целей обработка от Ёпрст (Печать внешних форм документов для 7.7) не выводит печатную форму на экран

- Еще как выводит, там даже галка есть - выводить на просмотр. "

Запустил я твою обработку, чтобы посмотреть, как выводит. Она выводит кучу портянок, содержащих по одному документу. Для этого можно было вообще не заморачиваться с классами, а просто в цикле вызывать ВПФ. Я и сел-то за нее для того, чтобы выводить на экран одну портянку, содержащую все документы.

(15) V.Nikonov,
Она выводит кучу печ.форм в которых содержится по одному документу. У меня выводится одна портянка со всеми документами.
Арчибальд; +1 Ответить
25. Ёпрст 1068 13.07.12 13:49 Сейчас в теме
(23) а смысл в "одной" общей таблице ?
Как печатать комплект ?
Правильно - никак.
2. Ёпрст 1068 09.07.12 09:08 Сейчас в теме
Ну и в догонку минусы:

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

ЗЫ:
В моей поделке, печатать можно комплект печатных форм (который у каждого вида документов свой)
+печать на конкретный выбранный принтёр + предварительный просмотр на экран, при желании
+запись в файло при желании + МФ

+ писать руктями ничего не надо.
4. gimalaj 17 09.07.12 09:58 Сейчас в теме
(2) Ёпрст,
Цель этой статьи - не засунуть печать всех документов в одну обработку, а показать еще один способ, как это можно сделать. Перечисленные минусы - это минусы конкретной реализации, а не самой идеи. При желании все указанное можно добавить в обработку.


-печать только одной формы для каждого документа
-печать только 1 вида документа

Тут уже ваша неправда, все это добавляется как указано в статье. Да и в самом примере включено два документа и две печатных формы на документ.
5. Ёпрст 1068 09.07.12 11:48 Сейчас в теме
(4) не верю.

Из скриншота видно, что выбрать можно только один вид документа и только одну печатную форму у этого вида документа.
6. gimalaj 17 09.07.12 12:02 Сейчас в теме
(5) Я изложил идею, а обработку можно доработать. Если вы так настойчивы, я доработаю...
7. Ёпрст 1068 09.07.12 12:05 Сейчас в теме
(6) идея не очень..Слишком много переделок, бухи не оценят.
ЗЫ: я всего лишь прокомментил скриншот к обработке.
9. gimalaj 17 09.07.12 12:27 Сейчас в теме
(7) Форум-то не для бухов, а для программистов. Бухи печатать будут, а не оценивать )
(8) Класс - это копия файла внешней печатной формы, у меня - в отдельной папке.
10. Ёпрст 1068 09.07.12 13:03 Сейчас в теме
(9) кодеры тем более не оценят - никакой универсальности + все формы переделывать.
11. gimalaj 17 09.07.12 13:52 Сейчас в теме
(10) Переделывать нужно не все, а только нужные, и сама переделка занимает несколько минут.
12. Ёпрст 1068 09.07.12 13:56 Сейчас в теме
(11) как ты будешь оценивать "нужность" печатной формы ?
Нужные, это какие ?
По определению - все печатные формы документа.
А бухам главное - печать комплекта документов.. т.е на один документ чтоб сразу печаталось ттн,торг12,счетфактура, приложения, справки ,счет и т.д..

+отбор
13. gimalaj 17 09.07.12 15:43 Сейчас в теме
(12)
- как ты будешь оценивать "нужность" печатной формы ?
Да никак не буду. Буду исходить из поставленной задачи: какую форму нужно будет - ту и подцеплю.

- бухам главное - печать комплекта документов.. т.е на один документ чтоб сразу печаталось ттн,торг12,счетфактура, приложения, справки ,счет и т.д..
Далеко не всегда. Зачастую бывает нужно именно один какой-то вид перепечатать (ошибка закралась и т.п.)
8. Ёпрст 1068 09.07.12 12:06 Сейчас в теме
+7 сами классы то где хранить собираешься ? В мд ? Во внешних файлах ?..
14. Арчибальд 2709 10.07.12 10:17 Сейчас в теме
Слушай Ёпрста! (с) Арчибальд.
В самом деле, если под каждый чих начинать программировать... пусть даже это пара строчек... а уж классы заводить... Это умножение сущности без необходимости.

Кроме упомянутой печати от Ёпрста есть еще и http://infostart.ru/public/78895/ и http://infostart.ru/public/78036/.
21. gimalaj 17 11.07.12 19:11 Сейчас в теме
(14), (20)
Я понимаю, что Ёпрст - чувак авторитетный (без иронии ;)), и что ваши обработки функциональней моей и готовы к использованию сразу после скачивания. Cел я за нее потому, что знал, что с Инфостарта просто так (без $m) файлы не скачать. Возможность бесплатного скачивания обработки от Ёпрст я обнаружил только после публикации статьи. Поэтому публикация может служить руководством к действию прежде всего тем, у кого нет возможности качать файлы отсюда.
22. V.Nikonov 126 11.07.12 19:17 Сейчас в теме
(21) Это скорее идеи для дальнейшего развития.
Лично у меня не доходят руки до универсальной внешней ПечатнойФормы (под 7.7). Такой, что бы считала имеющиеся Печ.Формы, позволила отобрать из них нужный комплект (в т.ч. Подцепила формы подчинённых документов, СчФактуру), затем печатала отобраный комплект при вызове обычной печати.
15. V.Nikonov 126 11.07.12 09:05 Сейчас в теме
К тому же, в ТиС_7.7 "ГрупповаяОбработкаСправочниковДокументов" без проблем печатает документы (форма по умолчанию). Доработать такую функцию под аналогичную обработку из других конфигураций не составит особых проблем...
16. V.Nikonov 126 11.07.12 09:17 Сейчас в теме
Более ценными является внешняя печатная форма документа сособная отпечатать комплект форм! Например, к реализации напечатать Складскую форму и две Торг12. Еще лучше, если можно добавлять подчинённые документы, например, Счет-Фактуру...
Разумеется настройка комплекта должна быть гибкой и универсальной!
17. Ёпрст 1068 11.07.12 09:32 Сейчас в теме
(16) это всё есть в моей поделке
Арчибальд; +1 Ответить
18. V.Nikonov 126 11.07.12 09:40 Сейчас в теме
(17) Ёпрст, уточню: Пользователь настраивает комплект под вид документа, затем печатает сформированный список комплектом. Причем настроеный набор комплекта поминится до следующей перенастройки.
В Вашем случае сначала печатается один набор, затем другой... Разумеется, в случае нескольких печатных форм на документ, наступает очередь "сортировщика" (человек должен рассортировать по комплектам/Документам распечатки)...
Да и поиск связанных документов отсутствует. Например по Накладной не распечатать СчетаФактуры.
19. Ёпрст 1068 11.07.12 09:50 Сейчас в теме
(18) это всё есть в моей поделке - для каждого вида настраивается полный комплект внешних печатных форм, они разом печатаются.
+ все настройки запоминаются
20. Ёпрст 1068 11.07.12 09:52 Сейчас в теме
>>>Например по Накладной не распечатать СчетаФактуры.

еще как распечатать, достаточно сделать внешнюю форму счет фактуры и "привязать" её сразу к 2-м документам - к реализации и к счетфактуре (у нас так сделано давно).
И печатать из документа реализация сразу весь комплект.
24. gimalaj 17 13.07.12 13:10 Сейчас в теме
Товарищи комментаторы, ухожу в отпуск, две недели отвечать на ваши комментарии не буду.
26. Ёпрст 1068 13.07.12 13:50 Сейчас в теме
Да и на экране никто смотреть ЭТО не будет.. максимум - показ одного документа, а когда их 100 и больше - всё отправляется на печать и привет.
27. пользователь 01.08.12 13:09
Сообщение было скрыто модератором.
...
Для отправки сообщения требуется регистрация/авторизация