Если не хватает памяти 1С

Если вы проводите операцию в 1С, а она тупит и закрывается с ошибкой "Недостаточно памяти", то эта статья для вас.

Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка «Недостаточно памяти». Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки — ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял — ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.

Решение

На клиентском компе запустить командную строку от имени администратора, прописать там следующее:

BCDEdit /set increaseuserva xxxx — вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 — на приложения и 2 на нужды самой ОС.  Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000). Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.

Для Windows XP Windows 2003 пишем
/3GB /userva=xxxx (xxxx в МБ в диапазоне 2048 — 3072) в файле boot.ini, рекомендуемый максимум значений userva 2900–3030.

Вот и все. Надеюсь, эта статья будет вам полезна. А вот и ссылки, откуда я все это узнал, где можно посмотреть более подробную информацию:

http://igrekk.ucoz.ru/forum/2-3-1 

http://blogs.technet.com/b/mark_russinovich/archive/2008/07/21/3151288.aspx 

http://usa.autodesk.com/adsk/servlet/ps/dl/item?siteID=123112&id=9583842&linkID=9240697

http://forall.ru-board.com/egor23/online/FAQ/Virtual_Memory/Limits_Virtual_Memory.html#t1

36 Comments

  1. makas

    Мне простому буху — полезное чтение перед сном 🙂

    Reply
  2. pumbaE

    Как может помочь 64 винда, если клиент 1С 32? 64 поможет сейчас только в linux и только на 8.3 (там клиент тоже есть 64)…

    Реальное решение только одно — перенос логики расчета на сервер 1С 64.

    Reply
  3. Alex_E

    Мне помогала просто установка размера файла подкачки в «Определяется операционной системой»

    Reply
  4. maxkisa

    (2) pumbaE,

    Поговаривают, что 64 разрядный клиент есть и под Windows, но это надо ооочень хорошо попросить у 1С =)))

    Reply
  5. Vladimir87

    (3) Alex_E, пытался, но к сожалению не проканало. Вот и пришлось мудрить ).

    Reply
  6. Vladimir87

    (2) pumbaE, в 64-битных ОС нет ограничения виртуальной памяти (2 гигабайта). Поэтому 1с может спокойно работать. Хотя, если честно, первый раз сталкиваюсь с тем, что приложение съедает более 2 гигов виртуалки. Обычно хватает не более 1 гига. А что еще более удивило, что эта проблема не только у 1С, тот же автокад тоже «грешен».

    Reply
  7. pumbaE

    (6) вот специально сейчас проверил на свой 64 битной винде и толстый клиент на 8.2.15 . Взял СКД и вывел регистр «Продажи» в отчет, без отборов, все поля, за весь период, до регистратора — результат «Недостаточно памяти».

    (4) maxkisa, если это не production решение, то не нужно. Долго просить, что бы потом на ошибки 1С отвечало «продолжайте наблюдение», а у себя в журнале писало «Эксперемент № 12433, подгруппа хомячков № 342 , на 10 день пользования продуктом, хомячки взбунтовались, отделались обещание исправить. Посмотрим, через какое время опять выть начнут.»

    Reply
  8. Vladimir87

    (7) pumbaE, что ж, значит не тот случай. У меня прошло все успешно. Опять таки статья описывает мой опыт, как мне удалось. Конечно есть вероятность, что у других не пойдет.

    Reply
  9. 7o2uYXg

    даже в 64-битной ОС, клиентское приложение 1С может выжрать порядка 3.5 гигабайт оперативки, после чего всё-таки выдаётся сообщение «Недостаточно памяти».

    Как правильно заметили выше — уносите логику на сервер, там такой беды нет.

    Reply
  10. Vladimir87

    Ладно, уговорили, подправлю статью )).

    Reply
  11. 1977

    У Меня при выгрузке номенклатуре в WINDows 7 64 bit с 8 гагами такая ошибка выкидывает

    Reply
  12. Alex_IT

    ИМХО — нужно оптимизировать код.

    Иначе, через пару недель/месяцев, снова встретите эту ошибку.

    Например, при выгрузке номенклатуры делать ее частями. При типовом обмене можно установить размер пакета. Это тоже очень помогает на больших базах.

    В случае живой и растущей базой, увеличение доступной памяти до 3Гб — временное решение.

    Reply
  13. LeaNaeD

    (9) 7o2uYXg,

    >Как правильно заметили выше — уносите логику на сервер, там такой беды нет.

    Да ничерта это не «правильно заметили». Правильно заметили — это эксперимент с отчетом, описанный вывше. С полгода назад проводил такой же эксперимент. Клиент-серверный режим, типовая УТ 11. Делаем любой типовой отчет с извратными настройками за большой период. ОК, логика перенесена на сервер, клиент простаивает. Вроде бы все хорошо, ну это пока сервер не начнет передавать клиенту все, что он там насчитал. Итого на клиенте та же самая ошибка с нехваткой памяти. Тонкий клиент, отжирающий 2Гб оперативной памяти — ну я даже и не знаю, что сказать.

    Так что только 64-битный клиент спасет Отца русской демократии.

    Reply
  14. KroVladS
    Поговаривают, что 64 разрядный клиент есть и под Windows, но это надо ооочень хорошо попросить у 1С =)))

    Из тойже серии что секретный релиз платформы 7.7

    Reply
  15. Vladimir87

    (12) Alex_IT, в принципе вы правы, нужно контролировать размер базы, делать свертку и т.д. Тогда все будет в «шоколаде». Данный способ, который описан в этой статье, предназначен для быстрого решения проблемы, когда нет времени на оптимизацию базы, кода.

    Reply
  16. Shade

    Скоро опять вспухнет, вопрос времени. Свертка базы или сервер 1С, но так хочется верить что скоро будет 64-битный клиент 🙂

    Reply
  17. zzzz5555

    Для 7.7 подходит? (в случае выгрузки xml большого размера — обработки падают, ссылаясь на нехватку оперативки).

    Reply
  18. Vladimir87

    (17) zzzz5555, честно, не экспериментировал над 1с 7.7. Какая именно ошибка вылетает? Можете поподробнее ее описать.

    Reply
  19. v.a.ryag

    а мне не помогло ничего, при формировании отчета после съедания 1,5 гб памяти падает. Хотя всего 8, и настроики уже сделал в винде чтоб выделять приложениям

    Reply
  20. stei

    Ребят, помогайте, не могу разобраться!….

    Есть база бухгалтерии 8.2 2.0, вес в файловом 16гб., железо 1 Xeon 3430, 24гб оперативы, дискового свободно около 1Тб, файл подкачки был 24гб, поставил 50гб, винда 2008 сервер, 64-разрядный энтерпрайз, формирую отчет книгу предпринимателя выпадает в ошибку «Недостаточно памяти» после 3 870 000 кб по дспетчеру, всё перепробовал — разные релизы платформы, даже на 8.3 переводил, поставил sql2008, та же песня, вылетает именно платформа, как вариант поставить х64 платформу 8.3, но нигде не могу найти такую….

    Reply
  21. Vladimir87

    (20) stei, 16 гигов файловая база? — ах..еть. Конечно надо на клиент-серверный вариант переносить. Ну а далее провести диагностикку базы — тестирование, исправление и прочее, свертку базы. Кстати, ты говоришь, что поставил sql2008. Он 64-разрядный? Если ось 64разр, то и желательно , чтобы все приложения были из этой серии. По поводу оперативки — она вся задействуется? Или только часть ее? Просто в виндах есть такая штука, впроде поставил столько-то, а она визически не может видеть больше. Как я понимаю мой метод вряд-ли тут подойдет, т.к. у тебя винда 64-разрядная. Хотя, если терять нечего, стоит попробовать. По поводу обращения в компанию 1С с этой проблемой, сразу говорю — бесполезно, хоть ты им по почте пришли комп с базой на борту, они никак не помогут. Есть конечно вариант открыть базу через конфигуратор и через отладчик прогнать всю эту процедуру. Может на какой-нибудь строки и «запинается». В общем подведу итоги:

    1. Необходимо запустить утилиту «chdbfl.ехе». Она обычно находится в каталоге с запускаемым файлом 1С. Например: C:Program Files1cv828.2.14.537in. Ею можно поробовать протестировать и исправить базу.

    2. Перенос базы на SQL.(тот же MSSQL 2008).

    3. Если Windows Server 64-разрядный, то MSSQL 2008 тоже 64-разрядный.

    4. Из конфигуратора провести тестирование и исправлнеие базы, по возможностью свертку базы.

    5. Через отладчик сформировать этот отчет. Может получиться найти ошибку.

    6. Провести метод изменения адресного просторанства.

    7. Обратиться в службу поддержки 1С.(http://www.1c.ru/rus/support/support.htm#8).

    P.S: А вообще я уже забил на эту 1С. Устал бороться с темным лесом бухгалтерии и глючности программы. Если честно — не жалею, что отошел от 1С )).

    Reply
  22. Ta_Da

    (20) stei, у вас 32ух битное клиентское приложение (толстый клиент). Больше 4 гигов оперативки оно не может «съесть».

    Тут либо переход на сервер 64x (с вероятным переписыванием отчета) либо просто переписывание отчета, чтобы данные обрабатывались кусками.

    Reply
  23. jsuh

    (20) stei, 1) попробуй срезать базу, уж очень она огромная. На сколько я помню, таблицы регистров в файловом варианте не должны превышать 2Гб. Если хоть одна таблица переваливает за этуу отметку срочно или реж базу. или переходи на клиент-сервер.

    Reply
  24. stei

    (21) (22) Ta_Da, (23) jsuh, Винда 64-разрядная, скула соответственно тоже, всё дело в клиенте, именно то, что он 32-разрядный не дает ему кушать больше 4гб оперативы, как вывод — ошибка.

    Обрезка не вариант, то, что можно было уже срезали, реализаций очень много просто на предприятии.

    Отчет стандартный, переписать конечно можно, но это время, да и как клиенту объяснить, мол, простите, стандартные отчеты, которые пишет 1с не катят ))) Вообще странно, не думаю, что ситуация у нас прям такая уникальная…

    База изначально и крутится на скуле, в файловый вариант перевел только для тестов, соответственно проверки чекдбф-ом и «тестирование и исправление» делал, не один раз.

    Выход пока нашел, поставил 8.3 платформу, после танцев с бубном в файловом варианте формирование отчета прошло нормально, но всё равно это только полумера, нужно на скулу обратно. Как вариант 64-битный клиент 8.3, говорят, что есть такой в природе, если есть у кого — поделитесь ))

    Reply
  25. Ta_Da

    (24) stei, дык я вам и пишу про то что клиентское приложение 32 битное.

    Про сервер я упоминал в плане «обрабатывать все данные на сервере, на клиент передавать только готовую таблицу». Изврат возможно, но может сработать.

    Reply
  26. Vladimir87

    (24) stei, по-идее релиз 1с 8.3 64-битный должен быть на официальном сайте в свободном доступе (разумеется только для тех, у кого оформлен договор ИТС). Если там нет, то можно узнать об этом в службе поддержки. На других сайтах, я думаю, лучше не искать. Если на офсайте нет, то на других — подавно.

    Reply
  27. Bukaska

    Не обязательно именно только договор ИТС. У меня учётка по лицензии комплект разработчика, а доступ к обновлениям платформы имею. А для обновления конфигурации из комплекта разраба по УТ11 — там да.. доступа нет, нужна подписка ИТС. НО если у вас полноценная платформа на лицензии, то доступ к платформенным обновлениям должен быть. Только у 8.3 есть (обычный клиент и тонкий клиент )х64 для DEB-based Linux-систем, для RPM-based Linux-систем)))

    Reply
  28. Vladimir87

    Осталось самое простое — все перенести на Linux 😀

    Reply
  29. zzz_natali

    Может всё-таки BCDEdit, а не:

    Reply
  30. kukla11

    Спасибо друг) Долго я мучился с этой ошибкой, даже отчет пришлось переделать.

    Reply
  31. DEG156

    Привожу и свой пример…

    Была у меня аналогичная ошибка с проведением «закрытии месяца». Конфигурация ИМПУЛЬС-ИВЦ «Подрядчик строительства» 8.2.

    Перепробовал все варианты, хорошо еще было время — бухгалтерия терпела.

    Пишу в поддержку 1С они отвечают — виновата фирма ИМПУЛЬС-ИВЦ. Пишу в ИМПУЛЬС-ИВЦ их ответ — виновата платформа 1С. Отфутболили…

    Пришлось самостоятельно искать отладчиком в процедуре закрытия месяца «глючный» запрос и править его.

    Reply
  32. jaroslav.h

    Знаком, знаком с этой ошибки при создании образа одного из узлов.

    часа 3 ждал и тут ошибка…

    Надеюсь будет полезен данный выход с ситуации в дальнейшем. Спасибо.

    Reply
  33. c00lwork

    все равно не достаточно , даже 8000 параметр при 8000 существующих , Спасибо

    Reply
  34. capricorn2828

    Очистка КЛАДРа помогла, однознначно. Никакие архивации и упаковки не сработали. конф AMD Athlon X2 240. 4Gb ОЗУ, 450 Gb на диске. 1С БП 3.0, платформа 8.3.4.365.

    Reply
  35. Popovi4

    При переходе с бух 2 на 3, вываливается такая ошибка. Кладр почистил, база, при сохранении пухнет с 800 мб до 3-х гб. Запускаясь на отладку, падает. Хоть пиши правила обмена и переноси все.

    Reply
  36. kulkrise

    (7) pumbaE, про хомячков как точно то подмечено, очень понравилось 😀

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *