Как программно распечатать внешнюю печатную форму?
По теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- 1С8:борьба - личный опыт работы с платформой 1с8
- Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
- 1С-ЭДО: внутренний и внешний документооборот в типовых учетных решениях 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Evstari,
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент,Неопределено);
СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");
Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент,Неопределено);
СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");
Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;
(4)
Красавчик!!! Очень помог.
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент,Неопределено);
СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");
Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;
СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("ИМЯ-ВАШЕГО-МАКЕТА","Текст");
Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ТабДокументСФ = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
КонецЕсли;
Красавчик!!! Очень помог.
Возможно, вот пригодится процедура печати внешней печатной формы с отладкой из справочника "внешние обработки". Оказалась почти универсальной для разработки новых печатных форм и отладки имеющихся. Тут, правда, используется передача типа ДокументОбъект в ВПФ из-за особенностей реализации конфигурации ВДГБ Ломбард 3.3
Происходит программный поиск по наименованию внешней обработки - печатной формы в справочнике внешних обработок, создание обработки-объекта во временном каталоге Windows и передача ей параметров документ-объета из которого был вызов.
// Описание доработки: Вызывает данные функции из справочника ВПФ по строгому соответствию имени и передает им объект.
Процедура ПечатьИзВПФ(ИмяВПФ);
СсылкаНаВПФ = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяВПФ);
Если СсылкаНаВПФ.Пустая() Тогда
Сообщить("В справочнике 'Внешние обработки' не нашли внешнюю печатную форму с наименованием '"+ИмяВПФ+"'");
Возврат;
КонецЕсли;
Попытка
ИмяВременногоФайла = КаталогВременныхФайлов()+"тмп_впф.epf";
Исключение
Сообщить ("Невозможно создать файл обработке в каталоге временных файлов <<"+
+КаталогВременныхФайлов()+">>. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С ");
Возврат;
КонецПопытки;
ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Попытка
ОбрОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайла);
ОбрОбъект.ДокОбъект = ЭтотОбъект; // НЕ исп. метод скопировать. Передать ТАК - особенности ВДГБ;
Исключение
Сообщить("Ошибка создания объекта из временного файла обработки "+ИмяВременногоФайла);
Возврат;
КонецПопытки;
// Проба печати
Попытка
ТаблДок = ОбрОбъект.Печать();
ТаблДок.Вывести();
Исключение
А=1; // Точка останова для отладки!
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке() )); // ВНЕШНЮЮ печатную форму из справончика ВПФ можно спокойно поправить!
КонецПопытки;
КонецПроцедуры
//###Дор-
ПоказатьПроисходит программный поиск по наименованию внешней обработки - печатной формы в справочнике внешних обработок, создание обработки-объекта во временном каталоге Windows и передача ей параметров документ-объета из которого был вызов.
Ошибся малость вот этот фрагмент по записи прочитанного в двоичном коде нужно в
ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Попытка Исключение
для зуп 3.0 это можно сделать так:
а потом на клиенте печатать эти табдоки:
ДоговорАвтПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","АвторскийДоговор");
КоллекцияПечатныхФорм=новый ТаблицаЗначений;
ОбъектыПечати = Новый СписокЗначений;
параметрывывода=неопределено;
//1 договор авт
парам = новый структура;
парам.Вставить("ИдентификаторКоманды","Макет");
об = новый массив;
об.Добавить(СтрокаПечати.Договор);
парам.Вставить("ОбъектыНазначения",об);
ДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(ДоговорАвтпф,парам,КоллекцияПечатныхФорм,ОбъектыПечати,параметрывывода);
для каждого стр из КоллекцияПечатныхФорм цикл
табДок = стр.ТабличныйДокумент;
структураПечати = новый структура;
структураПечати.Вставить("ТабДок",ТабДок);
структураПечати.Вставить("Заголовок",строка(СтрокаПечати.Сотрудник)+строка(СтрокаПечати.Договор));
структураПечати.Вставить("Сотрудник",СтрокаПечати.Сотрудник);
структураПечати.Вставить("Договор",СтрокаПечати.Договор);
структураПечати.Вставить("Акт",СтрокаПечати.АктКДоговору);
табдокиВозврата.Добавить(структураПечати);
конеццикла;
Показатьа потом на клиенте печатать эти табдоки:
для каждого ТабДок из табДокиМассив цикл
//массив
коллекция = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
//структура в массиве
СтруктураКоллекции = коллекция.получить(0);
СтруктураКоллекции.ТабличныйДокумент = табДок.ТабДок;
УправлениеПечатьюКлиент.ПечатьДокументов(коллекция,,ЭтаФорма);
//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Макет", "Макет", ТабДок);
//ТабДок.Показать();
конеццикла;
Показать
Свой вариант добавлю:
&НаСервереБезКонтекста
Процедура ПечатьИзВПФ(ИмяВПФ, СсылкаНаДокумент);
СсылкаНаВПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВПФ);
Если СсылкаНаВПФ.Пустая() Тогда
Сообщить("В справочнике ""Дополнительные отчеты и обработки"" не найдена внешнюю печатную форму с наименованием '" + ИмяВПФ + "'");
Возврат;
КонецЕсли;
Попытка
ОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаВПФ);
Исключение
Сообщить("Не удалось напечатать """ + ИмяВПФ + "'"". Ошибка создания объекта дополнительной ПФ");
Возврат;
КонецПопытки;
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СсылкаНаДокумент);
ОбъектыПечати = Новый СписокЗначений;
ОбъектыПечати.Добавить(СсылкаНаДокумент);
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ЧекККМ");
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
Попытка
ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Исключение
Сообщить("Не удалось напечатать """ + ИмяВПФ + "'""." + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Показать
Поделюсь своим, актуальным из практики.
Подробнее:https://geniy1s.ru/proczess-pechati-scheta-oferty-odnoj-knopkoj-alfa-avto-6/
Мне нужно было именно открыть сформированную печатную форму в типовой форме печати:
Подробнее:
Мне нужно было именно открыть сформированную печатную форму в типовой форме печати:
ПечатьИзВПФКлиент("ПечатнаяФормаСчетаОферты", "СчетОфертаНаОплату", СчетСсылка, ЭтаФорма);
&НаКлиенте
Процедура ПечатьИзВПФКлиент(ИмяВПФ, ИдентификаторКоманды, СсылкаНаДокумент, Форма) Экспорт
СсылкаНаВПФ = НайтиВПФПоИмениОбъекта(ИмяВПФ);
Если СсылкаНаВПФ.Пустая() Тогда
Сообщить("В справочнике ""Дополнительные отчеты и обработки"" не найдена внешнюю печатную форму с наименованием '" + ИмяВПФ + "'");
Возврат;
КонецЕсли;
ОбъектыНазначения = Новый Массив();
ОбъектыНазначения.Добавить(СсылкаНаДокумент);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
ДополнительныеПараметры.Вставить("ИсточникДанных", СсылкаНаВПФ);
ДополнительныеПараметры.Вставить("Форма", Форма);
УправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормыЗавершение(ОбъектыНазначения, ДополнительныеПараметры);
КонецПроцедуры
Функция НайтиВПФПоИмениОбъекта(ИмяВПФ) Экспорт
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяВПФ);
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот