Нехватка памяти #501959


#0 by le_
На сервере, в регламентном задании выполняется подобный код: Когда список документов очень большой, через какое-то время выполнение задания просто прерывается. Попытался выполнить тоже самое, на клиенте, с помощью внешней обработки. Документы проводятся, все ОК, но через какое-то время возникает ошибка "Не хватает памяти" и 1С-ка просто вылетает. Выяснилось, что память в основном расходуется вот в этом месте: И что бы после этого с переменной ДокументОбъект не делал, память не освобождается! Даже при закрытии формы этой внешней обработки, память не освобождается. Подскажите, что с этим можно сделать? Постоянно перезапускать клиент 1С-ки или сервер - это не вариант... А документы перепроводить как-то нужно...
#1 by Fragster
а еси переменную обозвать по другому?
#2 by le_
На самом деле, в программе она по-другому называется, это я здесь, для примера, так ее обозвал. В общем, изменение её имени не помогает...
#3 by Jstunner
выполняется в одной транзакции?
#4 by le_
Пробовал сделать так: Тоже не помогает...
#5 by Jstunner
нее, перед циклом нет начала транзакции?
#6 by le_
Не, перед циклом нет.
#7 by rs_trade
ДокументОбъект.Записать в попытке надо делать
#8 by H A D G E H O G s
Ну тупо попробовать так ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); ДокументОбъект=Неопределено;
#9 by le_
Оно в попытке и выполняется в реальных условиях, но проблему с памятью это не решает. Пробовал - не помогает. Память не очищается даже при закрытии формы обработки. А вообще, может кто-нибудь попробовать проделать то же самое: выбрать документы за период побольше, запихнуть их в СЗ и попробовать перепровести? Интересует, будет ли так же съедаться память и будет ли возникать описанная ошибка... Может, путем общих экспериментов найдется решение...
#10 by acsent
x64
#11 by le_
x32 везде. И сервер и клиенты.
#12 by Jstunner
а так?
#13 by acsent
Это не вопрос, это способ решения
#14 by H A D G E H O G s
Какой-то жестокий способ решения. Автор, посмотри подписки на события, может там куда объект засовывается. Что за конфа?
#15 by Jstunner
в УПП есть методы ВыполнитьВосстановление и ВыполнитьВосстановлениеНаСервере, оба прекрасно работают для любого кол-ва документов
#16 by Kom-off
Как была получена СЗДоков?
#17 by H A D G E H O G s
Что за конфа? Что за документы?
#18 by Kom-off
+ Короче, была такая же проблема. В моем примере память утекала даже в пустом цикле. Заменил обход по таблице значений, полученной выгрузкой из запроса на обход результата запроса и все встало на свои места.
#19 by Kom-off
+ А еще, судя по комментарию кода в можно попробовать заменить тип СЗДоков со списка значений на массив.
#20 by rs_trade
движок то какой? может тебе обновиться до 12.80?
#21 by sash-ml
+ "СЗДоков" лучше сделать как результат выборки и добавить ДокументОбъект = Неопределено; в конце каждой итерации.
#22 by le_
Конфа - УПП. Платформа: 8.2.10.77. Документы: в основном "РеализацияТоваровУслуг". Замена СЗ на ТЗ или на массив - не помогает. В общем, это обработка, которой перетаскиваются данные из 7.7 в 8. Документы сначала создаются, ссылки заносятся в СЗ или ТЗ (не суть), определенным образом сортируются и после этого проводятся по-порядку. - Не помогло, к сожалению. Попробую подписки на события еще поковырять - может действительно там что-то...
#23 by le_
Вроде, нет ничего подозрительного в подписках. Никаких переменных, которые постоянно висели в памяти и разрастались...
#24 by 73
<Документы сначала создаются> - может тут разрастается? Объекты ведь.
#25 by le_
Не, до начала проведения все работает нормально. Сами созданные документы (объекты) в памяти не хранятся. Документ создается, записывается и его ссылка заносится в СЗ. Переменная типа ДокументОбъект обнуляется. Список с ссылками на документы в памяти занимает около 4 кб... Вот когда начинается перебор этого списка, получение объектов и проведение, память куда-то утекает...
#26 by le_
Получается то же самое! При отмене проведения память так же утекает... Вот такой вариант: Стр.Док.получитьОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); в этом случае работает намного лучше, чем Хоть и утекает, но не такими объемами... Уже лучше. Спасибо Jstunner за подсказку...
#27 by rs_trade
движок обнови, у тебя старый совсем
#28 by le_
Обновил - не помогло...
#29 by Aprobator
покопайся в модуле документа. Может там чего интересное спряталось.
#30 by 1C-Nick
а если не выгружать в таблицу значений, а обходить результат запроса? или попробовать в конце сделать Рез.Очистить;
#31 by TankerM
На 7.7 похоже, вдруг и решение аналогичное :о)) Типа такого: Или такого изврата:
#32 by le_
Ничего из вышеописанного не помогло, к сожалению... (
#33 by НЕА123
при интерактивном проведении происходит утечка?
#34 by Jstunner
РеализацияТоваровУслуг типовой?
#35 by le_
Да, сейчас проверил, память так же расходуется при интерактивном проведении и не очищается по его завершении. Да, документ типовой.
#36 by Jstunner
хрень какая-то.. переставлять винду уже предлагали? :)
#37 by le_
Дело не в винде, думаю - пробовал на разных машинах: на рабочей, на сервере, дома - везде одно и то же. У кого-нибудь есть УТП - попробуйте провести реализацию и посмотрите в диспетчере, как память расходуется процессом.
#38 by 1C-Nick
какая версия УТП? Память расходуется только когда первый раз проводишь или при последующих проведениях расходуется столько же памяти?
#39 by sapphire
А технологический журнал покурить предлагали?
#40 by le_
УТП 1.1.7.3 Расходуется и при проведении, и при отмене проведения, и при повторном проведении. И что я из этого журнала смогу выкурить?..
#41 by sapphire
Где именно в коде происходит утечка памяти.
#42 by le_
Каким образом? Я с ним просто никогда раньше не работал... Кстати, штатная обработка проведения документов "Сервис" - "Универсальные обработки" - "Групповое перепроведение документов" так же вылетает с ошибкой...
#43 by sash-ml
была такая прога "MEMDEFRAG" называлась, как раз для таких случаев. А УТП для Украины?
#44 by НЕА123
тогда делай + подписки на события. где-то зацикливание.
#45 by le_
Мем дефраг пробовал - не спасает. Да, для Украины. Я уже в модуле документа все глобальные переменные в конце процедуры ОбработкаПроведения обнуляю - и всё равно такая же фигня...
#46 by sapphire
#47 by НЕА123
желательно не только глобальные, а все, которые содержат ссылки.
#48 by le_
Спасибо, попробую.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С