При обновлении нетиповых (измененных) конфигураций «1С:Бухгалтерия предприятия 3.0» специалисты часто сталкиваются со следующей проблемой. Весь процесс обновления файлов метаданных проходит в штатном режиме, однако на финальном этапе при попытке сохранения конфигурации базы данных (нажатии клавиши F7) система выдает критическую ошибку: «РегистрСведений.УдалитьНастройкиВерсионированияОбъектов: Регистр без измерений, ресурсов и реквизитов: При проверке метаданных обнаружены ошибки! Операция не может быть выполнена». Аналогичная проблема может возникать и с другими регистрами, например, РегистрСведений.УдалитьРезультатыОбменаДанными.
В этой статье мы подробно разберем, почему возникает эта ошибка платформы, как устроен механизм устаревших объектов в Библиотеке стандартных подсистем (БСП) и рассмотрим четыре практических способа решения проблемы в зависимости от состояния вашей конфигурации.
Для того чтобы эффективно решить проблему, проанализируем внутренние механизмы платформы «1С:Предприятие». Ошибка типична для конфигураций, которые были частично или полностью сняты с поддержки (находятся в режиме «Редактируется с сохранением поддержки»).
В процессе эволюции программных продуктов разработчики фирмы «1С» регулярно оптимизируют код и структуру хранения данных. Когда определенный объект метаданных (например, регистр сведений) признается устаревшим, его нельзя сразу удалить из системы, так как в нем могут храниться важные пользовательские данные. Разработчики БСП применяют стандартную двухшаговую процедуру миграции:
РегистрСведений.НастройкиВерсионированияОбъектов) переименовывается путем добавления префикса «Удалить» — получается РегистрСведений.УдалитьНастройкиВерсионированияОбъектов.При обновлении абсолютно типовой конфигурации этот процесс проходит незаметно для пользователя. Но если база данных изменена, правила сравнения и объединения могут отработать некорректно. Из-за индивидуальных настроек поддержки на пустом регистре может не стоять флаг удаления. В результате в вашей рабочей конфигурации остается «пустышка» — объект метаданных без единого реквизита, ресурса или измерения. СУБД и платформа 1С строго запрещают существование таких «пустых» таблиц в структуре базы данных, поэтому при попытке реструктуризации по кнопке F7 процесс аварийно прерывается.
Рассмотрим самый простой и правильный превентивный метод решения проблемы, который следует применять непосредственно в процессе обновления конфигурации.
Если вы выполняете обновление через меню Конфигурация -> Поддержка -> Обновить конфигурацию или через ручное Сравнение и объединение с конфигурацией из файла, обязательно обратите внимание на окно со списком изменений:
РегистрСведений.УдалитьНастройкиВерсионированияОбъектов).F7.Если вы уже применили обновление, закрыли окно сравнения-объединения и теперь при нажатии F7 постоянно получаете ошибку проверки метаданных, удалим этот регистр вручную.
Часто системные администраторы и бухгалтеры опасаются удалять регистр с префиксом «Удалить», боясь потерять важные данные (например, историю изменений документов). Разберем этот момент подробнее: история изменений документов и справочников физически хранится в совершенно другом регистре — РегистрСведений.ВерсииОбъектов. Проблемный регистр УдалитьНастройкиВерсионированияОбъектов содержал лишь технические настройки (какие именно объекты версионировать). Поэтому его удаление абсолютно безопасно для накопленной истории.
Выполним процедуру удаления по шагам:
Del).УдалитьНастройкиВерсионированияОбъектов.Del.F7 для успешного сохранения конфигурации базы данных.Бывают ситуации, когда структура метаданных «плывет» по нескольким объектам сразу. Например, старый регистр РезультатыОбменаДанными должен переименоваться в УдалитьРезультатыОбменаДанными, а под старым именем должен создаться новый чистый регистр. Из-за некорректных правил сопоставления в нетиповой конфигурации этот процесс нарушается.
В этом случае воспользуемся «чистым» эталонным файлом конфигурации нового релиза:
1c_new.cf.1c_new.cf.F7.Если вам необходимо срочно запустить базу, а на детальный анализ правил поддержки и сравнение конфигураций нет времени, можно применить быстрое временное решение.
Поскольку платформа ругается исключительно на отсутствие измерений, ресурсов и реквизитов внутри существующей таблицы регистра сведений, мы можем искусственно исправить эту структуру:
УдалитьНастройкиВерсионированияОбъектов в дереве метаданных Конфигуратора вашей рабочей базы.ВременноеИзмерение) и типом данных Булево или Строка. Настройки длины и типа значения роли не играют.F7. Платформа распознает структуру регистра как корректную (поскольку в ней появилось хотя бы одно измерение) и без ошибок выполнит реструктуризацию базы данных.Чтобы минимизировать риски возникновения ошибок реструктуризации при последующих обновлениях измененных баз данных «1С:Бухгалтерия 3.0», рекомендуем придерживаться двух простых правил:
Контролируйте версию технологической платформы. Для конфигураций БП 3.0.75.х и выше критически важно использовать актуальную версию платформы «1С:Предприятие» (не ниже рекомендованной в требованиях к релизу конфигурации). На устаревших версиях платформы алгоритмы сопоставления объектов при сравнении-объединении могут работать некорректно.
Не пренебрегайте последовательным запуском. Никогда не обновляйте измененную конфигурацию «через несколько релизов в один присест» исключительно в конфигураторе. После каждого промежуточного обновления (особенно содержащего критические изменения БСП) обязательно запускайте базу в режиме пользовательского сеанса «1С:Предприятие» под правами администратора. Это необходимо для того, чтобы программа запустила отложенное обновление данных, перенесла все настройки версионирования и обмена в новые регистры и штатно завершила процедуру удаления старых объектов.