← На главную
В процессе разработки и администрирования баз данных 1С разработчики часто сталкиваются с различным поведением платформы при попытке удалить ссылочный объект (например, элемент справочника или документ). В одних ситуациях система успешно удаляет элемент вместе со всеми связанными записями в регистрах, а в других — выдает ошибку контроля ссылочной целостности и сообщает, что на объект ссылаются записи регистра. Разберем детально, от каких свойств метаданных зависит это поведение и как работают механизмы платформы.
Влияние свойства «Ведущее» на контроль ссылочной целостности
Поведение платформы при удалении объекта целиком определяется признаком Ведущее, который настраивается в свойствах измерения регистра. Проанализируем два сценария поведения системы:
- Флаг «Ведущее» установлен. В этом случае платформа расценивает записи регистра как подчиненные (зависимые от ссылочного объекта). При интерактивном удалении через стандартную обработку удаления помеченных объектов такие записи не считаются блокирующими ссылками. Платформа в рамках единой транзакции автоматически удаляет как сам объект, так и все связанные с ним записи регистра. Если же удаление объекта выполняется программно непосредственным вызовом метода удаления, платформа также автоматически очищает зависимые записи регистра.
- Флаг «Ведущее» снят. При таком условии запись регистра рассматривается системой как полностью самостоятельная ссылка. Стандартный механизм удаления помеченных объектов обнаружит эти ссылки и заблокирует операцию до тех пор, пока записи не будут очищены вручную или программно. Если же при снятом флаге выполнить непосредственное удаление объекта программным путем без проверки ссылочной целостности, платформа не станет очищать регистр, что приведет к появлению «битых ссылок» вида «Объект не найден».
Ограничения использования признака «Ведущее»
Рассмотрим, в каких объектах конфигурации доступен данный механизм и с какими ограничениями приходится сталкиваться:
- Только независимые регистры сведений. Признак Ведущее доступен исключительно для измерений независимых регистров сведений. В регистрах сведений, подчиненных регистратору, а также в регистрах накопления, бухгалтерии и расчета этого свойства нет. Записи в них жестко подчинены документу-регистратору: удаление документа очищает его движения, а наличие ссылки на удаляемый объект в аналитике таких регистров всегда блокирует удаление до отмены проведения или удаления самих документов.
- Только измерения регистра. Свойство нельзя включить для ресурсов или реквизитов независимого регистра сведений. Если удаляемый ссылочный объект записан в поле ресурса или реквизита, он всегда будет являться препятствием для удаления объекта, даже если в измерении этой же записи указано ведущее значение.
Что означает свойство «Основной отбор»
При настройке измерений разработчики также обращают внимание на флаг Основной отбор. Выясним причину его наличия и взаимосвязь с ведущими измерениями:
- Интерфейсное назначение. Признак указывает платформе использовать данное измерение для автоматической фильтрации списка регистра, когда пользователь переходит к нему из формы ссылочного объекта (например, через панель навигации формы элемента справочника или документа).
- Взаимосвязь со свойством «Ведущее». Включение флага Ведущее на уровне платформы автоматически активирует свойство Основной отбор (измерение не может быть ведущим без основного отбора). Однако обратное не требуется: Основной отбор можно включить отдельно, чтобы настроить удобную фильтрацию в пользовательском интерфейсе без включения каскадного удаления данных.
- Влияние на структуру СУБД. Назначение свойств Ведущее и Основной отбор оказывает прямое влияние на создание индексов таблицы регистра в СУБД, что ускоряет поиск и выборку данных по значению соответствующего измерения.