Имя: Пароль:
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
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn