ОбъектМетаданных: Измерение.Индексирование

Свойства · Indexing

Тип: Индексирование. Вид дополнительных индексов, создаваемых для работы с данными объекта метаданных.

Полное описание, параметры и ограничения

ОбъектМетаданных: Измерение.Индексирование (MetadataObject: Dimension.Indexing)

ОбъектМетаданных: Измерение (MetadataObject: Dimension)

Индексирование (Indexing)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Индексирование.
Вид дополнительных индексов, создаваемых для работы с данными объекта метаданных.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Используется для измерений регистра бухгалтерии, регистра накопления, регистра расчета, регистра сведений.
Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Изучить основной отбор и риск сужения типа кодов региона

КодСубъектаРФ — числовое измерение АдминистративнаяИерархия. Читаем основной отбор, индекс и политику сокращения типа без изменения структуры базы.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Регистр = Метаданные.РегистрыСведений.Найти("АдминистративнаяИерархия");
Если Регистр = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыСведений.АдминистративнаяИерархия";
КонецЕсли;
Поле = Регистр.Измерения.Найти("КодСубъектаРФ");
Если Поле = Неопределено Тогда
    ВызватьИсключение "В АдминистративнаяИерархия отсутствует измерение КодСубъектаРФ";
КонецЕсли;
Сообщить(Поле.Тип.СодержитТип(Тип("Число")));
Сообщить(Поле.ОсновнойОтбор);
Сообщить(Поле.Индексирование = Метаданные.СвойстваОбъектов.Индексирование.Индексировать);
Сообщить("Режим записи регистра: " + Строка(Регистр.РежимЗаписи));
Если Регистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
    Политика = Поле.РежимСокращенияТипа;
    Сообщить("Сокращение типа: " + Строка(Политика));
    Если Политика = Метаданные.СвойстваОбъектов.РежимСокращенияТипа.ПреобразовыватьЗначения Тогда
        Сообщить("До сужения типа проверьте потерю точности и возможное совпадение ключей в копии базы");
    ИначеЕсли Политика = Метаданные.СвойстваОбъектов.РежимСокращенияТипа.УдалятьДанные Тогда
        Сообщить("Особенно опасная политика: изменение структуры может удалить данные, здесь ничего не меняем");
    Иначе
        Сообщить("Проверьте запрет изменения при потере данных; это отдельная операция Конфигуратора");
    КонецЕсли;
КонецЕсли;

Разбор по шагам

  1. Числовой тип и индекс сверяем с конкретным измерением, а не с названием региона.

  2. ОсновнойОтбор не заменяет условие конкретного запроса и не является RLS.

  3. РежимСокращенияТипа рассматриваем только у независимого регистра сведений, как указано в справке.

  4. Результат — предупреждение перед проектированием миграции; обновление конфигурации не выполняется.

Как проверить результат

  1. По предоставленному XML три сравнения Истина: число, основной отбор и дополнительный индекс.

  2. В выводе указана реальная политика сужения типа, никаких данных она сейчас не преобразует.

Ожидаемый результат

Собран безопасный предварительный контракт для анализа будущей миграции.

На что обратить внимание

  1. Сужение типа может сделать разные ключи одинаковыми; требуется отдельная копия и анализ данных.

  2. Не меняйте политику на УдалятьДанные как быстрый способ убрать ошибку обновления.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Отличить индекс измерения от хранимых итогов регистра

У ТоварыНаСкладах вид Остатки. Для такого регистра ИспользованиеВИтогах не применяется как способ выключить измерение из остатков.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Регистр = Метаданные.РегистрыНакопления.Найти("ТоварыНаСкладах");
Если Регистр = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыНакопления.ТоварыНаСкладах";
КонецЕсли;
Поле = Регистр.Измерения.Найти("Номенклатура");
Если Поле = Неопределено Тогда
    ВызватьИсключение "В ТоварыНаСкладах отсутствует измерение Номенклатура";
КонецЕсли;
Варианты = Метаданные.СвойстваОбъектов;
Сообщить(Регистр.ВидРегистра = Варианты.ВидРегистраНакопления.Остатки);
Сообщить(Поле.Индексирование = Варианты.Индексирование.НеИндексировать);
Сообщить("Использование в итогах: " + Строка(Поле.ИспользованиеВИтогах));
Если Регистр.ВидРегистра = Варианты.ВидРегистраНакопления.Остатки Тогда
    Сообщить("Для регистра остатков это свойство не исключает измерение из хранимых остатков");
Иначе
    Сообщить("Для оборотного регистра отдельно изучите состав измерений хранимых итогов");
КонецЕсли;
Сообщить("Полнотекстовый поиск: " + Строка(Поле.ПолнотекстовыйПоиск));
Сообщить("История данных: " + Строка(Поле.ИсторияДанных));

Разбор по шагам

  1. Сначала определяем вид регистра: Остатки или Обороты.

  2. Индексирование управляет дополнительным индексом; НеИндексировать не означает отсутствия всех индексов в базе.

  3. ИспользованиеВИтогах имеет ограниченную применимость, явно указанную в справке.

  4. ПолнотекстовыйПоиск и ИсторияДанных — ещё два отдельных механизма; здесь только читаем настройки.

Как проверить результат

  1. Два сравнения Истина по XML: вид Остатки и отсутствие дополнительного индекса у номенклатуры.

  2. Выводится ограничение свойства итогов; сумма или свободный остаток здесь не рассчитаны.

Ожидаемый результат

Разделены дополнительные индексы, итоги и механизмы поиска/истории.

На что обратить внимание

  1. Не меняйте индексирование ради ускорения без плана запросов и измерений на копии.

  2. Флаг полнотекстового поиска не подтверждает актуальность построенного индекса поиска.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.