1с недостаточно памяти для получения результата запроса к базе данных
При пользовании программным обеспечением 1С 8.3 можно столкнуться с различными ошибками. Одной из самых распространенных проблем является ошибка в виде «Недостаточно памяти». Причиной ее возникновения могут быть разные события. На это может повлиять обновление, формирование отчета, обработка большого объема информации, процесс загрузки данных и тому подобное. Как правило, пользуются данной программой администраторы, которые обязаны понимать суть проблемы, чтобы устранить ее в кратчайшие сроки. Стоит отметить, что увеличение оперативной памяти компьютера и установка более вместительного жесткого диска данную проблему решить не поможет.
Решение проблемы на клиентском компьютере
Операционная система Windows от компании Microsoft может быть причиной возникновения ошибки «Недостаточно памяти». Данная система выделяет определенное количество памяти для каждого приложения 1С. Разработчики бухгалтерской программы заранее определили значение используемой памяти. В зависимости от разрядности ОС данный показатель меняется. Если клиент пользуется 32-разрядной системой, то ему потребуется 2 Гб для пользования программой. Если 64-рядрядная ОС, то необходимо уже 4 Гб. В случае превышения этого показателя будет выскакивать окно, сообщающее об ошибке.
Для решения такой проблемы существует несколько способов. Самым простым вариантом является устранение помеченных на удаление объектов в конфигурации. Это помогает не всегда, но всегда позволяет избавить от лишних колебаний. Стоит отметить, что пользователь при выполнении этих действий почти ничем не рискует, так как отсутствует прямое вмешательство во внутренние настройки ОС. Если это не помогло, то следует попробовать другие способы.
Чтобы решить данную ошибку, можно обмануть программу. Этот способ подойдет для тех, кто пользуется 32-разрядной системой, так как совершается переход на 64-битную версию. Таким образом, увеличивается количество выделяемой оперативной памяти для приложения. Данное решение является правильным, но не всегда возможным для пользователей. Поэтому существует специальный алгоритм действий, чтобы избавиться от возникающей ошибки. Важно пользоваться данным способом максимально аккуратно, так как это может спровоцировать значительные проблемы с работоспособностью ОС в целом.
Следует выполнять следующее:
- Первым делом необходимо запустить командую строку Windows. Для этого можно воспользоваться меню «Пуск» или комбинацией клавиш Windows+R. В соответствующем поле следует ввести «cmd» и нажать Enter.
- Откроется окно, которое имеет черное поле для ввода. В нем необходимо написать «bcdedit/set increaseuserva 3200». Используемое число свидетельствует об ограничителе используемой памяти. 3200 означает, что ограничение увеличилось до 3,2 Гб. Важно увеличивать данный показатель постепенно и аккуратно.
- Когда операция успешно завершилась в командной строке, то следует перезагрузить компьютер, чтобы изменения вступили в силу. После этого необходимо выполнить действия, которые приводили к появлению окна с ошибкой «Недостаточно памяти». В случае, когда ошибка до сих пор вылетает и 1С прекращает свою работу, то следует еще раз выполнить увеличение ограничителя.
- Когда ошибка будет устранена и желаемые операции в 1С были завершены успешно, то следует восстановить ограничитель в ОС. Для этого необходимо открыть командную строку и указать «bcdedit/deletevalue increaseuserva». Это сделать нужно обязательно, чтобы Windows не снижала свою работоспособность в пользу 1С.
К данному решению следует прибегать только в экстренных случаях, когда необходимо срочно выполнить ту или иную операцию в 1С. В других ситуациях рекомендуется смена разрядности ОС на 64-битную.
Недостаточно памяти на сервере 1С
Более серьезной проблемой является возникающее окно с ошибкой, которая гласит о недостаточной памяти на сервере во время выполнения обновления или масштабной работы. Причина кроется в неправильных и несвоевременных завершениях процессов, которые запускаются различными программами. Это вызывает их накопление, наслоение и суммирование, что в итоге забирает много виртуальной памяти.
Еще одной причиной данной проблемы является интенсивная работа различного ПО, которое выполняет резервирование и освобождение памяти. Для решения таких проблем существует другие ПО, но на деле это не помогает, а провоцирует разрыв соединения с 1С и падение данного программного пакета.
Возникновение такой ошибки свидетельствует о недостаточной памяти используемого компанией сервера. Это является первым звоночком к тому, что нужно увеличить его мощность, но существуют и обходные пути решения возникающей ошибки, которые позволят не тратить лишних денег.
Постоянно прибегать к данным решениям не стоит, а только в экстренных и единичных случаях, когда необходимо в кратчайшие сроки выполнить работу, которая требует больших ресурсов. Существуют популярные способы, которые могут помочь решить возникшую проблему.
К ним относится:
- перезагрузка сервера;
- выключение и повторное включение рабочих процессов, которые выполняются в 1С. Это позволит уменьшить используемую память. Этим должны заниматься только опытные администраторы, так как необходимы знания и навыки при работе с консолью;
- использование технологического журнала, который содержит таблицу. При загрузке таблицы может возникать ошибка «Недостаточно памяти», когда выполняется та или иная операция. Когда проблема возникает при работе с таблицей «config», то следует выполнять проверку1 с использованием «Проверки логической целостности конфигурации». Найти это можно в разделе «Конфигурация».
Также ошибка может возникать из-за недостаточной памяти на жестком диске, на котором находится сервер. Пользователь может видеть текст ошибки «Недостаточно свободной памяти для выполнения операции». Это возникает из-за недостатка свободного места, которое забирают временные таблицы. В данной ситуации каких-нибудь одних действий по устранению проблемы нет, так как каждый обладает своим сервером или кластером. Можно привести только стандартные решения, такие как перезагрузка сервера, обновление системы, оптимизация или увеличение свободного пространства.
Заказать диагностику у наших специалистов
Бывают случаи, когда вышеуказанные способы не помогли устранить ошибки. В таком случае самым правильным решением будет обращение к специалисту за квалифицированной помощью.
Ошибка «Недостаточно памяти» в 1С 8.3 и 8.2 является не такой уж и редкой. Ее можно встретить и в конфигураторе (например, при сравнении конфигураций), а так же в режиме «1С:Предприятие» при выполнении трудоемких обработок: например при записи большого файла формата base64.
Данная ошибка может встречаться не только в программе 1С, но и в других программах операционной системы Windows.
Все дело в том, что в 32-х разрядных операционных системах по умолчанию 2 ГигаБайта на различные программы и столько же для операционной системы. В 64-х разрядных ОС выделяемый на приложения объем памяти составляет уже 4 ГигаБайта.
Следуя из вышесказанного, вам необходимо увеличить размер выделяемой адресной памяти на приложения, коим является программа 1С. Сделать это можно двумя способами: осуществить переход с 32-х разрядной системы на 64-х разрядную, или увеличить выделяемое изначально количество адресной памяти.
Перед вами отобразится поиск программ. Выберите ту, что называется «cmd».
Так же командную строку можно открыть при помощи комбинации горячих клавиш Windows + R.
bcdedit /set increaseuserva 3200
Получите понятные самоучители по 1С бесплатно:
В данном случае вы увеличите объем адресной памяти до 3200 МегаБайт.
Далее перезагрузите компьютер и попробуйте выполнить в программе те же самые действия, на которых раньше выдавалась ошибка.
После того, как у вас все получилось, настоятельно рекомендуется восстановить прежний объем адресной памяти. Данная мера временная, так как при выделении памяти на приложения, у операционной системы ее становится меньше. За счет этого возможно нарушение стабильности Windows.
Для восстановления адресной памяти в значение по умолчанию можно воспользоваться следующей командной, которая так же вводится в командной строке:
bcdedit /deletevalue increaseuserva
Подпишитесь на наш YouTube канал
В XP не работает данная команда
Для Windows XP/2003 – добавлением ключа /3GB в файле Boot.ini
Только загугли как это правильно сделать, чтобы не угробить загрузку системы)
А если система и так х64? х128 Вроде пока не выпустили:) И что делать тогда?
А это что то меняет? Распределение памяти работает аналогично как я понял, так что спокойно увеличивай объём, который выделяется для приложений используя метод приведённый выше.
Из 5 рабочих мест такая ошибка вылезала только на одном, хотя оно ничем особо не отличалось от остальных. Все рабочие места на WinXP, файловая база в сетевой папке (около 7 гб).
Причем в момент возникновения ошибки в диспетчере задач показывалось, что занятой памяти на ПК 1.2 гб и свободной еще 2 гб.
Вылечилось очень неожиданным способом. ПК с 4 гб памяти и интегрированным видео Intel. Зашел в БИОС, выставил видеоадаптер iGPU (было Авто), размер видеопамяти 64 мб (было Авто).
Всё, проблема решилась, в 1С перестала вылезать ошибка о нехватке памяти. Даже /3GB в boot.ini не стоит (/userva тоже отсутствует). Да и количество занятой и свободной памяти в диспетчере задач как бы намекает, что в данном случае эти опции ничего не изменят.
Видимо, объем видеопамяти в режиме Авто, равный вроде 512 мб, занимает большой диапазон в зарезервированном адресном пространстве (выше 3.34 гб, того объема памяти, который показывается в Windows, но ниже 4гб). Остальные устройства тоже занимают какие-то адреса в этом пространстве, и, возможно, пересекаются с адресами реальной памяти. То есть система пытается выделить блок памяти близко к 3.34 гб и получает облом (т.к. по этому адресу оказывается память какого-нибудь устройства). В результате в 1С вылазит ошибка.
А когда видеопамяти всего 64 мб, остального пространства адресов хватает, чтобы разместились адреса всех устройств, и они не пересекаются с реальной памятью. Соответственно, к каким бы ячейкам памяти из имеющихся в Windows 3.34 гб ни обратилась программа, все сработает нормально, никаких ошибок не будет.
Общее представление
Функциональная специфика операционной системы Windows, чаще всего встречающейся на компьютерах, используемых в профессиональных целях, характеризуется выделением лимитированного объема адресного пространства, которое может использоваться программным обеспечением. Дефолтные настройки выглядят совсем просто: 2 ГБ для 32-разрядной версии, и в два раза больше — для 64-битной ОС.
В процессе активной работы, с использованием сразу нескольких одновременно запущенных программ, высока вероятность появления уведомления о том, что у 1С недостаточно свободной оперативной памяти для обработки команды или выполнения операции. В лучшем случае все начинает работать очень медленно, в худшем — приложения или ОС «вылетают» без сохранения промежуточных результатов. При наличии подобной симптоматики, возникающей в ответ на выполняемые действия, в первую очередь следует озадачиться вопросом увеличения доступного адресного пространства до объема, достаточного для полноценной работы.
Решение проблемы на клиентском компьютере
Итак, для Microsoft Windows ключевым проблемным фактором обычно оказывается выход за пределы рамок, определенных базовыми настройками операционной системы. Чем выше разрядность используемой версии — тем большее количество отведено под использование, однако даже четырех гигабайт далеко не всегда бывает достаточно. Особенно если речь идет о требовательных к ресурсам приложениях, графических редакторах или громоздких базах данных, запущенных параллельно работе бухгалтерской учетной программы.
Что делать, когда 1С пишет, что ей недостаточно памяти для выполнения запроса, и закрывается или вылетает вместе со всей системой? Если причина кроется в адресном пространстве — существует несколько способов оперативного восстановления нужных кондиций.
Самый простой из вариантов — окончательный вывод из конфигурации объектов, ранее уже помеченных на удаление. Это необязательно станет панацеей, однако в любом случае не будет лишним — примерно так же, как перезагрузка ПК, рекомендуемая системными администраторами в качестве первой опции при любых неполадках. Пользователь ничем не рискует, поскольку не вмешивается своими действиями во внутреннюю механику работы программы.
Вторая опция — обман системы. Да, Windows можно обмануть, и, если все сделано правильно, проблема перестанет доставлять неудобства. Речь идет о формальном переходе с 32-битной на 64-разрядную версию, за счет которого автоматически увеличивается адресное пространство, выделяемое ОС по умолчанию. Фактических, она перестроит свою работу так, чтобы большее количество оперативки могло использоваться программным обеспечением — и это как раз то, что нам нужно.
Впрочем, подобный вариант срабатывает не во всех случаях. Чтобы убедиться, что все идет по плану, следует придерживаться стандартного алгоритма действий — иначе есть вероятность ухудшить работоспособность в будущем. Последовательность операций, совершаемых пользователем на клиентском компьютере, когда диагностирована нехватка адресной памяти для 1С, выглядит следующим образом:
- Запуск командной строки Windows. Microsoft предлагают использовать для этого обычное меню «Пуск», либо комбинацию «горячих клавиш» Win+R — в появившейся форме достаточно ввести значение «cmd», и запустить операцию нажатием на Enter.
- На экране должно возникнуть новое окно с черным полем для ввода данных. В нем прописывается команда «bcdedit/set increaseuserva 3200», число в которой отображает ограничение, установленное на использование ОЗУ. В этом случае речь идет об увеличении до 3,2 Гб, что обуславливается необходимостью постепенной корректировки системных настроек.
- После завершения процедуры нужно перезагрузить ПК — только после этого внесенные изменения вступят в силу. Для проверки результатов потребуется повторно выполнить те же самые действия, которые ранее приводили к ошибке 1 С «Недостаточно памяти». При очередном появлении уведомления следует повторить первый и второй пункт инструкции, но теперь установив цифровое значение на 3600 или 4096. Если же запуск аналогичных программ и обработка запросов не вызывает проблем с функциональным состоянием учетного приложения — вопрос считается решенным, однако остается еще один, завершающий этап.
- Для восстановления ограничителя, используемого операционной системой, нужно вновь открыть командную строку, прописав в ней команду «bcdedit/deletevalue increaseuserva». Это условие исключает снижение работоспособности ОС в пользу 1С, и обеспечивает комфортную работу с другим программным обеспечением.
Стоит учесть, что указанная инструкция помогает разобраться с экстренными ситуациями, требующими срочного проведения одной или нескольких операций в учетной программе. При наличии достаточного свободного времени и соответствующих возможностей следует перейти на полноценную 64-разрядную версию Windows. Для этого понадобится скачать установочный инструмент с официального сайта производителя, создать загрузочный носитель и указать рекомендованную разрядность.
Такая ошибка может начать возникать при длительной работе сервера 1С 8.3 без перезагрузки.
Ниже рассмотрим причину и решение данной проблемы.
Причина Ошибка SDBL. Недостаточно памяти для выполнения запроса
При продолжительной работе сервера 1С 8.3 под большой нагрузкой может приводить к фрагментации адресного пространства, доступного серверу для выполнения запросов.
При этом часть адресного пространства оказывается недоступной для повторного использования, то есть объем доступного пространства постепенно уменьшается.
Особенно часто эта ошибка при «тяжелых» действиях: выполнения больших запросов, реструктуризации базы данных и тп.
Система сообщает то, что «расходуется» НЕ физическая память (RAM), а именно адресное пространство — виртуальный набор уникальных «ячеек», доступных приложению для размещения информации.
Решение ошибки
Для решения данной проблемы достаточно настроить периодическую дефрагментацию адресного пространства или перезагрузку сервера.
Если же эти действия не дали должного эффекта, фирма 1С рекомендует использовать кластер из нескольких рабочих процессов на одном рабочем сервере.
Ошибка «Недостаточно памяти» в 1С 8.3 и 8.2 является не такой уж и редкой. Ее можно встретить и в конфигураторе (например, при сравнении конфигураций), а так же в режиме «1С:Предприятие» при выполнении трудоемких обработок: например при записи большого файла формата base64.
Данная ошибка может встречаться не только в программе 1С, но и в других программах операционной системы Windows.
Все дело в том, что в 32-х разрядных операционных системах по умолчанию 2 ГигаБайта на различные программы и столько же для операционной системы. В 64-х разрядных ОС выделяемый на приложения объем памяти составляет уже 4 ГигаБайта.
Следуя из вышесказанного, вам необходимо увеличить размер выделяемой адресной памяти на приложения, коим является программа 1С. Сделать это можно двумя способами: осуществить переход с 32-х разрядной системы на 64-х разрядную, или увеличить выделяемое изначально количество адресной памяти.
Конечно же, первый способ лучше и предпочтительнее, но если в данный момент, либо вообще вы не можете им воспользоваться, то можете воспользоваться вторым.
Дня начала перейдите в командную строку операционной системы. Для этого перейдите в меню «Пуск» и вверите в строке поиска «cmd».
Перед вами отобразится поиск программ. Выберите ту, что называется «cmd».
Так же командную строку можно открыть при помощи комбинации горячих клавиш Windows + R.
В открывшемся окне наберите следующую команду и так же нажмите «Enter»:
bcdedit /set increaseuserva 3200
В данном случае вы увеличите объем адресной памяти до 3200 МегаБайт.
Далее перезагрузите компьютер и попробуйте выполнить в программе те же самые действия, на которых раньше выдавалась ошибка.
После того, как у вас все получилось, настоятельно рекомендуется восстановить прежний объем адресной памяти. Данная мера временная, так как при выделении памяти на приложения, у операционной системы ее становится меньше. За счет этого возможно нарушение стабильности Windows.
Для восстановления адресной памяти в значение по умолчанию можно воспользоваться следующей командной, которая так же вводится в командной строке:
bcdedit /deletevalue increaseuserva
Обратите внимание, что при часто встречающийся ошибке «Нехватка памяти» в 1С так же может помочь удаление помеченных объектов. Возможно, в программе их накопилось очень много и программе сложно обрабатывать такие объемы данных. Если и этот способ не помог, то вам следует увеличить разрядность операционной системы Windows.
В XP не работает данная команда
Для Windows XP/2003 – добавлением ключа /3GB в файле Boot.ini
Только загугли как это правильно сделать, чтобы не угробить загрузку системы)
А если система и так х64? х128 Вроде пока не выпустили:) И что делать тогда?
А это что то меняет? Распределение памяти работает аналогично как я понял, так что спокойно увеличивай объём, который выделяется для приложений используя метод приведённый выше.
Из 5 рабочих мест такая ошибка вылезала только на одном, хотя оно ничем особо не отличалось от остальных. Все рабочие места на WinXP, файловая база в сетевой папке (около 7 гб).
Причем в момент возникновения ошибки в диспетчере задач показывалось, что занятой памяти на ПК 1.2 гб и свободной еще 2 гб.
Вылечилось очень неожиданным способом. ПК с 4 гб памяти и интегрированным видео Intel. Зашел в БИОС, выставил видеоадаптер iGPU (было Авто), размер видеопамяти 64 мб (было Авто).
Всё, проблема решилась, в 1С перестала вылезать ошибка о нехватке памяти. Даже /3GB в boot.ini не стоит (/userva тоже отсутствует). Да и количество занятой и свободной памяти в диспетчере задач как бы намекает, что в данном случае эти опции ничего не изменят.
Видимо, объем видеопамяти в режиме Авто, равный вроде 512 мб, занимает большой диапазон в зарезервированном адресном пространстве (выше 3.34 гб, того объема памяти, который показывается в Windows, но ниже 4гб). Остальные устройства тоже занимают какие-то адреса в этом пространстве, и, возможно, пересекаются с адресами реальной памяти. То есть система пытается выделить блок памяти близко к 3.34 гб и получает облом (т.к. по этому адресу оказывается память какого-нибудь устройства). В результате в 1С вылазит ошибка.
А когда видеопамяти всего 64 мб, остального пространства адресов хватает, чтобы разместились адреса всех устройств, и они не пересекаются с реальной памятью. Соответственно, к каким бы ячейкам памяти из имеющихся в Windows 3.34 гб ни обратилась программа, все сработает нормально, никаких ошибок не будет.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
Читайте также: