При работе с крупными прикладными решениями, такими как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация, технические специалисты часто сталкиваются с ошибкой: «Превышен максимальный допустимый размер файла невозможно записать конфигурацию в режиме совместимости 8.3.15 и ниже». Эта ситуация блокирует возможность получения файла .cf для переноса изменений или создания резервной копии конфигурации. В этой статье мы подробно разберем причины возникновения этой ошибки и рассмотрим все доступные способы её решения.
Рассмотрим природу проблемы. До режима совместимости 8.3.16 включительно формат файла конфигурации .cf использовал 32-битную адресацию. Это накладывало жесткий физический лимит на размер файла — 2 ГБ. Как только объем данных в конфигурации приближается к этому порогу, платформа не может корректно записать файл.
Проанализируем ситуацию, почему типовая ERP, которая в «чистом» виде весит около 600–800 МБ, вдруг начинает превышать 2 ГБ. Основная причина — включение возможности изменения. Когда мы включаем поддержку с возможностью редактирования, файл конфигурации начинает хранить два «слоя» данных:
В результате размер файла практически удваивается. Добавьте к этому тяжелые макеты драйверов оборудования, картинки и компоненты, и порог в 2 ГБ будет легко преодолен.
Разберем самый эффективный метод, который позволяет сохранить текущий режим совместимости. В современных конфигурациях 1С огромное место занимают общие макеты с драйверами торгового оборудования. Многие из них не используются в конкретной организации.
Для начала проанализируем, какие именно макеты занимают больше всего места. Для этого мы можем использовать следующий программный код:
&НаСервере
Процедура ПолучитьРазмерФайловДрайверов()
МетМакеты = Метаданные.ОбщиеМакеты;
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Имя");
ТЗ.Колонки.Добавить("Размер");
Для каждого Стр Из МетМакеты Цикл
Если Найти(Нрег(Стр.Имя), "драйвер") Тогда
ОбщМакет = ПолучитьОбщийМакет(Стр.Имя);
// Получаем размер в Мб
Размер = ОбщМакет.Размер() / (1024 * 1024);
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Имя = Стр.Имя;
НоваяСтрока.Размер = Размер;
КонецЕсли;
КонецЦикла;
ТЗ.Сортировать("Размер Убыв");
Для каждого Стр Из ТЗ Цикл
Сообщить("" + Стр.Имя + " Размер: " + Стр.Размер + " Мб");
КонецЦикла;
КонецПроцедуры
После выявления самых тяжелых макетов, выполним следующие шаги:
.cf.Начиная с платформы 8.3.16 и выше, 1С использует обновленный формат контейнера, который поддерживает файлы более 2 ГБ. Рассмотрим, как это использовать для выгрузки:
.cf.Если ваша цель — перенести изменения между базами или поместить конфигурацию в систему контроля версий, мы рекомендуем вообще отказаться от формата .cf. Платформа 8.3 имеет встроенный механизм декомпозиции.
Выполним следующие действия:
Этот способ является наиболее современным и «правильным» с точки зрения разработки на платформе 1С.
Если вам нужно срочно получить .cf файл основной конфигурации без «балласта» конфигурации поставщика, рассмотрим следующий алгоритм:
Интересный нюанс: файл поставки (создаваемый для целей обновления) часто упаковывается плотнее или не включает лишние слои. Попробуйте выполнить команду Конфигурация — Поставка конфигурации — Создать файлы поставки и обновления конфигурации. Как отмечают пользователи, файл поставки .cf может весить значительно меньше (например, 900 МБ против 2 ГБ при обычной выгрузке).
Мы проанализировали проблему превышения размера файла конфигурации и нашли несколько путей решения. Если вы планируете продолжать доработку тяжелой ERP, наиболее надежным вариантом будет оптимизация состава общих макетов или переход на работу с выгрузкой в файлы. Помните, что манипуляции с режимом совместимости в типовых решениях требуют повышенной осторожности и обязательного тестирования после возврата к исходным настройкам.