|
Сложные печатные формы | ☑ | ||
---|---|---|---|---|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |