Каталог решений - Добавление команд печати в свои документы в Бухгалтерии 3.0

Добавление команд печати в свои документы в Бухгалтерии 3.0

Добавление команд печати в свои документы в Бухгалтерии 3.0

В наличии

Данная публикация может быть вам полезна, если вы хотите сделать своим нетиповым документам в Бухгалтерии 3.0 универсализированную печать (не затрагивая типовые объекты). Эта статья подойдет для любой конфигурации на основе БСП, так как использует возможности ее подсистемы «Печать»

Категория:

Описание

В Бухгалтерии 2.0 была очень удобная типовая процедура

УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
					  Заголовок, НепосредственнаяПечать, Ссылка, ИмяМакета) 

Она помогала вывести ваш печатный документ в универсальное окно печати, где вы выбирали количество копий, вариант сохранения и тому подобное

Сейчас, переходя с 2.0 на 3.0, я стал искать аналог этой процедуры и не нашел. Но это к лучшему, потому что я нашел еще более универсальный механизм. Он опирается на механизмы подсистемы «Печать» БСП (БСП — это основа всех современных конфигураций фирмы 1С). Нужно добавить несколько функций в два модуля: Модуль менеджера и Модуль формы. Пусть у нас есть нетиповой документ Приказ, и у него есть два макета и две формы. 

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

     

Откроем форму ФормаДокумента, и создадим обработчик ПриСозданииНаСервере. Скопируем в модуль формы следующий код:

&НаСервере 
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)	
	
КонецПроцедуры 

&НаКлиенте 
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
	
	УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)
	
КонецПроцедуры  

 

Теперь откроем Модуль менеджера и скопируем туда следующий код:

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт 

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

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

Функция   СформироватьНесколькоАктов(МассивОбъектов)
	
	ТабДокумент = Новый ТабличныйДокумент;
	Для каждого Ссылка из МассивОбъектов Цикл
		ТабДокументОбъекта = СформироватьАкт(Ссылка); 
		Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда 
			ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
		КонецЕсли;
		ТабДокумент.Вывести(ТабДокументОбъекта)
	КонецЦикла;

	Возврат ТабДокумент

КонецФункции 

Функция   СформироватьНесколькоПриказов(МассивОбъектов)
	
	ТабДокумент = Новый ТабличныйДокумент;
	Для каждого Ссылка из МассивОбъектов Цикл
		ТабДокументОбъекта = СформироватьПриказ(Ссылка); 
		Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда 
			ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
		КонецЕсли;
		ТабДокумент.Вывести(ТабДокументОбъекта)
	КонецЦикла;

	Возврат ТабДокумент

КонецФункции 

Функция  СформироватьАкт(Ссылка)

	ТабДокумент = Новый ТабличныйДокумент; 
	// подготовка ТабДокумента
	Возврат ТабДокумент 

КонецФункции 

Функция   СформироватьПриказ(Ссылка)
	
    ТабДокумент = Новый ТабличныйДокумент;
    // подготовка ТабДокумента 
    Возврат ТабДокумент 

КонецФункции 

Все готово, в форме документа у нас теперь программно будут добавляться кнопки печати. Чтобы они появились и в форме списка, проделайте с ней тоже самое (создайте обработчик ПриСозданииНаСервере и скопируйте код в Модуль формы ФормаСписка, в Модуле менеджера уже ничего менять не надо). Единственное отличие в третьем параметре функции ВыполнитьПодключаемуюКомандуПечати: вместо Объект нужно написать Элементы.Список. Также у этого списка обязательно должна быть колонка Ссылка, пусть даже невидимая. 

Результат всего этого выглядит так:

 

Форма документа

 

Форма списка

 

Универсальное окно печати в Бухгалтерии 3.0

 

P.S. Если при открытии информационной базы появится такое окно, то просто выполните то, что там написано, это нормально

подробнее о подсистеме «Печать» на ИТС:  https://its.1c.ru/db/bspdoc#content:219:hdoc

has been added to your cart:
Оформление заказа