Каждый разработчик на платформе 1С:Предприятие рано или поздно сталкивается с классической проблемой обслуживания измененных конфигураций. Снять конфигурацию с поддержки или разрешить изменения для отдельных объектов можно буквально в один клик. Однако когда дело доходит до обратного процесса — возврата неизмененных объектов на полную поддержку (чтобы вернуть заветный значок «замочка») — разработчики часто сталкиваются с рутинной работой. Прокликивать каждый объект метаданных вручную в дереве конфигурации долго и неэффективно.
В этой статье мы подробно разберем, как решить эту задачу быстро, безопасно и профессионально. Мы изучим штатные инструменты платформы 1С, проанализируем риски прямого вмешательства в базу данных на уровне SQL и рассмотрим альтернативные современные методы, включая выгрузку конфигурации в файлы XML.
На первый взгляд кажется заманчивым написать простой SQL-скрипт к таблице Config, который бы мгновенно обновил признаки поддержки для нужных объектов. Давайте детально разберем, почему этот путь является крайне опасным и технически сложным:
Config (или ConfigSave для конфигурации базы данных) в поле BinaryData.ParentConfigurations.bin, ссылка на который определяется через чтение служебной записи root в таблице Config и последующий поиск по уникальным идентификаторам GUID.BinaryData сжаты по алгоритму zlib (RFC 1950) и сериализованы во внутренний проприетарный формат 1С. Чтобы изменить правила поддержки через SQL, вам пришлось бы извлекать blob-данные, распаковывать их, парсить структуру связей GUID объектов с правилами поддержки, вносить изменения, упаковывать обратно в zlib и записывать в базу. Любая микроошибка в этом процессе приведет к полной неработоспособности конфигурации.Поэтому мы настоятельно рекомендуем отказаться от манипуляций на уровне СУБД и использовать надежные штатные механизмы платформы.
Самый быстрый и безопасный способ вернуть неизмененные объекты на поддержку «в три клика» прямо в Конфигураторе — это использование механизма сравнения с конфигурацией поставщика. Проанализируем этот алгоритм по шагам:
Благодаря установленному фильтру, платформа применит это групповое правило только к видимым в дереве объектам — то есть исключительно к неизмененным. Все ваши доработки, новые реквизиты и измененный код останутся нетронутыми, так как они были скрыты фильтром.
Если в вашей рабочей базе снято с поддержки огромное количество объектов, а реально измененных — единицы, наиболее надежным и чистым методом будет полная замена конфигурации через файл .cf. Давайте рассмотрим этот изящный метод:
.cf..cf.Выясним, почему это работает без потери данных. Команда «Загрузить конфигурацию из файла» полностью перезаписывает структуру метаданных вместе с правилами поддержки. Поскольку физическая структура таблиц в файле .cf полностью совпадает с рабочей базой, платформа успешно применит новые правила поддержки, не затрагивая сами данные в таблицах СУБД. Все неизмененные объекты автоматически встанут под замок.
Для крупных проектов, где ведется разработка с использованием систем контроля версий (Git) или среды разработки 1С:Enterprise Development Tools (EDT), отлично подойдет метод работы с исходными кодами конфигурации.
Начиная с платформы 8.3, разработчики могут выгружать и загружать конфигурацию в виде набора файлов XML. При выгрузке настройки поддержки помещаются в файлы ConfigDumpInfo.xml и ParentConfigurations.bin.
Для выполнения этой операции в пакетном режиме мы можем использовать командную строку. Рассмотрим пример команды для выгрузки конфигурации в файлы:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\PutToYourBase" /N "Администратор" /P "Пароль" /DumpConfigToFiles "C:\UnpackedConfig" -Format Hierarchical
После выгрузки мы можем использовать специализированные скрипты на языке OneScript или Python, которые анализируют XML-описания объектов метаданных, находят расхождения с конфигурацией поставщика и автоматически корректируют файлы настроек поддержки. После этого измененные файлы XML загружаются обратно в базу данных с помощью команды:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\PutToYourBase" /N "Администратор" /P "Пароль" /LoadConfigFromFiles "C:\UnpackedConfig"
Этот способ требует навыков автоматизации и написания скриптов, но он незаменим при организации процессов непрерывной интеграции (CI/CD) для автоматического контроля чистоты поддержки метаданных.
Мы подробно разобрали, как решать проблему массовой установки объектов на поддержку в 1С. Попытки править таблицы СУБД напрямую через SQL сопряжены с колоссальными рисками и неоправданно сложны. Вместо этого используйте штатный и элегантный лайфхак с фильтрацией совпадающих объектов в окне сравнения конфигураций или воспользуйтесь методом «чистой базы», который гарантирует идеальный порядок в правилах поддержки вашей конфигурации.