|   |   | 
| 
 | Сложные печатные формы | ☑ | ||
|---|---|---|---|---|
| 0
    
        MistaEr 02.11.23✎ 11:14 | 
        Добрый день! Заказчик предоставляет шаблоны печатных форм в формате ворд. Через макет mxl, посчитали слишком сложно реализовать. Так и сделали, создаем Новый COMОбъект("Word.Application"), заменяем параметры, удаляем ненужные закладки и строки таблиц, выводим картинки. Работает не быстро. Какие еще есть варианты разработки сложных печатных форм, прошу поделиться.     | |||
| 1
    
        Волшебник 02.11.23✎ 11:16 | 
        MXL побыстрее будет, сделайте над собой усилие     | |||
| 2
    
        vicof 02.11.23✎ 11:18 | 
        Для начала посмотреть, что именно небыстро.     | |||
| 3
    
        PLUT гуру 02.11.23✎ 11:35 | 
        (0) убыстрить можно, если не использовать COMОбъект
 а работать напрямую с XML шаблона печатных форм в формате ворд ДД 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета);
	Чтение 	= Новый ЧтениеДанных(ДД);
	БуферДД	= Чтение.ПрочитатьВБуферДвоичныхДанных();
	Поток	= Новый ПотокВПамяти(БуферДД);
	
	Каталог = КаталогВременныхФайлов() + "ШляпаКакаято";
	СоздатьКаталог(Каталог);
ЗИП 	= Новый ЧтениеZipФайла(Поток);
	ЗИП.ИзвлечьВсе(Каталог, РежимВосстановленияПутейФайловZIP.Восстанавливать);
	ЗИП.Закрыть();
	Поток.Закрыть();
	Чтение.Закрыть();
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(Каталог + "\word\document.xml");
	
	Построитель = Новый ПостроительDOM;
	Док		= Построитель.Прочитать(ЧтениеXML);
	ЧтениеXML.Закрыть();
	Разыменователь = Новый РазыменовательПространствИменDOM(Док);
			
	ВыражениеXPath	= Док.СоздатьВыражениеXPath(...
...тут какие-то магические заклинания 1С по замене параметров, удалению ненужных закладок и строк таблиц и выводу картинки...
//Сохранение результата
	ЗаписьDOM = Новый ЗаписьDOM; 
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(Каталог + "\word\document.xml"); 
	ЗаписьDOM.Записать(Док, ЗаписьXML); 
	ЗаписьXML.Закрыть();
	
	Поток = Новый ПотокВПамяти();
	
	ЗаписьZIP = Новый ЗаписьZipФайла(Поток,,,МетодСжатияZIP.Сжатие);                                  
	ЗаписьZIP.Добавить(Каталог + "\*.*", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); 
	ЗаписьZIP.Записать();
	
	ДД = Поток.ЗакрытьИПолучитьДвоичныеДанные();
	
	АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДД, УникальныйИдентификатор);
УдалитьФайлы(Каталог);
 | |||
| 4
    
        arsik гуру 02.11.23✎ 11:39 | 
        (3) В БСП есть примеры внешних печатных форм в ворде. Там все просто     | |||
| 5
    
        d4rkmesa 02.11.23✎ 11:47 | 
        (0) ActiveDocument, в типовых есть примеры.     | |||
| 6
    
        PLUT гуру 02.11.23✎ 11:48 | 
        (4) просто, но не быстро :)
 например, шаблон на 30 страниц с туевой хучей параметров для замены выводится на печать минут 10... после магии из (3) - примерно секунд 10 | |||
| 7
    
        Волшебник 02.11.23✎ 11:50 | 
        (3) 🔥 Решение — огонь!     | |||
| 8
    
        PLUT гуру 02.11.23✎ 15:43 | 
        (7) мопед не мой, но оказался полезным
 не помню, чем вдохновлялся, возможно это оно: https://infostart.ru/1c/articles/590918/ | |||
| 9
    
        d4rkmesa 02.11.23✎ 11:53 | 
        (0) "Через макет mxl, посчитали слишком сложно реализовать"
 Если в макетах данные идут построчно, то реализовать можно в табличный документ, я встречал не так часто формы, которые особенно муторно рисовать. | |||
| 10
    
        arsik гуру 02.11.23✎ 11:57 | 
        Через форматированный документ еще можно     | |||
| 11
    
        Масянька 02.11.23✎ 12:03 | 
        (6) 10 секунд так уж много (для 30 страниц). Хотят красоты - пусть ждут.     | |||
| 12
    
        Масянька 02.11.23✎ 12:04 | 
        (9) А выделение жирным (например) одного слова (параметра) в строке - как в mxl?     | |||
| 13
    
        Donkey_hot 02.11.23✎ 12:07 | 
        (12) Вроде обещали с 23-й платформы... Сам не проверял.     | |||
| 14
    
        PLUT гуру 02.11.23✎ 12:07 | 
        (11) а 10 минут что-то не хотят ждать
 "ваша программа не работает!" | |||
| 15
    
        PLUT гуру 02.11.23✎ 12:10 | 
        (14) ну можно котиков вывести как вариант, чтобы нескучно было     
 | |||
| 16
    
        MistaEr 02.11.23✎ 12:24 | 
        (3) Спасибо, будем изучать)     | |||
| 17
    
        Gucci76 02.11.23✎ 13:10 | 
        Как правило первая печатная форма в ВОРДе делается долго, но следующая в разы быстрее формируется     | |||
| 18
    
        d4rkmesa 02.11.23✎ 13:16 | 
        (12) На новой платформе через форматированную строку, но могут быть нюансы. )     | |||
| 19
    
        Федя Тяпкин 02.11.23✎ 15:36 | 
        (3) спасибо. утащил в закладки.     | |||
| 20
    
        PLUT гуру 02.11.23✎ 15:43 | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |