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

20.02.18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

7200 руб.

02.08.2023    4295    16    1    

33

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

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

29400 руб.

29.06.2023    6164    15    5    

24

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 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    6839    73    10    

30

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

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

2 стартмани

22.04.2024    5337    dimanich70    15    

22

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

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

01.03.2024    7342    dimanich70    10    

19

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

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

1 стартмани

27.10.2023    3696    30    TempTablesManager    14    

54
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 158 07.12.21 01:23 Сейчас в теме
&НаСервереБезКонтекста
Функция КомандыНаСервере(ВПФ)
Возврат ВПФ.Наименование;
КонецФункции
Вот сюда вписал идентификатор команды печати, который у меня не совпадает с наименованием в справочнике, в котором представление. В остальном - все сработало.
8. user645544_Snimchenko.Aa 07.07.22 16:46 Сейчас в теме
Спасибо! пригодилось.
9. unknown181538 158 22.08.22 01:59 Сейчас в теме
Второй вариант на сервере и в виде одной процедуры

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