ОбъектМетаданных: РегистрНакопления.ДополнительныеИндексы

Свойства · AdditionalIndexes

Коллекция объектов метаданных, описывающих дополнительные индексы данного объекта метаданных.

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

ОбъектМетаданных: РегистрНакопления.ДополнительныеИндексы (MetadataObject: AccumulationRegister.AdditionalIndexes)

ОбъектМетаданных: РегистрНакопления (MetadataObject: AccumulationRegister)

ДополнительныеИндексы (AdditionalIndexes)

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

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

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

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

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

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

Отделить стандартные поля движения от измерений, ресурсов и модулей

Период/Регистратор/ВидДвижения относятся к стандартным полям. КодТовара и Количество находятся в отдельных коллекциях; свойства модулей не возвращают текст исходников.

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

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

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

  4. В списке регистраторов выберите только собственный документ УчебноеДвижение85. Оставьте модули регистра пустыми, использование итогов включённым. Планы обмена, разделители, историю данных и фоновые задания для урока не создавайте.

  5. Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду собственной обработки. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт; запускайте задачи по отдельности.

  6. Первые задачи работают с незаписанными наборами. Только задачи с пометкой «в собственной транзакции» временно записывают два собственных документа и движения, затем обязательно отменяют транзакцию. В рабочей базе этот код не запускайте.

  7. В этом разделе код ТОЛЬКО ЧИТАЕТ метаданные УчебныеОстатки85. Наборы, документы, транзакции, блокировки и запись движений не создаются.

  8. Не создавайте пользовательские формы, команды, макеты и дополнительные индексы у учебного регистра; расширения не устанавливайте.

Если Метаданные.Документы.Количество() <> 1
    Или Метаданные.РегистрыНакопления.Количество() <> 1
    Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
    ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Сначала создайте собственный учебный регистр";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
    Или Описание.Измерения.Количество() <> 1
    Или Описание.Ресурсы.Количество() <> 1
    Или Описание.Реквизиты.Количество() <> 0
    Или Описание.Измерения.Найти("КодТовара") = Неопределено
    Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
    ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеОстатки85;
ЕстьПериод = Ложь;
ЕстьРегистратор = Ложь;
ЕстьВидДвижения = Ложь;
Для Каждого Стандартный Из Описание.СтандартныеРеквизиты Цикл
    Сообщить("Стандартное поле: " + Стандартный.Имя);
    Если Стандартный.Имя = "Период" Тогда ЕстьПериод = Истина; КонецЕсли;
    Если Стандартный.Имя = "Регистратор" Тогда ЕстьРегистратор = Истина; КонецЕсли;
    Если Стандартный.Имя = "ВидДвижения" Тогда ЕстьВидДвижения = Истина; КонецЕсли;
КонецЦикла;
Сообщить(ЕстьПериод);
Сообщить(ЕстьРегистратор);
Сообщить(ЕстьВидДвижения);
Сообщить(Описание.Измерения.Найти("КодТовара") <> Неопределено);
Сообщить(Описание.Ресурсы.Найти("Количество") <> Неопределено);
Сообщить(Описание.Реквизиты.Количество() = 0);
Сообщить(Описание.ДополнительныеИндексы.Количество() = 0);
Сообщить(Описание.Агрегаты.Количество() = 0);
Сообщить(Описание.Команды.Количество() = 0);
Сообщить(Описание.Макеты.Количество() = 0);
Сообщить(Описание.МодульНабораЗаписей = Неопределено);
Сообщить(Описание.МодульМенеджера = Неопределено);
Сообщить(Описание.Справка = Неопределено);
Сообщить("Разделение итогов разрешено: " + Строка(Описание.РазрешитьРазделениеИтогов));
Сообщить("Режим блокировки схемы: " + Строка(Описание.РежимУправленияБлокировкойДанных));

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

  1. СтандартныеРеквизиты перебираем через описания и Имя; не вызываем отсутствующий метод Найти у этой коллекции.

  2. Проверяем Период, Регистратор и ВидДвижения. Пользовательское измерение и ресурс ищем уже в собственных коллекциях Измерения/Ресурсы.

  3. Пустые Реквизиты, ДополнительныеИндексы, Агрегаты, Команды и Макеты соответствуют минимальной подготовке. Агрегаты не являются строками остатков товаров.

  4. РазрешитьРазделениеИтогов и РежимУправленияБлокировкойДанных показываем как фактические настройки. Чтение не меняет итоговые таблицы и не устанавливает блокировки.

  5. МодульНабораЗаписей, МодульМенеджера и Справка возвращают Неопределено по текущему контракту. Читать исходный BSL через эти свойства нельзя.

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

  1. Все тринадцать логических сообщений дают Истина.

  2. В выводе стандартных имён есть Период, Регистратор, ВидДвижения; КодТовара находится в Измерения, Количество — в Ресурсы.

  3. Исходные модули, движения и итоговые таблицы не выгружаются и не изменяются.

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

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

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

  1. Общее количество стандартных полей не зашито: оно зависит от вида объекта и версии платформы.

  2. Неопределено у свойства модуля не доказывает, что модуль пуст; для исходного текста используйте Конфигуратор/выгрузку.

  3. Стандартное поле ВидДвижения не добавляйте вручную как измерение или дополнительный реквизит.

  4. Разрешённое разделение итогов не доказывает, что сейчас есть параллельные записи или несколько строк итогов. Здесь запись движений вообще не выполняется.

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

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

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

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

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