helpf.pro
Регистрация

v8.3: Как программно сформировать внешнюю печатную форму документа

zerbite
15.01.2016 10:36Прочитано: 18897

Добрый день, всем.

имеется обработка в которой есть реквизит Объект.ПрихНакл, в которой хранится ссылка на документ ПоступлениеТоваровУслуг, для этого документа прописана внешняя печатная форма "Приемо-сдаточный акт", из документа все печатает. а как эту форму сформировать из обработки, или с любого другого случайного места? 

Yandex
Возможно, вас также заинтересует
Реклама на портале
IBReiter
15.01.2016 11:30Ответ № 1

В синтакс-помощнике посмотрите: Нужно сначала ее подключить, потом создать, а потом уже использовать по назначению

zerbite
15.01.2016 11:58Ответ № 2

вот такой вариант?:

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

zerbite
15.01.2016 11:59Ответ № 3
Код 1C v 8.2 УП
 Процедура НапечататьРеестр(СсылкаНаОбъект)
ВнешняяПФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Реестр для отгрузки построчный");
ОбработкаОбъект = ВнешняяПФорма.ПолучитьОбъект();
ДанныеОбработки = ОбработкаОбъект.ХранилищеОбработки.Получить();
АдресХранилищаОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки);
ИмяОбработки = Строка(ВнешняяПФорма.Ссылка.УникальныйИдентификатор());
Подключение = ВнешниеОбработки.Подключить(АдресХранилищаОбработки, ИмяОбработки , Истина);
Отчет = ВнешниеОбработки.Создать(Подключение);

Макет = Новый ТаблицаЗначений;
Макет.Колонки.Добавить("ИмяВРЕГ");
Стр = Макет.Добавить();
Стр.ИмяВРЕГ = "Макет";

Отчет.Печать(СсылкаНаОбъект, Макет, Неопределено, Неопределено);
IBReiter
15.01.2016 14:49Ответ № 4

В обычном приложении можно так

Код 1C v 8.3
 

ИмяФайла = КаталогВременныхФайлов() + "\OUT.epf";
Ссылка = Справочники.ВнешниеОбработки.НайтиПоКоду("КодОбработки");
Двоичные = Ссылка.ХранилищеВнешнейОбработки.Получить();
Двоичные.Записать(ИмяФайла);
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
ТД = Обработка.Печать();
ТД.Показать();


zerbite
19.01.2016 09:30Ответ № 5

добрый день, IBReiter, спасибо за ваш ответ. но есть моменты...

метод Печать в модуле внешней печатной форме - это не функция, а процедура и выглядит она вот так

Код 1C v 8.3
 

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПриемоСдаточныйАкт", "Приемо-сдаточный акт", СформироватьПечатнуюФормуПриемоСдаточногоАкта(МассивОбъектов[0], ОбъектыПечати));
КонецПроцедуры // Печать()

в свою очередь есть другая функция СформироватьПечатнуюФормуПриемоСдаточногоАкта(МассивОбъектов[0], ОбъектыПечати), которую при желании можно сделать Экспортной, и там действительно в конце происходит 

возврат табличного документа. 

Код 1C v 8.2 УП
 Возврат ТабличныйДокумент;

КонецФункции // СформироватьПечатнуюФормуПриемоСдаточногоАкта()

но сейчас если печатаешь из документа то открывается специалальная обработка печати документов. а если будет просто ТабличныйДокумент.показать() то будет открыто просто табличное поле.

zerbite
19.01.2016 15:14Ответ № 6

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

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

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

zerbite
19.01.2016 15:14Ответ № 7

всем спасибо

Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.