Программная печать внешних печатных форм для УТ 11 (управляемые формы) двумя методами, с выводом шаблона на экран и печатью напрямую на принтер

20.02.18

Задачи пользователя - Адаптация типовых решений

Программная печать внешних печатных форм для УТ 11 (управляемые формы) двумя методами, с выводом шаблона на экран и печатью напрямую на принтер.

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

Предлагаю на суд читателей два алгоритма печати внешних печатных форм.

1. Печать с выводом шаблона на экран.

&НаКлиенте
Процедура ПечатьАкта(Команда) // команда печати формы
        Док = ТекДанные.Ссылка; // получение ссылки Документа
        ВПФ = НайтиВПФ(Док); // получение Внешней печатной формы
// у меня ВПФ привязана к реквизиту документа, если нужно найти запись в Справочнике ДополнительныеОтчетыИОбработки,
// то надо переписать Функцию НайтиВПФ

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

&НаСервереБезКонтекста
Функция НайтиВПФ(Док) //можно передавать НаименованиеВПФ
    ВПФ = Док.Контракт.ПечатнаяФормаАкта; // получаем ссылку на ВПФ из переданного документа
    Возврат ВПФ;//Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(НаименованиеВПФ);//если надо найти по имени
КонецФункции

&НаСервереБезКонтекста
Функция КомандыНаСервере(ВПФ)
    Возврат ВПФ.Наименование;
КонецФункции

В результате, Вы сможете лицезреть заполненный шаблон печатной формы на экране.

В случае, когда надо печатать массив документов с различными шаблонами форм (внешними печатными формами), то 

2. Печать внешней печатной формы прямо на принтер.

&НаКлиенте
Процедура ПечатьАкта(Команда)
    Для каждого ТекДанные из Объект.Акты Цикл //массив документов
        Док = ТекДанные.Акт;
        ВПФ = НайтиВПФ(Док);

        ОбъектыНазначения = Новый Массив;
        ОбъектыНазначения.Добавить(Док);

         ОбъектыПечати = Новый СписокЗначений;
        МассивПечатныхФорм = ПечатьФормыНаСервере(ОбъектыНазначения,ВПФ, ОбъектыПечати);
        ТабДок = МассивПечатныхФорм[0].ТабличныйДокумент;
        ТабДок.Напечатать();//печать сразу на принтер, можно вывести печатную форму если .Показать()
    КонецЦикла;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПечатьФормыНаСервере(ОбъектыНазначения, Форма , ОбъектыПечати)
    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(Форма.Команды[0].Идентификатор);
    ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
    ДвоичныеДанные = Форма.ХранилищеОбработки.Получить();
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
    ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,, Ложь);
    Об    = ВнешниеОбработки.Создать(ИмяОбр);
    Об.Печать(ОбъектыНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    МассивПечатныхФорм = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);
    Возврат МассивПечатныхФорм;
КонецФункции

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

сразу печатает на принтер.

P.S. Чтобы не потерялось и, может, кому пригодится.

внешняя обработка печать сразу на принтер

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4452    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

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

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2953    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    1994    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. pentanom 25 21.03.18 20:04 Сейчас в теме
Это для любой конфигурации ?
2. Misha_J 93 22.03.18 08:54 Сейчас в теме
Тестировалось на УТ 11.
3. pentanom 25 22.03.18 18:24 Сейчас в теме
(2) Я про номер релиза. Например, в 11.3.4.197 я не могу найти Док.Контракт.
4. Misha_J 93 22.03.18 19:22 Сейчас в теме
Вы внимательно прочитайте комментарии в коде. Этот реквизит НЕ стандартный.
5. Bahyt 20 14.11.19 13:54 Сейчас в теме
УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм() теперь не экспортная функция
6. Misha_J 93 03.12.19 10:50 Сейчас в теме
7. unknown181538 151 07.12.21 01:23 Сейчас в теме
&НаСервереБезКонтекста
Функция КомандыНаСервере(ВПФ)
Возврат ВПФ.Наименование;
КонецФункции
Вот сюда вписал идентификатор команды печати, который у меня не совпадает с наименованием в справочнике, в котором представление. В остальном - все сработало.
8. user645544_Snimchenko.Aa 07.07.22 16:46 Сейчас в теме
Спасибо! пригодилось.
9. unknown181538 151 22.08.22 01:59 Сейчас в теме
Второй вариант на сервере и в виде одной процедуры

ВПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет-договор (опт)");;
	
	ОбъектыНазначения = Новый Массив;
	ОбъектыНазначения.Добавить(ДокЗаказ);
	
	ОбъектыПечати = Новый СписокЗначений;
	
	КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("СчетДоговорОпт");
	ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();  
	
	ДвоичныеДанные = ВПФ.ХранилищеОбработки.Получить();
	
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
	ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,, Ложь);
	Об    = ВнешниеОбработки.Создать(ИмяОбр);
	Об.Печать(ОбъектыНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
	МассивПечатныхФорм = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);
	
	ТабДок = МассивПечатныхФорм[0].ТабличныйДокумент;
	ТабДок.Автомасштаб = Истина;  
	ИмяФайла = ПолучитьИмяВременногоФайла("pdf"); 
	
	ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF);
Показать
Tangram; tgr123; +2 Ответить
Оставьте свое сообщение