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

20.02.18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

29400 руб.

29.06.2023    6548    17    6    

27

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

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

7200 руб.

02.08.2023    4591    18    1    

36

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    7258    75    17    

32

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

Маленькая заметка (в трех разных масштабах) для тех, кто часто видит окно при входе в ЗУП «Новые сообщения для расшифровки по 1С-Отчетность», которое появляется через 60 секунд после запуска программы, как раз когда вы уже добрались до интересующей вас формы и начали в ней что-то активно делать:

1 стартмани

17.06.2024    3114    42    Znata_PI    5    

13

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5602    dimanich70    15    

22

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

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

01.03.2024    8576    dimanich70    10    

21

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

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

1 стартмани

27.10.2023    4047    32    TempTablesManager    14    

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

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