Разработка и Конфигурация · 10 мин
Ведущее измерение регистра сведений в 1С: что это и как использовать
Что такое ведущее измерение регистра сведений в 1С, как оно работает, чем отличается от обычного измерения и когда его использовать. Примеры и ошибки.
Ведущее измерение — это специальное свойство измерения регистра сведений в 1С, которое связывает запись регистра с объектом базы данных: документом, элементом справочника, физическим лицом или другой сущностью. Если измерение помечено как ведущее, запись регистра становится «зависимой» от указанного объекта: при удалении объекта связанные записи регистра удаляются автоматически. Это ключевой механизм поддержания целостности данных в типовых конфигурациях и собственных разработках.
Механизм чаще всего встречается в регистрах сведений, подчиненных регистратору: например, регистр «Значения свойств объектов», «Ответственные лица» или кадровые регистры, где записи принадлежат конкретному документу. Однако ведущее измерение можно установить и в независимом регистре сведений — тогда связь строится со ссылкой на справочник или другой объект, а не с документом-регистратором.
Понимание этого свойства важно и разработчику, и администратору: неправильная настройка ведущего измерения приводит либо к «осиротевшим» записям, которые остаются в базе после удаления объекта, либо к неожиданному удалению нужных данных. Ниже разберём, как работает механизм, когда его применять и какие ошибки встречаются чаще всего.
Что такое ведущее измерение и зачем оно нужно
В структуре регистра сведений каждое измерение имеет набор свойств: тип данных, признак «Ведущее», «Запрещать незаполненные значения» и другие. Флажок «Ведущее» означает, что значение измерения — это ссылка на объект, от которого зависит смысл и время жизни записи регистра. Без этого объекта запись теряет смысл, поэтому платформа берёт на себя её удаление вместе с объектом-владельцем.
Классический пример — регистр сведений «Ответственные лица организаций» с измерением «Организация». Если пометить измерение как ведущее, то при удалении организации из справочника все записи о её ответственных лицах будут удалены автоматически. Если флажок не установлен, записи останутся в базе и будут ссылаться на несуществующий объект — появятся «битые ссылки» вида «Объект не найден».
Таким образом, ведущее измерение решает две задачи: обеспечивает ссылочную целостность без написания кода и явно показывает в метаданных, какой объект является владельцем записей. Это упрощает сопровождение конфигурации и анализ структуры данных другими разработчиками.
Как платформа обрабатывает записи с ведущим измерением
Основное поведение — каскадное удаление. Когда пользователь или код удаляет объект, на который ссылается ведущее измерение, платформа автоматически удаляет все записи регистра с этим значением измерения. Это происходит на уровне платформы, без необходимости писать обработчики «ПередУдалением» или «ПриУдалении».
Второй важный эффект касается регистров, подчиненных регистратору. Если регистр сведений имеет режим подчинения «Подчинен регистратору», то измерение «Регистратор» фактически всегда ведущее: записи движений документа удаляются вместе с документом и перезаписываются при его перепроведении. Дополнительные ведущие измерения в таком регистре используются реже, но допустимы.
Третий нюанс — контроль ссылочной целостности при типовых операциях. Например, при пометке объекта на удаление записи остаются, а при непосредственном удалении через стандартную процедуру «Удаление помеченных объектов» платформа корректно очистит и записи регистра. Это заметно снижает объём мусорных данных при регулярной чистке базы.
Где задаётся свойство «Ведущее» в конфигураторе
Настройка выполняется в конфигураторе. Откройте ветку «Регистры сведений», выберите нужный регистр и перейдите на закладку «Данные» (или откройте палитру свойств конкретного измерения). В списке измерений выделите нужное и в палитре свойств установите флажок «Ведущее». Тип измерения при этом должен быть ссылочным: справочник, документ, план видов характеристик и т.п.
Обратите внимание: свойство доступно для измерений со ссылочным типом. Для примитивных типов (число, строка, дата) флажок либо недоступен, либо не имеет смысла — ведущим может быть только измерение, указывающее на объект. После изменения свойства потребуется обновление конфигурации базы данных; реструктуризация в этом случае обычно не затрагивает сами данные, так как меняется только метаданное свойство.
- 1Откройте конфигуратор и найдите нужный регистр сведений в дереве конфигурации
- 2Перейдите на закладку «Данные» и выделите измерение со ссылочным типом
- 3В палитре свойств установите флажок «Ведущее»
- 4Сохраните конфигурацию и выполните обновление конфигурации базы данных (F7)
- 5Проверьте поведение: создайте запись, удалите объект-владелец в копии базы и убедитесь, что запись удалена
Когда использовать ведущее измерение, а когда нет
Ведущее измерение оправдано, когда запись регистра не имеет самостоятельного смысла без объекта: характеристики контрагента, настройки конкретного документа, значения дополнительных свойств элемента справочника. В этих случаях удаление объекта должно уносить за собой и его «тень» в регистре.
Не стоит делать измерение ведущим, если записи регистра представляют самостоятельную аналитику, которую нужно сохранять даже после удаления объекта. Например, история цен номенклатуры: удаление товара из справочника не должно стирать историю цен — она может понадобиться для отчётов и аудита. Для таких сценариев измерение остаётся обычным, а целостность обеспечивается запретом удаления объектов, на которые есть ссылки.
Сравнение вариантов
Записи удаляются вместе с объектом. Подходит для зависимых данных: свойства, настройки, атрибуты объекта. Риск — потеря данных при ошибочном удалении объекта.
Записи сохраняются после удаления объекта, появляются битые ссылки. Подходит для исторических и аналитических данных, которые должны пережить объект.
Записи жёстко привязаны к документу и управляются его проведением. Подходит для движений, но не для независимых справочных данных.
Типичные ошибки и их последствия
Самая частая ошибка — установка флажка «Ведущее» на измерение, данные которого должны храниться независимо. Результат: бухгалтер удаляет устаревший элемент справочника, а вместе с ним исчезают записи регистра, нужные для отчётности за прошлые периоды. Восстановить их можно только из резервной копии.
Обратная ошибка — отсутствие ведущего измерения там, где оно нужно. Тогда в базе накапливаются записи с битыми ссылками, отчёты начинают показывать строки «Объект не найден», а чистка таких данных требует отдельных обработок. Ещё одна проблема — попытка сделать ведущим измерение составного типа без анализа, какие именно виды объектов будут владельцами: логика удаления становится неочевидной для сопровождения.
Как проверить результат и безопасные границы работы
Проверку выполняйте только на копии базы. Создайте тестовый объект, добавьте запись в регистр с этим значением ведущего измерения, затем удалите объект через пометку на удаление и штатную обработку удаления помеченных объектов. Если запись регистра исчезла вместе с объектом — механизм работает как задумано. Если запись осталась — проверьте, установлен ли флажок именно у того измерения и обновлена ли конфигурация базы данных.
Перед изменением свойства в рабочей базе сделайте выгрузку или резервную копию. Само изменение свойства не удаляет данные мгновенно, но меняет поведение всех последующих удалений объектов. Если в базе уже есть регламентные процессы очистки (например, удаление устаревших документов), оцените, какие записи регистра они затронут после включения ведущего измерения.
Как проверить результат
Записи регистра с этим значением измерения удалены вместе с объектом
Записи остались — флажок не установлен или конфигурация БД не обновлена
Нет строк со ссылками «Объект не найден»
Появились битые ссылки — ведущее измерение не настроено
Записи остаются до штатного удаления помеченных объектов
Записи исчезают сразу при пометке — стоит искать сторонний код в подписках на события
FAQ: частые вопросы о ведущем измерении
Может ли быть несколько ведущих измерений у одного регистра сведений?
Да, флажок можно установить у нескольких измерений. Тогда запись будет удалена при удалении любого из объектов-владельцев. На практике такую схему применяют редко, потому что логика времени жизни записи становится сложной для анализа и сопровождения.
Чем ведущее измерение отличается от подчинения регистра регистратору?
Подчинение регистратору означает, что набор записей принадлежит документу и перезаписывается при его проведении. Ведущее измерение — более мягкая связь: запись удаляется вместе с объектом, но не управляется проведением и создаётся независимо. Для движений документов используют регистратор, для атрибутов объектов — ведущее измерение.
Удалятся ли записи регистра при пометке объекта на удаление?
Нет. Каскадное удаление срабатывает при физическом удалении объекта, то есть при выполнении стандартной процедуры удаления помеченных объектов. Пока объект просто помечен, записи регистра остаются в базе и доступны.
Можно ли изменить свойство «Ведущее», если регистр уже заполнен данными?
Да, свойство меняется без потери существующих данных — оно влияет только на будущие операции удаления объектов. Тем не менее изменение стоит выполнять после резервного копирования и теста на копии, так как поведение регламентных процессов очистки данных изменится.
Как найти битые ссылки, если ведущее измерение не было установлено раньше?
Используйте запрос к регистру с левым соединением к таблице объекта-владельца и отбором по условию «ЕСТЬ NULL» по ссылке объекта. Найденные записи можно удалить обработкой или перенастроить регистр, установив ведущее измерение для предотвращения проблемы в будущем.
Работает ли механизм при удалении объекта программно, через метод Удалить()?
Да, каскадное удаление записей регистра выполняется платформой независимо от способа удаления объекта — интерактивного или программного. Это стоит учитывать в обменах и обработках, которые удаляют объекты напрямую, минуя пометку на удаление.
Что важно запомнить
Ведущее измерение связывает запись регистра сведений с объектом-владельцем: при его удалении записи удаляются автоматически. Используйте его для зависимых атрибутивных данных и не применяйте к исторической аналитике. Любые изменения свойства проверяйте на копии базы после резервного копирования.