Вход | Регистрация



Заполнение макета Word. Помогите ускорить работу кода

Заполнение макета Word. Помогите ускорить работу кода
Я
   Роспатнюк Сергей Сер
 
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);
        
    КонецЦикла;
        
КонецПроцедуры
 
 
   Beduin
 
1 - 17.04.18 - 11:05
(0) А почему 114?
   mehfk
 
2 - 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 еще не знаю.
   mehfk
 
6 - 17.04.18 - 11:14
А ты интриган.
   Lexey_
 
7 - 17.04.18 - 11:14
(4) а Документ наверно это СтрПрФр.ГрБрМР?
   SleepyHead
 
8 - 17.04.18 - 11:14
Не надо ничего ускорять. Программа должна работать солидно, мигая лампочками, иначе уважать не будут.
   Вафель
 
9 - 17.04.18 - 11:14
потому что всего 114 параметров.
Явно нужно думать чтобы не все номера заменять, а только те что есть.
Например при записи макета искать номер максимального параметра
   Beduin
 
10 - 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;
   Fish
 
12 - 17.04.18 - 11:17
(9) А я так понял из (0), что он 114 раз один и тот же параметр заполняет.
   Вафель
 
13 - 17.04.18 - 11:18
(12) побуквенно.
Скорее всего это типо фамилии в клеточках
   assasu
 
14 - 17.04.18 - 11:19
(0) 114 параметров в печатной форме? я не верю...
вдруг там есть повторяющиеся, так их можно все подменить одним вызовом.
   Fish
 
15 - 17.04.18 - 11:19
+(13) А не, не заметил +Сч. Всё-таки разные :))
   Fish
 
16 - 17.04.18 - 11:20
(13) "Скорее всего это типо фамилии в клеточках" - Похоже.
   Segate
 
17 - 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сные формы переделать?
Все-таки в клеточках не очень для ворда
   dmpl
 
22 - 17.04.18 - 11:28
(0) Переделай на HTML макет.
   Роспатнюк Сергей Сер
 
23 - 17.04.18 - 11:29
(22) да думаю буду переделывать макет добро дали.
   assasu
 
24 - 17.04.18 - 11:30
(20) в офисе столько возможностей. разве нельзя сделать что бы  переменная заполнялась одной строкой , а выглядела как по клеточкам? зачем эта аналогия с 1с -м mxl?
   dmpl
 
25 - 17.04.18 - 11:31
(23) Реально работы меньше, чем оптимизировать (если из того же Word'а макет сохранить в HTML), зато потом ни Word не нужен, ни COM, и вообще в браузере все видно.
   Роспатнюк Сергей Сер
 
26 - 17.04.18 - 11:36
Всем большое спасибо,область работы понятна,а то даже не знал откуда начинать.
   hhhh
 
27 - 17.04.18 - 11:37
вот это тоже

Стр    = Сред(Стр,2)

если там строка в миллион символов, то 114 раз эта фигня запускается.
   Вафель
 
28 - 17.04.18 - 11:37
(24) И как же так сделать?
   Роспатнюк Сергей Сер
 
29 - 17.04.18 - 12:07
(25) я правильно понял что можно просто открыть Word и сохранить в формате html?
   dmpl
 
30 - 17.04.18 - 12:09
(29) Да. Код будет жутко неоптимальный, но чаще всего весьма похожий на оригинал.
   Вафель
 
31 - 17.04.18 - 12:16
html не умеет по страницам бить корректно
   ILM
 
32 - 17.04.18 - 12:18
Судя по коду, там вообще на шаблоне 114 параметров и все заполняется по одному. Лучше сделать поля, а потом в поля значения вставлять.
   Роспатнюк Сергей Сер
 
33 - 17.04.18 - 12:24
(32) судя по макету их там гораздо больше,114 это максимальное количество одного параметра такого как АдресПрописка1-АдресПрописка114 остальных параметров гдето по 70
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует