Как массово вернуть объекты конфигурации на стандартную поддержку (поставить "на замки")?

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

Рассмотрим ситуацию: у нас есть большая, доработанная конфигурация 1С, подключенная к хранилищу. Ранее для всех объектов была включена возможность изменения, и теперь стоит задача вернуть на стандартную поддержку ("поставить на замки") около 13 000 неизмененных объектов метаданных. Делать это вручную через меню Конфигурация -> Поддержка -> Настройка поддержки — непозволительно долго. Проанализируем несколько способов решения этой задачи, от самых простых до продвинутых.

Решение 1: Автоматизация ручной работы с помощью макросов

Этот подход не решает проблему концептуально, но значительно ускоряет рутинный процесс. Суть в том, чтобы записать действия мыши и клавиатуры для одного объекта и затем запустить их в цикле для всех остальных.

  1. Подготовка. Откройте окно "Настройка правил поддержки".
  2. Запись макроса. Используйте специализированную программу (например, JitBit Macro Recorder, AutoIT или настройте автоматизацию рутины в Конфигураторе с помощью макросов AutoHotkey) для записи последовательности действий: выбрать объект, открыть его свойства поддержки, изменить правило на "Объект не редактируется", сохранить и перейти к следующей строке вниз.
  3. Запуск. Запустите записанный макрос. Процесс, который вручную занял бы недели, может выполниться за несколько часов.

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

Решение 2: Использование штатного механизма обновления

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

Вариант А: Обновление на следующий релиз

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

  1. Начните стандартный процесс обновления через файл .cfu или .cf.
  2. В окне сравнения и объединения, перед нажатием кнопки "Выполнить", перейдите в настройки правил поддержки.
  3. Установите правило для новых и идентичных объектов поставщика: "Объект не редактируется".
  4. Завершите обновление. Платформа автоматически применит это правило ко всем неизмененным объектам.

Вариант Б: "Обновление" на саму себя

Этот способ более хитрый, он предполагает массовую установку объектов на поддержку через сравнение и объединение с использованием файла поставки (CF). Мы заставим систему думать, что она обновляется, используя саму себя в качестве источника.

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

Важно: этот метод не всегда работает так, как ожидается. В некоторых версиях платформы "замки" могут не установиться. Обязательно протестируйте на копии базы.

Решение 3: Продвинутый метод через выгрузку конфигурации в файлы

Это самый мощный, но и самый рискованный способ, требующий глубокого понимания структуры конфигурации. Он дает полный контроль над процессом.

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

  1. Сделайте резервную копию! Этот шаг обязателен.
  2. Выгрузите конфигурацию в файлы. Через Конфигуратор: Конфигурация -> Выгрузить конфигурацию в файлы.... Для работы с файлами конфигурации (cf, cfu, epf) также существуют специализированные инструменты, такие как В8АнПак.
  3. Определите измененные объекты. Чтобы получить перечень доработок, можно использовать готовые решения для выгрузки анализа изменений конфигурации в xls-файл. Однако самый точный способ — использовать командную строку 1С. Вам понадобится выгрузка эталонной (типовой) конфигурации в отдельную папку, для автоматизации чего существуют обработки, например, для генерации ConfigDumpInfo.xml. 1cv8.exe CONFIG /DumpConfigToFiles "C:\путь_к_эталону" Затем получите список изменений относительно эталона:
    
    1cv8.exe CONFIG /DumpConfigToFiles "C:\путь_к_вашей_конфигурации" -getChanges "C:\путь_к_файлу_с_изменениями.txt" -compareWith "C:\путь_к_эталону"
    
    В файле изменениями.txt будет список всех доработанных объектов.
  4. Напишите скрипт. Применяя автоматизированное управление правилами поддержки через OneScript, вы сможете быстро обработать тысячи метаданных. Скрипт должен:
    • Читать список измененных объектов из изменениями.txt.
    • Рекурсивно обходить все каталоги в папке с вашей выгруженной конфигурацией.
    • Для каждого объекта, которого нет в списке измененных, находит его XML-файл свойств (обычно это XML-файл с именем самого объекта) и меняет в нем значение тега, отвечающего за правило поддержки.
  5. Загрузите конфигурацию обратно. Через Конфигуратор: Конфигурация -> Загрузить конфигурацию из файлов...

Этот метод требует аккуратности, но позволяет решить задачу полностью автоматически и с высокой точностью.

Важные предостережения

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

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

← На главную