Как исправить ошибку «Не может быть изменен владелец у справочника: ФормыСтатистики» при обновлении 1С?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

При обновлении конфигураций (как отраслевых решений вроде «1С:ТСЖ» или «1С:ЖКХ», так и типовых на базе «1С:Бухгалтерии предприятия» и «1С:ЗУП») администраторы и разработчики могут столкнуться с критической ошибкой реструктуризации базы данных:

«Не может быть изменен владелец у справочника: ФормыСтатистики»

Разберем природу возникновения этой ошибки и подробно рассмотрим все способы её надежного устранения.

Причины возникновения ошибки

Проанализируем механику работы платформы «1С:Предприятие» при обновлении структуры данных:

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

Способ 1. Последовательное обновление и запуск обработчиков в пользовательском режиме

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

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

/C ЗапуститьОбновлениеИнформационнойБазы

  1. Только после завершения всех фоновых заданий и процедур обновления перейдем к установке следующего релиза (3.0.44.18) через Конфигуратор или встроенный помощник обновления.

Способ 2. Очистка классификатора «Формы статистики» перед обновлением

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

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

Выборка = Справочники.ФормыСтатистики.Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Попытка
        Объект.Удалить();
    Исключение
        Объект.УстановитьПометкуУдаления(Истина);
    КонецПопытки;
КонецЦикла;
  1. Если использовалась пометка удаления, выполним полное удаление объектов через стандартную функцию Удаление помеченных объектов.
  2. Вернемся в Конфигуратор и применим обновление конфигурации базы данных. Поскольку таблица пуста, реструктуризация реквизита Владелец пройдет без ошибок.
  3. После запуска обновленной базы в пользовательском режиме формы статистики автоматически заполнятся типовыми классификаторами из подсистемы регламентированной отчетности.

Способ 3. Выгрузка и обратная загрузка данных справочника через XML

Если в справочнике содержатся важные настроенные формы, которые необходимо сохранить, применим вариант с переносом данных:

  1. С помощью универсальной обработки выгрузки и загрузки данных в формате XML выгрузим данные справочника ФормыСтатистики в файл.
  2. Очистим справочник в исходной базе данных (как описано в Способе 2).
  3. Выполним обновление конфигурации и применим реструктуризацию в Конфигураторе.
  4. Запустим обновленную базу и выполним загрузку данных обратно из сохраненного XML-файла.

Способ 4. Ручная корректировка метаданных (для конфигураций с возможностью изменения)

Если конфигурация уже снята с поддержки или находится в режиме «Редактируется с сохранением поддержки», можно скорректировать метаданные вручную:

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