Как устранить ошибки и нехватку памяти при обновлении тяжелых конфигураций 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При обновлении крупных конфигураций (таких как 1С:Управление производственным предприятием 1.3, 1С:ERP или 1С:Комплексная автоматизация) разработчики и администраторы нередко сталкиваются с аварийным завершением работы Конфигуратора или сообщениями о недостатке памяти. Разберем основные причины такого поведения платформы, проанализируем алгоритм быстрой локализации проблемы и рассмотрим эффективные варианты её устранения.

Выясним причину сбоя: при сравнении и объединении масштабных метаданных платформа выстраивает в оперативной памяти полное дерево объектов текущей конфигурации, конфигурации базы данных и конфигурации поставщика. В 32-разрядном клиенте процесс 1cv8.exe ограничен адресным пространством в 2 ГБ, что при накоплении кэша или тяжелых макетов неминуемо приводит к исчерпанию доступной виртуальной памяти.

Способ 1. Очистка кэша метаданных и предварительный запуск

Самой частой причиной внезапных сбоев при обновлении является повреждение или переполнение локального кэша конфигурации. Разберем по шагам порядок действий:

  1. Закроем все запущенные сеансы Конфигуратора и 1С:Предприятия.
  2. Очистим папки пользовательского кэша 1С на локальном компьютере:
    %APPDATA%\1C\1Cv8\
    %LOCALAPPDATA%\1C\1Cv8\
  3. Если база работает в клиент-серверном режиме, выполним перезапуск службы сервера 1С:Предприятия для сброса серверного кэша.
  4. Обязательно запустим информационную базу в режиме 1С:Предприятие перед применением очередного обновления, чтобы выполнились фоновые и отложенные обработчики обновления предыдущего релиза.
  5. Заново откроем Конфигуратор и повторим процедуру обновления.

Способ 2. Использование 64-разрядного клиента и переход на платформу 8.3

Если конфигурация до сих пор работает на платформе 8.2 (например, 8.2.19.130), естественным ограничением становится отсутствие полноценного 64-битного толстого клиента под Windows и несовместимость со встроенными механизмами современных ОС. Рассмотрим переход на платформу 8.3 в режиме совместимости:

  1. Установим стабильный релиз платформы 8.3 (включая 64-разрядный клиент). На 64-битной платформе процесс Конфигуратора не упирается в лимит 2–4 ГБ виртуального адресного пространства.
  2. Сохраним в свойствах конфигурации параметр Режим совместимости со значением Версия 8.2.13 или Версия 8.2.16. Это позволит конфигурации УПП 1.3 работать в штатном режиме без переписывания кода под управляемые формы.
  3. Переход на платформу 8.3 решает проблему утечек памяти при массовом перепроведении документов, устраняет вылеты Синтакс-помощника в Windows 10/11, а также восстанавливает работу сервисов, требующих современных протоколов шифрования (TLS 1.2/1.3), таких как 1С:Контрагент и сервисы прямой интеграции с банками.

В случае необходимости возврата базы на платформу 8.2 (при условии, что режим совместимости не отключался и не использовались расширения) достаточно выгрузить информационную базу в файл .dt под платформой 8.3 и загрузить её в пустую базу на сервере 8.2.

Способ 3. Расширение адресного пространства для 32-битного клиента

Если переход на платформу 8.3 временно невозможен, расширим доступный объем виртуальной памяти для 32-разрядного процесса 1cv8.exe средствами операционной системы. Рассмотрим инструкцию:

  1. Запустим командную строку cmd.exe от имени администратора.
  2. Выполним команду для выделения 3 ГБ памяти под пользовательские процессы: bcdedit /set increaseuserva 3072
  3. Перезагрузим компьютер для применения параметров.
  4. Установим флаг LARGEADDRESSAWARE в заголовке исполняемого файла 1cv8.exe с помощью системной утилиты editbin:
    
    editbin.exe /LARGEADDRESSAWARE "C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe"
    

Способ 4. Обновление конфигурации в пакетном режиме через командную строку

Проанализируем альтернативный вариант применения файла обновления без загрузки тяжелого визуального интерфейса сравнения и объединения конфигураций. В пакетном режиме Конфигуратор потребляет в несколько раз меньше памяти:

  1. Сформируем строку вызова Конфигуратора в пакетном режиме:
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "D:\Bases\UPP" /N "Admin" /P "Password" /UpdateCfg "D:\Updates\1cv8.cfu" /UpdateDBCfg
    
  2. Для серверных баз используем параметры подключения к кластеру:
    
    "C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /S "Server1C\UPP_Base" /N "Admin" /P "Password" /UpdateCfg "D:\Updates\1cv8.cfu" /UpdateDBCfg
    
  3. При обновлении через полный файл поставки вместо /UpdateCfg можно использовать прямое объединение или загрузку полного файла .cf требуемого релиза.

Способ 5. Снятие проблемных объектов и макетов с поддержки

Если ошибка возникает на конкретном шаге сравнения больших двоичных данных (например, сложных графических макетов или драйверов оборудования, встроенных в конфигурацию):

  1. Откроем Конфигурация -> Поддержка -> Настройка поддержки.
  2. Включим возможность изменения конфигурации и снимем с поддержки тяжелый неизменяемый макет или объект.
  3. Выполним объединение с обновлением, сняв флаг обновления с данного объекта в окне сравнения, после чего вернем объект на поддержку при необходимости.
← На главную