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

10.07.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Комплекты печати в типовых конфигурациях для групп различных документов на примере БП
.epf 14,15Kb ver:1.0
256
256 Скачать (1 SM) Купить за 1 850 руб.

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    234290    1062    898    

1003

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15449    35    7    

70

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

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

14400 руб.

13.03.2018    60743    207    76    

120

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

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

3600 руб.

14.10.2019    38870    258    216    

167

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

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

5400 руб.

08.10.2019    47044    166    95    

160

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

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

13200 руб.

27.06.2023    3883    10    1    

11

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

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

4500 руб.

23.08.2019    57082    174    64    

167

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

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

3720 руб.

18.02.2019    64408    204    15    

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

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

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

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