Устанавливает использование агрегатов. Заполнение агрегатов можно выполнить при помощи метода ОбновитьАгрегаты.
Синтаксис
УстановитьИспользованиеАгрегатов(<Использование>)Полное описание, параметры и ограничения
РегистрНакопленияМенеджер.<Имя регистра накопления>.УстановитьИспользованиеАгрегатов (AccumulationRegisterManager.<Accumulation register name>.SetAggregatesUsing)
РегистрНакопленияМенеджер.<Имя регистра накопления> (AccumulationRegisterManager.<Accumulation register name>)
УстановитьИспользованиеАгрегатов (SetAggregatesUsing)
Доступен, начиная с версии 8.2.
Синтаксис:
УстановитьИспользованиеАгрегатов(<Использование>)
Параметры:
<Использование> (обязательный)
Тип: Булево.
Режим использования агрегатов.
Истина – использование агрегатов разрешается.
Ложь – все агрегаты перестают использоваться и очищаются.
Описание:
Устанавливает использование агрегатов.
Заполнение агрегатов можно выполнить при помощи метода ОбновитьАгрегаты.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Очистить свои агрегаты, заполнить и сознательно вернуться к итогам
Очистка относится ко всем агрегатам своего регистра. Отключение использования тоже очищает их; отключение режима пересчитывает итоги. Опыт только без движений.
Где и как запускать
Полный серверный модуль новой ПУСТОЙ УчебныеАгрегаты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;
Если Не Менеджер.ПолучитьРежимАгрегатов()
Или Не Менеджер.ПолучитьИспользованиеАгрегатов() Тогда
ВызватьИсключение "Сначала включите режим и использование агрегатов в своём пустом стенде";
КонецЕсли;
Сообщить("Очистка относится ко всем агрегатам только своего пустого регистра");
Менеджер.ОчиститьАгрегаты();
ПослеОчистки = Менеджер.АгрегатыЗаполнены();
Сообщить(ТипЗнч(ПослеОчистки) = Тип("Булево"));
Сообщить("Фактический статус после очистки: " + Строка(ПослеОчистки));
Менеджер.ОбновитьАгрегаты(Ложь);
Если Не Менеджер.АгрегатыЗаполнены() Тогда
ВызватьИсключение "Повторное полное заполнение не подтверждено";
КонецЕсли;
Менеджер.УстановитьИспользованиеАгрегатов(Ложь);
Если Менеджер.ПолучитьИспользованиеАгрегатов() Тогда
ВызватьИсключение "Выключение использования не подтверждено";
КонецЕсли;
Менеджер.УстановитьРежимАгрегатов(Ложь);
Если Менеджер.ПолучитьРежимАгрегатов() Тогда
ВызватьИсключение "Возврат к режиму итогов не подтвержден";
КонецЕсли;
Сообщить(Описание.Агрегаты.Количество() = 1);
Сообщить("Определение в Конфигураторе осталось; режим и использование выключены");
Сообщить("Это сознательный итог опыта, не восстановление прежней сети агрегатов");
КонецПроцедурыРазбор по шагам
Проверить новый собственный пустой оборотный регистр, заданный агрегат и включённые режим/использование; сохранить свою резервную копию.
ОчиститьАгрегаты не удаляет определения Конфигуратора. Прочитать статус после очистки, не назначать ему выдуманный Ложь на пустом регистре.
Полностью обновить агрегаты и отдельно подтвердить завершение заполнения.
УстановитьИспользованиеАгрегатов(Ложь) запрещает использование и очищает агрегаты; проверить флаг.
УстановитьРежимАгрегатов(Ложь) очищает агрегаты и пересчитывает итоги; проверить режим.
Убедиться, что своё определение по-прежнему одно. Финальные режим/использование выключены сознательно, прежняя сеть не восстановлена.
Как проверить результат
После полного заполнения статус подтверждён; после выключения оба getter дают Ложь.
Определение в метаданных осталось одно; нет удаления объектов метаданных.
На входе движения отсутствуют; записывающего движения кода нет.
При ошибке промежуточное состояние не называется восстановленным.
Ожидаемый результат
Показана разница очистки хранилищ, отключения использования и отключения режима с явным финальным состоянием учебного стенда.
На что обратить внимание
Не подставляйте сюда рабочий регистр: очистка/переключение касаются всех агрегатов выбранного регистра, не одной строки.
Метаданные.Агрегаты возвращают АгрегатРегистраНакопления, а ПолучитьАгрегаты — ИнформацияОбАгрегатах с элементами ИнформацияОбАгрегате. Их свойства и типы различны, присваиваний 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 Тогда
Сообщить("Эксплуатационный список пуст: строки агрегатов не выдумываются");
КонецЕсли;
Для Каждого Сведения Из Информация.Агрегаты Цикл
Если ТипЗнч(Сведения) <> Тип("ИнформацияОбАгрегате") Тогда
ВызватьИсключение "Неверный тип элемента собственного списка";
КонецЕсли;
Сообщить(ТипЗнч(Сведения.Измерения) = Тип("Массив"));
Сообщить(ТипЗнч(Сведения.Использование) = Тип("Булево"));
Сообщить(ТипЗнч(Сведения.НачалоПериода) = Тип("Дата"));
Сообщить(ТипЗнч(Сведения.Периодичность) = Тип("ПериодичностьАгрегатаРегистраНакопления"));
Сообщить(ТипЗнч(Сведения.Размер) = Тип("Число"));
Сообщить("Используется: " + Строка(Сведения.Использование));
Сообщить("Начало возможного периода: " + Строка(Сведения.НачалоПериода));
Сообщить("Конец возможного периода: " + Строка(Сведения.КонецПериода));
Сообщить("Периодичность: " + Строка(Сведения.Периодичность));
Сообщить("Расчётный размер агрегата в байтах: " + Строка(Сведения.Размер));
Для Каждого ИмяИзмерения Из Сведения.Измерения Цикл
Сообщить("Измерение эксплуатационного агрегата: " + Строка(ИмяИзмерения));
КонецЦикла;
КонецЦикла;
КонецПроцедурыРазбор по шагам
Сохранить собственную резервную копию, убедиться в нуле движений и одном заданном агрегате.
Прочитать исходный режим: если он уже включён, прекратить этот урок без изменений.
Явно установить режим Истина; setter — процедура, не возвращаемое старое состояние. Прочитать режим повторно.
Отдельно разрешить использование, проверить его отдельным getter. Включённый режим сам по себе не заменяет разрешение.
Выполнить ОбновитьАгрегаты(Ложь) для полного заполнения, затем проверить АгрегатыЗаполнены.
Показать фактический паспорт. Состояние остаётся включённым для следующих уроков; при ошибке восстановление не обещается.
Как проверить результат
Если исходный режим Истина, есть понятное исключение до setter.
На успешном пути оба getter возвращают Истина, заполнение подтверждено.
Код не записывает документы/движения и не начинает транзакцию.
После опыта режим не выключается автоматически; это явно указано.
Ожидаемый результат
Своя пустая база подготовлена к заполнению/исследованию агрегатов, без ложного обещания отката административных изменений.
На что обратить внимание
Не подставляйте сюда рабочий регистр: очистка/переключение касаются всех агрегатов выбранного регистра, не одной строки.
Метаданные.Агрегаты возвращают АгрегатРегистраНакопления, а ПолучитьАгрегаты — ИнформацияОбАгрегатах с элементами ИнформацияОбАгрегате. Их свойства и типы различны, присваиваний readonly-свойствам нет.
Истина от АгрегатыЗаполнены говорит о завершении заполнения используемых агрегатов, не об ускорении запроса и не о правильности данных бизнеса.
Пустой эксплуатационный список и булев результат перестроения Ложь допустимы; строки, даты и показатели не заменяются вымышленными константами.
При очистке/смене режима не обещается восстановление внутренних таблиц. Контроль нуля движений и собственная резервная копия обязательны; здесь код не выполнялся.
Механизм предназначен для оборотных регистров; официальное описание 1С: https://v8.1c.ru/platforma/agregat/. Точные методы сверены с локальной справкой 8.5.1.1343.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.