Как исправить ошибку «Регистр без измерений, ресурсов и реквизитов» при обновлении 1С:Бухгалтерия 3.0

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

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

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

Выясняем причину возникновения ошибки

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

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

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

При обновлении абсолютно типовой конфигурации этот процесс проходит незаметно для пользователя. Но если база данных изменена, правила сравнения и объединения могут отработать некорректно. Из-за индивидуальных настроек поддержки на пустом регистре может не стоять флаг удаления. В результате в вашей рабочей конфигурации остается «пустышка» — объект метаданных без единого реквизита, ресурса или измерения. СУБД и платформа 1С строго запрещают существование таких «пустых» таблиц в структуре базы данных, поэтому при попытке реструктуризации по кнопке F7 процесс аварийно прерывается.


Способ 1. Корректная настройка флагов при сравнении-объединении

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

Если вы выполняете обновление через меню Конфигурация -> Поддержка -> Обновить конфигурацию или через ручное Сравнение и объединение с конфигурацией из файла, обязательно обратите внимание на окно со списком изменений:

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

Способ 2. Полное удаление пустого регистра через снятие с поддержки

Если вы уже применили обновление, закрыли окно сравнения-объединения и теперь при нажатии F7 постоянно получаете ошибку проверки метаданных, удалим этот регистр вручную.

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

Выполним процедуру удаления по шагам:

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

Способ 3. Использование эталонного файла конфигурации (cf)

Бывают ситуации, когда структура метаданных «плывет» по нескольким объектам сразу. Например, старый регистр РезультатыОбменаДанными должен переименоваться в УдалитьРезультатыОбменаДанными, а под старым именем должен создаться новый чистый регистр. Из-за некорректных правил сопоставления в нетиповой конфигурации этот процесс нарушается.

В этом случае воспользуемся «чистым» эталонным файлом конфигурации нового релиза:

  1. Разверните на компьютере временную чистую (демо или пустую) базу «1С:Бухгалтерия» того релиза, на который вы пытаетесь обновиться (например, 3.0.75.58).
  2. В режиме Конфигуратора этой чистой базы выполните выгрузку конфигурации: Конфигурация -> Сохранить конфигурацию в файл... и получите чистый файл 1c_new.cf.
  3. Откройте конфигуратор вашей рабочей базы.
  4. Перейдите в меню: Конфигурация -> Сравнить, объединить с конфигурацией из файла... и выберите сохраненный файл 1c_new.cf.
  5. В открывшемся дереве сравнения снимите галочки со всех объектов (нажав кнопку «Снять все флажки»).
  6. Найдите проблемный регистр сведений и поставьте галочку только напротив него. Таким образом, платформа затрет поврежденный регистр вашей базы и приведет его структуру в полное соответствие с эталоном из чистого файла поставщика.
  7. Выполните объединение и нажмите F7.

Способ 4. Создание временного измерения-«костыля»

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

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

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

Рекомендации для предотвращения подобных ошибок в будущем

Чтобы минимизировать риски возникновения ошибок реструктуризации при последующих обновлениях измененных баз данных «1С:Бухгалтерия 3.0», рекомендуем придерживаться двух простых правил:

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

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

← На главную