Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   v8.3: Как программно сформировать внешнюю печатную форму документа (http://forums.kuban.ru/f1040/v8_3_kak_programmno_sformirovat-_vneshnyuyu_pechatnuyu_formu_dokumenta-7452786.html)

zerbite 15.01.2016 10:59

v8.3: Как программно сформировать внешнюю печатную форму документа
 
Всем доброго дня.
конфа Управление торговлей, редакция 11.2 (11.2.2.116)
Имеется обработка в которой есть реквизит Объект.ПрихНакл, в которой хранится ссылка на документ ПоступлениеТоваровУслуг, для этого документа прописана внешняя печатная форма "Приемо-сдаточный акт", из документа все печатает. а как эту форму сформировать из обработки, или с любого другого случайного места?

DaCAT 15.01.2016 11:31

Такие вот специалисты :)

Helen1986 15.01.2016 11:40

[img]http://lpmotor.s3.amazonaws.com/1/c/5/1c500daca26c8729745186d8c94ef54f.jpg[/img]

zerbite 15.01.2016 12:06

кто не может ни чем помочь посути, можете промолчать)

Секвестр 15.01.2016 13:00

[quote=ДонСпециалистДмитрий;41140237]можете промолчать) [/quote]
Тут интернетный форум, детка, а не линия консультации от 1С. Так что все отвечают в рамках дозволенного.

DaCAT 15.01.2016 14:32

3-ДонСпециалистДмитрий >Спасибо, что разрешили )

DaCAT 15.01.2016 14:33

"Ни чем" пишется слитно, "посути" - раздельно.

zerbite 19.01.2016 10:10

Сразу видно одни специалисты сидят!!!

zerbite 19.01.2016 10:12

Процедура уже написана, она вызывает ВПФ, формируется но не выводит на экран..., кто сталкивался или знает, помогите:

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

Попытка
ИмяВременногоФайла = КаталогВременныхФайлов()+"тмп_впф.epf";
Исключение
Сообщить ("Невозможно создать файл обработке в каталоге временных файлов <<"+
+КаталогВременныхФайлов()+">>. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С ");
Возврат;
КонецПопытки;

ДвоичныеДанные = СсылкаНаВПФ.ХранилищеОбработки.Получить();
ДвоичныеДанные.Записать(ИмяВременногоФайла);

Попытка
ОбрОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайла);
//ОбрОбъект.ДокОбъект = ЭтотОбъект; // НЕ исп. метод скопировать. Передать ТАК - особенности ВДГБ;
Исключение
Сообщить("Ошибка создания объекта из временного файла обработки "+ИмяВременногоФайла);
Возврат;
КонецПопытки;

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

ОбъектыПечати = Новый СписокЗначений;

КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
стр=КоллекцияПечатныхФорм.Добавить();
стр.ИмяМакета="ПриемоСдаточныйАкт";
стр.ИмяВРЕГ="ПРИЕМОСДАТОЧНЫЙАКТ";
стр.Экземпляров=1;

//ИмяМакета=ПриемоСдаточныйАкт, ИмяВРЕГ=ПРИЕМОСДАТОЧНЫЙАКТ, СинонимМакета=, ТабличныйДокумент=, Экземпляров=1, Картинка=, ПолныйПутьКМакету=, ИмяФайлаПечатнойФормы=,

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

КонецПроцедуры

Helen1986 19.01.2016 12:22

[img]http://otvet.imgsmail.ru/download/bebdde1c540a1df39f5cc9d8834ab1e5_i-2093.jpg[/img]

zerbite 19.01.2016 15:26

[quote=Helen1986;41177214] [/quote] это точно, кто-то модули пишет и пытается решение найти, а кто-то картинки постит)))

А ответ оказался очень простой))

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

ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);


код должен выполняться на клиенте, а функция НайтиВПФ() - должны быть на сервере и возвращать ссылку из Справочники.ДополнительныеОтчетыИОбработки


Текущее время: 15:07. Часовой пояс GMT +3.