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

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

Как писать отчёты в 1С: от простого макета до СКД

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

Отчёт в 1С — это объект конфигурации или внешний файл, который выбирает данные из информационной базы и представляет их в удобном виде: таблице, диаграмме, сводной ведомости. Подавляющее большинство современных отчётов строится на системе компоновки данных (СКД), которая позволяет описать источник данных один раз, а внешний вид настраивать без изменения кода.

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

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

Выбор способа: СКД, макет или программное формирование

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

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

Отчёт на СКД

Подходит для 90% задач: группировки, отборы, варианты, расшифровка — без кода. Ограничение: сложная нетабличная вёрстка требует доработок.

Отчёт с табличным макетом

Подходит для печатных форм с фиксированной структурой (акты, справки). Ограничение: любое изменение структуры требует правки кода и макета.

Внешний отчёт (.erf)

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

Консоль отчётов / универсальный отчёт

Подходит для быстрой проверки гипотезы о данных без создания объекта. Не является полноценным решением для пользователей.

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

Создание объекта отчёта в конфигураторе

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

Далее откройте «Основную схему компоновки данных» — именно здесь описывается, откуда отчёт берёт данные. Если отчёт внешний, создайте его через «Файл → Новый → Внешний отчёт»; структура у него та же, отличие только в способе хранения и подключения.

Написание запроса — основа отчёта

На вкладке «Наборы данных» схемы компоновки добавьте набор типа «Запрос» и откройте конструктор запроса. Выберите таблицы-источники: для оборотов и остатков используйте виртуальные таблицы регистров (например, Продажи.Обороты), для списков документов — таблицы документов с соединениями к справочникам.

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

bsl
ВЫБРАТЬ
	Продажи.Менеджер КАК Менеджер,
	Продажи.Номенклатура КАК Номенклатура,
	СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
	РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
	Продажи.Менеджер,
	Продажи.Номенклатура

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

Настройка ресурсов, параметров и вариантов

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

На вкладке «Параметры» задайте период отчёта. Удобный приём — добавить вычисляемые параметры «НачалоПериода» и «КонецПериода» и связать их со стандартным параметром «Период» через выражения &Период.ДатаНачала и &Период.ДатаОкончания. Для параметра типа «Дата», который участвует в границах периода, указывайте конец дня, иначе документы последнего дня в отчёт не попадут.

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

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

Расшифровка, макеты и программная доработка

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

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

Программное вмешательство оправдано, когда нужно: заполнить параметры по умолчанию из настроек пользователя, изменить текст запроса в зависимости от условий, добавить внешний набор данных. Точки входа — события модуля объекта отчёта ПриКомпоновкеРезультата и ПередЗагрузкойВариантаНаСервере.

Проверка результата и типичные ошибки

Первый контроль — сверка итогов. Сформируйте отчёт за период, по которому есть эталонные данные (например, оборотно-сальтовая ведомость или типовой отчёт), и сравните итоговые суммы. Расхождение чаще всего означает: неверные параметры виртуальной таблицы, потерянные строки из-за внутреннего соединения вместо левого, или отбор, который вы забыли снять.

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

Типичные ошибки
01
Условие отбора в секции ГДЕ вместо параметров виртуальной таблицы — запрос сканирует весь регистр и работает медленно
02
Параметр «КонецПериода» без приведения к концу дня — документы последнего дня теряются
03
Внутреннее соединение со справочником вместо левого — строки с незаполненным измерением исчезают из отчёта
04
Отсутствие ресурсов на вкладке «Ресурсы» — группировки не считают итоги
05
Все настройки отданы пользователю без готового варианта — отчёт открывается пустым, и его считают сломанным
Контрольные точки

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

Итоги отчёта
Норма

Совпадают с типовым отчётом или ОСВ за тот же период

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

Расхождение сумм, «лишние» или пропавшие строки

Границы периода
Норма

Документы первого и последнего дня присутствуют

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

Последний день пустой или неполный

Скорость формирования
Норма

Отчёт формируется за секунды на рабочем объёме данных

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

Формирование занимает минуты, база подвисает

Поведение без отборов
Норма

Отчёт открывается с осмысленным вариантом по умолчанию

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

Пустая форма или ошибка при открытии

Внешний отчёт или изменение конфигурации

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

При доработке типового отчёта не редактируйте его напрямую: скопируйте схему во внешний отчёт или переопределите поведение через расширение. Иначе при очередном обновлении изменения будут утеряны или заблокируют само обновление.

Маршрут решения

Как выбрать действие

Конфигурация типовая, на поддержке, отчёт нужен только пользователямСоздайте внешний отчёт и подключите через «Дополнительные отчёты и обработки»
Отчёт должен быть в командном интерфейсе раздела наряду с типовымиИспользуйте расширение конфигурации
Конфигурация собственная или уже доработанаДобавляйте отчёт как обычный объект конфигурации
Нужно разово посмотреть данныеИспользуйте консоль запросов или универсальный отчёт, не создавая объект

FAQ: частые вопросы о разработке отчётов в 1С

Можно ли сделать отчёт без программирования?

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

Чем отличается внешний отчёт от встроенного?

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

Почему отчёт формируется пустым, хотя данные есть?

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

Как дать пользователю отборы, но не сломать отчёт?

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

Что делать, если отчёт работает медленно?

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

Можно ли использовать один отчёт в разных конфигурациях?

Только если состав объектов и полей совпадает. Запрос жёстко привязан к именам таблиц и реквизитов конкретной конфигурации, поэтому при переносе отчёт обычно требует адаптации запроса и настроек.

Итог

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

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