#0
by le_
На сервере, в регламентном задании выполняется подобный код: Когда список документов очень большой, через какое-то время выполнение задания просто прерывается. Попытался выполнить тоже самое, на клиенте, с помощью внешней обработки. Документы проводятся, все ОК, но через какое-то время возникает ошибка "Не хватает памяти" и 1С-ка просто вылетает. Выяснилось, что память в основном расходуется вот в этом месте: И что бы после этого с переменной ДокументОбъект не делал, память не освобождается! Даже при закрытии формы этой внешней обработки, память не освобождается. Подскажите, что с этим можно сделать? Постоянно перезапускать клиент 1С-ки или сервер - это не вариант... А документы перепроводить как-то нужно...
#2
by le_
На самом деле, в программе она по-другому называется, это я здесь, для примера, так ее обозвал. В общем, изменение её имени не помогает...
#8
by H A D G E H O G s
Ну тупо попробовать так ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); ДокументОбъект=Неопределено;
#9
by le_
Оно в попытке и выполняется в реальных условиях, но проблему с памятью это не решает. Пробовал - не помогает. Память не очищается даже при закрытии формы обработки. А вообще, может кто-нибудь попробовать проделать то же самое: выбрать документы за период побольше, запихнуть их в СЗ и попробовать перепровести? Интересует, будет ли так же съедаться память и будет ли возникать описанная ошибка... Может, путем общих экспериментов найдется решение...
#14
by H A D G E H O G s
Какой-то жестокий способ решения. Автор, посмотри подписки на события, может там куда объект засовывается. Что за конфа?
#15
by Jstunner
в УПП есть методы ВыполнитьВосстановление и ВыполнитьВосстановлениеНаСервере, оба прекрасно работают для любого кол-ва документов
#18
by Kom-off
+ Короче, была такая же проблема. В моем примере память утекала даже в пустом цикле. Заменил обход по таблице значений, полученной выгрузкой из запроса на обход результата запроса и все встало на свои места.
#19
by Kom-off
+ А еще, судя по комментарию кода в можно попробовать заменить тип СЗДоков со списка значений на массив.
#21
by sash-ml
+ "СЗДоков" лучше сделать как результат выборки и добавить ДокументОбъект = Неопределено; в конце каждой итерации.
#22
by le_
Конфа - УПП. Платформа: 8.2.10.77. Документы: в основном "РеализацияТоваровУслуг". Замена СЗ на ТЗ или на массив - не помогает. В общем, это обработка, которой перетаскиваются данные из 7.7 в 8. Документы сначала создаются, ссылки заносятся в СЗ или ТЗ (не суть), определенным образом сортируются и после этого проводятся по-порядку. - Не помогло, к сожалению. Попробую подписки на события еще поковырять - может действительно там что-то...
#23
by le_
Вроде, нет ничего подозрительного в подписках. Никаких переменных, которые постоянно висели в памяти и разрастались...
#25
by le_
Не, до начала проведения все работает нормально. Сами созданные документы (объекты) в памяти не хранятся. Документ создается, записывается и его ссылка заносится в СЗ. Переменная типа ДокументОбъект обнуляется. Список с ссылками на документы в памяти занимает около 4 кб... Вот когда начинается перебор этого списка, получение объектов и проведение, память куда-то утекает...
#26
by le_
Получается то же самое! При отмене проведения память так же утекает... Вот такой вариант: Стр.Док.получитьОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); в этом случае работает намного лучше, чем Хоть и утекает, но не такими объемами... Уже лучше. Спасибо Jstunner за подсказку...
#30
by 1C-Nick
а если не выгружать в таблицу значений, а обходить результат запроса? или попробовать в конце сделать Рез.Очистить;
#35
by le_
Да, сейчас проверил, память так же расходуется при интерактивном проведении и не очищается по его завершении. Да, документ типовой.
#37
by le_
Дело не в винде, думаю - пробовал на разных машинах: на рабочей, на сервере, дома - везде одно и то же. У кого-нибудь есть УТП - попробуйте провести реализацию и посмотрите в диспетчере, как память расходуется процессом.
#38
by 1C-Nick
какая версия УТП? Память расходуется только когда первый раз проводишь или при последующих проведениях расходуется столько же памяти?
#40
by le_
УТП 1.1.7.3 Расходуется и при проведении, и при отмене проведения, и при повторном проведении. И что я из этого журнала смогу выкурить?..
#42
by le_
Каким образом? Я с ним просто никогда раньше не работал... Кстати, штатная обработка проведения документов "Сервис" - "Универсальные обработки" - "Групповое перепроведение документов" так же вылетает с ошибкой...
#43
by sash-ml
была такая прога "MEMDEFRAG" называлась, как раз для таких случаев. А УТП для Украины?
#45
by le_
Мем дефраг пробовал - не спасает. Да, для Украины. Я уже в модуле документа все глобальные переменные в конце процедуры ОбработкаПроведения обнуляю - и всё равно такая же фигня...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
В этой группе 1С
- Подскажите как оформить такое в УТ 10.3
- Грузополучатель и плательщик в торг12
- Свертка базы 1С БП 1.6
- расчет при увольнении. не заполняется таблица для расчета компенсаций при увольнении
- ЗУП: неправильные остатки отпусков
- Транзакция при ОбработкаПроведения(Отказ)
- Обращение к ячейке таблицы значений
- Не заполняется табличная часть при вводе документа на основании
- Как обратится к Внешние обработки, печатные формы, обработк форме через ПолучитьФорму
- Конвертация данных Бух 7.7 и 8.1, Универсальный обмен данными в формате XML
- Как отловить статус изменения реквизитов в форме
- Выгрузка данных в ТСД
- Сеанс 1С из фонового задания
- нарушена целостность структуры конфигурации
- Цена на дату документа
- Ошибка Процедура или функция с указанным именем не определена (ПолучитьМакет)
- Соединение с базой данных не удерживается. Отпустить контекст соединения невозможно.
- 1С v8.2 Не могу обновить значение в поле ввода
- Начисление зарплаты и индивидуальный график работы
- 1С мобильное приложения под УПП