Предназначен для доступа к элементам массива, его методам и конструктору.
Примеры платформы
Массив = Новый Массив(4);
Сообщить("Количество: "+Массив.Количество());
Сообщить("Наибольший индекс массива: "+Массив.ВГраница());
Массив.Удалить(2);
Сообщить("Количество после удаления: "+Массив.Количество());
Массив.Добавить("Добавили строку");
Массив.Добавить(123.45);
Сообщить("Количество после добавления: "+Массив.Количество());
Массив.Вставить(8,"Метод добавил 4 новых элемента");
Сообщить("Количество после добавления: "+Массив.Количество());
Сообщить("Типы элементов: "+Символы.ПС+
" Для 3-го элемента: "+ТипЗнч(Массив[3])+Символы.ПС+
" Для 4-го элемента: "+ТипЗнч(Массив[4])+Символы.ПС+
" Для 5-го элемента: "+ТипЗнч(Массив[5]));Полное описание, параметры и ограничения
Массив (Array)
Массив (Array)
Доступен, начиная с версии 8.0.
Элементы коллекции:
Произвольный
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются значения элементов массива.
Возможно обращение к значению элемента посредством оператора [...]. В качестве аргумента передается индекс значения (нумерация с 0).
Методы:
ВГраница (UBound)
Вставить (Insert)
Добавить (Add)
Количество (Count)
Найти (Find)
Очистить (Clear)
Получить (Get)
Удалить (Delete)
Установить (Set)
Конструкторы:
На основании фиксированного массива
По количеству элементов
Описание:
Предназначен для доступа к элементам массива, его методам и конструктору.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Array.
Пример:
Массив = Новый Массив(4);
Сообщить("Количество: "+Массив.Количество());
Сообщить("Наибольший индекс массива: "+Массив.ВГраница());
Массив.Удалить(2);
Сообщить("Количество после удаления: "+Массив.Количество());
// Этот элемент массива имеет тип Строка:
Массив.Добавить("Добавили строку");
// Этот элемент массива имеет тип Число:
Массив.Добавить(123.45);
Сообщить("Количество после добавления: "+Массив.Количество());
// Добавим элемент по индексу, большему, чем ВГраница():
Массив.Вставить(8,"Метод добавил 4 новых элемента");
Сообщить("Количество после добавления: "+Массив.Количество());
// Массив может хранить разные типы данных:
Сообщить("Типы элементов: "+Символы.ПС+
" Для 3-го элемента: "+ТипЗнч(Массив[3])+Символы.ПС+
" Для 4-го элемента: "+ТипЗнч(Массив[4])+Символы.ПС+
" Для 5-го элемента: "+ТипЗнч(Массив[5]));
// Результат выполнения:
// Количество: 4
// Наибольший индекс массива: 3
// Количество после удаления: 3
// Количество после добавления: 5
// Количество после добавления: 9
// Типы элементов:
// Для 3-го элемента: Строка
// Для 4-го элемента: Число
// Для 5-го элемента: Неопределено
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Рассчитать описание и отдельно проверить изменение собственной сети агрегатов
Явно задаём размер 200% от таблицы движений и порог эффекта 5%. Булев ответ означает изменение сети, не успешность отчёта и не измеренное ускорение.
Где и как запускать
Полный серверный модуль новой ПУСТОЙ УчебныеАгрегаты85. Единственный собственный регистр оборотов, без движений; изменения только при вашем ручном запуске на одноразовом стенде. Здесь 1С не запускалась.
Подготовка
Создайте НОВУЮ пустую файловую информационную базу, не копию УТ/КА2/УНФ/БП. Корневая конфигурация УчебныеАгрегаты85, режим совместимости Не использовать, платформа точно 8.5.1.1343. Учебный опыт выполняется единственным пользователем.
Добавьте единственный документ УчебнаяПродажа85: номер Строка 40, автонумерация выключена, без дополнительных реквизитов, обработчиков и подписок. Для этих уроков документы не создаются и не записываются.
Добавьте единственный регистр накопления УчебныеПродажи85 вида Обороты. Измерения: КодТовара Строка 50 и Регион Строка 30, индексировать. Единственный ресурс Количество Число 12,3, неотрицательное. Дополнительных реквизитов нет. Единственный регистратор УчебнаяПродажа85; модули пустые.
В Конфигураторе откройте регистр УчебныеПродажи85 → Агрегаты → конструктор агрегатов. Создайте ровно один собственный агрегат с обоими измерениями КодТовара и Регион, периодичность Месяц, использование Всегда. Обновите конфигурацию базы данных.
Проверьте установленное описание собственного регистра: ВидРегистра Обороты, один агрегат, два его измерения. Это административный пустой стенд: движения, обмены, разделители данных, расширения и фоновые задания не добавляйте.
Создайте серверный общий модуль УчебныеАгрегатыПримеры. Вставляйте весь модуль одного урока, включая вспомогательную процедуру, если она есть. Экспортную ВыполнитьПример вызовите из собственной серверной команды обработки. Не вкладывайте готовую процедуру в другую процедуру.
Перед ручными изменяющими опытами сохраните резервную копию своей пустой учебной базы. Эти административные операции могут очищать внутренние таблицы; транзакционный откат не обещает вернуть их или исходную сеть агрегатов.
Порядок: сначала паспорт. Если режим выключен, урок включения; затем заполнение и, по желанию, перестроение; в конце отдельный урок очистки и возврата к режиму итогов. Если режим уже включён, не повторяйте урок включения с требованием исходного Ложь.
Изменяющие уроки намеренно оставляют описанное состояние в собственном одноразовом стенде. Они не восстанавливают исходное состояние после ошибки; при исключении остановитесь, прочитайте паспорт и используйте свою резервную копию, а не повторяйте опыт в рабочей базе.
На пустом регистре демонстрируется контракт административного API, не ускорение отчёта. Размер, эффект, даты и рассчитанный список зависят от данных и статистики. Производительность и выбор сети на реальных продажах этим не измеряются.
Здесь примеры в 1С не запускались. Сверены исходники и установленный синтакс-помощник 8.5.1.1343; ваши документы, движения и настройки не изменялись.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать
Или Метаданные.Документы.Количество() <> 1
Или Метаданные.РегистрыНакопления.Количество() <> 1
Или Метаданные.Документы.Найти("УчебнаяПродажа85") = Неопределено Тогда
ВызватьИсключение "Нужен только свой учебный документ и оборотный регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеПродажи85");
Если Описание = Неопределено Тогда
ВызватьИсключение "Создайте свой регистр УчебныеПродажи85";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты
Или Описание.Измерения.Количество() <> 2
Или Описание.Ресурсы.Количество() <> 1
Или Описание.Реквизиты.Количество() <> 0
Или Описание.Измерения.Найти("КодТовара") = Неопределено
Или Описание.Измерения.Найти("Регион") = Неопределено
Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
ВызватьИсключение "Нужна своя оборотная схема КодТовара, Регион, Количество";
КонецЕсли;
Определения = Описание.Агрегаты;
Если Определения.Количество() <> 1 Тогда
ВызватьИсключение "Подготовьте ровно один собственный агрегат в Конфигураторе";
КонецЕсли;
Определение = Определения.Получить(0);
Если Определение.Измерения.Количество() <> 2
Или Определение.Периодичность <> ПериодичностьАгрегатаРегистраНакопления.Месяц
Или Определение.Использование <> ИспользованиеАгрегатаРегистраНакопления.Всегда Тогда
ВызватьИсключение "Свой агрегат должен использовать оба измерения, Месяц и Всегда";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Не запускайте административный опыт внутри чужой транзакции";
КонецЕсли;
Проверка = Новый Запрос;
Проверка.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Строк
|ИЗ РегистрНакопления.УчебныеПродажи85";
Контроль = Проверка.Выполнить().Выгрузить();
Если Контроль.Количество() <> 1 Тогда
ВызватьИсключение "Не получена собственная строка контроля";
КонецЕсли;
Если Контроль[0].Строк <> 0 Тогда
ВызватьИсключение "Административный урок разрешён только без движений своего регистра";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеПродажи85;
Если Не Менеджер.ПолучитьРежимАгрегатов()
Или Не Менеджер.ПолучитьИспользованиеАгрегатов() Тогда
ВызватьИсключение "Сначала включите режим и использование агрегатов в своём пустом стенде";
КонецЕсли;
МаксимальныйРазмерВПроцентах = 200;
МинимальныйПриростЭффектаВПроцентах = 5;
Сообщить("Рассчитанное описание оптимальных агрегатов своего пустого регистра");
Кандидат = Менеджер.ОпределитьОптимальныеАгрегаты(МаксимальныйРазмерВПроцентах);
ПоказатьСвойПаспорт(Кандидат);
Сообщить("Следующий административный вызов может изменить собственную сеть без автоматического отката");
ИзмениласьСеть = Менеджер.ПерестроитьИспользованиеАгрегатов(
МаксимальныйРазмерВПроцентах, МинимальныйПриростЭффектаВПроцентах);
Сообщить(ТипЗнч(ИзмениласьСеть) = Тип("Булево"));
Если ИзмениласьСеть Тогда
Сообщить("Платформа сообщает: собственная сеть изменилась");
Иначе
Сообщить("Платформа сообщает: собственная сеть не изменилась; это не ошибка само по себе");
КонецЕсли;
Сообщить("Фактический список после вызова, а не предположение по булеву ответу");
ПоказатьСвойПаспорт(Менеджер.ПолучитьАгрегаты());
Сообщить("Измеренного ускорения на пустом регистре этот опыт не показывает");
КонецПроцедуры
Процедура ПоказатьСвойПаспорт(Информация)
Если ТипЗнч(Информация) <> Тип("ИнформацияОбАгрегатах") Тогда
ВызватьИсключение "Менеджер не вернул описание своего списка агрегатов";
КонецЕсли;
Сообщить(ТипЗнч(Информация.Агрегаты) = Тип("Массив"));
Сообщить(ТипЗнч(Информация.ДатаПостроения) = Тип("Дата"));
Сообщить(ТипЗнч(Информация.ОграничениеРазмера) = Тип("Число"));
Сообщить(ТипЗнч(Информация.Размер) = Тип("Число"));
Сообщить(ТипЗнч(Информация.Эффект) = Тип("Число"));
Сообщить("Дата построения списка: " + Строка(Информация.ДатаПостроения));
Сообщить("Ограничение, % от таблицы движений: " + Строка(Информация.ОграничениеРазмера));
Сообщить("Расчётный размер списка: " + Строка(Информация.Размер));
Сообщить("Расчётный эффект: " + Строка(Информация.Эффект));
Если Информация.Агрегаты.Количество() = 0 Тогда
Сообщить("Эксплуатационный список пуст: строки агрегатов не выдумываются");
КонецЕсли;
Для Каждого Сведения Из Информация.Агрегаты Цикл
Если ТипЗнч(Сведения) <> Тип("ИнформацияОбАгрегате") Тогда
ВызватьИсключение "Неверный тип элемента собственного списка";
КонецЕсли;
Сообщить(ТипЗнч(Сведения.Измерения) = Тип("Массив"));
Сообщить(ТипЗнч(Сведения.Использование) = Тип("Булево"));
Сообщить(ТипЗнч(Сведения.НачалоПериода) = Тип("Дата"));
Сообщить(ТипЗнч(Сведения.Периодичность) = Тип("ПериодичностьАгрегатаРегистраНакопления"));
Сообщить(ТипЗнч(Сведения.Размер) = Тип("Число"));
Сообщить("Используется: " + Строка(Сведения.Использование));
Сообщить("Начало возможного периода: " + Строка(Сведения.НачалоПериода));
Сообщить("Конец возможного периода: " + Строка(Сведения.КонецПериода));
Сообщить("Периодичность: " + Строка(Сведения.Периодичность));
Сообщить("Расчётный размер агрегата в байтах: " + Строка(Сведения.Размер));
Для Каждого ИмяИзмерения Из Сведения.Измерения Цикл
Сообщить("Измерение эксплуатационного агрегата: " + Строка(ИмяИзмерения));
КонецЦикла;
КонецЦикла;
КонецПроцедурыРазбор по шагам
Проверить только свою новую пустую базу с включёнными режимом и использованием; сохранить свою резервную копию.
Задать положительное ограничение 200 процентов и порог 5 процентов. Ноль или отсутствие первого параметра означают отсутствие ограничения, а не запрет размера.
ОпределитьОптимальныеАгрегаты возвращает ИнформацияОбАгрегатах; показать расчётное описание тем же проверяемым паспортом.
ПерестроитьИспользованиеАгрегатов получает оба параметра; административное изменение может остаться в стенде.
Проверить тип ответа и разделить обе ветви: Истина сеть изменилась, Ложь не изменилась. Ложь само по себе не ошибка.
После вызова получить фактический список заново. Не присваивать readonly-свойствам кандидат и не объявлять его установленным по одному названию.
На пустом регистре без статистики не ожидать заранее известного размера, эффекта, количества или ускорения.
Как проверить результат
Нет неограниченного вызова с нулём или пропущенным размером.
Показаны расчётное описание и отдельно фактическое описание после перестроения.
Обе ветви булевого результата объяснены; нет проверки обязательного Истина.
Не вычисляется вымышленный процент ускорения по Эффект.
Ожидаемый результат
Расчётные свойства и факт изменения сети отделены от измерения производительности; собственное изменение не выдано за восстановленное состояние.
На что обратить внимание
Не подставляйте сюда рабочий регистр: очистка/переключение касаются всех агрегатов выбранного регистра, не одной строки.
Метаданные.Агрегаты возвращают АгрегатРегистраНакопления, а ПолучитьАгрегаты — ИнформацияОбАгрегатах с элементами ИнформацияОбАгрегате. Их свойства и типы различны, присваиваний readonly-свойствам нет.
Истина от АгрегатыЗаполнены говорит о завершении заполнения используемых агрегатов, не об ускорении запроса и не о правильности данных бизнеса.
Пустой эксплуатационный список и булев результат перестроения Ложь допустимы; строки, даты и показатели не заменяются вымышленными константами.
При очистке/смене режима не обещается восстановление внутренних таблиц. Контроль нуля движений и собственная резервная копия обязательны; здесь код не выполнялся.
Механизм предназначен для оборотных регистров; официальное описание 1С: https://v8.1c.ru/platforma/agregat/. Точные методы сверены с локальной справкой 8.5.1.1343.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Отличить определение агрегата от его эксплуатационного паспорта
Читаем свой месячный агрегат из метаданных, затем реальные флаги и список менеджера. Это два разных семейства типов, а не строки продаж.
Где и как запускать
Полный серверный модуль новой ПУСТОЙ УчебныеАгрегаты85. Единственный собственный регистр оборотов, без движений; изменения только при вашем ручном запуске на одноразовом стенде. Здесь 1С не запускалась.
Подготовка
Создайте НОВУЮ пустую файловую информационную базу, не копию УТ/КА2/УНФ/БП. Корневая конфигурация УчебныеАгрегаты85, режим совместимости Не использовать, платформа точно 8.5.1.1343. Учебный опыт выполняется единственным пользователем.
Добавьте единственный документ УчебнаяПродажа85: номер Строка 40, автонумерация выключена, без дополнительных реквизитов, обработчиков и подписок. Для этих уроков документы не создаются и не записываются.
Добавьте единственный регистр накопления УчебныеПродажи85 вида Обороты. Измерения: КодТовара Строка 50 и Регион Строка 30, индексировать. Единственный ресурс Количество Число 12,3, неотрицательное. Дополнительных реквизитов нет. Единственный регистратор УчебнаяПродажа85; модули пустые.
В Конфигураторе откройте регистр УчебныеПродажи85 → Агрегаты → конструктор агрегатов. Создайте ровно один собственный агрегат с обоими измерениями КодТовара и Регион, периодичность Месяц, использование Всегда. Обновите конфигурацию базы данных.
Проверьте установленное описание собственного регистра: ВидРегистра Обороты, один агрегат, два его измерения. Это административный пустой стенд: движения, обмены, разделители данных, расширения и фоновые задания не добавляйте.
Создайте серверный общий модуль УчебныеАгрегатыПримеры. Вставляйте весь модуль одного урока, включая вспомогательную процедуру, если она есть. Экспортную ВыполнитьПример вызовите из собственной серверной команды обработки. Не вкладывайте готовую процедуру в другую процедуру.
Перед ручными изменяющими опытами сохраните резервную копию своей пустой учебной базы. Эти административные операции могут очищать внутренние таблицы; транзакционный откат не обещает вернуть их или исходную сеть агрегатов.
Порядок: сначала паспорт. Если режим выключен, урок включения; затем заполнение и, по желанию, перестроение; в конце отдельный урок очистки и возврата к режиму итогов. Если режим уже включён, не повторяйте урок включения с требованием исходного Ложь.
Изменяющие уроки намеренно оставляют описанное состояние в собственном одноразовом стенде. Они не восстанавливают исходное состояние после ошибки; при исключении остановитесь, прочитайте паспорт и используйте свою резервную копию, а не повторяйте опыт в рабочей базе.
На пустом регистре демонстрируется контракт административного API, не ускорение отчёта. Размер, эффект, даты и рассчитанный список зависят от данных и статистики. Производительность и выбор сети на реальных продажах этим не измеряются.
Здесь примеры в 1С не запускались. Сверены исходники и установленный синтакс-помощник 8.5.1.1343; ваши документы, движения и настройки не изменялись.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать
Или Метаданные.Документы.Количество() <> 1
Или Метаданные.РегистрыНакопления.Количество() <> 1
Или Метаданные.Документы.Найти("УчебнаяПродажа85") = Неопределено Тогда
ВызватьИсключение "Нужен только свой учебный документ и оборотный регистр";
КонецЕсли;
Описание = Метаданные.РегистрыНакопления.Найти("УчебныеПродажи85");
Если Описание = Неопределено Тогда
ВызватьИсключение "Создайте свой регистр УчебныеПродажи85";
КонецЕсли;
Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты
Или Описание.Измерения.Количество() <> 2
Или Описание.Ресурсы.Количество() <> 1
Или Описание.Реквизиты.Количество() <> 0
Или Описание.Измерения.Найти("КодТовара") = Неопределено
Или Описание.Измерения.Найти("Регион") = Неопределено
Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
ВызватьИсключение "Нужна своя оборотная схема КодТовара, Регион, Количество";
КонецЕсли;
Определения = Описание.Агрегаты;
Если Определения.Количество() <> 1 Тогда
ВызватьИсключение "Подготовьте ровно один собственный агрегат в Конфигураторе";
КонецЕсли;
Определение = Определения.Получить(0);
Если Определение.Измерения.Количество() <> 2
Или Определение.Периодичность <> ПериодичностьАгрегатаРегистраНакопления.Месяц
Или Определение.Использование <> ИспользованиеАгрегатаРегистраНакопления.Всегда Тогда
ВызватьИсключение "Свой агрегат должен использовать оба измерения, Месяц и Всегда";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Не запускайте административный опыт внутри чужой транзакции";
КонецЕсли;
Проверка = Новый Запрос;
Проверка.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Строк
|ИЗ РегистрНакопления.УчебныеПродажи85";
Контроль = Проверка.Выполнить().Выгрузить();
Если Контроль.Количество() <> 1 Тогда
ВызватьИсключение "Не получена собственная строка контроля";
КонецЕсли;
Если Контроль[0].Строк <> 0 Тогда
ВызватьИсключение "Административный урок разрешён только без движений своего регистра";
КонецЕсли;
Менеджер = РегистрыНакопления.УчебныеПродажи85;
Сообщить("Своих определений в Конфигураторе: " + Строка(Определения.Количество()));
Сообщить(ТипЗнч(Определение.Измерения) = Тип("ФиксированныйМассив"));
Сообщить(Определение.Использование = ИспользованиеАгрегатаРегистраНакопления.Всегда);
Сообщить(Определение.Периодичность = ПериодичностьАгрегатаРегистраНакопления.Месяц);
Для Каждого Измерение Из Определение.Измерения Цикл
Сообщить("Измерение определения: " + Строка(Измерение));
КонецЦикла;
Режим = Менеджер.ПолучитьРежимАгрегатов();
Использование = Менеджер.ПолучитьИспользованиеАгрегатов();
Сообщить(ТипЗнч(Режим) = Тип("Булево"));
Сообщить(ТипЗнч(Использование) = Тип("Булево"));
Сообщить("Режим агрегатов: " + Строка(Режим));
Сообщить("Использование агрегатов: " + Строка(Использование));
Информация = Менеджер.ПолучитьАгрегаты();
ПоказатьСвойПаспорт(Информация);
Сообщить("Это описание своей схемы и сети, не остаток и не сумма продаж");
КонецПроцедуры
Процедура ПоказатьСвойПаспорт(Информация)
Если ТипЗнч(Информация) <> Тип("ИнформацияОбАгрегатах") Тогда
ВызватьИсключение "Менеджер не вернул описание своего списка агрегатов";
КонецЕсли;
Сообщить(ТипЗнч(Информация.Агрегаты) = Тип("Массив"));
Сообщить(ТипЗнч(Информация.ДатаПостроения) = Тип("Дата"));
Сообщить(ТипЗнч(Информация.ОграничениеРазмера) = Тип("Число"));
Сообщить(ТипЗнч(Информация.Размер) = Тип("Число"));
Сообщить(ТипЗнч(Информация.Эффект) = Тип("Число"));
Сообщить("Дата построения списка: " + Строка(Информация.ДатаПостроения));
Сообщить("Ограничение, % от таблицы движений: " + Строка(Информация.ОграничениеРазмера));
Сообщить("Расчётный размер списка: " + Строка(Информация.Размер));
Сообщить("Расчётный эффект: " + Строка(Информация.Эффект));
Если Информация.Агрегаты.Количество() = 0 Тогда
Сообщить("Эксплуатационный список пуст: строки агрегатов не выдумываются");
КонецЕсли;
Для Каждого Сведения Из Информация.Агрегаты Цикл
Если ТипЗнч(Сведения) <> Тип("ИнформацияОбАгрегате") Тогда
ВызватьИсключение "Неверный тип элемента собственного списка";
КонецЕсли;
Сообщить(ТипЗнч(Сведения.Измерения) = Тип("Массив"));
Сообщить(ТипЗнч(Сведения.Использование) = Тип("Булево"));
Сообщить(ТипЗнч(Сведения.НачалоПериода) = Тип("Дата"));
Сообщить(ТипЗнч(Сведения.Периодичность) = Тип("ПериодичностьАгрегатаРегистраНакопления"));
Сообщить(ТипЗнч(Сведения.Размер) = Тип("Число"));
Сообщить("Используется: " + Строка(Сведения.Использование));
Сообщить("Начало возможного периода: " + Строка(Сведения.НачалоПериода));
Сообщить("Конец возможного периода: " + Строка(Сведения.КонецПериода));
Сообщить("Периодичность: " + Строка(Сведения.Периодичность));
Сообщить("Расчётный размер агрегата в байтах: " + Строка(Сведения.Размер));
Для Каждого ИмяИзмерения Из Сведения.Измерения Цикл
Сообщить("Измерение эксплуатационного агрегата: " + Строка(ИмяИзмерения));
КонецЦикла;
КонецЦикла;
КонецПроцедурыРазбор по шагам
Проверить собственную оборотную схему и отсутствие движений до получения менеджера.
Из коллекции метаданных взять единственное определение; его Измерения — ФиксированныйМассив, использование — значение перечисления Всегда.
Отдельно прочитать два булевых флага: режим и разрешение использования не подменяют друг друга.
ПолучитьАгрегаты возвращает ИнформацияОбАгрегатах. Показать дату построения, ограничение размера, расчётные размер и эффект списка.
Его Агрегаты — Массив объектов ИнформацияОбАгрегате, не коллекция метаданных. Здесь Измерения — Массив имён, Использование — Булево.
При пустом эксплуатационном списке показать сообщение, не обращаться к индексу ноль. Иначе прочитать каждый элемент и границы периода без выдуманных дат.
Как проверить результат
Своё определение одно, проверки Месяц/Всегда и типов показывают Истина.
Фактические флаги и показатели показаны, их значения не назначены заранее.
У непустого эксплуатационного списка видны измерения, использование, периодичность, границы и размер каждого элемента; у пустого — явное сообщение.
Нет установки флагов, заполнения, очистки или записи движений.
Ожидаемый результат
Новичок различает описание в Конфигураторе и сведения о действующем списке, не принимая их за отчёт продаж.
На что обратить внимание
Не подставляйте сюда рабочий регистр: очистка/переключение касаются всех агрегатов выбранного регистра, не одной строки.
Метаданные.Агрегаты возвращают АгрегатРегистраНакопления, а ПолучитьАгрегаты — ИнформацияОбАгрегатах с элементами ИнформацияОбАгрегате. Их свойства и типы различны, присваиваний readonly-свойствам нет.
Истина от АгрегатыЗаполнены говорит о завершении заполнения используемых агрегатов, не об ускорении запроса и не о правильности данных бизнеса.
Пустой эксплуатационный список и булев результат перестроения Ложь допустимы; строки, даты и показатели не заменяются вымышленными константами.
При очистке/смене режима не обещается восстановление внутренних таблиц. Контроль нуля движений и собственная резервная копия обязательны; здесь код не выполнялся.
Механизм предназначен для оборотных регистров; официальное описание 1С: https://v8.1c.ru/platforma/agregat/. Точные методы сверены с локальной справкой 8.5.1.1343.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.