Имя: Пароль:
1C
1С v8
Как обратиться к внешней печатной форме в бухгалтерии 3.0
0 Albert Heisenberg
 
15.01.15
13:43
Собственно, сабж.

Есть обработка в бух-ии 2.0, где в ТЗ выносится список ссылок на Счета-фактуры.
После чего для каждой выбранной СФ, печатаю ее с помощью внешней печатной формы:

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

Как реализовать подобное в бухгалтерии 3.0?
1 Albert Heisenberg
 
15.01.15
15:45
Неужели никто не знает?

Может вопрос не очень понятно сформулировал.

Интересуют аналоги функций 2.0 в 3.0.

А именно:

Эта
ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Объект.Ссылка, Объект.ПолучитьСтруктуруПечатныхФорм());

Эта
ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, СтрМакета.Расшифровка, НаПечать);

И эта        УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 0, НаПечать, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект, Объект.Метаданные().Представление()), НаПечать, Объект.Ссылка);

Если в 3.0 это работает как-то по другому, объясните, пожалуйста как.
2 Dmitriy_76
 
15.01.15
15:50
модуль УправлениеПечатью не ?
3 Albert Heisenberg
 
15.01.15
16:25
(2) Ну да, возможно там и находятся функции, которые мне и нужны, но какие именно? И как они взаимодействуют?

Я нашел сотню гайдов по созданию внешней печатной формы, а как ее программно открыть ни одного.

Может быть у Вас были похожие ситуации и Вы могли бы поделиться примером кода или же знаете где можно отыскать описание работы этих функций? Заранее спасибо.
4 Поpyчик-4
 
15.01.15
16:43
(3) Начать с того, как в БСП формируется список внешних печатных форм для объекта и плясать от него. Удовольствие получите неописуемое.
А впрочем, я чем-то похожим занимался и могу сделать за деньги, если сильно надо. Вам ведь нужно ещё разработать для БП 3 формы счетов-фактур.
5 Поpyчик-4
 
15.01.15
16:44
Если надумаете, почта в профиле.
6 Albert Heisenberg
 
16.01.15
15:44
Решил.

Если кому интересно:

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