|
Очень долгое заполнение таблицы шаблона Word (клиент-сервер) | ☑ | ||
|---|---|---|---|---|
|
0
kubik_live
17.04.26
✎
18:28
|
Коллеги, доброго дня.
Проблема: Формирую ВПФ с заполнением шаблона MS Word. В файловой версии - практически сразу заполняется таблица в Word и макет выводится. В клиент-серверной: (в зависимости от числа строк для заполнения таблицы > 10..15 приходится ждать до 40 мин.. (67 строк = 32 минуты ждал), если до 5..10 - достаточно быстро. Вот код: &НаКлиенте Процедура Печать_ПриказОПремировании(СтруктураДок) Word = Новый COMОбъект("Word.Application"); ИмяМакета="ЗаРезультатыГодовая"; Макет = ПолучитьМакетСервер(ИмяМакета); // макет в формате ДД ИмяФайла_Макет = ПолучитьИмяВременногоФайла("docx"); Макет.Записать(ИмяФайла_Макет); ДокументWord = Word.Documents.ADD(ИмяФайла_Макет); ДокументWord.Activate(); СоздатьИЗаполнитьТЗПодстановок_ПриказОПремировании(СтруктураДок); Для Каждого СтрТЗ Из Объект.ПромТЗ Цикл ПоискИЗаменаВWord_НаКлиенте(ДокументWord,СтрТЗ.Шаблон,СтрТЗ.СтрокаЗначения); КонецЦикла; Таб = ДокументWord.Tables.Item(2); Для Сч = 1 По Объект.ПромТЗТаблица.Количество() Цикл Таб.Rows.Add(Таб.Rows(2)); КонецЦикла; Строка=2; Для Каждого СтрТЗ Из Объект.ПромТЗТаблица Цикл ДанныеСтроки=СтрТЗ; //ВОТ ТУТ НАЧИНАЮТСЯ ТОРМОЗА В КЛИЕНТ-СЕРВЕРНОЙ ВЕРСИИ.... // ---> Таб.Cell(Строка,1).Range().InsertAfter(СтрТЗ.Подразделение); Таб.Cell(Строка,2).Range().InsertAfter(СтрТЗ.Сотрудник); Таб.Cell(Строка,3).Range().InsertAfter(СтрТЗ.Должность); Таб.Cell(Строка,4).Range().InsertAfter(СтрТЗ.Премия); // <---- Строка = Строка + 1; КонецЦикла; Таб.Rows(Строка).Delete(); Word.Visible = Истина; Word.Application.WindowState = 2;//свернуть Word.Application.WindowState = 1;//развернуть Word.Activate(); КонецПроцедуры Что можно сделать для решения проблемы? |
|||
|
1
timurhv
17.04.26
✎
18:30
|
2026 год, Word через Com? Вот решение, работать будет махом.
https://infostart.ru/1c/articles/2155772/ |
|||
|
2
timurhv
17.04.26
✎
18:34
|
Это вы ссылки вставляете в Word или там строковые типы?
СтрТЗ.Подразделение СтрТЗ.Сотрудник СтрТЗ.Должность |
|||
|
3
kubik_live
17.04.26
✎
18:36
|
(2) строковые
|
|||
|
4
kubik_live
17.04.26
✎
18:40
|
(1) Не могу понять: что тут так разнится по времени заполнения в файловой и клиент-серверной?
Сможете на пальцах объяснить? |
|||
|
5
kubik_live
17.04.26
✎
18:42
|
Да, ещё:
Офис на сервере 2010 Prof (x64) Офис (при работе в файловой - отладка) Microsoft® Word 2021 MSO (16.0.14326.20450), 64-разрядная версия |
|||
|
6
timurhv
17.04.26
✎
21:02
|
(5) Тут у вас все на клиенте вертится заполнение, сервер непричем.
Отключить проверку правописания. НО, крайне рекомендую переделать под (1) - там просто махом заполнится, хоть 1000 листов. Плюс если в момент вывода через COM на клиенте пользователь выполнит ctrl+C и ctrl+V, то этот текст вставится и в Word, хотя Word у пользователя и не открыт был. У сотрудника будет шок, когда он скопирует в чате коллег сообщение какой ген.директор козел и отправит Word-документ ген.директору, где скопированное сообщение будет вставлено где-то на 30-ой странице документа. |
|||
|
7
kubik_live
18.04.26
✎
14:28
|
(7) Спасибо большое, буду изучать инструмент (1)
Если есть пример готовый ВПФ типа "Hello,world", буду очень благодарен |
|||
|
8
Garykom
гуру
18.04.26
✎
20:45
|
||||
|
9
kubik_live
18.04.26
✎
22:56
|
(8) "Это и я так умею!" © Промокашка "Место встречи изменить нельзя"
По существу использования, что описано в (1), в присланном мне макете для заполнения не удалось выполнить. Начал копировать присланный макет по элементам в новый док-макет = очень муторно, структура шапки макета тяжелая. После этого начало работать. Пока ещё разбираюсь (на мой взгляд) с (1): технология в (1) весьма трудоемка для внедрения заполнения в сторонние макеты. Если создавать с "нуля" - тогда годится |
|||
|
10
2mugik
18.04.26
✎
23:12
|
БСП не поможет? Вроде бы до что-то
|
|||
|
11
kubik_live
18.04.26
✎
23:27
|
(10)
в (1) как раз и использование БСП |
|||
|
12
timurhv
19.04.26
✎
01:08
|
(9) Оно муторно в первый раз, условно дня 2 потратите разобраться с этим механизмом. А потом по-накатанной, зато забудете раз и навсегда COM, сможете большие документы формировать и тп.
|
|||
|
13
2mugik
19.04.26
✎
08:23
|
может клиент серверной 1С запускается на другом компе, чем файловая? РДП например. получается что файловая 1с норм по кому работает, а клиент серверной нет.
|
|||
|
14
kubik_live
19.04.26
✎
10:56
|
(12) Согласен. Сейчас разобрался с нумерованным списком и таблицами. Начинает все больше нравиться этот механизм.
Спасибо Вам большое! |
|||
|
15
kubik_live
19.04.26
✎
11:02
|
(13) Тут (0) что-то другое: именно затык происходит, когда в макете присутствуют таблицы с кол-вом строк более 10-15. С банальными текстовыми подстановками в шаблон, COM нормально отрабатывает
|
|||
|
16
kubik_live
20.04.26
✎
21:13
|
(12) Тимур, есть вопрос по поводу вывода списка по методе (1).
:Можно ли в конкретной строке выводимого списка часть текста строки изменить цвет и установить подчеркивание? Как это можно сделать Вот фрагмент макета {v8 Область.СписокУровень1} 1. {v8 ТекстСписок1} {/v8 Область.СписокУровень1} |
|||
|
17
kubik_live
20.04.26
✎
21:31
|
(16) Дошло как: в структуру вывода впихнуть 3 элемента с массивами необходимых частей строк
{v8 Область.СписокУровень1} 1. {v8 ТекстСписок1Часть} {v8 ТекстСписок1Часть_ЭтуКрасимЦветом}..... {v8 ТекстСписок1Часть_ЭтуПодчеркиваем} {/v8 Область.СписокУровень1} Проверил, получилось! |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |