|
Заполнение макета Word. Помогите ускорить работу кода | ☑ | ||
---|---|---|---|---|
0
Роспатнюк Сергей Сер
17.04.18
✎
11:03
|
Помогите пожалуйста ускорить работу кода. Конфигурация: Зарплата и Управление Персоналом, редакция 2.5 (2.5.130.2), Платформа 1С:Предприятие 8.3 (8.3.10.2580)
в этой процедуре в первой строке Замена.Execute кол-во 3990 время 091.44% Процедура ЗаполнитьПараметры(Замена, НаименованиеПараметра, СтрокаКЗаполнению) Стр = СтрокаКЗаполнению; Для Сч = 1 По 114 Цикл Попытка Замена.Execute(НаименованиеПараметра + Сч, Ложь, Истина, Ложь, , , Истина, , Ложь, Лев(Стр,1), 2); Исключение Замена.Execute(НаименованиеПараметра + Сч, Ложь, Истина, Ложь, , , Истина, , Ложь, "", 2); КонецПопытки; Стр = Сред(Стр,2); КонецЦикла; КонецПроцедуры |
|||
1
Beduin
17.04.18
✎
11:05
|
(0) А почему 114?
|
|||
2
mehfk
17.04.18
✎
11:11
|
(0) Чем помочь? Отсюда не видно что есть "Замена".
|
|||
3
Джо-джо
17.04.18
✎
11:12
|
попробуте поменять
Для Сч = 1 По 114 Цикл нп Для Сч = 1 По 4 Цикл |
|||
4
Роспатнюк Сергей Сер
17.04.18
✎
11:13
|
Замена = Документ.Content.Find;
|
|||
5
Роспатнюк Сергей Сер
17.04.18
✎
11:14
|
код писал не я так что почему 114 еще не знаю.
|
|||
6
mehfk
17.04.18
✎
11:14
|
А ты интриган.
|
|||
7
Lexey_
17.04.18
✎
11:14
|
(4) а Документ наверно это СтрПрФр.ГрБрМР?
|
|||
8
SleepyHead
гуру
17.04.18
✎
11:14
|
Не надо ничего ускорять. Программа должна работать солидно, мигая лампочками, иначе уважать не будут.
|
|||
9
Вафель
17.04.18
✎
11:14
|
потому что всего 114 параметров.
Явно нужно думать чтобы не все номера заменять, а только те что есть. Например при записи макета искать номер максимального параметра |
|||
10
Beduin
17.04.18
✎
11:17
|
(5) Ты лучше расскажи, как так получилось что тебе пришлось с этим разбираться?
|
|||
11
Роспатнюк Сергей Сер
17.04.18
✎
11:17
|
ТабДокумент = ПолучитьМакет("МакетWord");
MSWord = ТабДокумент.Получить(); Документ = MSWord.Application.Documents(1); Документ.Activate(); Selection = MSWord.Application.Selection; Selection.Expand(6); //WholeStory; Selection.Copy(); //Документ.Content.Copy(); Замена = Документ.Content.Find; |
|||
12
Fish
17.04.18
✎
11:17
|
(9) А я так понял из (0), что он 114 раз один и тот же параметр заполняет.
|
|||
13
Вафель
17.04.18
✎
11:18
|
(12) побуквенно.
Скорее всего это типо фамилии в клеточках |
|||
14
assasu
17.04.18
✎
11:19
|
(0) 114 параметров в печатной форме? я не верю...
вдруг там есть повторяющиеся, так их можно все подменить одним вызовом. |
|||
15
Fish
17.04.18
✎
11:19
|
+(13) А не, не заметил +Сч. Всё-таки разные :))
|
|||
16
Fish
17.04.18
✎
11:20
|
(13) "Скорее всего это типо фамилии в клеточках" - Похоже.
|
|||
17
Segate
17.04.18
✎
11:21
|
Проанализируй в каком случае Лев(Стр,1) вызывает ошибку, и обрабатывай отдельно условием, а не повторным вызовом ком объекта.
у него есть строка. в строке(очевидно) есть некий символ параметр и некий символ разделитель.(это очевидно из того что Лев(Стр,1) это данные заполнения параметра, а "Стр = Сред(Стр,2);" обрезает строку) Потому я бы не парился, а для начала бы сделал стрРазделить и получил бы массив параметров из строки, а потом бы обращался к параметру по индексу. |
|||
18
Вафель
17.04.18
✎
11:22
|
можно цикл переделать на стрдлина()
|
|||
19
Вафель
17.04.18
✎
11:23
|
%20-30 можно отыграть
|
|||
20
Роспатнюк Сергей Сер
17.04.18
✎
11:24
|
(10) нужно перенести из зуп 8.2 в зуп 8.3 варианты есть но они достаточно проблемные. (16) ну да фамилии адреса папортные данные и т.д. (18) спс попробуем сделать так.
|
|||
21
Вафель
17.04.18
✎
11:26
|
может на 1сные формы переделать?
Все-таки в клеточках не очень для ворда |
|||
22
dmpl
17.04.18
✎
11:28
|
(0) Переделай на HTML макет.
|
|||
23
Роспатнюк Сергей Сер
17.04.18
✎
11:29
|
(22) да думаю буду переделывать макет добро дали.
|
|||
24
assasu
17.04.18
✎
11:30
|
(20) в офисе столько возможностей. разве нельзя сделать что бы переменная заполнялась одной строкой , а выглядела как по клеточкам? зачем эта аналогия с 1с -м mxl?
|
|||
25
dmpl
17.04.18
✎
11:31
|
(23) Реально работы меньше, чем оптимизировать (если из того же Word'а макет сохранить в HTML), зато потом ни Word не нужен, ни COM, и вообще в браузере все видно.
|
|||
26
Роспатнюк Сергей Сер
17.04.18
✎
11:36
|
Всем большое спасибо,область работы понятна,а то даже не знал откуда начинать.
|
|||
27
hhhh
17.04.18
✎
11:37
|
вот это тоже
Стр = Сред(Стр,2) если там строка в миллион символов, то 114 раз эта фигня запускается. |
|||
28
Вафель
17.04.18
✎
11:37
|
(24) И как же так сделать?
|
|||
29
Роспатнюк Сергей Сер
17.04.18
✎
12:07
|
(25) я правильно понял что можно просто открыть Word и сохранить в формате html?
|
|||
30
dmpl
17.04.18
✎
12:09
|
(29) Да. Код будет жутко неоптимальный, но чаще всего весьма похожий на оригинал.
|
|||
31
Вафель
17.04.18
✎
12:16
|
html не умеет по страницам бить корректно
|
|||
32
ILM
гуру
17.04.18
✎
12:18
|
Судя по коду, там вообще на шаблоне 114 параметров и все заполняется по одному. Лучше сделать поля, а потом в поля значения вставлять.
|
|||
33
Роспатнюк Сергей Сер
17.04.18
✎
12:24
|
(32) судя по макету их там гораздо больше,114 это максимальное количество одного параметра такого как АдресПрописка1-АдресПрописка114 остальных параметров гдето по 70
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |