Имя: Пароль:
1C
1С v8
Печать сразу нескольких ВПФ - 1С 8.2 УТ 10.3
0 Godunov
 
27.07.16
15:39
Здравствуйте специалисты 1С, сам ещё новичок.
Необходимо печатать из «Реализации Т. и У.» для автоматической печати след. документы внешних печатных форм:
1. Сопроводительный лист – 1шт.
2. Расходная накладная на склад с весом – 1шт.
3. ТОРГ-12 Общая – 2 шт.
4. Счёт-фактуры – 2 шт

Понимаю, что необходимо создать новую ВПФ, в которой сразу будут формироваться и отправляться на печать все нужные формы. Эта форма должна вызывать вывод каждой формы и отправку её на печать.
Т.е. не впихивать туда все формы, а вызывать оттуда их печать.

Как это можно сделать, можете пример привести?

Пы.Сы.: Просьба, если есть информация, как помочь - напишите, если нет - то давайте не будем нарушать правила форума и оставим своё мнение при себе. А то исходя из некоторых тем определённых личностей, так и хочется им показать эту картинку...
http://flipward.ru/uploads/images/d/e/v/devchata_majskij_vals_minus.jpg
1 John83
 
29.07.16
11:54
я формировал все таб. документы, запихивал их в массив и возвращал в функции печати
2 John83
 
29.07.16
11:56
хотя соврал..
делал так
ТабДокумент = ПечатьСчФ();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(Ссылка));
3 Godunov
 
03.08.16
12:43
Дополню.

Для новой ВПФ прописал функцию печати, где идёт обращение к готовой ВПФ под названием "Паспорт качества", при которой она должна вывести на экран форму с заполненными данными, но выводит только форму без данных, подскажите пожалуйста, как поправить код, чтобы подставлялись данные, как показаны на рисунке 2?
http://savepic.ru/10780681.png
http://savepic.ru/10787849.png
Я так понимаю, мне надо обратиться к ВПФ "Паспорт качества.epf " и её функции ПечатьДокументаПК, как это сделать, пока не пойму...
http://savepic.ru/10775561.png
4 Godunov
 
03.08.16
12:44
(3) Сам код.
Функция Печать() Экспорт

ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(СсылкаНаДокумент, Неопределено);
    СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("Паспорт качества","Текст");
        
    Расшифровка = СтрокаКнопки.Расшифровка;
    Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
    ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаДокумент, Расшифровка);
    ТабДокумент.Показать();
        КонецЕсли;
    
КонецФункции
5 Мимохожий Однако
 
03.08.16
12:58
Если встанешь отладчиком на кнопку Печать, то дойдешь до процедуры вызова печатной формы из справочника Внешние обработки. Он тебе и поможет.
Например,
Расшифровка=Новый Структура;
    Расшифровка.Вставить("ВидПечатнойФормы",Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма);
    Расшифровка.Вставить("ЗаменяемаяПечатнаяФорма",Неопределено);
    Расшифровка.Вставить("НомерСтроки",1);
    Расшифровка.Вставить("СсылкаНаВнешнююОбработку",ПечатнаяФорма);
    Возврат УниверсальныеМеханизмы.НапечататьВнешнююФорму(СсылкаНаОбъект, Расшифровка);
6 Мимохожий Однако
 
03.08.16
12:59
+ (5) ПечатнаяФорма - это ссылка на элемент справочника Внешние обработки.
7 Godunov
 
03.08.16
13:04
(5) Попробую.
8 Godunov
 
03.08.16
14:11
(5) Можно глупый вопрос, как встать отладчиком на кнопку Печать?)
9 Godunov
 
03.08.16
14:41
Прописал такой код, но выдаёт ошибку.

Процедура ПечатьИзВПФ(ПаспортКачества);            
    СсылкаНаВПФ = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ПаспортКачества);            
    Если СсылкаНаВПФ.Пустая() Тогда            
        Сообщить("В справочнике 'Внешние обработки' не нашли внешнюю печатную форму с наименованием '"+ПаспортКачества+"'");            
        Возврат;            
    КонецЕсли;            
                    
    Попытка            
        ИмяВременногоФайла = КаталогВременныхФайлов()+"ПаспортКачества.epf";            
    Исключение            
        Сообщить ("Невозможно создать файл обработке в каталоге временных файлов <<"+            
        +КаталогВременныхФайлов()+">>. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С ");            
        Возврат;            
    КонецПопытки;                
                
    Попытка            
    ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();                    
    ДвоичныеДанные.Записать(ИмяВременногоФайла);            
        ОбрОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайла);            
        ОбрОбъект.ДокОбъект = ЭтотОбъект; // НЕ исп. метод скопировать. Передать ТАК - особенности ВДГБ;            
    Исключение            
        Сообщить("Ошибка создания объекта из временного файла обработки "+ИмяВременногоФайла);            
        Возврат;            
    КонецПопытки;            
                
    // Проба печати            
    Попытка            
        ТаблДок = ОбрОбъект.Печать();            
        ТаблДок.Вывести();            
    Исключение            
        А=1; // Точка останова для отладки!            
        Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке() )); // ВНЕШНЮЮ печатную форму из справончика ВПФ можно спокойно поправить!            
    КонецПопытки;                
                        
КонецПроцедуры    

http://savepic.ru/10768414.png
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший