← На главную
Обновление крупных и сложных прикладных решений, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация, требует значительных вычислительных ресурсов. В ситуациях, когда конфигурация снята с полной поддержки и содержит множество доработанных модулей, штатный механизм трехстороннего сравнения и объединения может завершаться аварийно с системным сообщением «Недостаточно памяти» (Out of memory).
Проанализируем природу этой ошибки, выясним ключевые факторы, приводящие к исчерпанию адресного пространства, и разберем пошаговый алгоритм устранения проблемы.
Причины возникновения ошибки при сравнении и объединении
Рассмотрим, почему процесс обновления ресурсоемких систем вызывает сбой выделения памяти:
- Ограничение разрядности клиентского приложения (x86/x32). По умолчанию 32-разрядный процесс операционной системы Windows может адресовать не более 2 ГБ виртуальной памяти (или до 3–4 ГБ при специальных системных настройках). Механизм сравнения метаданных 1С:ERP одновременно удерживает в оперативной памяти основную конфигурацию, конфигурацию поставщика текущего релиза, новую конфигурацию из файла обновления (
cfu или cf), а также дерево различий. Для 32-разрядного процесса этого объема оказывается недостаточно. - Фрагментация и разрастание служебных таблиц метаданных. В процессе длительной разработки и многократных промежуточных обновлений внутренние таблицы базы (
Config, ConfigSave) накапливают устаревшие версии структур, что увеличивает объем распаковываемых данных. - Наличие нескольких конфигураций поставщика. Если в свойствах поддержки сохранены неактуальные или задвоенные конфигурации поставщика от прошлых релизов, конфигуратор пытается проанализировать их все, лавинообразно расходуя оперативную память.
- Переполнение временных каталогов и блокировка кэша. Во время парсинга текстов модулей конфигуратор создает сотни тысяч временных файлов в системном каталоге
%TEMP%, что при медленном дисковом вводе-выводе или работе антивируса приводит к переполнению буферов памяти.
Способ 1. Переход на 64-разрядную версию платформы (клиент x64)
Основное и самое надежное решение при работе с тяжелыми конфигурациями — выполнение операции обновления исключительно через 64-разрядный клиент «1С:Предприятие».
Разберем по шагам, как правильно переключить запуск:
- Убедимся, что на рабочей станции или сервере установлен дистрибутив «Клиент 1С:Предприятия (64-bit)» соответствующей версии технологической платформы.
- Откроем окно запуска 1С, выделим необходимую информационную базу и нажмем кнопку «Изменить...».
- Перейдем на последнюю вкладку настроек параметров запуска и в поле «Разрядность» принудительно укажем «64 (x86_64)» вместо значения «32 (x86)» или «Автоматически».
- Запустим конфигуратор и выполним операцию сравнения и объединения конфигураций повторно. В 64-разрядном адресном пространстве лимит оперативной памяти практически неограничен и упирается только в физический объем RAM и размер файла подкачки.
Способ 2. Очистка кэша и реструктуризация таблиц метаданных
Если ошибка повторяется даже в 64-разрядной среде, причиной может служить поврежденный кэш или фрагментация внутренних таблиц. Разберем порядок профилактических действий:
- Очистим пользовательский кэш конфигуратора. Завершим все сеансы работы с базой и удалим содержимое каталогов:
%LocalAppData%\1C\1Cv8
%AppData%\1C\1Cv8 - Очистим временные файлы операционной системы. Полностью очистим каталог
%TEMP% текущего пользователя. - Выполним проверку целостности конфигурации. В меню конфигуратора откроем пункт «Конфигурация» — «Проверка конфигурации», включим проверку логической целостности и синтаксический контроль модулей.
- Сделаем выгрузку и загрузку информационной базы через файл
.dt. Создадим резервную копию базы данных в файл выгрузки, создадим новую пустую базу в СУБД и загрузим .dt обратно. Эта процедура полностью перестраивает таблицы Config и ConfigSave, удаляя фрагментированные служебные записи.
Способ 3. Проверка и удаление лишних конфигураций поставщика
Проанализируем состояние правил поддержки в базе данных. Для этого перейдем в меню «Конфигурация» — «Поддержка» — «Настройка поддержки».
В открывшемся окне проверим список зарегистрированных конфигураций поставщика. Если в таблице отображаются конфигурации от старых версий или сторонних подсистем, которые более не используются, их следует снять с поддержки и удалить. В базе должна оставаться только одна актуальная конфигурация основного поставщика («1С:ERP»). Это существенно снизит объем данных, загружаемых в память при построении дерева сравнения.
Способ 4. Расширение адресного пространства для 32-разрядных систем
Если обновление временно приходится выполнять на 32-разрядном клиенте в 64-битной среде Windows, операционная система по умолчанию ограничивает пользовательский процесс 2 гигабайтами. Мы можем принудительно увеличить лимит виртуальной памяти для пользовательских приложений до 3072 МБ.
Разберем порядок настройки через командную строку Windows:
- Запустим командную строку
cmd.exe от имени Администратора. - Выполним системную команду увеличения лимита виртуальной памяти:
bcdedit /set increaseuserva 3072
- Перезагрузим компьютер для применения параметров загрузчика.
- Выполним обновление информационной базы.
- После завершения работ рекомендуется вернуть системные настройки к исходным значениям с помощью команды:
bcdedit /deletevalue increaseuserva
Способ 5. Альтернативная схема обновления на локальной копии
Для минимизации сетевых задержек, блокировок СУБД и сбоев оперативной памяти на продуктивном контуре рекомендуется применять регламент обновления через эталонный файл конфигурации:
- Выгрузим рабочую конфигурацию в файл
.cf. - Развернем на локальном компьютере с быстрым NVMe-накопителем и достаточным объемом RAM файловую или локальную клиент-серверную базу.
- Выполним полное трехстороннее объединение с новым релизом на копии, разрешим все конфликты в доработанных модулях и сохраним итоговую конфигурацию в единый результирующий файл
.cf. - В рабочей базе выполним простую операцию «Конфигурация» — «Сравнить, объединить с конфигурацией из файла...» или полную замену через «Загрузить конфигурацию из файла...». Это исключает тяжелые вычисления на продуктивном сервере и полностью решает проблему нехватки оперативной памяти.
- В перспективе перенесем нетиповой функционал в расширения конфигурации (Configuration Extensions), вернув основную конфигурацию на типовую поддержку.