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

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

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

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

Выясняем причину: почему загрузка конфигурации (.cf) опасна и блокирует восстановление поддержки?

Для понимания сути проблемы проанализируем внутреннее устройство платформы 1С. У каждого объекта метаданных (будь то справочник, документ, реквизит или табличная часть) существует два имени:

  1. Символьное имя — то, которое мы видим в дереве метаданных конфигуратора (например, Справочник.Контрагенты).
  2. Внутренний уникальный идентификатор (UUID) — скрытый 128-битный код, по которому платформа связывает объект метаданных с физическими таблицами в СУБД (MS SQL, PostgreSQL и др.).

Когда вы выполняете стандартное «Сравнение-объединение», платформа сопоставляет объекты по их символьным именам. Если имена совпадают, конфигуратор сообщает, что различий нет. Однако при попытке выполнить операцию «Загрузить конфигурацию из файла» платформа полностью перезаписывает структуру метаданных вместе с их оригинальными UUID.

Если в вашей рабочей базе UUID объектов отличаются от UUID в загружаемом файле поставщика .cf (что часто происходит при некорректном переносе доработок, ручном создании объектов «с нуля» под теми же именами или после некорректных обновлений в прошлом), платформа посчитает старый объект удаленным, а новый — созданным заново. Во время сохранения изменений и реструктуризации базы данных (по клавише F7) физическая таблица СУБД со всеми накопленными данными будет безвозвратно удалена, а вместо нее создастся новая пустая таблица.

Почему недоступно правило «Объект поставщика не редактируется»?

Вы можете заметить эту проблему при попытке ручной настройки через меню «Конфигурация — Поддержка — Настройка поддержки». Если для какого-то объекта кнопка установки правила «Объект поставщика не редактируется» (замок) неактивна или горит серым цветом, это явный маркер того, что нарушена связь UUID между вашей основной конфигурацией и конфигурацией поставщика. Платформа распознает данный объект как уникальный пользовательский и не позволяет принудительно связать его с типовым шаблоном.


Способ 1. Быстрое групповое восстановление поддержки для неизмененных объектов

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

  1. Откройте окно настройки поддержки: Конфигурация — Поддержка — Настройка поддержки.
  2. Нажмите кнопку Сравнить, объединить.
  3. В появившемся окне сравнения снимите абсолютно все флажки слева (чтобы случайно не затереть нужные доработки, если они есть).
  4. Выделите самый верхний (корневой) элемент дерева конфигурации.
  5. Нажмите на нем правой кнопкой мыши или используйте кнопку Изменить над деревом метаданных.
  6. В появившемся окне настройки правил выберите для правила поддержки значение «Объект поставщика не редактируется» и обязательно установите флаг «Установить правило для подчиненных элементов». Нажмите кнопку «ОК».

Если связь по UUID сохранена, система автоматически установит замочки на все подчиненные объекты, которые фактически не отличаются от конфигурации поставщика.


Способ 2. Перенос данных в чистую базу (Самый безопасный метод при расхождении UUID)

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

  1. Создайте абсолютно новую пустую информационную базу из официального шаблона поставщика (того же релиза, который установлен у вас). В этой базе все UUID объектов метаданных будут гарантированно правильными и чистыми.
  2. Если в вашей старой конфигурации присутствовали реальные кастомные доработки (новые уникальные реквизиты, документы или справочники, которых нет в типовом решении), перенесите только их структуру в новую базу через «Сравнить, объединить с конфигурацией из файла». При этом переносите исключительно ваши добавленные элементы, не затрагивая типовые.
  3. Для переноса накопленных учетных данных используйте универсальную обработку «Выгрузка и загрузка данных XML» (доступную на диске ИТС или в составе Библиотеки Стандартных Подсистем). Она выгружает информацию на уровне ссылочной структуры. Поскольку выгрузка/загрузка XML сопоставляет данные по GUID самих элементов справочников и документов (а не по UUID метаданных), перенос пройдет успешно и без потери информации.
  4. Если структура метаданных была существенно изменена, воспользуйтесь конфигурацией «1С:Конвертация данных» для создания точных правил обмена между старой измененной базой и новой типовой.

Способ 3. Обходной путь через временное переименование объектов («Метод Удалить_»)

Этот способ незаменим, если база данных имеет колоссальный объем (сотни гигабайт или терабайты) и выгрузка/загрузка всей базы через XML физически невозможна из-за ограничений по времени или системным ресурсам. Мы можем провести замену «на месте» внутри одной базы данных:

  1. Определите все проблемные объекты метаданных, у которых разошлись UUID (например, Справочник.Контрагенты).
  2. Переименуйте их в конфигураторе рабочей базы, добавив префикс (например, Справочник.Удалить_Контрагенты). При этом физические таблицы СУБД с вашими данными переименуются, но сохранятся.
  3. Выполните операцию «Загрузить конфигурацию из файла» (загружайте чистый типовой .cf поставщика). Платформа создаст новые пустые объекты метаданных с правильными именами и правильными оригинальными UUID (например, создастся чистый пустой Справочник.Контрагенты). Старые таблицы с префиксом Удалить_ останутся нетронутыми.
  4. Напишите и запустите в режиме «1С:Предприятие» внешнюю обработку по переносу данных из переименованных таблиц в новые. Пример кода для такой обработки:

// Пример переноса данных из переименованного справочника в восстановленный типовой
ВыборкаСтарых = Справочники.Удалить_Контрагенты.Выбрать();
Пока ВыборкаСтарых.Следующий() Цикл
    // Создаем новый элемент в восстановленном справочнике с сохранением ссылки
    НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
    
    // Заполняем реквизиты по соответствию имен
    ЗаполнитьЗначенияСвойств(НовыйЭлемент, ВыборкаСтарых);
    
    // Если требуется сохранить оригинальный УИД самой записи данных:
    // НовыйЭлемент.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(ВыборкаСтарых.Ссылка.УникальныйИдентификатор()));
    
    Попытка
        НовыйЭлемент.Записать();
    Исключение
        ЗаписьЖурналаРегистрации("ПереносДанных", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;
  1. После того как данные из всех объектов с префиксом Удалить_ будут полностью перенесены, а ссылки в документах перепривязаны (с помощью типовой обработки «Поиск и замена значений»), удалите старые переименованные объекты метаданных из конфигурации.

Способ 4. Выгрузка конфигурации в XML-файлы и замена UUID (Экспертный метод)

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

  1. Выгрузите рабочую измененную конфигурацию в файлы (меню Конфигурация — Выгрузить конфигурацию в файлы...).
  2. Выгрузите чистую конфигурацию поставщика того же релиза в другую папку.
  3. Используя специализированные программы для сравнения папок и файлов (например, WinMerge, Beyond Compare) или регулярные выражения, найдите расхождения в файлах описания метаданных и замените неправильные UUID в файлах вашей рабочей конфигурации на правильные UUID из конфигурации поставщика.
  4. Загрузите измененные файлы обратно в базу (Конфигурация — Загрузить конфигурацию из файлов...).
  5. Запустите обновление базы данных. Конфигуратор увидит соответствие UUID и позволит безболезненно установить замок поддержки на данные объекты.

Важное предупреждение: Данный метод требует глубокого понимания структуры XML-схемы конфигурации 1С. Перед выполнением обязательно создайте резервную копию базы данных!


Полезные нюансы и часто встречающиеся ошибки

Как исправить ошибку «Файл не содержит доступных обновлений»?

Эта ошибка часто возникает при попытке обновить конфигурацию поставщика через пункт меню «Конфигурация — Поддержка — Обновить конфигурацию» путем подкладывания файла .cf того же релиза. Платформа считает, что обновлять нечего, так как номера версий совпадают.

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

Постоянные ложные различия в справочной информации

Иногда при сравнении полностью типовой конфигурации с конфигурацией поставщика платформа упорно показывает различия в разделах Справки. Это известная особенность платформы (баг парсинга HTML-тегов справки). При сохранении файлов на разных версиях платформы или операционных системах автоматически меняются служебные мета-теги генератора HTML. На работу системы это никак не влияет. При сравнении-объединении просто снимите флажки со справочной информации, чтобы исключить эти ложные изменения из анализа.

← На главную