В Бухгалтерии 2.0 была очень удобная типовая процедура
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Заголовок, НепосредственнаяПечать, Ссылка, ИмяМакета)
Она помогала вывести ваш печатный документ в универсальное окно печати, где вы выбирали количество копий, вариант сохранения и тому подобное
Сейчас, переходя с 2.0 на 3.0, я стал искать аналог этой процедуры и не нашел. Но это к лучшему, потому что я нашел еще более универсальный механизм. Он опирается на механизмы подсистемы "Печать" БСП (БСП - это основа всех современных конфигураций фирмы 1С). Нужно добавить несколько функций в два модуля: Модуль менеджера и Модуль формы. Пусть у нас есть нетиповой документ Приказ, и у него есть два макета и две формы.
Для каждого из двух макетов у нас подготовлены функции СформироватьАкт(Ссылка) и СформироватьПриказ(Ссылка), возвращающие табличные документы, которые нам нужно будет красиво выводить на печать. Хочется, не прилагая больших усилий, добиться следующего результата: чтобы в каждой из двух форм этого документа в командной панели была кнопка-подменю Печать, в которой был бы список из наших печатных форм.
Откроем форму ФормаДокумента, и создадим обработчик ПриСозданииНаСервере. Скопируем в модуль формы следующий код:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма) КонецПроцедуры &НаКлиенте Процедура Подключаемый_ВыполнитьКомандуПечати(Команда) УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект) КонецПроцедуры
Теперь откроем Модуль менеджера и скопируем туда следующий код:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "Акт"; КомандаПечати.Представление = "Дополнительный акт"; КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "Приказ"; КомандаПечати.Представление = "Приказ"; КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; КонецПроцедуры Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт", СформироватьНесколькоАктов(МассивОбъектов),"Документ.Приказ.Акт"); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Приказ") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Приказ", "Приказ", СформироватьНесколькоПриказов(МассивОбъектов),"Документ.Приказ.Приказ"); КонецЕсли; КонецПроцедуры Функция СформироватьНесколькоАктов(МассивОбъектов) ТабДокумент = Новый ТабличныйДокумент; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = СформироватьАкт(Ссылка); Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц() КонецЕсли; ТабДокумент.Вывести(ТабДокументОбъекта) КонецЦикла; Возврат ТабДокумент КонецФункции Функция СформироватьНесколькоПриказов(МассивОбъектов) ТабДокумент = Новый ТабличныйДокумент; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = СформироватьПриказ(Ссылка); Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц() КонецЕсли; ТабДокумент.Вывести(ТабДокументОбъекта) КонецЦикла; Возврат ТабДокумент КонецФункции Функция СформироватьАкт(Ссылка) ТабДокумент = Новый ТабличныйДокумент; // подготовка ТабДокумента Возврат ТабДокумент КонецФункции Функция СформироватьПриказ(Ссылка) ТабДокумент = Новый ТабличныйДокумент; // подготовка ТабДокумента Возврат ТабДокумент КонецФункции
Все готово, в форме документа у нас теперь программно будут добавляться кнопки печати. Чтобы они появились и в форме списка, проделайте с ней тоже самое (создайте обработчик ПриСозданииНаСервере и скопируйте код в Модуль формы ФормаСписка, в Модуле менеджера уже ничего менять не надо). Единственное отличие в третьем параметре функции ВыполнитьПодключаемуюКомандуПечати: вместо Объект нужно написать Элементы.Список. Также у этого списка обязательно должна быть колонка Ссылка, пусть даже невидимая.
Результат всего этого выглядит так:
Форма документа
Форма списка
Универсальное окно печати в Бухгалтерии 3.0
P.S. Если при открытии информационной базы появится такое окно, то просто выполните то, что там написано, это нормально
подробнее о подсистеме "Печать" на ИТС: https://its.1c.ru/db/bspdoc#content:219:hdoc