|
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) В обработчике события формы ПриЗакрытии напиши
мПоказателиДляОбработки = НЕОПРЕДЕЛЕНО; мДеревоПересчета = НЕОПРЕДЕЛЕНО; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |