Система компоновки данных (СКД) в 1С:Предприятие — это мощный инструмент для создания гибких отчетов, который позволяет автоматизировать сбор и визуализацию данных без глубокого погружения в программирование. Однако многие пользователи и даже начинающие разработчики сталкиваются с трудностями при первом знакомстве с СКД: непонятные настройки, ошибки в запросах, некорректный вывод данных. Эта статья поможет разобраться, как писать отчеты СКД в 1С с нуля, избегая типичных ошибок.
Мы рассмотрим весь процесс — от создания простого отчета через конструктор до ручной доработки схемы компоновки данных (СКД) и оптимизации производительности. Особое внимание уделим практическим примерам, которые можно сразу применить в своей базе. Статья будет полезна как бухгалтерам, которые хотят научиться формировать отчеты самостоятельно, так и программистам 1С, которые хотят углубить свои знания в работе с СКД.
Что такое СКД и зачем она нужна в 1С
Система компоновки данных (СКД) — это встроенный механизм 1С:Предприятие 8, который позволяет создавать отчеты любой сложности без написания кода. Она состоит из двух основных частей:
- 📊 Конструктор запросов — инструмент для выборки данных из базы (аналог SQL-запросов).
- 🎨 Конструктор макета — настройка внешнего вида отчета (группировки, сортировки, условное оформление).
Преимущества СКД перед традиционными отчетами:
- ⚡ Гибкость: один отчет может выдавать разные данные в зависимости от параметров.
- 🔄 Переиспользуемость: схему компоновки можно применять в разных отчетах.
- 🛠️ Минимальный код: большинство задач решается через визуальные настройки.
СКД используется во всех типовых конфигурациях 1С (Бухгалтерия, ЗУП, ERP, УТ), а также в самописных решениях. Например, отчеты Оборотно-сальдовая ведомость, Анализ субконто или Сводные проводки построены именно на СКД.
Подготовка к созданию отчета: выбор источника данных
Прежде чем приступать к написанию отчета, необходимо определиться с источником данных. В СКД это может быть:
- 🗃️ Запрос — самый распространенный вариант (аналог SQL-SELECT).
- 📋 Объект — например, справочник или документ (данные берутся напрямую из формы).
- 🔗 Объединение источников — если нужно совместить данные из разных таблиц.
Для большинства задач подходит запрос. Чтобы его создать:
- Откройте конфигуратор 1С и перейдите в раздел
Отчеты. - Создайте новый отчет и выберите тип
Система компоновки данных. - В конструкторе схемы компоновки данных нажмите
Добавить набор данных — Запрос.
Пример простого запроса для отчета по продажам:
ВЫБРАТЬ
Документ.Дату КАК Дата,
Документ.Контрагент КАК Контрагент,
Документ.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
Документ.Дату МЕЖДУ &НачалоПериода И &КонецПериода
⚠️ Внимание: Если в запросе используются параметры (например,&НачалоПериода), их нужно обязательно объявить в разделеПараметрысхемы компоновки. Иначе отчет не скомпилируется.
Конструктор схемы компоновки данных: пошаговая настройка
После создания источника данных переходим к настройке схемы компоновки. Это сердце отчета, где определяется, какие поля будут выводиться и как они будут группироваться. Основные разделы конструктора:
| Раздел | Назначение | Пример настройки |
|---|---|---|
Наборы данных |
Источники информации (запросы, объекты) | Запрос к документу РеализацияТоваровУслуг |
Ресурсы |
Поля, по которым будут рассчитываться итоги (суммы, количества) | Поле СуммаДокумента с типом Сумма |
Параметры |
Входные данные для фильтрации (даты, организации и т.д.) | Параметр НачалоПериода типа Дата |
Настройки |
Внешний вид отчета (группировки, сортировки, оформление) | Группировка по полю Контрагент |
Рассмотрим ключевые моменты настройки:
- 🔹 Ресурсы: Укажите поля, по которым нужно считать итоги. Например, для отчета по продажам это будет
СуммаиКоличество. - 🔹 Параметры: Добавьте параметры для фильтрации (период, организация, контрагент). Не забудьте указать тип данных!
- 🔹 Настройки: В разделе
Структуранастройте группировки (например, сначала поКонтрагенту, затем поДата).
☑️ Чек-лист перед сохранением схемы СКД
Работа с макетом: как оформить отчет
После настройки схемы компоновки нужно определиться с макетом отчета — тем, как данные будут выглядеть на экране или при печати. В СКД есть несколько вариантов макетов:
- 📄 Табличный документ — классический вид (строки и столбцы).
- 📊 Диаграмма — для визуализации данных (гистограммы, графики).
- 🗂️ Иерархический список — для отображения древовидных структур.
Для большинства бухгалтерских отчетов подходит табличный документ. Чтобы его настроить:
- В конструкторе схемы компоновки перейдите на вкладку
Настройки. - Выберите
Структура → Группировкии добавьте нужные уровни (например,Контрагент → Дата). - В разделе
Отображаемые поляукажите, какие колонки должны выводиться. - На вкладке
Дополнительные настройкиможно настроитьУсловное оформление(например, красным цветом выделять отрицательные суммы).
Пример условного оформления для выделения просроченных платежей:
ЕСЛИ СуммаОстатков < 0 ТОГДА
ЦветТекста = Красный;
Жирный = Истина;
КОНЕЦЕСЛИ;
⚠️ Внимание: Если в отчете используются сложные группировки (более 3 уровней), это может значительно замедлить его формирование. В таких случаях стоит рассмотреть возможность разбиения отчета на несколько более простых.
Для ускорения работы отчета ограничьте период выборки данных параметрами. Например, вместо выборки за весь год берите данные только за текущий месяц, если это допустимо по бизнес-логике.
Параметры отчета: как сделать отчет гибким
Одним из главных преимуществ СКД является возможность создания параметризованных отчетов, которые можно адаптировать под разные задачи без изменения кода. Параметры позволяют:
- 📅 Фильтровать данные по датам, организациям, контрагентам.
- 🔍 Менять уровни детализации (например, показывать данные по дням или месяцам).
- 📊 Выбирать формат вывода (таблица, диаграмма, иерархия).
Чтобы добавить параметр:
- В конструкторе схемы компоновки перейдите на вкладку
Параметры. - Нажмите
Добавитьи укажите имя параметра (например,ДатаНачала). - Выберите тип данных (
Дата,СправочникСсылка.Контрагентыи т.д.). - При необходимости установите значение по умолчанию (например,
НачалоДня(ТекущаяДата())).
Пример использования параметров в запросе:
ВЫБРАТЬ
...
ГДЕ
Документ.Дату >= &ДатаНачала
И Документ.Дату <= &ДатаОкончания
И (&Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка())
ИЛИ Документ.Контрагент = &Контрагент)
Чтобы параметры отображались в форме отчета при его открытии, нужно:
- В конструкторе схемы компоновки перейти на вкладку
Настройки. - Выбрать
Параметры → Доступные параметры. - Перенести нужные параметры в список
Отображаемые параметры.
Как сделать параметр обязательным?
Чтобы пользователь не мог сформировать отчет без указания параметра, в конструкторе схемы компоновки на вкладке "Параметры" установите флажок "Обязательный" для нужного параметра. Также можно задать проверку на заполненность в модуле отчета.
Отладка и оптимизация отчета СКД
Даже опытные разработчики сталкиваются с ошибками при создании отчетов СКД. Рассмотрим типичные проблемы и способы их решения:
| Проблема | Возможная причина | Решение |
|---|---|---|
| Отчет формируется слишком долго | Слишком большой период выборки или отсутствие индексов | Ограничьте период параметрами или добавьте индексы в запрос |
| Не отображаются итоги | Неверно настроены ресурсы или группировки | Проверьте раздел "Ресурсы" и структуру группировок |
| Ошибка "Поле не найдено" | Опечатка в имени поля или оно не выбрано в запросе | Сверьте имена полей в запросе и схеме компоновки |
| Не работают параметры | Параметры не объявлены или не переданы в запрос | Проверьте раздел "Параметры" и синтаксис запроса |
Для отладки отчета используйте следующие инструменты:
- 🔍 Просмотр выполненного запроса: В конструкторе схемы компоновки нажмите
Конструктор запроса → Выполнить. Это покажет, какие данные фактически выбираются. - 📝 Журнал регистрации: Включите регистрацию событий в 1С (
Администрирование → Журнал регистрации) для отслеживания ошибок. - 🛠️ Отладчик: Если отчет пишется в конфигураторе, используйте пошаговую отладку для анализа кода.
Критическая ошибка многих начинающих: игнорирование индексов в запросах. Если в условии фильтрации используется поле, по которому нет индекса, запрос будет выполняться в разы дольше. Всегда проверяйте, есть ли индексы по полям, используемым в условиях ГДЕ.
⚠️ Внимание: В некоторых версиях 1С:Предприятие (особенно в старых релизах) есть ограничения на сложность запросов в СКД. Например, не поддерживаются рекурсивные запросы или сложные объединения более 3 таблиц. В таких случаях может потребоваться разбиение отчета на несколько простых или использование временных таблиц.
Примеры готовых отчетов СКД
Рассмотрим несколько практических примеров, которые можно адаптировать под свои задачи.
1. Отчет по продажам с группировкой по контрагентам
Запрос:
ВЫБРАТЬ
Документ.Контрагент КАК Контрагент,
Документ.Дату КАК Дата,
Документ.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
Документ.Дату МЕЖДУ &НачалоПериода И &КонецПериода
УПОРЯДОЧИТЬ ПО
Контрагент,
Дата
Настройки СКД:
- 📌 Ресурсы:
Сумма(тип —Сумма). - 📌 Группировки:
Контрагент → Дата. - 📌 Параметры:
НачалоПериода,КонецПериода(тип —Дата).
2. Анализ остатков товаров на складах
Запрос (с использованием регистра накопления):
ВЫБРАТЬ
РегистрНакопленияОстатков.Номенклатура КАК Номенклатура,
РегистрНакопленияОстатков.Склад КАК Склад,
СУММА(РегистрНакопленияОстатков.КоличествоОстаток) КАК Количество
ИЗ
РегистрНакопления.ОстаткиТоваров КАК РегистрНакопленияОстатков
ГДЕ
РегистрНакопленияОстатков.Склад В (&Склады)
СГРУППИРОВАТЬ ПО
РегистрНакопленияОстатков.Номенклатура,
РегистрНакопленияОстатков.Склад
Особенности настройки:
- 📌 В параметре
Складыиспользуйте типСправочникСсылка.Складыс возможностью множественного выбора. - 📌 В ресурсах укажите
Количествос типомКоличество. - 📌 Настройте условное оформление для выделения отрицательных остатков.
При работе с регистрами накопления в запросах СКД всегда используйте агрегатные функции (СУММА, МАКСИМУМ и т.д.), даже если выбираете остатки. Это ускорит выполнение запроса.
FAQ: Ответы на частые вопросы по СКД в 1С
Как экспортировать отчет СКД в Excel?
Чтобы экспортировать отчет в Excel, после его формирования нажмите кнопку Еще → Сохранить как... и выберите формат Excel (*.xlsx). Если нужно настроить формат экспорта (например, убрать лишние столбцы), используйте обработку ВыгрузкаЗначенийВExcel из стандартных библиотек 1С.
Можно ли в СКД сделать отчет с графиком?
Да, для этого в настройках схемы компоновки на вкладке Настройки выберите тип отображения Диаграмма. Затем настройте оси (категории и значения) и внешний вид графика. Например, для анализа продаж по месяцам укажите:
- 📌 Категории: поле
Месяц(группировка по периоду). - 📌 Значения: ресурс
Сумма.
Почему отчет СКД тормозит при большом объеме данных?
Основные причины:
- Отсутствие индексов по полям, используемым в условиях
ГДЕ. - Слишком большой период выборки (например, запрос за 10 лет вместо 1 месяца).
- Сложные группировки (более 3 уровней) или вычисления в запросе.
Решения:
- 🔹 Ограничьте период параметрами.
- 🔹 Используйте временные таблицы для промежуточных расчетов.
- 🔹 Разбейте отчет на несколько более простых.
Как в отчете СКД показать данные в разрезе дней недели?
Добавьте в запрос вычисляемое поле с функцией ДеньНедели():
ВЫБРАТЬ
ДеньНедели(Документ.Дату) КАК ДеньНедели,
Документ.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
Затем в настройках СКД сгруппируйте данные по полю ДеньНедели и настройте вывод названий дней (например, через функцию Формат()).
Можно ли в СКД сделать отчет с картинками?
Да, но с ограничениями. В табличном документе можно выводить картинки, если они хранятся в базе как двоичные данные (например, в реквизите типа ХранилищеЗначения). Для этого:
- В запросе выберите поле с картинкой.
- В настройках макета укажите, что это поле должно выводиться как
Картинка. - Установите нужные размеры ячейки в макете.
Однако такой подход может значительно увеличить размер отчета и время его формирования.