К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

не хватает памяти....

Гость
0 - 19.02.2013 - 12:41
подскажите где я не прав... или это происки 1С...

есть такой код
счетчик = 0;
Пока СтрокаОстатки.Следующий() Цикл
счетчик = счетчик +1;
Если счетчик % 1000 = 0 Тогда
ЗаписатьДанные(тзПроводки, тзАналитики);
КонецЕсли;
...... заполнение ТЧ
КонецЦикла;
ЗаписатьДанные(тзПроводки, тзАналитики);



Процедура ЗаписатьДанные(тзПроводки, тзАналитики);
НаборЗаписейПроводки = регистрыСведений.Проводки.СоздатьНаборЗаписей();
НаборЗаписейПроводки.Загрузить(тзПроводки);
НаборЗаписейПроводки.Записать(Ложь);

НаборЗаписейАналитики = регистрыСведений.Аналитика.СоздатьНаборЗаписей();
НаборЗаписейАналитики.Загрузить(тзАналитики);
НаборЗаписейАналитики.Записать(Ложь);

НаборЗаписейПроводки.Очистить();
НаборЗаписейАналитики.Очистить();
НаборЗаписейПроводки = Неопределено;
НаборЗаписейАналитики = Неопределено;
тзПроводки.Очистить();
тзАналитики.Очистить();
КонецПроцедуры


непонятно.. память просто утекает... писать нужно огромный массив.. разбить не могу точнее желательно обойтись без разбиенися писать нужно порядка миллиона записей. решил писать блоками, но память утекает все равно... добавил уже очистку один фиг... стоня другая тысяч записей и все. не хватает памяти....



1 - 19.02.2013 - 15:09
1) Не обёрнуто ли всё это в транзакцию?
2) Откуда уверенность, что протекает при записи, а не при подготовке тзПроводки, тзАналитики к примеру?
2 - 19.02.2013 - 15:41
Ну... 1С издавна славится грязной работой с памятью. Если ты создал большую таблицу значений, то когда она тебе уже не будет нужна, 1с еще долго будет держать ее всю в памяти.
3 - 19.02.2013 - 22:27
Не получится ли при повторных записях блоков не создавать новые наборы записей, а использовать созданные ранее (глобально?) с предварительной очисткой?
Гость
4 - 19.02.2013 - 22:29
Файловая или клиент-серверная? По условию задачи транзакция одна или допустимо несколько?
Гость
5 - 20.02.2013 - 07:36
Файл-серверная, но работа идет в клиенте. транзакций нет. таблицы используются повторно с предварительной очисткой...
запись я провожу блоками по 1000 записей. В моем случае максимальный размер таблицы составляет 4 тысячи строк.
У меня сложилось впечатление что освобождение памяти в 1С происходит только при выходе из процедуры. Явного деструктора в 1С не хватает (
Гость
6 - 20.02.2013 - 07:39
(1)
согласен не совсем при записи
Есть 2 момента нарастания памяти момент формирования таблицы и загрузка таблицы в наборзаписей перед записью. Проблема в том, что 1С не освобождает память при очистке тз и наборазаписей


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены