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