Как включение возможности изменения конфигурации 1С влияет на объем базы данных и скорость запуска?

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

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

В этой статье мы подробно разберем внутреннее устройство хранения метаданных в СУБД, выясним реальные причины замедления запуска системы, рассмотрим эволюцию механизма расширений и оценим риски изменения режима совместимости.

---

1. Как хранятся конфигурации в СУБД и почему растет размер базы данных

Рассмотрим, как именно платформа «1С:Предприятие» взаимодействует с СУБД (будь то Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle) на уровне хранения метаданных. Когда база данных находится на полной поддержке поставщика (на всех объектах дерева метаданных отображается пиктограмма «замочек»), платформа оптимизирует хранение файлов конфигурации.

На уровне физических таблиц в СУБД за хранение структуры метаданных отвечают две ключевые таблицы:

  1. [Config] — основная рабочая таблица. Она хранит конфигурацию базы данных (с которой работают пользователи в режиме предприятия), основную (редактируемую в данный момент в конфигураторе) конфигурацию, а также конфигурацию поставщика.
  2. [ConfigSave] — временная таблица, куда записываются промежуточные сохранения основной конфигурации в процессе разработки (до того, как будет выполнено обновление конфигурации базы данных по клавише F7).

В тот момент, когда конфигурация находится на полной поддержке, физически в СУБД нет необходимости держать избыточные копии метаданных. Но как только мы переходим в меню Конфигурация — Поддержка — Настройка поддержки и нажимаем кнопку «Включить возможность изменения», логика хранения кардинально меняется.

Даже если мы оставим для всех объектов без исключения правило «Объект поставщика не редактируется» (то есть сохраним все «замочки»), в таблице [Config] мгновенно создается обособленная физическая копия конфигурации поставщика. Платформа сжимает ее в бинарные блоки и сохраняет под уникальными GUID-идентификаторами.

В результате в базе данных начинают одновременно сосуществовать три независимые конфигурации:

  1. Основная конфигурация — то, что мы редактируем в Конфигураторе.
  2. Конфигурация базы данных (DB Config) — исполняемая конфигурация, с которой работают пользователи.
  3. Конфигурация поставщика — эталонная версия от фирмы «1С», необходимая для последующего сравнения и обновления.

Для тяжелых прикладных решений (таких как «1С:ERP Управление предприятием», «1С:Комплексная автоматизация» или «1С:Управление производственным предприятием») размер метаданных в сжатом виде составляет сотни мегабайт. Физическое дублирование конфигураций приводит к моментальному увеличению объема служебных таблиц в СУБД в 1.5–2 раза. На диске это может выражаться в росте размера базы данных на 500 Мб – 1.5 Гб еще до того, как вы внесли первое реальное изменение в код.

---

2. Влияние модификации конфигурации на скорость запуска «1С:Предприятия»

Существует устойчивое мнение, что снятая с поддержки конфигурация загружается у пользователей значительно дольше. Проанализируем, так ли это на самом деле.

При запуске клиентского сеанса (в режиме тонкого, толстого или веб-клиента) платформа обращается исключительно к конфигурации базы данных. Ни основная («редактируемая») конфигурация, ни конфигурация поставщика при старте системы не считываются и в оперативную память сервера или клиента не загружаются. Таким образом, само по себе наличие конфигурации поставщика в таблице [Config] никак не влияет на скорость инициализации пользовательского сеанса.

Тогда почему измененные базы действительно иногда дольше открываются? Выделим реальные косвенные причины:

  1. Динамическое обновление (люфт-эффект). Разработчики кастомизированных баз часто используют механизм динамического обновления («на лету»), чтобы не выгонять пользователей из системы. Это приводит к созданию множества версий метаданных в таблице [Config], фрагментации индексов на уровне СУБД и засорению локального кэша на компьютерах пользователей. В результате при старте платформа тратит дополнительное время на сопоставление версий кэша и метаданных.
  2. Код инициализации при запуске. Медленный запуск практически всегда связан с неоптимизированным кодом в модуле управляемого приложения (события ПриНачалеРаботыСистемы, ПередНачаломРаботыСистемы) или в обработчиках параметров сеанса. Если при старте выполняются тяжелые запросы, проверки прав доступа или обращения к веб-сервисам, старт системы существенно замедляется.
  3. Проблемы с лицензированием и сетевым окружением. Часто задержка происходит на этапе поиска аппаратного (HASP) или программного ключа защиты. Неправильно настроенный файл конфигурации nethasp.ini заставляет платформу опрашивать всю локальную сеть по различным протоколам, что визуально выглядит как «зависание» при запуске.

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


Процедура ПриНачалеРаботыСистемы()
    
    ВремяСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    // Вызов тяжелых серверных процедур инициализации
    ИнициализироватьПараметрыКлиента();
    
    ВремяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
    ОбщееВремяСекунд = (ВремяОкончания - ВремяСтарта) / 1000;
    
    ЗаписьЖурналаРегистрации(
        "ВремяЗапускаСистемы",
        УровеньЖурналаРегистрации.Информация,
        ,,
        "Время инициализации клиента составило: " + ОбщееВремяСекунд + " сек."
    );
    
КонецПроцедуры

---

3. Эволюция механизма расширений: почему больше не нужно снимать базу с поддержки

В прошлых версиях платформы (например, во времена 8.3.6 – 8.3.12) механизм расширений был сильно ограничен. Разработчик не мог добавить собственный регистр сведений, справочник или создать подписку на событие внутри расширения. Любая мало-мальски серьезная доработка требовала включения возможности изменения основной конфигурации.

В современных версиях платформы ситуация кардинально изменилась. Начиная с версии 8.3.11 и вплоть до актуальных релизов 8.3.24+, разработчикам доступен мощнейший инструментарий:

Благодаря этому в 99% случаев сегодня можно полностью отказаться от снятия конфигурации с поддержки. Все доработки изолируются в расширениях, а основная конфигурация остается на «замочке». Это гарантирует:

---

4. Риски принудительного изменения режима совместимости

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

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

---

5. Почему «тяжелеют» типовые конфигурации (проблема макетов)

Многие системные администраторы замечают, что файлы обновлений конфигураций (файлы .cf и .cfu) за последние годы выросли в объеме в несколько раз. Например, размер дистрибутива конфигурации может превышать 1.5–2 Гб.

Основная причина кроется в интеграции тяжелых двоичных данных непосредственно в структуру метаданных конфигурации через **общие макеты**:

---

Резюме

Подведем итоги нашего анализа:

  1. Включение возможности изменения конфигурации физически дублирует метаданные в таблицах СУБД, увеличивая размер базы данных, но само по себе не замедляет работу пользователей и запуск «1С:Предприятия».
  2. Для локализации медленного запуска базы следует диагностировать ключи защиты, оптимизировать код в процедуре ПриНачалеРаботыСистемы и избегать чрезмерного использования динамических обновлений.
  3. Современный механизм расширений позволяет реализовывать любые доработки, сохраняя основную конфигурацию на полной поддержке поставщика. Это самый надежный способ сохранить базу производительной и легкой в обслуживании.
← На главную