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