Имя: Пароль:
1C
1С v8
БП 3.0 Вызов печати ВПФ
0 nobody
 
28.04.14
14:35
Добрый день!

Имею ВПФ, которую подключаю со след. параметрами:

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

Теперь мне нужно вызывать печать этой формы программным способом (в интерактивном режиме всё функционирует), и тут я застрял в тупике. Как это сделать?
Нашел пару топиков на форуме, к примеру v8: вызов печатной формы БП 3.0 , но ничего не выходит. Подскажите код для вызова печати объекта.
1 Wobland
 
28.04.14
14:37
лениво ссылку открывать. там код есть?
2 nobody
 
28.04.14
14:41
Не заработал у меня тот код вообще. Как я понимаю надо выполнить

КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("Акт реализации услуг с логотипом");

И в колонке "ТабличныйДокумент" должен быть сформирован документ, но у меня там пусто и в дальнейшем тоже ничего хорошего не происходит. Или я где-то жестко туплю уже.
3 Wobland
 
28.04.14
14:45
код подсказан, обкладчик есть
4 nobody
 
28.04.14
15:03
Спасибо, очень информативный ответ. Я бы сам до этого не дошел!
5 nobody
 
04.05.14
02:06
Конечным результатом моих мучений стало:

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

    
    МассивОбъектов = Новый Массив(); // сюда объекты для печати

    Для Каждого СтрокаНайденныеОбъекты Из НайденныеОбъекты Цикл
        
        Если СтрокаНайденныеОбъекты.Выбрать = Истина Тогда
            МассивОбъектов.Добавить(СтрокаНайденныеОбъекты.Объект);
        КонецЕсли;
        
    КонецЦикла;
    
    ОбъектыПечати = Новый СписокЗначений;
    ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
    КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ПФ_MXL_Акт");
    
    Попытка
        ВнешняяОбработка.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                НСтр("ru = 'Ошибка печати: '") + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат Ложь;
    КонецПопытки;
6 nobody
 
04.05.14
02:08
Выполняется это на сервере,

потом возвращаем

    Стр = КоллекцияПечатныхФорм[0];
    Возврат Стр.ТабличныйДокумент;

И на клиенте:

    ТабДок = НашаФункцияНаСервере();
// Если ТабДок = Ложь блаблабла
    ТабДок.Показать();
2 + 2 = 3.9999999999999999999999999999999...