Разобрать схему регистра накопления перед отчётом

Учебные задачи

Выбираем первый регистр текущей учебной конфигурации и разделяем измерения, ресурсы и реквизиты. Остатки не читаем и записи не создаём.

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

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

Подготовка

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

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


Если Метаданные.РегистрыНакопления.Количество() = 0 Тогда
    ВызватьИсключение "В этой конфигурации нет регистров накопления";
КонецЕсли;
Регистр = Метаданные.РегистрыНакопления.Получить(0);
Сообщить(Регистр.ПолноеИмя());
Сообщить(СтрШаблон("%1 (%2): вид %3", Регистр.Имя, Регистр.Синоним, Регистр.ВидРегистра));
Сообщить(Регистр.Комментарий);
Сообщить(СтрШаблон("Разделение итогов: %1; блокировки: %2",
    Регистр.РазрешитьРазделениеИтогов, Регистр.РежимУправленияБлокировкойДанных));
Для Каждого Измерение Из Регистр.Измерения Цикл
    Сообщить(СтрШаблон("Измерение %1: %2", Измерение.Имя, Измерение.Тип));
КонецЦикла;
Для Каждого Ресурс Из Регистр.Ресурсы Цикл
    Сообщить(СтрШаблон("Ресурс %1: %2", Ресурс.Имя, Ресурс.Тип));
КонецЦикла;
Для Каждого Реквизит Из Регистр.Реквизиты Цикл
    Сообщить(СтрШаблон("Реквизит %1: %2", Реквизит.Имя, Реквизит.Тип));
КонецЦикла;
Сообщить(СтрШаблон("Измерений %1; ресурсов %2; реквизитов %3; агрегатов %4",
    Регистр.Измерения.Количество(), Регистр.Ресурсы.Количество(),
    Регистр.Реквизиты.Количество(), Регистр.Агрегаты.Количество()));

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

  1. Проверяем наличие регистра до обращения к индексу 0. Порядок коллекции не означает бизнес-приоритет объекта.

  2. Измерения задают разрезы учёта, ресурсы — учитываемые значения, реквизиты — дополнительные поля записи.

  3. ВидРегистра определяет регистр остатков или оборотов: нельзя автоматически подставлять виртуальную таблицу Остатки для любого регистра.

  4. Разделение итогов, агрегаты и режим блокировок читаем как настройки схемы, не изменяя их.

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

  1. Откройте указанный регистр в Конфигураторе: имена и количества трёх групп полей должны совпасть.

  2. Выполните пример в конфигурации без регистров накопления: ожидается понятное исключение, а не ошибка индекса.

  3. После запуска в базе не появились новые движения: в примере нет наборов записей и Записать().

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

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

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

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

  2. Количество агрегатов не является количеством товаров или строк движений. Первый регистр может не относиться к складу.

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

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

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

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

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