Отчеты и Аналитика · 11 мин
Как сделать отчет по регистру сведений в 1С
Как построить отчет по регистру сведений в 1С: выбор СКД или запроса, настройка полей, отборов и периодичности, типичные ошибки и проверка результата.
Регистр сведений в 1С хранит данные, которые не привязаны к документам-регистраторам напрямую: курсы валют, цены номенклатуры, штрихкоды, адреса контрагентов, настройки учета. Построить по такому регистру отчет — типовая задача, и у нее есть несколько решений: универсальный отчет в пользовательском режиме, консоль отчетов на СКД или собственный объект «Отчет» в конфигураторе.
Выбор способа зависит от цели. Если нужно разово посмотреть данные — достаточно встроенных средств типовой конфигурации. Если отчет будет использоваться регулярно и нужен конкретный вид — потребуется доработка в конфигураторе или внешний отчет. Ниже разобраны все варианты с конкретными шагами и ограничениями.
Что нужно знать о регистре сведений перед построением отчета
Перед созданием отчета определите три характеристики регистра, потому что от них зависит состав доступных полей. Первая — периодичность: регистр может быть непериодическим или периодическим (в пределах секунды, дня, месяца и т.д.). У периодического регистра появляется поле «Период» и виртуальные таблицы среза первых и среза последних значений.
Вторая характеристика — режим записи: подчинен регистратору или независимый. Если регистр подчинен регистратору, в таблице есть поле «Регистратор», и данные можно анализировать в разрезе документов. Третья — состав измерений и ресурсов: измерения задают разрезы аналитики, ресурсы — хранимые значения, реквизиты — дополнительную информацию.
Посмотреть эти сведения можно в конфигураторе: откройте ветку «Регистры сведений», найдите нужный объект и изучите закладки «Данные» и «Прочее» — там указаны периодичность и режим записи. В пользовательском режиме структуру видно через форму списка регистра: колонки совпадают с измерениями, ресурсами и реквизитами.
Способ 1. Универсальный отчет в пользовательском режиме
В типовых конфигурациях на управляемых формах (УТ 11, ERP, БП 3.0, КА 2) есть встроенный «Универсальный отчет». Он позволяет без программирования построить отчет практически по любому объекту, включая регистры сведений. Обычно он находится в разделе «Отчеты» или «Администрирование» — точное расположение зависит от конфигурации.
Порядок действий: откройте универсальный отчет, в поле типа объекта выберите «Регистр сведений», затем укажите конкретный регистр, например «Курсы валют» или «Цены номенклатуры». Если регистр периодический, задайте период отчета — от него зависит, какие записи попадут в выборку. После этого нажмите «Сформировать».
Для доработки структуры нажмите «Настройки» (или «Еще — Настройки отчета»). Здесь можно добавить группировки по измерениям, установить отборы (например, только по одной валюте или одному виду цен), выбрать выводимые поля и сортировку. Готовую настройку сохраните через варианты отчета, чтобы не повторять действия.
- 1Откройте раздел «Отчеты» и найдите «Универсальный отчет»
- 2Выберите тип объекта «Регистр сведений» и сам регистр
- 3Укажите период, если регистр периодический
- 4Сформируйте отчет и оцените состав колонок
- 5Через «Настройки» добавьте отборы и группировки
- 6Сохраните вариант отчета для повторного использования
Способ 2. Внешний отчет на СКД в конфигураторе
Когда универсального отчета недостаточно — нужна особая структура, вычисляемые поля, объединение с другими таблицами — создают внешний отчет на системе компоновки данных. Это файл с расширением .erf, который открывается в любой базе без изменения конфигурации, что безопасно для типовых решений на поддержке.
В конфигураторе создайте новый внешний отчет: «Файл — Новый — Внешний отчет». Откройте основную схему компоновки данных и добавьте набор данных типа «Запрос». В конструкторе запроса выберите таблицу регистра сведений. Для периодического регистра решите, какая таблица нужна: основная (все записи за период), «СрезПоследних» (актуальные значения на дату) или «СрезПервых».
Пример типового запроса к срезу последних цен: выбираются поля Номенклатура, ТипЦен и Цена из таблицы РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ). Параметр &Период СКД автоматически свяжет с настройкой периода отчета, если включить автозаполнение. На закладках «Настройки» схемы задайте группировки, ресурсы и отборы по умолчанию.
ВЫБРАТЬ
Срез.Номенклатура КАК Номенклатура,
Срез.ТипЦен КАК ТипЦен,
Срез.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК СрезПосле сохранения файл открывается в режиме 1С:Предприятие через «Файл — Открыть». Для регулярного использования подключите его как дополнительный отчет через механизм «Дополнительные отчеты и обработки» (в типовых конфигурациях — раздел «Администрирование — Печатные формы, отчеты и обработки»), тогда он появится в общем списке отчетов у пользователей.
Способ 3. Отчет в составе конфигурации
Если отчет должен быть частью решения, распространяться вместе с конфигурацией и иметь собственные формы и команды, его создают как объект метаданных «Отчет» в ветке «Отчеты» конфигуратора. Технически схема компоновки строится так же, как у внешнего отчета, отличие — в способе хранения и вызова.
Добавьте отчет в подсистему, чтобы команда появилась в интерфейсе пользователей: в свойствах отчета откройте закладку «Подсистемы» и отметьте нужные. При необходимости создайте форму отчета для программной обработки параметров — например, чтобы по умолчанию подставлялась текущая организация или рабочая дата пользователя.
Как выбрать таблицу регистра для запроса
Главная ошибка при работе с периодическими регистрами — неверный выбор виртуальной таблицы. Основная таблица возвращает все записи за период: если цена менялась десять раз, вы получите десять строк. Это подходит для отчета об истории изменений, но не для отчета «текущие цены».
Срез последних возвращает по одной записи на каждую комбинацию измерений — актуальную на указанный момент. Срез первых, наоборот, дает самое раннее значение на дату — он нужен редко, например для анализа начальных условий. В параметрах виртуальной таблицы можно сразу задать условие отбора (например, по типу цен) — это эффективнее, чем фильтровать результат после выборки.
| Задача отчета | Таблица запроса | Особенность |
|---|---|---|
| Актуальные значения на дату | СрезПоследних(&Период) | Одна строка на комбинацию измерений |
| История изменений за период | Основная таблица с отбором по Периоду | Все записи, сортировка по периоду |
| Значения, действовавшие на начало | СрезПервых(&Период) | Первая запись на дату |
| Аналитика по документам | Основная таблица с полем Регистратор | Только для регистров, подчиненных регистратору |
Как выбрать способ построения отчета
Настройка отборов, группировок и ресурсов
Отборы лучше задавать на уровне запроса или параметров виртуальной таблицы, а не в настройках СКД после выборки: так в отчет попадет меньше данных и он сформируется быстрее. Например, условие «ТипЦен = &ТипЦен» в параметрах среза ограничит выборку еще на этапе обращения к таблице.
Группировки определяют иерархию отчета. Типовая структура для регистра цен: группировка «Номенклатура», внутри — «ТипЦен», ресурс — «Цена» с агрегатной функцией «Максимум» или «Среднее». Для непериодических регистров без числовых ресурсов (например, штрихкодов) вместо агрегации используют «Количество» или просто вывод детальных записей без группировок.
Проверьте закладку «Ресурсы» схемы компоновки: если числовое поле не добавлено в ресурсы, на уровне группировок оно не будет итоговым, и итоги по группам не посчитаются. Для детальных отчетов без итогов это не критично, но для сводных таблиц — обязательное условие.
Проверка результата и производительность
После построения отчета сверьте его с первичными данными: откройте форму списка регистра, установите такой же отбор и сравните несколько строк. Для среза последних проверьте, что значение соответствует последней по дате записи в списке, отсортированном по убыванию периода.
Если отчет пуст, проверьте по цепочке: есть ли вообще записи в регистре за указанный период, не отсекает ли их отбор, есть ли у текущего пользователя права на чтение регистра. Частая ситуация — срез последних на дату, которая раньше первой записи: результат пуст, и это корректное поведение, а не ошибка.
На больших регистрах (сотни тысяч записей и более) следите за временем формирования. Ускорить отчет помогают: отборы в параметрах виртуальной таблицы, ограничение списка выбираемых полей только нужными, отказ от соединений с лишними таблицами. Если отчет обращается к регистру, по которому часто строят срезы, проверьте, что измерения, участвующие в отборах, проиндексированы — это настраивается в свойствах измерений в конфигураторе.
Как проверить результат
Количество совпадает
В отчете меньше или больше строк — проверяйте отборы и период
Соответствует последней записи по дате в списке регистра
Показано старое значение — возможно, неверно задан параметр периода
Итоги равны сумме детальных строк
Итоги пустые — поле не добавлено в ресурсы СКД
Отчет строится за приемлемое время на рабочем объеме данных
Формирование занимает минуты — перенесите отборы в параметры запроса
Частые вопросы
Можно ли сделать отчет по регистру сведений без программирования?
Да. Универсальный отчет в типовых конфигурациях позволяет выбрать регистр сведений, задать период, отборы и группировки полностью в пользовательском режиме. Программирование потребуется только для нестандартной структуры или вычисляемых полей.
Почему отчет по срезу последних показывает пустой результат?
Чаще всего параметр периода не заполнен или указана дата раньше первой записи регистра. Также проверьте права пользователя на чтение регистра и условия отбора в параметрах виртуальной таблицы.
Чем отличается срез последних от обычной таблицы регистра?
Основная таблица содержит все записи с их периодами — это история. Срез последних — виртуальная таблица, которая для каждой комбинации измерений возвращает только одну, самую позднюю на указанную дату запись.
Как вывести в отчет данные регистра вместе с реквизитами справочника?
В запросе используйте левое соединение таблицы регистра со справочником по полю измерения, например по Номенклатуре. После этого реквизиты справочника станут доступны как поля набора данных и их можно добавить в настройки отчета.
Можно ли сделать отчет по независимому регистру сведений в разрезе документов?
Нет, у независимого регистра нет поля «Регистратор» — записи не привязаны к документам. Если нужна аналитика по документам, регистр должен быть подчинен регистратору, а это свойство задается при проектировании и меняется только в конфигураторе.
Как дать отчет пользователям, не меняя конфигурацию?
Сохраните разработку как внешний отчет (.erf) и подключите его через механизм «Дополнительные отчеты и обработки» в разделе администрирования. Отчет появится в общем списке, а конфигурация останется на полной поддержке.
Что важно запомнить
Для разового просмотра используйте универсальный отчет, для регулярной работы — внешний отчет на СКД. По периодическому регистру выбирайте правильную виртуальную таблицу: срез последних для актуальных значений, основную таблицу для истории. Отборы задавайте в параметрах запроса, а результат сверяйте со списком регистра.