|
|
|
v8: Документ отжирает память и не освобождает ее | ☑ | ||
|---|---|---|---|---|
|
0
gar_den
21.03.12
✎
10:21
|
В документе есть реквизит типа ХранилищеЗначений.
При открытии документа это хранилище получается: Настройки = ХранЗнач.Получить(); на этом месте отжирается большое количество памяти. После закрытия докмуента память не освобождается. Настройки = ""; - не помогает. В итоге при работе с ситемой она вылетает с сообщением Недостаточно памяти. Подскажите как это можно побороть |
|||
|
1
Jstunner
21.03.12
✎
10:23
|
А если вообще убрать настройки?
|
|||
|
2
gar_den
21.03.12
✎
10:26
|
а как данные тогда из хранилища доставать?
|
|||
|
3
catena
21.03.12
✎
10:52
|
Настройки - это что? Переменная модуля, переменная формы? Объявляется в форме, вызывается в модуле?
|
|||
|
4
asady
21.03.12
✎
10:55
|
(0) реквизиты доков и справочников типа ХранилищеЗначений зло. - для этого надо юзать РС.
мой совет: вынести этот реквизит в РС а сам реквизит удалить. |
|||
|
5
gar_den
21.03.12
✎
11:06
|
(3) переменная внутри процедуры
|
|||
|
6
H A D G E H O G s
21.03.12
✎
11:14
|
Код работы полностью покажи
|
|||
|
7
gar_den
21.03.12
✎
11:16
|
(4) упс. ошибся. это как раз не переменная, а РС
|
|||
|
8
gar_den
21.03.12
✎
11:19
|
// Получаем настройки
Запрос.Текст="ВЫБРАТЬ | ХранилищаПараметрическойНастройки.ДанныеПараметрическойНастройки |ИЗ | РегистрСведений.ХранилищаПараметрическойНастройки КАК ХранилищаПараметрическойНастройки |ГДЕ | ХранилищаПараметрическойНастройки.ПравилоОбработки = &ПравилоОбработки"; Результат=Запрос.Выполнить().Выбрать(); Если Результат.Следующий() Тогда СохраненныеДанные = Результат.ДанныеПараметрическойНастройки.Получить(); КонецЕсли; мПоказателиДляОбработки=СохраненныеДанные.мПоказателиДляОбработки.Скопировать(); мДеревоПересчета=СохраненныеДанные.мДеревоПересчета.Скопировать(); СохраненныеДанные = ""; |
|||
|
9
gar_den
21.03.12
✎
11:20
|
причем если СохраненныеДанные = ""; выполнить сразу после СохраненныеДанные = Результат.ДанныеПараметрическойНастройки.Получить(); то память освобождается
|
|||
|
10
H A D G E H O G s
21.03.12
✎
11:21
|
мПоказателиДляОбработки=СохраненныеДанные.мПоказателиДляОбработки.Скопировать();
мДеревоПересчета=СохраненныеДанные.мДеревоПересчета.Скопировать(); А это чего? |
|||
|
11
H A D G E H O G s
21.03.12
✎
11:22
|
Это же остается.
Скажи: СтрДлина(ЗначениеВСтрокуВнутр(мПоказателиДляОбработки)); СтрДлина(ЗначениеВСтрокуВнутр(мДеревоПересчета)); |
|||
|
12
gar_den
21.03.12
✎
11:34
|
(10) это переменные модуля документа. он с ними потом работает
|
|||
|
13
gar_den
21.03.12
✎
11:36
|
(11) СтрДлина(ЗначениеВСтрокуВнутр(мПоказателиДляОбработки)); - 1 473 809
|
|||
|
14
PVV65
21.03.12
✎
12:57
|
(8) В обработчике события формы ПриЗакрытии напиши
мПоказателиДляОбработки = НЕОПРЕДЕЛЕНО; мДеревоПересчета = НЕОПРЕДЕЛЕНО; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |