Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Какой командой очищается память от таблицы значений

v7: Какой командой очищается память от  таблицы значений
Я
   tmpnikl
 
18.01.13 - 09:36
прочитал, что "Таблица значений создается в памяти ... , т.е. это временный набор данных."(http://www.mista.ru/tutor_1c/tz.htm)
Но не нашёл какой командой можно закрыть эту таблицу(по аналогии в других интерпретаторах, есть команда use, которая закрывает курсор) или очистить память(есть команда release memory, array и т.д.), чоб освободить память...
 
 
   МихаилМ
 
1 - 18.01.13 - 09:46
никак . м.б. индексированная таблица умеет.
   Patrio_O_Muerte
 
2 - 18.01.13 - 09:47
ТЗ = "";
   varelchik
 
3 - 18.01.13 - 10:15
Все там нормально освобождаеться.
   Ёпрст
 
4 - 18.01.13 - 10:17
(1) да ну прямо никак ?
:))))0

как (2) память освобождается на раз.
   ДенисЧ
 
5 - 18.01.13 - 10:18
(4) Ага. Размечтался...
   Ёпрст
 
6 - 18.01.13 - 10:19
(5) ye ghjdthm
   МихаилМ
 
7 - 18.01.13 - 10:19
извиняюсь.
уточняю: память не возвращается системе.
   ЧеловекДуши
 
8 - 18.01.13 - 10:21
(0)Примерно вот так:
Но работает только с ТЗ, со списком значения не канает.

//******************* Чистка ТЗ - НАЧАЛО
 
Процедура ОчистатьТЗПоКолонке(ТЗ_Структура,ИмяКолонки,НомНашКол,НомНашСтр)
    Перем шш1,шш2;
    Перем НекоеЗнач,Колонка,Тип;
    
    Состояние("...очистать колонку """+ИмяКолонки+"""...0.00%");
    
    шш1 = НомНашСтр;
    Пока шш1 <= ТЗ_Структура.КоличествоСтрок() Цикл
        
        Если шш1 % 30 = 0 Тогда
            Состояние("...очистать колонку """+ИмяКолонки+"""..."+Окр(100*шш1/ТЗ_Структура.КоличествоСтрок(),2)+"%");
        КонецЕсли;
        
       //НекоеЗнач = СоздатьОбъект("ТаблицаЗначений");
 
        НекоеЗнач = ТЗ_Структура.ПолучитьЗначение(шш1,НомНашКол);
        Если ТипЗначенияСтр(НекоеЗнач) = "ТаблицаЗначений" Тогда
            шш2 = 1;
            Пока шш2 <= НекоеЗнач.КоличествоКолонок() Цикл
                Тип = "";
                Колонка = НекоеЗнач.ПолучитьПараметрыКолонки(шш2,Тип);
                
                Если ПустоеЗначение(Тип) = 1 Тогда//т.е. любой тип, то очищаем!!!
 
                    ОчистатьТЗПоКолонке(НекоеЗнач,Колонка,шш2,1);
                КонецЕсли;
                
                шш2 = шш2 + 1;
            КонецЦикла;
            
            НекоеЗнач.УдалитьСтроки();
            НекоеЗнач.Очистить();
            ТЗ_Структура.УстановитьЗначение(шш1,ИмяКолонки,0);
        КонецЕсли;
        
        шш1 = шш1 + 1;
    КонецЦикла;
    
КонецПроцедуры   // ОчистатьТЗПоКолонке(ТЗ_Структура,"ТЗ_СтрСтруктДок")
 

Процедура ОчиститьВсюТЗ(ТЗ_Структура)
    Перем шш1,шш2;
    Перем НекоеЗначение;
    Перем Колонка,Тип;
    Перем ЕстьТЗ;
    
    ЕстьТЗ = 0;
    
    шш1 = 1;
    Пока шш1 <= ТЗ_Структура.КоличествоКолонок() Цикл
        
        Тип = "";
        Колонка = ТЗ_Структура.ПолучитьПараметрыКолонки(шш1,Тип);
        
        Если ПустоеЗначение(Тип) = 1 Тогда
            ЕстьТЗ = 1;
            Прервать;
        КонецЕсли;
        
        шш1 = шш1 + 1;
    КонецЦикла;
        
    Если ЕстьТЗ = 1 Тогда
        Если ТЗ_Структура.КоличествоКолонок() <> 0  Тогда
            шш1 = 1;
            Пока шш1 <= ТЗ_Структура.КоличествоСтрок() Цикл
                
                шш2 = 1;
                Пока шш2 <= ТЗ_Структура.КоличествоКолонок() Цикл
                    
                    Тип = "";
                    Колонка = ТЗ_Структура.ПолучитьПараметрыКолонки(шш2,Тип);
                    
                    НекоеЗначение = ТЗ_Структура.ПолучитьЗначение(шш1,шш2);
                    
                    Если ТипЗначенияСтр(НекоеЗначение) = "ТаблицаЗначений" Тогда
                        ОчистатьТЗПоКолонке(ТЗ_Структура,Колонка,шш2,шш1);
                        Прервать;
                    КонецЕсли;
                    
                    шш2 = шш2 + 1;
                КонецЦикла;
                
                шш1 = шш1 + 1;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
    
    ТЗ_Структура.УдалитьСтроки();
    ТЗ_Структура.Очистить();
   //усе... чисто!
 
    Состояние("...");
    
КонецПроцедуры   // ОчиститьВсюТЗ(ТЗ_Структура)
 
//******************* Чистка ТЗ - КОНЕЦ


(5) Возвращает, но со временем. :)
(7)Брехня! Просто вы не умеете очищать и пользоваться нормальным объявлением типов в ТЗ и переменных.
   ЧеловекДуши
 
9 - 18.01.13 - 10:21
+(0)Список сам добавь :)
   МихаилМ
 
10 - 18.01.13 - 10:28
(8)
в своё время проверял. не освобождает и через 2 суток.
с типизацией тоже знаком .

коли брехня? прошу привести кусок кода и условия эксперимента (OC)
думаю врете Вы.
   ЧеловекДуши
 
11 - 18.01.13 - 10:33
(10)У меня месяцами работает одна и тот же автомат по загрузки и выгрузки документов.
Как было 59 метров, так и стоит стабильно.
То что у я привел в (0) это чистка ТЗ в ТЗ.
По существу очищать простые ТЗ можно и обычным "Очистить()".
Так же в конце лучше делать вот так (2) (это 100% помогает)
Так же стараться в цикле поменьше вызывать метод "СоздатьОбъект" а при завершении работы функции частенько делать как в (2).
Так же в каждой обработке, которую вы вызываете нужно добавить таблицу значений. И побоку, что вы не будете её использовать. Просто в 1С 7.7 есть утечка памяти, если на форме не будет табличной части. На любой форме диалога.
   ЧеловекДуши
 
12 - 18.01.13 - 10:33
+(11)>>> То что у я привел в (0) это чистка ТЗ в ТЗ.

То что у я привел в (8) это чистка ТЗ в ТЗ.
   ЧеловекДуши
 
13 - 18.01.13 - 10:35
+(11)>>> нужно добавить таблицу значений

Имею ввиду добавить визуальную Таблице значений в диалог.
И установить её скрытой, что бы не мозолила глазки.
   tmpnikl
 
14 - 18.01.13 - 10:43
спасибо...
   Cthulhu
 
15 - 18.01.13 - 12:20
Юзайте работу с временными ТЗ в процедурах в качестве лок.переменных. при возврате из такой процы все локальные переменные "отвязываются" от мозгов.

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