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

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 человек.
Рекламное место пустует