Имя: Пароль:
1C
1С v8
и снова Утечка памяти при работе с ТабДок
0 боксер
 
02.12.14
17:52
похоже аналогичная проблема как в
v8: v8: Утечка памяти при работе с ТабДок
ссылка на решение не открывается...
автору написал

короче УТ11 32разр!!!
печатаем сертификаты.из РТУ вызывается обработка, там 4 макета, в них вставляются картинки и сразу на печать.
после каждой печати память не удаляется в диспетчере задач(растет)
табдок=неопределено и ="" вставил везде не помогает
помогает выход из 1С- но это не дело.

отладить на сервере не имею возможности- удаленный клиент. куда рыть?
1 mikecool
 
02.12.14
17:54
не тот табдок?
2 боксер
 
02.12.14
17:55
код работы с макетом такой, даже не знаю как тут оптимизировать

&НаСервере
Функция ВернутьМакетФормы(ИмяМакета)
                
                ЭтотОбъект = РеквизитФормыВЗначение("Объект");
                МакетФормы=неопределено;
                МакетФормы = ЭтотОбъект.ПолучитьМакет(ИмяМакета);
                Возврат МакетФормы;
КонецФункции
3 Господин ПЖ
 
02.12.14
17:56
эм... а получить макет сразу низя?
4 боксер
 
02.12.14
17:57
Для Порядок = 1 По КонецПорядка Цикл
                              
                               СтрокиВывода = ПорядокВыводаНаПечать.НайтиСтроки(Новый Структура("ПорядокДокумента", Порядок));
                               ПоДокументуПечати = СтрокиВывода.Получить(0);
                              
                               ПротоколСертификата = ПечатьПротоколаСертификатов(ПоДокументуПечати.ДокументПечати);
                               ПротоколСертификата.Напечатать();
                               //==##==Alex Begin 02.12.2014 --------------------------
                               ПротоколСертификата=неопределено;
                               ПротоколСертификата="";
                               //==##==Alex End---02.12.2014 --------------------------
                              
                              
                               Если ПоДокументуПечати.ЕстьPDF Тогда
                                              
                                               СохранитьИзображенияВPDF(Порядок);
                                               ОбъединитьPDF(Порядок);
                                              
                               Иначе
                                              
                                               //В документе отсутсвуют файлы PDF. Объединяем в один табличный документ и выводим на принтер.
                                               ТабДок = ОбъединитьИзображенияВТаблицу(Порядок, ДвусторонняяПечать);
                                               ТабДок.Напечатать();
                                               //==##==Alex Begin 02.12.2014 --------------------------
                                               ТабДок=неопределено;
                                               ТабДок="";
                                               //==##==Alex End---02.12.2014 --------------------------
                                              
                               КонецЕсли;      
                              
                КонецЦикла;
5 mikecool
 
02.12.14
17:58
ТабДок = ОбъединитьИзображенияВТаблицу(Порядок, ДвусторонняяПечать); - вот здесь скорее всего табдоки и остаются после объединения
6 боксер
 
02.12.14
18:00
(3) ругается
МакетФормы = <<?>>ПолучитьМакет(ИмяМакета); (Проверка: Сервер)
7 Armando
 
02.12.14
18:02
(0) "ссылка на решение не открывается..."
http://web.archive.org/web/20131203121650/http://contrbug.ru/thread.php?id=30
8 боксер
 
02.12.14
18:04
(7)спасибо огромное буду пробовать
9 боксер
 
03.12.14
17:55
(7)увы не помогло, там вообще нет получения макета
жрет память из (4)
после
ТабДок = ОбъединитьИзображенияВТаблицу(Порядок, ДвусторонняяПечать); //тут все ОК
                                               ТабДок.Напечатать();//тут жрет до 1.7 гиг
ТабДок=неопределено;//это не освобождает память
ТабДок="";//и это

спасает только выход из 1с
как очистить?

код табдока:

Функция ОбъединитьИзображенияВТаблицу(НомерПорядка, ДвусторонняяПечать=Истина)
                ТабДок = Новый ТабличныйДокумент;
                Если НЕ ДвусторонняяПечать Тогда
                               ТабДок.ДвусторонняяПечать = ТипДвустороннейПечати.Нет;
                Иначе
                               ТабДок.ДвусторонняяПечать = ТипДвустороннейПечати.ПереворотВлево;              
                КонецЕсли;
                ОбластьВывода = "R1C1:R70C11";
                СтрокаОбластиНачало = 1;
                СтрокаОбластиКонец = 70;
                СтрокиВывода = ПорядокВыводаНаПечать.НайтиСтроки(Новый Структура("ПорядокДокумента", НомерПорядка));
                Для Каждого СтрокаВывода Из СтрокиВывода Цикл
                               Если ТабДок.ВысотаТаблицы > 0 Тогда
                                               ТабДок.ВывестиГоризонтальныйРазделительСтраниц();                                    
                               КонецЕсли;
                               МояКартинка = Новый Картинка(СтрокаВывода.Файл);
                               Рис = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                               Индекс = ТабДок.Рисунки.Индекс(Рис);
                               ТабДок.Рисунки[Индекс].Картинка = МояКартинка;
                               ТабДок.Рисунки[Индекс].Расположить(ТабДок.Область(ОбластьВывода));
                               СтрокаОбластиНачало = СтрокаОбластиНачало+70;
                               СтрокаОбластиКонец = СтрокаОбластиКонец+70;
                               ОбластьВывода = "R"+Формат(СтрокаОбластиНачало,"ЧЦ=19; ЧГ=0")+"C1:R"+Формат(СтрокаОбластиКонец,"ЧЦ=19; ЧГ=0")+"C11";
                КонецЦикла;
                Возврат ТабДок;
КонецФункции
10 боксер
 
03.12.14
22:21
никак не могу побороть, похоже это глюк платформы
ТабДок.Напечатать();//тут жрет
как распечатать табдок по другому?
может сохранить в файл какого то др. формата и по другому распечатать? как?
11 H A D G E H O G s
 
03.12.14
22:27
(10) Сталкивался с такой фигней, не мог побороть.
Сегодня попробовал на релизе 8.2.19.68 - нет косяка.

Да, выжерает до 1.5 гига, но потом падает до 1 гига и так, пока не дойдет до 1.5 гигов.

Потом остается на 1 гиге.
Картинок порядка 50 штук, все здоровые, по нескольку мег.
12 zulu_mix
 
03.12.14
22:29
(10) в пдф сохраняй и печатай
13 боксер
 
03.12.14
22:31
(11) 8.3.5.1248 это уже обновили, на старой та же проблема
вспомнил тоже на 8.2 встречал давно такое там побороли так печатали через com из ... 1С7.7