Имя: Пароль:
1C
1C 7.7
v7: Какой командой очищается память от таблицы значений
,
0 tmpnikl
 
18.01.13
09:36
прочитал, что "Таблица значений создается в памяти ... , т.е. это временный набор данных."(http://www.mista.ru/tutor_1c/tz.htm)
Но не нашёл какой командой можно закрыть эту таблицу(по аналогии в других интерпретаторах, есть команда use, которая закрывает курсор) или очистить память(есть команда release memory, array и т.д.), чоб освободить память...
1 МихаилМ
 
18.01.13
09:46
никак . м.б. индексированная таблица умеет.
2 Patrio_
O_Muerte
 
18.01.13
09:47
ТЗ = "";
3 varelchik
 
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)>>> нужно добавить таблицу значений

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