При оформлении кассовых документов (например, формировании документа Расходный кассовый ордер на основании Приходного кассового ордера) и попытке напечатать фискальный чек программа может зависать на этапе выполнения запроса, после чего аварийно завершать работу с сообщением "Недостаточно памяти". Выясним причину такого поведения платформы и разберем по шагам действенные способы решения этой проблемы.
Проанализируем техническую сторону процесса. Сообщение платформы об исчерпании памяти чаще всего указывает не на физическую нехватку оперативной памяти (RAM) на компьютере, а на лимиты виртуального адресного пространства 32-разрядного клиентского приложения 1cv8.exe. В 32-битных версиях Windows одному процессу доступно максимум 2 ГБ непрерывного адресного пространства.
В момент печати чека подсистема подключаемого оборудования (БПО) выполняет сложные запросы к базе данных: проверяет цепочку документов-оснований, распределяет суммы по ставкам НДС и признакам способа/предмета расчета в соответствии с требованиями 54-ФЗ. Если база работает в файловом режиме и открывается напрямую через общий сетевой ресурс (сетевую папку), все таблицы и индексы для обработки запроса передаются по сети и обрабатываются локально в памяти клиента 1С. При сильной фрагментации памяти или наличии больших регистров процесс исчерпывает допустимый лимит в 2 ГБ и падает.
Самое надежное решение проблемы с ограничением адресного пространства — использование 64-разрядного клиента платформы «1С:Предприятие» (если на компьютере пользователя установлена 64-битная операционная система Windows).
1С:Бухгалтерия предприятия и саму платформу до актуальных релизов (в старых версиях платформы 8.3.8–8.3.9 содержались известные ошибки управления памятью при обработке сложных запросов).Накопленный поврежденный кэш конфигурации и внешних печатных форм часто приводит к утечкам памяти. Выполним полную очистку временных файлов:
1cv8.exe и 1cv8c.exe через Диспетчер задач.%AppData%\1C\1cv8
%LocalAppData%\1C\1cv8
Физическая фрагментация таблиц в файле базы данных 1Cv8.1CD увеличивает объем считываемых страниц данных при запросах. Проведем регламентные процедуры по оптимизации структуры базы:
chdbfl.exe (находится в каталоге bin установленной платформы) и убедимся в отсутствии физических повреждений таблиц.1Cv8.1CD..dt) и затем загрузить ее в новую чистую базу.Если на рабочем месте используется 32-разрядная операционная система, где невозможно установить 64-битный клиент 1С, расширим системные ограничения:
bcdedit /set increaseuserva 3072
Если кассир работает с файловой базой по локальной сети через общую папку, прямой доступ к файлу 1Cv8.1CD создает пиковые нагрузки на память клиентского ПК. Рекомендуется перевести работу на веб-сервер (IIS или Apache):