Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:05

Как уменьшить расход памяти при создании/редактировании документов на сервере

Автор wposta, 17 авг 2015, 15:08

0 Пользователей и 1 гость просматривают эту тему.

wposta

Платформа 8.3, управляемые формы, файловый вариант.
Загружаю данные из xml файла, создаю МассивДоков, затем начинаю создавать или изменять документы, и тут начинает сжираться память. Ощущение что все документы после записи висят в памяти.

Для Каждого Док Из МассивДоков Цикл
         ФлагНовый = ложь;
         ЗначениеРекв = 0;
         ПоискДок = ВсеДопРеквизиты.Найти( Строка(Док.Номер) + "_" + Док.Дата);
         Если ПоискДок = Неопределено Тогда
            ФлагНовый = Истина;
            НовДок = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
         Иначе
            НовДок = ПоискДок.Объект.ПолучитьОбъект();
            ЗначениеРекв = НовДок.СуммаДокумента;
            НовДок.Товары.Очистить();
            НовДок.ТоварыПоДаннымПоставщика.Очистить();
         КонецЕсли;
...
КонецЦикла;

vitasw

Ну, судя по приведенному куску кода - так и есть. То что вы привели - имеет вид неоптимального кода.

wposta

Это понимаю, но как все таки сделать, чтоб документы все не висели в памяти?

vitasw

Переписать код, чтобы сделать его оптимальным.
У вас как минимум 3 массива с данными, которые до конца процедуры висят в памяти:
1. МассивДоков
2. ВсеДопРеквизиты
3. Файл исходных данных(которого нет в приведенном куске кода. предполагаю, что переменную с файлом данных вы не обнуляете.)
Копайте в сторону единого запроса.

wposta

Спасибо за рекомендации, но эти массивы занимают совсем не много места, проверял, если совдавать один документ, то память расходуется довольно незначительно, а вот как только начинаю все затрагивать, тогда и растет. Может есть путь, после записи документа убрать его из оперативы? Ведь фактически одной и той же переменной присваиваю ДокументОбъект, а ощущение что они накапливаются и только потом все проводятся и удаляются из памяти.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск