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

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

При активной разработке в среде 1С программисты часто сталкиваются с проблемой разрастания архивов. Хранение полных файлов конфигурации (.cf) для десятков клиентов, особенно если это тяжелые решения вроде ERP, УПП или Комплексная автоматизация, требует огромных дисковых пространств. Возникает закономерный вопрос: можно ли «вычистить» конфигурацию так, чтобы в ней остались только авторские доработки, а все типовые объекты, находящиеся на поддержке, были удалены или минимизированы?

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

Использование расширений конфигурации (CFE)

Самый современный и рекомендуемый фирмой «1С» способ — это вынос всех доработок в расширения. Вместо того чтобы менять основную конфигурацию, мы создаем файл расширения (.cfe), который содержит только измененные или добавленные объекты.

Рассмотрим преимущества этого метода:

  1. Размер файла расширения в десятки и сотни раз меньше полного .cf.
  2. Основная конфигурация клиента остается полностью типовой (на замке), что упрощает обновление.
  3. В расширении наглядно видны все заимствованные методы и новые реквизиты.

Если ваши доработки уже сделаны в основной конфигурации, их можно перенести в расширение вручную. Однако для больших проектов это трудоемкий процесс. Тем не менее, для новых задач использование cfe является стандартом де-факто.

Хранение изменений через файлы обновления (CFU)

Проанализируем альтернативный вариант, который часто незаслуженно забывают. Файл обновления конфигурации (.cfu) по своей сути является тем самым «диффом» (разницей), который ищет автор вопроса. Он содержит только те объекты и модули, которые отличаются от предыдущей версии.

Как создать такой «архив изменений»:

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

Чтобы восстановить полную конфигурацию из такого файла, нам достаточно иметь под рукой типовой .cf той же версии и применить к нему наше обновление.

Автоматизация очистки через пакетный режим конфигуратора

Выясним, как можно автоматизировать процесс создания «выхолощенной» конфигурации, используя командную строку. Платформа 1С поддерживает мощный механизм выгрузки конфигурации в файлы XML и текстовые модули.

Разберем алгоритм, предложенный опытными разработчиками: мы можем выгрузить изменения, сравнив рабочую конфигурацию с конфигурацией поставщика. Для этого используется параметр /DumpConfigToFiles с ключом -getChanges.

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


"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "ПутьКБазе" /N "Логин" /P "Пароль" /DumpConfigToFiles "C:\Distr\Changes" -getChanges "C:\Distr\VendorConfig.cf"

В результате в каталоге C:\Distr\Changes окажутся только те модули, формы и описания метаданных, которые были изменены. Это позволяет хранить доработки в текстовом виде, что идеально подходит для систем контроля версий.

Переход к Enterprise Development Tools (EDT) и Git

Проанализируем наиболее профессиональный подход к хранению доработок — использование 1C:EDT совместно с Git. В этой парадигме мы вообще отказываемся от хранения бинарных файлов .cf в качестве архивов разработки.

Как это работает:

  1. Проект в EDT представляет собой набор текстовых файлов.
  2. Git хранит историю изменений построчно. Если вы изменили одну строку в модуле на 100 000 строк, Git сохранит только эту строку и метаданные коммита.
  3. Для работы с базой клиента вы просто «натягиваете» свой проект на типовую конфигурацию.

Это полностью снимает вопрос нехватки места на диске. Весь репозиторий со всей историей изменений за несколько лет может весить меньше, чем один файл .cf современной ERP-системы.

Создание «конфигурации-носителя» программным путем

Если же необходимо получить именно файл .cf, но без лишнего веса, можно воспользоваться «хитрым» методом программной очистки. Для этого создается скрипт (на языке 1С или внешнем языке, например, Python), который выполняет следующие действия:

  1. Создает временную информационную базу.
  2. Загружает в нее конфигурацию клиента.
  3. Снимает конфигурацию с поддержки.
  4. Используя пакетный режим и файлы выгрузки (см. выше), удаляет все объекты, которые не помечены как измененные.
  5. Заменяет тела тяжелых макетов и картинок на «пустышки», если они совпадают с типовыми.

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

Резюме

Подводя итог, можно сказать, что хранение полных .cf файлов — это экстенсивный путь, ведущий к дефициту места и путанице. Для эффективной работы рекомендуем:

Выбор конкретного метода зависит от ваших задач, но автоматизация через пакетный режим конфигуратора позволяет решить проблему «замусоренных» архивов раз и навсегда.

← На главную