К статье
Практический материал

Отчеты и Аналитика · 10 мин

Универсальный отчет 1С: как сделать поле ресурсом

Как в универсальном отчете 1С сделать поле ресурсом: настройка схемы компоновки данных, группировки, итоги и типичные ошибки при добавлении ресурсов.

Универсальный отчет в типовых конфигурациях 1С построен на системе компоновки данных (СКД), и именно она определяет, какие поля считаются ресурсами — то есть числовыми показателями, по которым можно считать суммы, средние значения и другие итоги. Если поле не назначено ресурсом, оно ведет себя как измерение: по нему можно только группировать строки, а итоги по нему не подсчитываются. Из-за этого пользователи часто видят, что нужная колонка «не суммируется» и не попадает в итоговую строку.

Сделать поле ресурсом можно двумя путями: через пользовательские настройки отчета без изменения конфигурации и через доработку схемы компоновки данных в конфигураторе. Первый способ доступен большинству пользователей и безопасен, второй требует прав разработчика и осторожности, чтобы не сломать типовой отчет при обновлении.

Ниже разобраны оба подхода, ограничения каждого из них, проверка результата и типичные ошибки, из-за которых поле отказывается становиться ресурсом.

Что такое ресурс в отчете на СКД и чем он отличается от измерения

В системе компоновки данных все поля отчета делятся на две роли. Измерения (группировки) — это аналитические разрезы: контрагент, номенклатура, период, склад. Ресурсы — это числовые показатели, значения которых агрегируются внутри группировок: сумма, количество, себестоимость.

Ключевое отличие — наличие агрегатной функции. Ресурс всегда связан с выражением вида «Сумма(СуммаОборот)», «Количество(Ссылка)», «Среднее(Цена)». Без такой функции поле не может быть ресурсом: СКД просто не знает, как сворачивать его значения при группировке строк.

Из этого следует главное ограничение: ресурсом может стать только поле, к которому применима агрегатная функция. Строковое поле «Комментарий» или «Номер документа» нельзя суммировать — для него подойдет разве что «Количество(Различные ...)», и результатом будет счетчик, а не содержимое поля.

Как добавить ресурс через пользовательские настройки отчета

Во многих типовых отчетах, включая универсальный, настройки выполняются в режиме предприятия без конфигуратора. Откройте отчет, нажмите «Настройки» и переключитесь в расширенный режим настроек, если он доступен. В нем присутствуют закладки «Группировки», «Выбранные поля», «Отбор», «Сортировка» и в ряде конфигураций — возможность управлять ресурсами.

Если схема отчета подготовлена разработчиком с «пользовательскими» ресурсами, поле появится в списке доступных полей с возможностью выбора агрегатной функции. Вы добавляете поле в выбранные поля, и СКД автоматически считает по нему итог в группировках и общий итог.

Если же поле отображается только как обычное и не суммируется, значит, в схеме компоновки оно не объявлено ресурсом, и пользовательскими настройками это не исправить — потребуется доработка схемы в конфигураторе. Это нормальное ограничение платформы, а не ошибка пользователя.

Порядок действий в пользовательском режиме
  1. 1
    Откройте универсальный отчет и нажмите «Настройки»
  2. 2
    Переключитесь в расширенный режим настроек
  3. 3
    Проверьте список доступных полей: нужное поле с агрегатной функцией добавьте в выбранные поля
  4. 4
    Сформируйте отчет и убедитесь, что по полю считается итог в группировках
  5. 5
    Сохраните вариант отчета, чтобы настройки не потерялись

Как сделать поле ресурсом в конфигураторе

Основной способ — правка схемы компоновки данных. Откройте конфигуратор, найдите нужный отчет, откройте его основную схему компоновки данных. В схеме перейдите на закладку «Ресурсы» и добавьте туда поле. В колонке «Выражение» укажите агрегатную функцию, например: Сумма(СуммаОборот) или Количество(Регистратор).

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

Для универсального отчета, который строится динамически по регистрам, схема может генерироваться программно. В этом случае правится не макет схемы, а модуль, формирующий схему: ресурс добавляется методами объекта СКД, а не вручную в конструкторе.

bsl
// Пример выражения ресурса на закладке «Ресурсы» СКД
Сумма(СуммаОборот)
Количество(РАЗЛИЧНЫЕ Регистратор)
Среднее(Цена)

Настройка вычисления ресурса по группировкам

На закладке «Ресурсы» у каждого ресурса есть колонка «Рассчитывать по». По умолчанию ресурс считается по всем группировкам и в общем итоге. Если оставить поле пустым, итог будет выводиться везде; если указать конкретные группировки — только в них.

Это полезно, когда итог по ресурсу бессмыслен в некоторых разрезах. Например, остаток на конец периода некорректно суммировать по дням — для такого ресурса ограничивают расчет нужными группировками или меняют агрегатную функцию на «Максимум» либо «Минимум».

Проверить корректность просто: сформируйте отчет с вложенными группировками и сравните итог по детальным строкам с итогом по группе. Если суммы сходятся — агрегатная функция выбрана верно. Если итог завышен или занижен — вероятно, поле в запросе дублируется по соединениям таблиц и суммируется несколько раз.

Контрольные точки

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

Итог по группировке
Норма

Равен сумме детальных строк группы

Тревожный признак

Итог больше или меньше фактической суммы строк

Поле в списке ресурсов
Норма

Поле есть на закладке «Ресурсы» с агрегатной функцией

Тревожный признак

Поле есть только в наборах данных и выбранных полях

Общий итог отчета
Норма

Совпадает с контрольной суммой из исходного регистра

Тревожный признак

Итог расходится с данными регистра

Типичные ошибки при добавлении ресурса

Самая частая проблема — поле добавлено в выбранные поля, но не в ресурсы. Внешне колонка в отчете появляется, однако итоги по ней пустые. Лечится переносом поля на закладку «Ресурсы» с указанием функции.

Вторая ошибка — задвоение сумм из-за соединений в запросе набора данных. Если поле приходит из таблицы, которая соединяется «один ко многим», одна строка основной таблицы размножается, и сумма по ресурсу завышается. В таком случае нужно пересмотреть запрос или использовать агрегирование на уровне запроса.

Третья ошибка — попытка сделать ресурсом нечисловое поле. Для строк и дат «Сумма» неприменима; используйте «Количество», «Минимум» или «Максимум» в зависимости от смысла показателя.

Типичные ошибки
01
Поле добавлено в выбранные поля, но не в ресурсы — итоги по колонке пустые
02
Соединение таблиц в запросе дублирует строки — сумма ресурса завышена в несколько раз
03
К строковому полю применена функция Сумма — ошибка компоновки или нулевые значения
04
Правка типовой схемы без переноса в расширение — изменения теряются при обновлении конфигурации

Риски при доработке типового отчета

Прямая правка типовой схемы компоновки включает режим изменения конфигурации и создает проблемы при обновлении: обновление может затереть доработку или потребовать ручного сопоставления объектов. Безопасный путь — вынести изменения в расширение конфигурации, где отчет заимствуется и дорабатывается отдельно.

Перед любыми изменениями сделайте копию информационной базы или хотя бы выгрузку конфигурации. Работайте сначала на тестовой копии: ошибка в схеме компоновки проявляется только при формировании отчета и может сбить работу пользователей в самый неподходящий момент.

Если прав доступа к конфигуратору нет, а поле ресурсом сделать необходимо, корректное решение — поставить задачу разработчику или использовать внешний отчет с собственной схемой СКД, который подключается без изменения конфигурации.

Альтернативы: внешний отчет и консоль СКД

Если задача разовая — например, быстро получить сумму по полю, которого нет в ресурсах, — удобнее использовать консоль отчетов СКД или внешний отчет. Во внешнем отчете вы создаете собственную схему компоновки, где любое поле набора данных объявляется ресурсом без ограничений типовой конфигурации.

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

Сравнение вариантов

Пользовательские настройки

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

Правка схемы в конфигураторе

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

Расширение конфигурации

Доработка без изменения типового кода; оптимально для постоянных изменений

Внешний отчет

Собственная схема СКД без правки конфигурации; лучший вариант для разовых и нестандартных отчетов

Частые вопросы

Почему поле есть в отчете, но итог по нему не считается?

Потому что поле добавлено только в выбранные поля, но не объявлено ресурсом на закладке «Ресурсы» схемы компоновки. Пока для поля не задана агрегатная функция, СКД выводит его значения только в детальных строках.

Можно ли сделать ресурсом строковое поле?

Напрямую суммировать строку нельзя. Доступные варианты — «Количество» для подсчета числа значений, «Количество(Различные ...)» для счетчика уникальных значений, «Минимум» или «Максимум» для выборки одного значения.

Почему сумма по ресурсу завышена в несколько раз?

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

Как сделать ресурс без доступа к конфигуратору?

Если в расширенных настройках отчета поле недоступно как ресурс, самостоятельно это не решается. Варианты — попросить разработчика добавить ресурс в схему, использовать расширение конфигурации или построить внешний отчет с собственной схемой СКД.

Пропадут ли изменения в схеме отчета при обновлении конфигурации?

Если схема правилась напрямую в типовой конфигурации — да, обновление может затереть изменения или потребовать ручного объединения. Доработки в расширении конфигурации и во внешних отчетах при обновлении сохраняются.

Что выбрать в колонке «Рассчитывать по» у ресурса?

Оставьте пустым, если итог нужен по всем группировкам и в общем итоге. Укажите конкретные группировки, если суммирование в некоторых разрезах бессмысленно — например, для остатков или средних значений по периодам.

Итог

Что важно запомнить

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