Имя: Пароль:
1C
1С v8
Создание внешней печатной формы
0 Shouldercannon
 
04.11.20
18:35
Доброго времени суток!
Пытаюсь создать внешнюю печатную форму используя макет, созданный в MS Word. Макет загружен как двоичные данные.

Застрял на реализации самого вывода. Нужно просто вывести документ.

Функция Печать(Ссылка, ТабДокумент) Экспорт
    ДвоичныеДанныеМакета = ПолучитьМакет("МакетWord");

    ...

    Возврат ТабДокумент;
КонецФункции
1 Мимохожий Однако
 
04.11.20
19:24
MS Word  и табличный документ разные по сути
2 Сияющий в темноте
 
04.11.20
19:54
В Word можно записать поля,а потом аызвать функцию печати самого Word.
3 RomanYS
 
04.11.20
20:22
https://fastcode.im/Templates/7180

Про подготовку самого макета лучше на ИТС прочитать
4 Shouldercannon
 
05.11.20
13:09
Уточнение. Это для Альфа-Авто. Делали так. Хотел исключить всё лишнее для вывода макета, но знаний не хватает.
[code]Функция Печать(Ссылка, ТабДокумент) Экспорт
    
    ЗН = Ссылка.ДокументОснование;
    Если Не ЗначениеЗаполнено(ЗН) ИЛИ ТипЗнч(ЗН)<>Тип("ДокументСсылка.ЗаказНаряд") Тогда
        Сообщить("Документ Событие должен быть введен на основании заказ-наряда!");
        Возврат ТабДокумент;
    КонецЕсли;
    
    ДвоичныеДанныеМакета = ПолучитьМакет("МакетWord");
    Попытка        
        Если пчПроверитьCOMСоединениеMSWord() Тогда
            ТипМакета = "MS";
        ИначеЕсли пчПроверитьCOMСоединениеOOWriter() Тогда
            ТипМакета = "OO";
        Иначе
            Сообщить("Ошибка при попытке установки соединения.
            |Для вывода печатных форм требуется, чтобы на компьютере был установлен пакет Microsoft Office или Open Office.");
            Возврат Ложь;    
        КонецЕсли;
        
        Макет           = пчИнициализироватьМакет(ДвоичныеДанныеМакета, ТипМакета);
        ПечатнаяФорма  = пчИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета);
        
        Если ПечатнаяФорма <> Неопределено И Макет <> Неопределено Тогда
            Области = Новый Структура;
            пчДобавитьОписаниеОбласти(Области, "Договор",    "Общая");
            
            // Вывод всего документа сразу - чего мелочиться.
            Область = пчПолучитьОбласть(Макет, Области["Договор"]);
            пчПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ПолучитьДанныеОбъекта(ЗН), Ложь);
            
            пчПоказатьДокумент(ПечатнаяФорма);            
        КонецЕсли;
    Исключение
        ИнформацияОбОшибке = ИнформацияОбОшибке();
        Сообщить(ИнформацияОбОшибке);
        пчОчиститьСсылки(ПечатнаяФорма,Ложь);
        пчОчиститьСсылки(Макет);
        Возврат Ложь;
    КонецПопытки;
    
    пчОчиститьСсылки(ПечатнаяФорма,Ложь);
    пчОчиститьСсылки(Макет);
    
    Возврат ТабДокумент;
КонецФункции

Функция ПолучитьДанныеОбъекта(СсылкаНаЗаказНаряд)
    //
    СтруктураВозврата = Новый Структура("ДатаДоговора, Контрагент, Автомобиль, КонтрагентТелефон, КонтрагентПочтовыйАдрес", Формат(ТекущаяДатаСеанса(), "ДФ=dd.MM.yyyy"),
                                                        СсылкаНаЗаказНаряд.Заказчик, СсылкаНаЗаказНаряд.Автомобиль);
    
    //Получаем телефон
    Телефон = СокрЛП(киПолучитьПредставлениеКИ(СсылкаНаЗаказНаряд.Заказчик, Справочники.ВидыКонтактнойИнформации.ТелефонКонтактный));
    Если Не ЗначениеЗаполнено(Телефон) Тогда
        Телефон = СокрЛП(киПолучитьПредставлениеКИ(СсылкаНаЗаказНаряд.Заказчик, Справочники.ВидыКонтактнойИнформации.ТелефонРабочий));    
    КонецЕсли;
    Если Не ЗначениеЗаполнено(Телефон) Тогда
        Телефон = СокрЛП(киПолучитьПредставлениеКИ(СсылкаНаЗаказНаряд.Заказчик, Справочники.ВидыКонтактнойИнформации.ТелефонСотовый));    
    КонецЕсли;
    Если Не ЗначениеЗаполнено(Телефон) Тогда
        Телефон = СокрЛП(киПолучитьПредставлениеКИ(СсылкаНаЗаказНаряд.Заказчик, Справочники.ВидыКонтактнойИнформации.ТелефонДомашний));    
    КонецЕсли;
    СтруктураВозврата.КонтрагентТелефон = Телефон;
    
    СтруктураВозврата.КонтрагентПочтовыйАдрес = СокрЛП(киПолучитьПредставлениеКИ(СсылкаНаЗаказНаряд.Заказчик, Справочники.ВидыКонтактнойИнформации.АдресПочтовый));
    
    Возврат СтруктураВозврата;
    //
КонецФункции[/code]
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.