СКД в 1С

Универсальный отчёт в 1С 8.3: где найти, как настроить на СКД и когда нужен свой .erf

Коротко

Универсальный отчёт (Отчет.УниверсальныйОтчет из состава БСП) находится в разделе Отчеты — Стандартные отчеты — Универсальный отчет (в 1С:Бухгалтерии 3.0) или НСИ и администрирование — Печатные формы, отчеты и обработки — Универсальный отчет (в 1С:ERP, КА 2, УТ 11 и ЗУП 3.1), а также открывается через «Функции для технического специалиста». В шапке отчёта выбираются три реквизита: тип объекта метаданных (например, Документ или РегистрНакопления), имя объекта и таблица (ОсновныеДанные, табличная часть, Остатки, Обороты, ОстаткиИОбороты, СрезПоследних).

Под капотом отчёт программно формирует объект СхемаКомпоновкиДанных с единственным набором НаборДанныхЗапросСхемыКомпоновкиДанных и включённым свойством АвтоЗаполнениеДоступныхПолей = Истина. Поэтому пользователю доступны штатные механизмы СКД в режиме Настройки → Расширенный: вкладки Структура, Поля и сортировки, Отборы, Условное оформление и Пользовательские поля. Однако отчёт работает строго с одной таблицей: для соединения двух разных регистров, пакетных запросов с временными таблицами или собственного макета потребуется отдельный внешний отчёт .erf.

Где найти Универсальный отчёт в типовых конфигурациях 1С 8.3

Расположение команды открытия зависит от редакции БСП и структуры разделов конкретной конфигурации. Если команда скрыта из интерфейса раздела, её можно добавить через «Настройку навигации» (шестерёнка в правом верхнем углу раздела) или открыть напрямую через Функции для технического специалиста (бывшее меню «Все функции»).

Конфигурация 1С 8.3 Путь в командном интерфейсе Через Функции для тех. специалиста
1С:Бухгалтерия предприятия 3.0 (БП 3.0) Отчеты → блок Стандартные отчеты → Универсальный отчет (либо Администрирование — Печатные формы, отчеты и обработки — Универсальный отчет) Отчеты — Универсальный отчет
1С:ERP 2.5, 1С:КА 2, 1С:УТ 11 НСИ и администрирование → Печатные формы, отчеты и обработки → гиперссылка Универсальный отчет Отчеты — Универсальный отчет
1С:ЗУП 3.1 Администрирование → Печатные формы, отчеты и обработки → Универсальный отчет Отчеты — Универсальный отчет
1С:УНФ 3.0 Компания → Администрирование → Печатные формы, отчеты и обработки → Универсальный отчет Отчеты — Универсальный отчет

Для работы с отчётом пользователю необходима роль ИспользованиеУниверсальногоОтчета (или полные права) и право Просмотр на выбранную таблицу метаданных.

Выбор источника данных в шапке: тип объекта, имя и таблица

Верхняя панель Универсального отчёта управляет генерацией текста запроса СКД. При смене любого из трёх полей шапки отчёт перестраивает схему компоновки и сбрасывает структуру на настройки по умолчанию для выбранной таблицы:

  • Период — задаёт границы стандартного параметра &Период (СтандартныйПериод). Отображается и применяется для документов, журналов и периодических регистров.
  • Тип объекта — вид метаданных: Справочник, Документ, ЖурналДокументов, ПланВидовХарактеристик, ПланСчетов, ПланВидовРасчета, БизнесПроцесс, Задача, РегистрСведений, РегистрНакопления, РегистрБухгалтерии, РегистрРасчета.
  • Имя объекта — конкретный объект из дерева метаданных конфигурации (например, РеализацияТоваровУслуг или ТоварыНаСкладах).
  • Имя таблицы — основная, подчинённая или виртуальная таблица выбранного объекта.
Тип объекта Доступные значения в поле «Имя таблицы» Какую задачу решает выбор
Справочник, Документ ОсновныеДанные, имена табличных частей (например, Товары, Услуги) Реестр шапок документов (ОсновныеДанные) или построчная выгрузка табличной части с реквизитами шапки через точку (Ссылка.Дата, Ссылка.Контрагент).
РегистрНакопления (остаточный) ОсновныеДанные, Остатки, Обороты, ОстаткиИОбороты ОсновныеДанные — первичный лог движений с полем Регистратор и ВидДвижения; ОстаткиИОбороты — сводная ведомость за период.
РегистрНакопления (оборотный) ОсновныеДанные, Обороты Анализ оборотов за период в разрезе измерений или проверка первичных записей регистратора.
РегистрСведений (периодический) ОсновныеДанные, СрезПервых, СрезПоследних СрезПоследних — действующие цены, курсы или кадровые данные на дату окончания периода.
РегистрБухгалтерии ОсновныеДанные, ДвиженияССубконто, Остатки, Обороты, ОстаткиИОбороты, ОборотыДтКт Анализ проводок с разворотом по субконто Дт/Кт и шахматка оборотов между счетами.

Настройка на СКД: расширенный режим и вкладки компоновки

По кнопке Настройки... (вид Расширенный в нижней части окна) открывается полноценный редактор НастройкиКомпоновкиДанных. В нём аналитик управляет компоновкой без обращения к Конфигуратору:

  • Отборы (Настройки.Отбор) — фильтрация выборки. Здесь же настраиваются Параметры данных (например, параметры виртуальной таблицы СрезПоследних или условие по субконто регистра бухгалтерии). Разыменование полей ссылочных измерений через точку (например, Номенклатура.ВидНоменклатуры) позволяет фильтровать по реквизитам связанных справочников.
  • Поля и сортировки (Настройки.Выбор и Настройки.Порядок) — состав выводимых колонок и порядок строк. Для табличных частей документов реквизиты шапки достаются из поля Ссылка (Ссылка.Номер, Ссылка.Организация).
  • Структура (Настройки.Структура) — дерево группировок отчёта. Поддерживаются обычная ГруппировкаКомпоновкиДанных, кросс-таблица (ТаблицаКомпоновкиДанных) и диаграмма. Чтобы увидеть отдельные строки документов или записей регистра, добавляется группировка <Детальные записи> (без поля группировки).
  • Условное оформление (Настройки.УсловноеОформление) — подсветка отрицательных остатков, выделение шрифтом или установка формата чисел и дат.

Пользовательские поля в Универсальном отчёте

Когда в таблице нет нужного показателя (например, нужно посчитать маржу, среднюю цену или долю строки), на вкладке Поля и сортировки по кнопке Добавить пользовательское поле создаётся объект из коллекции Настройки.ПользовательскиеПоля:

  • Новое поле выражение... (ПользовательскоеПолеВыражениеКомпоновкиДанных) — содержит два поля: Выражение детальных записей и Выражение итоговых записей. В итоговом выражении обязательно используют агрегатные функции СКД (Сумма(...), Среднее(...), Количество(Различные ...)), иначе в строках группировок и в общем итоге ячейки останутся пустыми.
  • Новое поле выбора... (ПользовательскоеПолеВыборКомпоновкиДанных) — визуальный конструктор условий, заменяющий конструкцию ВЫБОР КОГДА ... ТОГДА ... КОНЕЦ для категоризации строк по условиям отбора.
// Поле-выражение «Средняя цена реализации»:
// 1. Выражение детальных записей:
ВЫБОР
    КОГДА Количество = 0 ТОГДА 0
    ИНАЧЕ Сумма / Количество
КОНЕЦ

// 2. Выражение итоговых записей (обязательно с агрегатами СКД):
ВЫБОР
    КОГДА Сумма(Количество) = 0 ТОГДА 0
    ИНАЧЕ Сумма(Сумма) / Сумма(Количество)
КОНЕЦ
ПользовательскоеПолеВыражениеКомпоновкиДанных
УстановитьВыражения(Детальное, Итоговое)метод задания формул для детальных строк и итогов группировок
ПолучитьВыражениеДетальныхЗаписей()возвращает выражение детальных записей
ПолучитьВыражениеИтоговыхЗаписей()возвращает агрегатное выражение итоговых записей
Заголовокпредставление колонки в шапке отчёта
ПутьКДаннымавто-имя поля вида ПользовательскиеПоля.Поле1 (только чтение)
→ Элемент коллекции ПользовательскиеПоля.Элементы

Как устроен Универсальный отчёт внутри: динамическая сборка СКД

В Конфигураторе макет ОсновнаяСхемаКомпоновкиДанных у Универсального отчёта практически пуст. Когда пользователь выбирает объект и таблицу в шапке, модуль отчёта на сервере программно конструирует СхемаКомпоновкиДанных по метаданным (Метаданные.Документы, Метаданные.РегистрыНакопления и т. д.).

Ключевой приём платформы 1С 8.3 при динамической генерации схемы — создание набора НаборДанныхЗапросСхемыКомпоновкиДанных со свойством АвтоЗаполнениеДоступныхПолей = Истина. При включённом автозаполнении платформа сама разбирает текст запроса, создаёт доступные поля, проставляет измерениям и счетам РольКомпоновкиДанных, а числовые показатели таблиц остатков и оборотов можно одним циклом зарегистрировать в Схема.ПоляИтога (тип элемента — ПолеИтогаСхемыКомпоновкиДанных).

&НаСервере
Функция СобратьУниверсальнуюСхемуПоТаблице(ИмяТаблицыЗапроса, МассивРесурсов)
    Схема = Новый СхемаКомпоновкиДанных;

    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "ИсточникДанных1";
    Источник.ТипИсточникаДанных = "Local";

    Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    Набор.Имя = "НаборДанных1";
    Набор.ИсточникДанных = "ИсточникДанных1";
    Набор.АвтоЗаполнениеДоступныхПолей = Истина;
    Набор.Запрос = "ВЫБРАТЬ * ИЗ " + ИмяТаблицыЗапроса;

    Для Каждого ИмяПоля Из МассивРесурсов Цикл
        Ресурс = Схема.ПоляИтога.Добавить();
        Ресурс.ПутьКДанным = ИмяПоля;
        Ресурс.Выражение = "Сумма(" + ИмяПоля + ")";
    КонецЦикла;

    Возврат Схема;
КонецФункции
НаборДанныхЗапросСхемыКомпоновкиДанных
Запростекст запроса на языке запросов 1С
ИсточникДанныхимя источника данных схемы (обычно "ИсточникДанных1")
АвтоЗаполнениеДоступныхПолейБулево — автоматическое извлечение полей и ролей из запроса
Поляколлекция ПоляНабораДанныхСхемыКомпоновкиДанных
→ НаборДанныхЗапросСхемыКомпоновкиДанных

После того как динамическая схема собрана, её загружают в КомпоновщикНастроекКомпоновкиДанных методом Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)) и формируют настройки по умолчанию (группировка детальных записей ГруппировкаКомпоновкиДанных и автополе АвтоВыбранноеПолеКомпоновкиДанных):

&НаСервере
Процедура ПрименитьДинамическуюСхемуКОтчету(КомпоновщикНастроек, Схема)
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
    КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);

    Настройки = КомпоновщикНастроек.Настройки;
    Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Группировка.Использование = Истина;

    АвтоПоле = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    АвтоПоле.Использование = Истина;

    ПолеАвто = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеАвто.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядку");
    ПолеАвто.Использование = Истина;
КонецПроцедуры
КомпоновщикНастроекКомпоновкиДанных.Инициализировать
ИсточникДоступныхНастроекИсточникДоступныхНастроекКомпоновкиДанных, созданный по СхемаКомпоновкиДанных
→ Неопределено (обновляет ДоступныеНастройки компоновщика)
Если нужно быстро проверить движения регистра в базе и сразу получить готовый отчёт на СКД, в ИИ Консоли отчётов 1С агент сам изучит метаданные вашей конфигурации, выполнит проверочный запрос и соберёт готовую схему компоновки без ручного перебора таблиц.

Ограничения Универсального отчёта и когда нужен свой отчёт .erf

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

Критерий или задача Универсальный отчёт (в режиме Предприятия) Внешний отчёт .erf на СКД
Соединение двух и более таблиц / регистров Недоступно: выбирается строго один объект и одна таблица. Доступно только разыменование ссылочных полей через точку (Ссылка.Контрагент). Любые ЛЕВОЕ / ВНУТРЕННЕЕ СОЕДИНЕНИЕ в запросе, пакеты с временными таблицами и связи нескольких наборов данных (СвязьНаборовДанныхСхемыКомпоновкиДанных).
Пакетные запросы и временные таблицы (ВТ) Недоступно: текст запроса генерируется автоматически по одной таблице. Полная поддержка ВТ, индексации (ИНДЕКСИРОВАТЬ ПО), объединений (ОБЪЕДИНИТЬ ВСЕ) и предобработки данных.
Сложные вычисления и функции общих модулей Только простые пользовательские поля на языке выражений СКД; при переключении таблицы в шапке настройки легко затереть. Вычисляемые поля схемы, ресурсы с РассчитыватьПо, функции ВычислитьВыражениеСГруппировкойМассив и вызовы экспортных функций общих модулей.
Собственный макет оформления и печатная шапка Только стандартное автооформление СКД. Произвольные макеты полей, группировок и заголовков (МакетОформления), подписи, логотипы и программная постобработка в ПриКомпоновкеРезультата.
Публикация в разделах для рядовых пользователей Находится в администрировании и требует прав на использование Универсального отчёта; неудобен для менеджеров и кладовщиков. Регистрируется в БСП через СведенияОВнешнейОбработке и выводится отдельной кнопкой в нужном разделе (например, «Продажи» или «Склад») с безопасным режимом.
Когда возможностей Универсального отчёта уже не хватает (нужно соединить остатки на складах с резервами, подтянуть цены из среза последних и вывести отчёт в раздел «Продажи»), не обязательно собирать всё с нуля в Конфигураторе. Опишите задачу в ИИ Консоли отчётов 1С: агент сам изучит структуру вашей базы, напишет пакетный запрос, настроит схему СКД, сверит итоги, добавит регистрацию БСП СведенияОВнешнейОбработке и соберёт готовый файл .erf.

Частые ошибки при работе с Универсальным отчётом

  • Смена объекта или таблицы в шапке стирает настроенные поля и отборы. При изменении реквизитов «Тип объекта», «Имя объекта» или «Имя таблицы» Универсальный отчёт заново инициализирует схему компоновки и сбрасывает пользовательские настройки. Всегда сохраняйте готовый вариант кнопкой «Сохранить вариант отчета» перед переключением таблиц.
  • Пустые итоги по пользовательскому полю-выражению в группировках. Если при создании ПользовательскоеПолеВыражениеКомпоновкиДанных заполнить только «Выражение детальных записей», а «Выражение итоговых записей» оставить пустым (или написать без агрегата Сумма(...)), в строках группировок и общем итоге колонка будет пустой.
  • Выбор ОсновныеДанные вместо виртуальной таблицы ОстаткиИОбороты или СрезПоследних. Таблица ОсновныеДанные у регистра накопления выводит сырые движения документов со знаком прихода/расхода (ВидДвижения), а не рассчитанный конечный остаток. Для ведомости по остаткам нужно выбирать таблицу ОстаткиИОбороты, а для актуальных цен или курсов регистра сведений — СрезПоследних.
  • Попытка достать табличную часть документа из таблицы ОсновныеДанные. Если в шапке выбран Документ и таблица ОсновныеДанные, в отборе и полях видны только реквизиты шапки. Чтобы вывести строки документа вместе с реквизитами шапки, выберите в поле «Имя таблицы» нужную табличную часть (например, Товары), а поля шапки берите через Ссылка.Дата, Ссылка.Контрагент.
  • Отсутствие детальных строк в результате отчёта. Если в дереве на вкладке Структура добавлены только группировки по измерениям (например, Склад и Номенклатура), отчёт покажет только свёрнутые итоги. Чтобы развернуть первичные записи, добавьте внутрь подчинённую группировку <Детальные записи> (пустое поле группировки).
  • Тяжёлое разыменование ссылочных полей в условиях отбора и группировках. Обращение через три-четыре точки (например, Регистратор.ДоговорКонтрагента.Владелец.ГоловнойКонтрагент) на миллионных регистрах порождает в запросе СКД цепочку неявных ЛЕВОЕ СОЕДИНЕНИЕ и резко замедляет выполнение. Для таких выборок лучше собрать отдельный отчёт .erf с временными таблицами и индексами.

Частые вопросы по Универсальному отчёту в 1С 8.3

Где сохранить настроенный вариант Универсального отчёта и как передать его другому пользователю?

В шапке Универсального отчёта нажмите кнопку «Ещё — Варианты отчета — Сохранить вариант отчета» (или иконку дискеты рядом с названием варианта), укажите наименование и выберите доступность: «Только для автора» или «Всем пользователям» с отбором по ролям. Чтобы перенести настройку в другую базу, используйте команду «Ещё — Настройки — Сохранить настройки» (выгрузка в файл XML) и «Загрузить настройки» на рабочем месте коллеги.

Можно ли в Универсальном отчёте соединить данные двух разных регистров или документов?

Штатно в пользовательском режиме — нельзя, так как Универсальный отчёт формирует схему компоновки строго по одной выбранной таблице метаданных. Из связанных объектов можно вытащить только реквизиты по ссылке через точку (например, из табличной части документа обратиться к реквизитам шапки через поле Ссылка или из регистра — к реквизитам Регистратора). Для соединения двух независимых таблиц или регистров необходимо создать внешний отчёт .erf на СКД с несколькими наборами данных или пакетным запросом.

Почему в Универсальном отчёте по регистру накопления не сходятся конечные остатки при выборе таблицы ОсновныеДанные?

Таблица ОсновныеДанные обращается к физической таблице движений регистра, где хранятся только записи прихода и расхода внутри выбранного периода без учёта начального сальдо на дату начала. Чтобы получить корректный начальный остаток, приход, расход и конечный остаток за период, в поле «Имя таблицы» шапки отчёта нужно выбрать виртуальную таблицу ОстаткиИОбороты (или Остатки для среза на конкретную дату).

Тарифы

ИИ Консоль отчётов 1С

Лайт

Бесплатно

Для ознакомления с возможностями

  • Все функции бесплатно на 2 дня +2 дня за подписку на Telegram или Max
  • Полный набор инструментов без урезаний
  • Без ввода карты

Ранний доступ

Популярный выбор
Бесплатно

Тестирование продукта в режиме разработки

  • Формирование панелей и виджетов в чате
  • Поддержка таблиц и популярных типов диаграмм
  • Приоритетный сбор обратной связи по развитию продукта