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

09.07.12

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Демо-конфигурация с примером
.rar 3,26Mb
33
33 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

См. также

Пакетная печать Этикетки, ценники Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Легкая промышленность, мода и одежда Россия Управленческий учет Платные (руб)

С помощью обработки 1С 7.7 можно коды маркировки вводить вручную или загружать файлы в формате csv и печатать либо на ленту (принтер этикеток) либо на лист (офисный принтер). Есть возможность создать разные шаблоны этикеток с настраиваемым выводом текста и логотипа, с указанием числа рядов и столбцов при печати этикеток на офисный принтер. Имеется проверка штрихкодов на соответствие форматам согласно документа "Протокол информационного обмена (ОФД). Поддерживаются форматы всех товарных групп, подлежащих маркировке или участвующих в эксперименте (алкоголь, изделия из меха, табак, обувь, лекарства, текстиль, шины и т.д.) Выделение из ШК идентификаторов применения (AI) и их показ. Расшифровка максимальной розничной цены (МРЦ) из Datamatrix табака.

2400 руб.

12.03.2020    20284    16    4    

20

Пакетная печать Взаиморасчеты Акт сверки Бухгалтер Пользователь Платформа 1С v7.7 1С:Упрощенное налогообложение 7.7 Россия Бухгалтерский учет Абонемент ($m)

Групповая печать актов сверки по списку клиентов. Формирует две формы на выбор: управленческий акт(простая форма) и фискальный акт (с детализацией по операциям).

1 стартмани

20.01.2023    2224    0    Dedushka    0    

1

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

Внешняя обработка пакетной печати документов из конфигурации Бухгалтерский учет 7.7 ред. 4.5, а также Подрядчик строительства 7.7 ред. 2.3 Для пользователей, вынужденных производить массовую печать документов за период. Внесены изменения в печать счет-фактуры согласно 625 постановлению (№ госконтракта). Внесены изменения в печать счет-фактуры и УПД согласно 981 постановлению.

1 стартмани

23.11.2016    17483    28    SanchoD    4    

5

Пакетная печать Бухгалтер Пользователь Платформа 1С v7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Аналог стандартной обработки "Групповая обработка документов". Добавлена возможность отбора не только по элементам, но и по группам(ТМЦ, Покупатели и тд) Добавлен Множественный фильтр для отбора документов.

1 стартмани

08.07.2016    16483    16    SOLTAN    1    

4

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

Простая внешняя обработка позволяет печатать наиболее часто используемые документы: Счет фактура, Отгрузка товаров (реализация), Счет выданный, ПКО, РКО из выбранного вами списка документов.

1 стартмани

08.12.2014    20142    21    BorisBelov    2    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1065 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. Ёпрст 1065 13.07.12 13:49 Сейчас в теме
(23) а смысл в "одной" общей таблице ?
Как печатать комплект ?
Правильно - никак.
2. Ёпрст 1065 09.07.12 09:08 Сейчас в теме
Ну и в догонку минусы:

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

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

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


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

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

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

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

- бухам главное - печать комплекта документов.. т.е на один документ чтоб сразу печаталось ттн,торг12,счетфактура, приложения, справки ,счет и т.д..
Далеко не всегда. Зачастую бывает нужно именно один какой-то вид перепечатать (ошибка закралась и т.п.)
8. Ёпрст 1065 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 120 11.07.12 19:17 Сейчас в теме
(21) Это скорее идеи для дальнейшего развития.
Лично у меня не доходят руки до универсальной внешней ПечатнойФормы (под 7.7). Такой, что бы считала имеющиеся Печ.Формы, позволила отобрать из них нужный комплект (в т.ч. Подцепила формы подчинённых документов, СчФактуру), затем печатала отобраный комплект при вызове обычной печати.
15. V.Nikonov 120 11.07.12 09:05 Сейчас в теме
К тому же, в ТиС_7.7 "ГрупповаяОбработкаСправочниковДокументов" без проблем печатает документы (форма по умолчанию). Доработать такую функцию под аналогичную обработку из других конфигураций не составит особых проблем...
16. V.Nikonov 120 11.07.12 09:17 Сейчас в теме
Более ценными является внешняя печатная форма документа сособная отпечатать комплект форм! Например, к реализации напечатать Складскую форму и две Торг12. Еще лучше, если можно добавлять подчинённые документы, например, Счет-Фактуру...
Разумеется настройка комплекта должна быть гибкой и универсальной!
17. Ёпрст 1065 11.07.12 09:32 Сейчас в теме
(16) это всё есть в моей поделке
Арчибальд; +1 Ответить
18. V.Nikonov 120 11.07.12 09:40 Сейчас в теме
(17) Ёпрст, уточню: Пользователь настраивает комплект под вид документа, затем печатает сформированный список комплектом. Причем настроеный набор комплекта поминится до следующей перенастройки.
В Вашем случае сначала печатается один набор, затем другой... Разумеется, в случае нескольких печатных форм на документ, наступает очередь "сортировщика" (человек должен рассортировать по комплектам/Документам распечатки)...
Да и поиск связанных документов отсутствует. Например по Накладной не распечатать СчетаФактуры.
19. Ёпрст 1065 11.07.12 09:50 Сейчас в теме
(18) это всё есть в моей поделке - для каждого вида настраивается полный комплект внешних печатных форм, они разом печатаются.
+ все настройки запоминаются
20. Ёпрст 1065 11.07.12 09:52 Сейчас в теме
>>>Например по Накладной не распечатать СчетаФактуры.

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