|
Как бороться с ошибкой "Недостаточно памяти"? | ☑ | ||
---|---|---|---|---|
0
devlabnn
16.12.11
✎
11:09
|
При записи набора регистра сведений 1с вылетает с ошибкой "Недостаточно памяти".
Код: НЗ = РегистрыСведений.СреднийЗапасМагазинов.СоздатьНаборЗаписей(); НЗ.Отбор.Период.Использование = Истина; НЗ.Отбор.Период.Значение = НачалоПериода; НЗ.Отбор.Склад.Использование = Истина; НЗ.Отбор.Склад.Значение = Т.Склад; НЗ.Загрузить(ВремТЗ); НЗ.Записать(); В таблице около полумиллиона строк. При возникновении ошибки свободно 12ГБ памяти. ОС 32 бит Windows Server 2008. Что делать? |
|||
1
zak555
16.12.11
✎
11:10
|
загружать по этапу ?
|
|||
2
Rie
16.12.11
✎
11:10
|
(0) Ключевое слово - 32 бит.
|
|||
3
cViper
16.12.11
✎
11:11
|
добавь память.
|
|||
4
devlabnn
16.12.11
✎
11:11
|
(1) Тогда не получиться набором загрузить, только через менеджер по одной записи. Это дольше раз в 5-10 получится
|
|||
5
devlabnn
16.12.11
✎
11:11
|
(3) Куда?
|
|||
6
devlabnn
16.12.11
✎
11:11
|
(3) >> При возникновении ошибки свободно 12ГБ памяти
|
|||
7
nbIx
16.12.11
✎
11:13
|
(0)записывай порциями, что тут не понятного
|
|||
8
devlabnn
16.12.11
✎
11:15
|
(7) >> (4)
Мне интересно понять, какой памяти нехватает? Может дело в том, что 32-х битная ОС не позволяет процессу 1С отъедать более какого-то порога памяти и переход на 64-х битную поможет? |
|||
9
asady
16.12.11
✎
11:15
|
(0)
падает на этом? НЗ.Загрузить(ВремТЗ); или на этом? НЗ.Записать(); скорее всего на НЗ.Записать() попробуй перед записть поставить НЗ.ОбменДанными.Загрузка=Истина; |
|||
10
nbIx
16.12.11
✎
11:16
|
(8) Да кто тебе сказал, что нужно по одной записи.
Посмотри на метод набора записать, и параметр "Замещать" |
|||
11
nbIx
16.12.11
✎
11:17
|
(10) + Записывай по 50 тыщ. тебе этого хватит.
|
|||
12
эцп
16.12.11
✎
11:17
|
(0) Скорее всего у регистра есть еще реквизиты, на которые можно наложить отборы. Так что стоит разбить таблицу значений на меньшие таблицы (в соответствии с отборами) и загрузить частями в регистр
|
|||
13
pavlika
16.12.11
✎
11:18
|
(10) Например, если объем физической памяти 32-разрядного сервера более 2 Гб, то имеет смысл использовать несколько рабочих процессов. Каждый рабочий процесс может занимать до 2 Гб виртуального адресного пространства, поэтому можно запускать несколько рабочих процессов из расчета 1,5-2 Гб оперативной памяти сервера на один рабочий процесс. Если используется 64-разрядный сервер, то обычно достаточно на каждом физическом сервере запускать один рабочий процесс.
http://www.its.1c.ru/db/v8doc#content:2131:1 |
|||
14
pavlika
16.12.11
✎
11:18
|
к (8) конечно
|
|||
15
Azverin
16.12.11
✎
11:21
|
(8) 64 ОС поможет. а большие и никто)
|
|||
16
Fragster
гуру
16.12.11
✎
11:22
|
(4) набор.Записать(ЛОЖЬ)
|
|||
17
zak555
16.12.11
✎
11:22
|
зачем ОС 32битной 12 ГБ ?
|
|||
18
Fragster
гуру
16.12.11
✎
11:23
|
(16)+ и по частям
|
|||
19
zak555
16.12.11
✎
11:23
|
отдайте мне 8 ГБ
|
|||
20
John83
16.12.11
✎
11:28
|
(17) так на серваке можно использовать > 4гигов
разве не? |
|||
21
zak555
16.12.11
✎
11:29
|
(20) как бы 32 видит только 4 ГБ и всё
|
|||
22
zak555
16.12.11
✎
11:30
|
а х64 кажись до 192 Гб
|
|||
23
devlabnn
16.12.11
✎
11:31
|
(21) Windows Server может больше, только процесс не может более 4гб
|
|||
24
devlabnn
16.12.11
✎
11:32
|
(10) попробую этот вариант
|
|||
25
H A D G E H O G s
16.12.11
✎
11:32
|
НЗ = РегистрыСведений.СреднийЗапасМагазинов.СоздатьНаборЗаписей();
НЗ.Отбор.Период.Использование = Истина; НЗ.Отбор.Период.Значение = НачалоПериода; НЗ.Отбор.Склад.Использование = Истина; НЗ.Отбор.Склад.Значение = Т.Склад; НЗ.Загрузить(ВремТЗ); ВремТЗ.Очистить(); НЗ.Записать(); ВремТЗ=НЗ.Выгрузить(); // Если надо |
|||
26
H A D G E H O G s
16.12.11
✎
11:34
|
(16) Запись с текущими ключевыми полями уже существует.
Ага? |
|||
27
dmpl
16.12.11
✎
11:38
|
(26) Сначала записать пустой набор ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |