При обновлении конфигураций (как отраслевых решений вроде «1С:ТСЖ» или «1С:ЖКХ», так и типовых на базе «1С:Бухгалтерии предприятия» и «1С:ЗУП») администраторы и разработчики могут столкнуться с критической ошибкой реструктуризации базы данных:
«Не может быть изменен владелец у справочника: ФормыСтатистики»
Разберем природу возникновения этой ошибки и подробно рассмотрим все способы её надежного устранения.
Причины возникновения ошибки
Проанализируем механику работы платформы «1С:Предприятие» при обновлении структуры данных:
Ограничение платформы при реструктуризации. Если в таблице базы данных уже существуют записи справочника, платформа блокирует изменение состава или типа реквизита Владелец (свойство «Владельцы» в метаданных справочника). Это делается для предотвращения нарушения ссылочной целостности базы.
Нарушение цикла переходных релизов. Разработчики конфигураций меняют структуру метаданных поэтапно. На первом этапе (в переходном релизе) добавляется новый владелец, а специальная обработка миграции в пользовательском режиме переносит данные. На следующем релизе старый владелец удаляется. Если база пропустила переходный релиз или пользователи продолжили работать в промежуточной версии без завершения регламентных процедур обновления, создаются данные, несовместимые с новой структурой метаданных.
Способ 1. Последовательное обновление и запуск обработчиков в пользовательском режиме
Если база обновляется по цепочке релизов, ключевым моментом является корректный запуск встроенных механизмов миграции данных между версиями:
Выполним обновление конфигурации до переходного релиза (например, 3.0.44.17).
Запустим программу в режиме «1С:Предприятие» под учетной записью с административными правами.
Дождемся полного завершения всех процедур обновления данных информационной базы (раздел Администрирование → Обслуживание → Результаты обновления программы).
Если регламентные процедуры не стартовали автоматически, запустим базу монопольно с ключом командной строки:
/C ЗапуститьОбновлениеИнформационнойБазы
Только после завершения всех фоновых заданий и процедур обновления перейдем к установке следующего релиза (3.0.44.18) через Конфигуратор или встроенный помощник обновления.
Способ 2. Очистка классификатора «Формы статистики» перед обновлением
Справочник ФормыСтатистики является служебным классификатором регламентированной отчетности. Если в справочнике нет уникальных пользовательских доработок, самым быстрым и безопасным решением будет его временная очистка:
Создадим резервную копию информационной базы перед выполнением любых операций.
В режиме «1С:Предприятие» программно или через обработку очистим элементы справочника ФормыСтатистики. Для этого можно воспользоваться внешней обработкой со следующим кодом:
Выборка = Справочники.ФормыСтатистики.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Попытка
Объект.Удалить();
Исключение
Объект.УстановитьПометкуУдаления(Истина);
КонецПопытки;
КонецЦикла;
Если использовалась пометка удаления, выполним полное удаление объектов через стандартную функцию Удаление помеченных объектов.
Вернемся в Конфигуратор и применим обновление конфигурации базы данных. Поскольку таблица пуста, реструктуризация реквизита Владелец пройдет без ошибок.
После запуска обновленной базы в пользовательском режиме формы статистики автоматически заполнятся типовыми классификаторами из подсистемы регламентированной отчетности.
Способ 3. Выгрузка и обратная загрузка данных справочника через XML
Если в справочнике содержатся важные настроенные формы, которые необходимо сохранить, применим вариант с переносом данных:
С помощью универсальной обработки выгрузки и загрузки данных в формате XML выгрузим данные справочника ФормыСтатистики в файл.
Очистим справочник в исходной базе данных (как описано в Способе 2).
Выполним обновление конфигурации и применим реструктуризацию в Конфигураторе.
Запустим обновленную базу и выполним загрузку данных обратно из сохраненного XML-файла.
Способ 4. Ручная корректировка метаданных (для конфигураций с возможностью изменения)
Если конфигурация уже снята с поддержки или находится в режиме «Редактируется с сохранением поддержки», можно скорректировать метаданные вручную:
Откроем Конфигуратор и найдем справочник ФормыСтатистики.
Перейдем на вкладку Владельцы и временно укажем в списке обоих владельцев (и старый, и новый тип).
Обновим конфигурацию базы данных (нажатием клавиши F7).
В режиме «1С:Предприятие» запустим обработку, которая перепривяжет реквизит Владелец у существующих элементов на актуальный тип объекта.
Вернемся в Конфигуратор, удалим старого владельца из списка разрешенных на вкладке Владельцы и повторно применим изменения конфигурации базы данных.