Формирование комплекта печатных форм в типовых конфигурациях для разнотипных документов

10.07.21

Учетные задачи - Печатные формы

В типовых конфигурациях используется подход к формированию комплекта печатных форм для одного вида документа, что не всегда удобно. В статье рассмотрен способ печати комплекта печатных форм для группы различных видов документов на базе типового (БСП) механизма печати.

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

Наименование Файл Версия Размер
Комплекты печати в типовых конфигурациях для групп различных документов на примере БП
.epf 14,15Kb
233
.epf 1.0 14,15Kb 233 Скачать

Введение

В текущих типовых конфигурация (УТ, БП, КА и т.д) реализована мощная подсистема вывода печатных форм, наиболее интересный механизм во всем этом разнообразии - это печать комплектов печатных форм. Для этой цели даже были сделаны объекты платформы, ключевой из которых ПакетОтображаемыхДокументов, как раз предназначен для того, чтобы группировать различного рода печатные формы с различными свойствами печати, вывода их на печать или сохранять в файл. Типовая печать комплектов документов как раз и реализована через этот объект, позволяя тем самым печатать документы наборами, а не по порядку (сначала все счета, потом реализации и т.д). Особенно актуальна печать комплектов документов для организаций оказывающих периодические услуги.

Ключевой особенностью типового механизма печати комплектов является то, что при печати комплекта типовая конфигурация отталкивается от конкретного документа и компоновать печатные формы можно именного этого объекта. Скажем если нам надо печатать Накладную и Торг12 в комплекте для реализации проблем нет, но если нам нужно печатать форму сопутствующего документа, например, Счета на оплату, то уже не получится воспользоваться печатной формой именно счета, для этого придется для документ Реализация товаров и Услуг реализовать печать Счета на оплату по документу основанию (счет или заказ), что сделано например в той же Бухгалтерии предприятия. Таким образом, если нужны печатные формы других документов, то необходима какая-либо связь между ключевым документом, для которого печатается комплект, и  зависимыми документами, а также реализация соответствующей печатной формы для ключевого документа, но печатающая зависимый документ.

Данный подход, на мой взгляд, не очень удобен как раз из-за того, что необходимо реализовывать своего рода адаптеры для печатных форм сопутствующих документов. Ниже будет показано как на типовом механизме реализовать печать комплекта документов, формируя печатные формы от различных документов.

Основные моменты типового механизма печати

В общем случае процесс печати комплектов происходит так: выбирается объект (реализация, счет), настраивается комплект печати  в форме НастройкаПечатиКомплекта, где выбираются Команды печати, и эта информация передается в форму ПечатьДокументов, которая и вызывает все необходимые процедуры по формированию печатных форм, подготавливает Коллекцию печатных форм, собирает их в комплекты и выводит на печать. Основные объекты:

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

2. Общая форма НастройкаПечатиКомплекта, в которой можно указать, какие и в каком количестве печатать формы.Особенность этой формы в том, что она при создании собирает все имеющиеся формы для конкретно указанного объекта при открытии, поэтому воспользоваться ей не удастся и придется подобную форму реализовывать самим.

3. Общая форма ПечатьДокументов, где происходит вывод всех подготовленных форм.  Данная форма реализована уже более универсально в отличии от НастройкаПечатиКомплекта и может приниматься как информацию о выбранных Командах печати для однотипных объектов и в дальнейшем вызывать весь необходимый код для их формирования, так и получаться уже подготовленный список любый Табличных документов и выводить их. Как раз то, что нужно и этот объект не придется переделывать.

Реализация формы настройки комплектов печати

Уже было отмечено, что типовой формой НастройкаПечатиКомплекта не воспользоваться и необходимо делать свою. По сути она очень простая: выводить необходимый нам список элементов и возвращает выбранные элементы. В получении списка Команд печати объекта поможет функция УправлениеПечатью.КомандыПечатиФормы, которая принимает имя формы, для которого определяется Команда печати. Имена формы могут быть различные, но практически все команды включаются для списка и имени формы "ФормаСписка".

Получение списка команд для интересующих нас объектов можно получить так:

мДанные = Новый Массив;	
мДанные.Добавить(Метаданные.Документы.СчетНаОплатуПокупателю);
мДанные.Добавить(Метаданные.Документы.РеализацияТоваровУслуг);
мДанные.Добавить(Метаданные.Документы.АктСверкиВзаиморасчетов);
	
КомандыПечати = УправлениеПечатью.КомандыПечатиФормы("ФормаСписка", мДанные);

структура Команды печати выглядит следующим образом:

Для формы выбора на по сути нужно Представление печатной формы и УникальныйИдентификатор, чтобы после выбора нужных форм найти необходимую Команду печати. Примерный вид формы, который получился:

Реализация печати

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

// ДокументДляПечати - Ссылка на документа, по которому нужно получить печатные формы
мОбъектыПечати = Новый Массив();
мОбъектыПечати.Добавить(ДокументДляПечати);

// КомандыПечати - переменная, полученная на предыдущем этапе
// ВыбранныеКоманды - коллекция команд из КомандПечати	
Для Каждого КомандаПечати Из ВыбранныеКоманды Цикл
    ПечатнаяФорма = УправлениеПечатью.СформироватьПечатныеФормы(КомандаПечати.МенеджерПечати, КомандаПечати.Идентификатор, мОбъектыПечати, КомандаПечати.ДополнительныеПараметры);	
КонецЦикла; 

Полученная переменная ПечатнаяФорма содержит в себе структуру, которую можно уже передавать в общую форму ПечатьДокументов и получить результат. Однако нам надо собрать данные от разнотипных данных и собрать потом все это в одну переменную и передать уже в форму печати. Разберем структуру переменной ПечатнойФормы

Ключевыми тут являются два параметра КоллекцияПечатныхФорм и ОбъектыПечати, причем они связаны между собой следующим образом: список ОбъектыПечати содержит в себе информацию о привязки печатаемого документа к области печати Табличного документа. То есть результат печати одной печатной формы нескольких однотипных объектов состоит в том, что формируется один Табличный документ, который содержит в себе столько областей сформированных форм, сколько документов печатается, а соответствие этих областей к документам указано в переменной ОбъектыПечати. Ниже показаны области Табличного документа из переменной КоллекцияПечатныхФорм:

Таким образом, типовой механизм формирует коллекцию печатных форм и по объекту печати группирует сформированные печатные формы, которые представляют собой области в табличном документе с тем же именем, что и в объектах печати или по-другому, для одного печатаемого документа есть псевдоним, например, Документ_1, в различных сформированных табличных документах есть для него печатная форма с именем области Документ_1.

Приходим к следующему:

1. Формируем печатные формы для комплекта по всем входящим в комплект документ, в нашем случае Счет, Реализация и Акт сверки.

2. Собираем полученные печатные формы в одну КоллекцияПечатныхФорм и все документы в ОбъектыПечати при этом необходимо вести свою нумерацию областей Документ_* и соединять все полученные табличные документ в один. Группировка табличных документов производится по одному объекту-документы, в моем примере их 3-и, придется из них выбрать один, в данном случае не важно какой, важно чтобы он был один и тот же для всех своих областей, из которых и сложится комплект печати.

3. Передаем полученные параметры в общую форму ПечатьДокументов и получаем результат.

Примерный код:

// На Сервере формируем все необходимые данные
// Общие коллекции
Общая_Коллекция = УправлениеПечатью.СоздатьКоллекциюКомандПечати();	
Общая_Объекты = Новый СписокЗначений;

// Содержит основные объекты для вывода, необходим для общей формы ПечатьДокументов, по сути повторяет Общая_Объекты
мПараметрКоманды = Новый Массив; 
	
ОбщийИндекс = 0; // Индекс для формирвоания областей Документ_1, Документ_2 и т.д.
Для Каждого СтрокаФормирования Из Объект.Комплекты Цикл
	
	// СтрокаФормирования - в строке документы, в моем случае три: Счет, Реализации, Акт сверки

	ОбщийИндекс = ОбщийИндекс + 1;
	
	ДокументГруппировки = СтрокаФормирования.Счет;
	мПараметрКоманды.Добавить(ДокументГруппировки);
	
	// ВыбранныеФормы - полученные выбранны формы, предствляет собой Уникальный идентификатор команды печати и количество копий для печати
	Для Каждого ПечатныяФорма Из ВыбранныеФормы Цикл

                // Функция определяет по выбранной печатной форме, какой документ печатать (счет, реализация и т.д.)
		ДокументДляПечати = ОпределитьДокументДляПечати(СтрокаФормирования, ПечатныяФорма);
		
		Если ДокументДляПечати <> Неопределено Тогда								
			ОписаниеКоманды = ПолучитьКоманду(ПечатныеФормы, ПечатныяФорма.УникальныйИдентификатор); // Функция вернет по идентификатору нужную команду, ПечатныеФормы - полученные ранее все команды печати
                        // Функция ДобавитьТабличныеДокументы формирует печатную форму и помещает результат в общую коллекцию
                        // с правильным формирование областей и привязкой к к ключевому документу ДокументГруппировки
			ДобавитьТабличныеДокументы(Общая_Коллекция, Общая_Объекты, ДокументДляПечати, ПечатныяФорма, ОписаниеКоманды, ПечатныяФорма.Копий, ОбщийИндекс, ДокументГруппировки);
		КонецЕсли;
		
	КонецЦикла; 
	
КонецЦикла; 

//....
// На клиенте все полученные данные преобразуем при необходимости и подставляем в общую форму ПечатьДокументов
// конвертируем Таблицу значений Общая_Коллекция в массив структур мОбщая_Коллекция, так как открывать форму надо на клиенте

// данная настройка печати нужна для того, чтобы поставлялись указанные нами количество копий печати
ПараметрыПечати = Новый Структура("ПереопределитьПользовательскиеНастройкиКоличества", Истина);
// собираем структуру для общей формы ПечатьДокументов
КомплектыПечати = Новый Структура("КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрКоманды, ПараметрыПечати", мОбщая_Коллекция, Общая_Объекты, мПараметрКоманды, ПараметрыПечати);
// открываем форму с нашими комплектами
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", КомплектыПечати);

Результат работы в типовой форме печати:

В приложенной к статье обработка демонстрирует описанный подход на примере трех документов (счет, реализация, акт сверки) печать комплектов печатных форм в конфигурации Бухгалтерия предприятия 3.0.57. Тестировал так же на Управлении торговлей 11.4.2 немного видоизмененный вариант в части документов (документ счет и акт сверки называется отлично от конфигурации БП).

комплект печати групповое выставление счетов

См. также

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7313    22    6    

39

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    42708    144    88    

134

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

12000 9000 руб.

13.03.2018    56462    179    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

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

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

3240 руб.

13.02.2019    88016    388    44    

371

Печать актов МХ-1, МХ-3 в 1С:Бухгалтерия 3.0

Печатные формы Логистика, склад и ТМЦ Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработки для "1С:Бухгалтерия 3.0", которые формируют акты МХ-1 и МХ-3 для документов "ПоступлениеТоваровУслуг", "Реализация товаров услуг", "Возврат товаров поставщику", "Передача материалов в эксплуатацию" соответственно. Так же можно сформировать акты с факсимиле, которая загружена в 1С:Бухгалтерия 3.0.

2520 руб.

18.02.2019    61111    170    14    

139

Путевые листы (расширение)

Печатные формы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Бухгалтерский учет Платные (руб)

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации Бухгалтерия предприятия 3.0. и Комплексная автоматизация 2. Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана. .

2000 руб.

14.10.2019    36536    225    215    

139
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CBLoner 18.02.18 21:31 Сейчас в теме
А сохранять эта обработка пакетом может?
Скажем по определенной отборке, в один PDF, в котором Счет+УПД. И чтобы имя файла генерировалось по шаблону, скажем использую доп. реквизиты в справочнике контрагента, да еще складывалось в определенную папочку ;-)
А ещё и на FTP? $-)

Реально?
2. gzharkoj 502 18.02.18 22:00 Сейчас в теме
(1) Публикация про другое, все этого обработка не делает. Но если вы программист, то все, что вы описали, сделать достаточно просто на основе прилагаемой к статье обработке.
3. CBLoner 21.02.18 22:11 Сейчас в теме
А программно можно "затолкать" в один PDF, скажем Счет + Счёт + УПД или только каждый файл по отдельности?
Просто не сталкивался, пока... спрашиваю...

P.S. Я не программер, я только учусь... получается топорно.. но вроде работает... ;-)
4. gzharkoj 502 21.02.18 22:40 Сейчас в теме
(3) Да, можно, в этом поможет вам объект ПакетОтображаемыхДокументов, здесь на сайте по этому объекту найдете примеры кода для вашей задачи.
5. RomArz 3 08.08.18 12:44 Сейчас в теме
Спасибо Вам большое за публикацию! Очень искал такое решение. Очень помогло!
6. пользователь 08.05.20 14:17
Сообщение было скрыто модератором.
...
7. пользователь 01.06.20 20:10
Сообщение было скрыто модератором.
...
8. mikit 71 30.08.20 15:37 Сейчас в теме
Добрый день! Подскажите может знаете, печать комплекта по-умолчанию всегда печатает следующий макет с новой страницы. Есть ли метод позволяющий печатать слитно?
9. gzharkoj 502 30.08.20 16:19 Сейчас в теме
(8) Добрый день. Вы правы, так работает типовой механизм. А в чем смысл не разделять? Может быть от сути задачи станет понятно как ее решить.

Сложность тут в том, что разные печь формы имеют разные макеты, и если их стараться выводить в один табличный документ, то колонки табличного документа начнут съезжать, ломая все представление.
10. пользователь 12.03.21 14:46
Сообщение было скрыто модератором.
...
11. 1st RUS 81 14.03.21 16:12 Сейчас в теме
Отлично расписано. Спасибо.
На основании данной статьи сделал универсальную печать любого комплекта документов с сопроводительным письмом.
Автору респект!
12. gzharkoj 502 14.03.21 20:01 Сейчас в теме
(11) Спасибо, рад что пригодилось.
13. man4ic 22.07.21 16:09 Сейчас в теме
(11) Добрый день! А можно взглянуть на Вашу обработку? ))
14. unreces 02.06.23 09:43 Сейчас в теме
Добрый день. Делаю печ форму с похожим макетом. Где можно подробнее прочитать про область "Подвал" с корректным заполнение полей Отпустил и Получил? Не могу найти пояснения на этот счет. Эти поля у меня должны вытаскивать дополнительные реквизиты.
15. gzharkoj 502 02.06.23 11:19 Сейчас в теме
(14) Добрый день. Ваш вопрос не по теме моей публикации, но вы как программист, данные достаете из базы и подставляете сами, поэтому тут вопрос больше к вам, почему вы не можете это сделать.
16. NKV_d 10.10.23 16:23 Сейчас в теме
Добрый день! А можно Вашу обработку использовать для печати печатных форм из внешних обработок?
19. gzharkoj 502 11.10.23 22:17 Сейчас в теме
(16) а сейчас разве не печатает?
20. NKV_d 12.10.23 08:31 Сейчас в теме
(19)Да, не сразу разобрался. Видит эти печатки, но ошибка как в комментарии ниже. Пытаюсь решить эту проблему
17. NKV_d 11.10.23 09:12 Сейчас в теме
И может еще подскажете как пофиксить данную проблема:
Значение не является значением объектного типа (ИмяРеквизита)
{ОбщаяФорма.ПечатьДокументов.Форма(1895)}:ПолеТабличногоДокумента = Элементы[НастройкаПечатнойФормы.ИмяРеквизита];
{ОбщаяФорма.ПечатьДокументов.Форма(1121)}:УстановитьДоступностьКомандВывода();
{ОбщаяФорма.ПечатьДокументов.Форма(724)}:УстановитьТекущуюСтраницу();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

Конфигурация ЗУП 3.1
18. gzharkoj 502 11.10.23 10:08 Сейчас в теме
(17) Надо разбираться, как вы адаптировали, под БП на актуальной версии работает
Оставьте свое сообщение