При администрировании баз данных 1С:Предприятие на уровне SQL-сервера разработчики часто замечают таблицы, названия которых отличаются от привычных объектов метаданных. Одной из таких таблиц является ConfigCAS. Особенно много вопросов возникает, когда количество расширений в базе не совпадает с количеством строк в этой таблице. Давайте подробно разберем, для чего нужна эта таблица, как расшифровывается её название и по какому принципу 1С организует хранение расширений конфигурации.
Для начала выясним, что скрывается за аббревиатурой. CAS чаще всего расшифровывается как Configuration Application Storage (хранилище прикладных конфигураций) или, в узком техническом смысле применительно к расширениям — Configuration Extension Storage. Рассмотрим ситуацию: начиная с версии платформы 8.3.6, появилась возможность использовать расширения, которые позволяют кастомизировать систему, не снимая основную конфигурацию с поддержки.
Для хранения этих расширений платформе потребовалось отдельное системное хранилище, изолированное от основной конфигурации. Если основная конфигурация «живет» в таблице Config, то все данные по расширениям вынесены в ConfigCAS. Это позволяет платформе быстро применять или отключать расширения при запуске сеанса без модификации структуры основной конфигурации.
Проанализируем ситуацию, когда в базе подключено всего 3 расширения, а в таблице ConfigCAS мы видим несколько десятков строк (например, 36). Это не является ошибкой или избыточностью. Разберем по шагам, почему так происходит:
FileName.ConfigCAS могут дублироваться или разделяться для разных областей данных, даже если используется один и тот же функционал расширения.Выясним, в каком виде данные попадают в SQL. Если мы посмотрим на структуру таблицы ConfigCAS, то увидим поля для хранения бинарных данных (обычно это Image или VarBinary(max) в зависимости от версии SQL). Рассмотрим подробнее процесс упаковки:
Данные внутри этих полей сжаты алгоритмом zlib/deflate. Это стандартный подход для 1С, который используется и в основной таблице Config. Если распаковать эти данные, мы обнаружим структуру, практически идентичную формату файлов .cf или .cfe. Это древовидная структура объектов, описанная во внутреннем текстово-бинарном формате 1С. Внутри находятся описания метаданных, программный код модулей и сериализованные формы.
Каждая строка идентифицируется через колонку FileName. Имена файлов часто представляют собой GUID-подобные строки. Например, соответствие может выглядеть так:
-- Пример логики поиска (условно)
SELECT FileName, BinaryData
FROM ConfigCAS
WHERE FileName LIKE 'extension-guid-part%'
Проанализируем механизм сохранения изменений. В архитектуре 1С всегда разделяются «редактируемая» и «исполняемая» конфигурации. Это правило работает и для расширений:
Этот механизм позволяет безопасно вести разработку: пока вы не завершили отладку расширения в ConfigCASSave, основная рабочая среда в ConfigCAS остается неизменной.
Важно помнить, что при удалении расширения через интерфейс конфигуратора записи из ConfigCAS не всегда исчезают мгновенно. Рассмотрим причины:
Для оптимизации работы этой таблицы мы рекомендуем регулярно проводить тестирование и исправление информационной базы с установленными галочками очистки неиспользуемых данных. Это поможет поддерживать таблицу ConfigCAS в актуальном состоянии и удалит «мусорные» записи, которые могли накопиться в процессе активной разработки расширений.
Подведем итог: Таблица ConfigCAS — это ключевой элемент механизма расширений. Большое количество строк в ней обусловлено архитектурной необходимостью разбивать сложные объекты расширения на мелкие фрагменты для более быстрой и гибкой работы платформы с кэшем и памятью.