8.х Забивание оперативной памяти при печати графики из 1С

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Amber, 6 фев 2009.

  1. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    У меня из базы печатаются графические файлы(объем каждого около 2Мб).Общий шаблон одинаковый, отличается только штрихкодом(Элемент Управления "1с печать штрих кодов"). Проблема в том что после пачати 10-15 документов на компьютере заканчивается оперативная память и продолжать печать можно только после перезапуска 1с. Отсюда делаю вывод, что при печати следующего шаблона 1с-ка не удаляет из памяти предыдущий. Может кто сталкивался с подобной проблемой?печатать партиями по 10 штук очень неудобно..особенно когда надо 500 распечатать.
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Классическая утечка памяти. Код показывай.
  3. dend
    Offline

    dend Опытный в 1С

    Регистрация:
    9 апр 2007
    Сообщения:
    175
    Симпатии:
    0
    Баллы:
    26
    Вот статья по утечкам памяти в 1С
    http://www.gilev.ru/1c/memleak/

    Может поможет :))

    А так - код в студию
  4. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Код самой процедуры печати.
    Код:
    ТабДок = Новый ТабличныйДокумент;
    Если  Карта.ВидКарты=Справочники.ТипыКарт.Фитнес.Ссылка  	тогда
    Если Фото.Получить()="" тогда Предупреждение("Фото клиента не выбрано или файл не найден", 10);
    Иначе
    Макет=Справочники.Клиенты.ПолучитьМакет("Фитнес");   
    Область = Макет.ПолучитьОбласть("R1C1:R23C4");
    Область1=Макет.ПолучитьОбласть("R25C1:R47C4");
    Фам=ЭлементыФормы.Фамилия.Значение;
    Им=ЭлементыФормы.Имя.Значение;
    Область.Параметры.Им=Им;
    Область.Параметры.Фам=Фам;
    Область.Рисунки.Фото.Картинка=Фото.Получить();
    Область1=Макет.ПолучитьОбласть("ОбластьПечати2");
    КомпонентШК = Новый COMОбъект("V8.Barcod.1");
    Область1.Рисунки.Штрихкод.Объект.Сообщение = Строка(Карта.НомерКарты.ШтрихКод);
    ТабДок.Вывести(Область);
    ТабДок.Вывести(Область1);
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.ПолеСверху=0;
    ТабДок.ПолеСлева=0;
    ТабДок.ПолеСнизу=0;
    ТабДок.ПолеСправа=0;
    ТабДок.ИмяПринтера="Smart Driver";
    ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
    ТабДок.Показать();
    КонецЕсли;
    КонецЕсли;
    
    
    Сам макет весит 4 мегабайта.
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Попробуйте в конце обнулить КомпонентШК после вывода документа

    Сделайте
    Код:
    КомпонентШК = 0;
    
    Не уверен, что поможет, но может быть сработает. Либо какой-то другой деструктор этого объекта вызвать.
Похожие темы
  1. Vesker
    Ответов:
    1
    Просмотров:
    288
  2. Mech
    Ответов:
    6
    Просмотров:
    1.997
  3. Reader
    Ответов:
    25
    Просмотров:
    6.477
  4. IgorArhangel
    Ответов:
    15
    Просмотров:
    1.264
  5. Вяченслав
    Ответов:
    8
    Просмотров:
    361
Загрузка...

Поделиться этой страницей