Универсальный отчёт в 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С 8.3 при динамической генерации схемы — создание набора НаборДанныхЗапросСхемыКомпоновкиДанных со свойством АвтоЗаполнениеДоступныхПолей = Истина. При включённом автозаполнении платформа сама разбирает текст запроса, создаёт доступные поля, проставляет измерениям и счетам РольКомпоновкиДанных, а числовые показатели таблиц остатков и оборотов можно одним циклом зарегистрировать в Схема.ПоляИтога (тип элемента — ПолеИтогаСхемыКомпоновкиДанных).
&НаСервере
Функция СобратьУниверсальнуюСхемуПоТаблице(ИмяТаблицыЗапроса, МассивРесурсов)
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "ИсточникДанных1";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "НаборДанных1";
Набор.ИсточникДанных = "ИсточникДанных1";
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ * ИЗ " + ИмяТаблицыЗапроса;
Для Каждого ИмяПоля Из МассивРесурсов Цикл
Ресурс = Схема.ПоляИтога.Добавить();
Ресурс.ПутьКДанным = ИмяПоля;
Ресурс.Выражение = "Сумма(" + ИмяПоля + ")";
КонецЦикла;
Возврат Схема;
КонецФункции
После того как динамическая схема собрана, её загружают в КомпоновщикНастроекКомпоновкиДанных методом Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)) и формируют настройки по умолчанию (группировка детальных записей ГруппировкаКомпоновкиДанных и автополе АвтоВыбранноеПолеКомпоновкиДанных):
&НаСервере
Процедура ПрименитьДинамическуюСхемуКОтчету(КомпоновщикНастроек, Схема)
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
Настройки = КомпоновщикНастроек.Настройки;
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Группировка.Использование = Истина;
АвтоПоле = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоПоле.Использование = Истина;
ПолеАвто = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеАвто.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядку");
ПолеАвто.Использование = Истина;
КонецПроцедуры
Ограничения Универсального отчёта и когда нужен свой отчёт .erf
Универсальный отчёт проектировался как диагностический инструмент по одной выбранной таблице метаданных. Как только бизнес-задача выходит за рамки одного объекта, настройка в пользовательском режиме упирается в архитектурные ограничения:
| Критерий или задача | Универсальный отчёт (в режиме Предприятия) | Внешний отчёт .erf на СКД |
|---|---|---|
| Соединение двух и более таблиц / регистров | Недоступно: выбирается строго один объект и одна таблица. Доступно только разыменование ссылочных полей через точку (Ссылка.Контрагент). |
Любые ЛЕВОЕ / ВНУТРЕННЕЕ СОЕДИНЕНИЕ в запросе, пакеты с временными таблицами и связи нескольких наборов данных (СвязьНаборовДанныхСхемыКомпоновкиДанных). |
| Пакетные запросы и временные таблицы (ВТ) | Недоступно: текст запроса генерируется автоматически по одной таблице. | Полная поддержка ВТ, индексации (ИНДЕКСИРОВАТЬ ПО), объединений (ОБЪЕДИНИТЬ ВСЕ) и предобработки данных. |
| Сложные вычисления и функции общих модулей | Только простые пользовательские поля на языке выражений СКД; при переключении таблицы в шапке настройки легко затереть. | Вычисляемые поля схемы, ресурсы с РассчитыватьПо, функции ВычислитьВыражениеСГруппировкойМассив и вызовы экспортных функций общих модулей. |
| Собственный макет оформления и печатная шапка | Только стандартное автооформление СКД. | Произвольные макеты полей, группировок и заголовков (МакетОформления), подписи, логотипы и программная постобработка в ПриКомпоновкеРезультата. |
| Публикация в разделах для рядовых пользователей | Находится в администрировании и требует прав на использование Универсального отчёта; неудобен для менеджеров и кладовщиков. | Регистрируется в БСП через СведенияОВнешнейОбработке и выводится отдельной кнопкой в нужном разделе (например, «Продажи» или «Склад») с безопасным режимом. |
СведенияОВнешнейОбработке и соберёт готовый файл .erf.
Частые ошибки при работе с Универсальным отчётом
- Смена объекта или таблицы в шапке стирает настроенные поля и отборы. При изменении реквизитов «Тип объекта», «Имя объекта» или «Имя таблицы» Универсальный отчёт заново инициализирует схему компоновки и сбрасывает пользовательские настройки. Всегда сохраняйте готовый вариант кнопкой «Сохранить вариант отчета» перед переключением таблиц.
- Пустые итоги по пользовательскому полю-выражению в группировках. Если при создании
ПользовательскоеПолеВыражениеКомпоновкиДанныхзаполнить только «Выражение детальных записей», а «Выражение итоговых записей» оставить пустым (или написать без агрегатаСумма(...)), в строках группировок и общем итоге колонка будет пустой. - Выбор
ОсновныеДанныевместо виртуальной таблицыОстаткиИОборотыилиСрезПоследних. ТаблицаОсновныеДанныеу регистра накопления выводит сырые движения документов со знаком прихода/расхода (ВидДвижения), а не рассчитанный конечный остаток. Для ведомости по остаткам нужно выбирать таблицуОстаткиИОбороты, а для актуальных цен или курсов регистра сведений —СрезПоследних. - Попытка достать табличную часть документа из таблицы
ОсновныеДанные. Если в шапке выбранДокументи таблицаОсновныеДанные, в отборе и полях видны только реквизиты шапки. Чтобы вывести строки документа вместе с реквизитами шапки, выберите в поле «Имя таблицы» нужную табличную часть (например,Товары), а поля шапки берите черезСсылка.Дата,Ссылка.Контрагент. - Отсутствие детальных строк в результате отчёта. Если в дереве на вкладке
Структурадобавлены только группировки по измерениям (например,СкладиНоменклатура), отчёт покажет только свёрнутые итоги. Чтобы развернуть первичные записи, добавьте внутрь подчинённую группировку<Детальные записи>(пустое поле группировки). - Тяжёлое разыменование ссылочных полей в условиях отбора и группировках. Обращение через три-четыре точки (например,
Регистратор.ДоговорКонтрагента.Владелец.ГоловнойКонтрагент) на миллионных регистрах порождает в запросе СКД цепочку неявныхЛЕВОЕ СОЕДИНЕНИЕи резко замедляет выполнение. Для таких выборок лучше собрать отдельный отчёт.erfс временными таблицами и индексами.
Частые вопросы по Универсальному отчёту в 1С 8.3
Где сохранить настроенный вариант Универсального отчёта и как передать его другому пользователю?
В шапке Универсального отчёта нажмите кнопку «Ещё — Варианты отчета — Сохранить вариант отчета» (или иконку дискеты рядом с названием варианта), укажите наименование и выберите доступность: «Только для автора» или «Всем пользователям» с отбором по ролям. Чтобы перенести настройку в другую базу, используйте команду «Ещё — Настройки — Сохранить настройки» (выгрузка в файл XML) и «Загрузить настройки» на рабочем месте коллеги.
Можно ли в Универсальном отчёте соединить данные двух разных регистров или документов?
Штатно в пользовательском режиме — нельзя, так как Универсальный отчёт формирует схему компоновки строго по одной выбранной таблице метаданных. Из связанных объектов можно вытащить только реквизиты по ссылке через точку (например, из табличной части документа обратиться к реквизитам шапки через поле Ссылка или из регистра — к реквизитам Регистратора). Для соединения двух независимых таблиц или регистров необходимо создать внешний отчёт .erf на СКД с несколькими наборами данных или пакетным запросом.
Почему в Универсальном отчёте по регистру накопления не сходятся конечные остатки при выборе таблицы ОсновныеДанные?
Таблица ОсновныеДанные обращается к физической таблице движений регистра, где хранятся только записи прихода и расхода внутри выбранного периода без учёта начального сальдо на дату начала. Чтобы получить корректный начальный остаток, приход, расход и конечный остаток за период, в поле «Имя таблицы» шапки отчёта нужно выбрать виртуальную таблицу ОстаткиИОбороты (или Остатки для среза на конкретную дату).
ИИ Консоль отчётов 1С
Старт
Популярный выборДля индивидуального использования
- Сборка и проверка отчётов СКД (.erf)
-
≈ 100 задач Подробнее про лимиты
- Техническая поддержка
Лайт
Для ознакомления с возможностями
- Полный набор инструментов без урезаний
- Без ввода карты
Ранний доступ
Популярный выборТестирование продукта в режиме разработки
- Формирование панелей и виджетов в чате
- Поддержка таблиц и популярных типов диаграмм
- Приоритетный сбор обратной связи по развитию продукта
Продвинутый
Для интенсивного использования или команд
- Сборка и проверка отчётов СКД (.erf)
-
≈ 300 задач Подробнее про лимиты
- Техническая поддержка