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

10.07.21

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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

12000 руб.

13.03.2018    52492    161    72    

97

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

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

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

4800 руб.

08.10.2019    38528    126    85    

116

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

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

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

2400 руб.

13.02.2019    81306    347    43    

327

Учет путевых листов и ГСМ в баках - внешняя обработка для конфигураций 1С:Бухгалтерия 3.0, УТ 11, УНФ

Печатные формы Учет рабочего времени Логистика, склад и ТМЦ Бухгалтерский учет Оперативный учет Управляемые формы 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Формы путевых листов приведены в соответствие Приказу Министерства транспорта РФ от 05.05.2023 № 159, действуют с 01.09.2023. Теперь в сведениях о водителе дополнительно надо указывать СНИЛС, а также серию, номер и дату выдачи водительского удостоверения.. Внешняя обработка позволяет вести учет и формировать печатные формы путевых листов легковых и грузовых автомобилей в конфигурациях на управляемых формах. Ведутся внутренние справочники. По данным базы путевых листов формируются отчеты.

4200 руб.

18.02.2014    100522    279    182    

285

Путевой лист грузового автомобиля в 1С:Бухгалтерия 3.0

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

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

3600 руб.

23.08.2019    48947    136    58    

130

Конструктор внешних печатных форм, ред. 6.1

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

Конструктор внешних печатных форм, ред. 6.1 предназначен для создания внешних печатных форм справочников и документов системы программ 1С:Предприятие 8 (релиз платформы не ниже 8.3.17.1851). Конструктор не требует использования режима работы "Конфигуратор". Он также не требует знания языка программирования 1С. Работает в любых современных конфигурациях, в которых используются внешние печатные формы. С помощью Конструктора пользователь может самостоятельно создавать печатные формы без привлечения программиста.

6000 руб.

07.07.2022    10865    23    29    

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

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

P.S. Я не программер, я только учусь... получается топорно.. но вроде работает... ;-)
4. gzharkoj 478 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 478 30.08.20 16:19 Сейчас в теме
(8) Добрый день. Вы правы, так работает типовой механизм. А в чем смысл не разделять? Может быть от сути задачи станет понятно как ее решить.

Сложность тут в том, что разные печь формы имеют разные макеты, и если их стараться выводить в один табличный документ, то колонки табличного документа начнут съезжать, ломая все представление.
10. пользователь 12.03.21 14:46
Сообщение было скрыто модератором.
...
11. 1st RUS 81 14.03.21 16:12 Сейчас в теме
Отлично расписано. Спасибо.
На основании данной статьи сделал универсальную печать любого комплекта документов с сопроводительным письмом.
Автору респект!
12. gzharkoj 478 14.03.21 20:01 Сейчас в теме
(11) Спасибо, рад что пригодилось.
13. man4ic 22.07.21 16:09 Сейчас в теме
(11) Добрый день! А можно взглянуть на Вашу обработку? ))
14. unreces 02.06.23 09:43 Сейчас в теме
Добрый день. Делаю печ форму с похожим макетом. Где можно подробнее прочитать про область "Подвал" с корректным заполнение полей Отпустил и Получил? Не могу найти пояснения на этот счет. Эти поля у меня должны вытаскивать дополнительные реквизиты.
15. gzharkoj 478 02.06.23 11:19 Сейчас в теме
(14) Добрый день. Ваш вопрос не по теме моей публикации, но вы как программист, данные достаете из базы и подставляете сами, поэтому тут вопрос больше к вам, почему вы не можете это сделать.
Оставьте свое сообщение