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