Как настроить одновременную работу 32- и 64-битных версий 1С и исправить ошибку «Недостаточно памяти»

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

В процессе эксплуатации высоконагруженных систем на базе 1С:Предприятие часто возникает ситуация, когда стандартная 32-битная архитектура перестает справляться с объемом данных. Особенно остро это проявляется при работе через веб-сервер IIS или терминальный доступ (RDP), когда пользователи начинают активно выполнять ресурсоемкие операции, такие как массовое копирование документов или формирование тяжелых отчетов. Типичным симптомом является ошибка: «Неспецифицированная ошибка работы с ресурсом Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: Недостаточно свободной памяти для выполнения операции».

В данной статье мы разберем, как решить эту проблему, внедрив 64-битную версию платформы без вреда для существующих 32-битных подключений и торгового оборудования.

Причина возникновения ошибки «Недостаточно свободной памяти»

Для начала проанализируем ситуацию и выясним, почему возникает данная ошибка, даже если на сервере установлено 32 ГБ оперативной памяти. Проблема кроется в архитектурных ограничениях 32-битных (x86) процессов Windows. Любой 32-битный процесс, будь то 1cv8c.exe (тонкий клиент) или w3wp.exe (рабочий процесс IIS), имеет жесткий лимит адресного пространства в 2 ГБ (в редких случаях до 3 ГБ).

Когда бухгалтер начинает с высокой скоростью копировать документы, система генерирует большой объем данных для передачи на сервер и записи в журнал регистрации через ресурс /e1cib/logForm. В момент сериализации этих данных память процесса мгновенно заполняется, лимит в 2 ГБ достигается, и 1С «вылетает» с ошибкой. Переход на 64-битную платформу снимает это ограничение, позволяя процессу использовать практически всю доступную физическую память сервера.

Сосуществование 32-битных и 64-битных платформ на одном сервере

Рассмотрим подробнее вопрос совместимости. На одном сервере под управлением Windows Server 2016 (и выше) можно одновременно установить обе версии платформы 1С:Предприятие (x86 и x64) одного и того же релиза. Это критически важно: номера релизов должны совпадать до последней цифры (например, оба должны быть 8.3.22.1750).

Разберем, как они располагаются в системе:

  1. 32-битная версия устанавливается в папку: C:\Program Files (x86)\1cv8\
  2. 64-битная версия устанавливается в папку: C:\Program Files\1cv8\

Пользователи, работающие через RDP, могут запускать разные версии исполняемых файлов. Те, кому необходимо торговое оборудование (которое часто имеет только 32-битные драйверы), продолжают использовать C:\Program Files (x86)\1cv8\common\1cestart.exe. Бухгалтеры, сталкивающиеся с нехваткой памяти, могут быть переведены на запуск 64-битного клиента напрямую из папки bin соответствующего релиза в Program Files.

Настройка веб-сервера IIS для работы с 64-битной платформой

Если ваши базы опубликованы на IIS, вы можете перевести веб-сервер на 64-битную разрядность, сохранив при этом возможность подключения 32-битных тонких клиентов. Выясним, как это сделать правильно.

Шаг 1. Настройка пула приложений в IIS:

  1. Откройте Диспетчер служб IIS.
  2. Перейдите в раздел «Пулы приложений».
  3. Выберите пул, который обслуживает вашу базу 1С.
  4. Нажмите «Дополнительные параметры».
  5. Найдите параметр «Разрешить 32-разрядные приложения».
  6. Установите значение False, чтобы пул работал в 64-битном режиме.

После этого необходимо переопубликовать базу из-под 64-битной версии конфигуратора, чтобы расширение веб-сервера (файл wsapvr.dll) подгружалось из нужной директории 64-битной платформы.

Особенности работы с торговым оборудованием

Важно помнить: 64-битный процесс 1С принципиально не может загрузить 32-битные динамические библиотеки (DLL). Если ваше торговое оборудование (сканеры, фискальные регистраторы) использует старые драйверы, они не будут работать в 64-битном клиенте 1С.

Проанализируем ситуацию: в вашем случае оптимальным решением будет разделение прав. Пользователи на кассах остаются на 32-битной платформе, а бухгалтер, работающий с документами без ТО, переходит на 64-битную версию. Поскольку база одна и та же (файловая или клиент-серверная), конфликтов при одновременном доступе разных по разрядности клиентов (но одного релиза платформы!) не возникнет.

Дополнительные меры по устранению ошибок памяти

Помимо смены разрядности, рекомендуем выполнить ряд регламентных действий, которые помогут стабилизировать работу системы:

Очистка кэша и временных файлов

При интенсивной работе 1С создает огромные объемы временных данных. Попробуем очистить папку log в каталоге базы данных и пользовательские кэши. Перед очисткой обязательно остановите службу IIS, иначе файлы будут заблокированы процессом w3wp.exe.

Настройка переработки (Recycling) в IIS

Для предотвращения фрагментации памяти в IIS полезно настроить автоматическую перезагрузку пула приложений. Рассмотрим пример настройки:

  1. В параметрах пула выберите «Вторичная переработка».
  2. Установите лимит «Виртуальная память» или «Частная память» (например, 4000 МБ для 64-битного режима).
  3. Настройте переработку в ночное время, чтобы очистить зависшие ресурсы без прерывания работы пользователей.

Работа с файловой базой (1CD)

Если ваша база файловая, помните, что переход на 64-бита поможет самому приложению 1С обрабатывать данные, но не изменит внутренние лимиты формата .1CD (ограничение в 4 ГБ на одну таблицу). Если ошибка сохранится даже после перехода на 64-бит, проанализируйте размер таблиц через утилиту Tool1CD или рассмотрите переход на клиент-серверный вариант (SQL).

Резюме: Одновременная работа 32 и 64 битных версий платформы одного релиза полностью поддерживается и является стандартным способом решения проблем с памятью в смешанных инфраструктурах.

← На главную