Разработка отчетов в платформе 1С:Предприятие претерпела значительные изменения с появлением Системы Компоновки Данных (СКД). Этот механизм позволяет создавать гибкие и мощные отчеты без написания сложного кода на встроенном языке, используя визуальные настройки и декларативный подход. Понимание принципов работы СКД является критически важным навыком для любого разработчика, стремящегося оптимизировать процесс создания аналитических форм.
Процесс создания макета начинается с определения структуры данных и заканчивается тонкой настройкой внешнего вида. Пользователю необходимо последовательно пройти этапы настройки запроса, определения параметров, создания схемы данных и настройки вариантов отчетов. Ошибки на ранних стадиях могут привести к некорректной работе всего отчета, поэтому важно внимательно следить за типами данных и связями между объектами.
В данной статье мы подробно разберем каждый этап создания макета, уделив особое внимание типичным ошибкам и практикам. Вы узнаете, как правильно формировать запросы, настраивать группировки и использовать условное оформление для выделения важной информации. Освоив эти приемы, вы сможете создавать отчеты любой сложности, отвечающие самым жестким требованиям бизнеса.
Инициализация объекта макета и настройка запроса
Первым шагом в создании отчета является добавление нового объекта конфигурации типа МакетКомпоновкиДанных. Это можно сделать через дерево конфигурации или контекстное меню в конфигураторе. После создания объекта открывается редактор макета, где основная работа ведется на вкладке «Настройки». Здесь формируется фундамент будущего отчета — набор данных.
В разделе «Наборы данных» необходимо создать новый элемент и перейти к редактированию Запроса. Именно запрос определяет, какие данные будут извлечены из базы. Синтаксис запроса стандартен для платформы, но имеет свои особенности при работе с виртуальными таблицами.
При написании запроса следует использовать псевдонимы для полей, чтобы избежать конфликтов имен и улучшить читаемость кода. Если в отчете планируется использование нескольких источников данных, их можно объединить с помощью оператора ОБЪЕДИНИТЬ ВСЕ прямо в тексте запроса или добавить дополнительные наборы данных в настройках макета.
ВЫБРАТЬ
РегистрНакопления.Продажи.Период КАК Период,
РегистрНакопления.Продажи.Номенклатура КАК Номенклатура,
СУММА(РегистрНакопления.Продажи.Количество) КАК Количество,
СУММА(РегистрНакопления.Продажи.Сумма) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(
&НачалоПериода,
&КонецПериода,
) КАК РегистрНакопления.Продажи
СГРУППИРОВАТЬ ПО
РегистрНакопления.Продажи.Период,
РегистрНакопления.Продажи.Номенклатура
После формирования текста запроса необходимо нажать кнопку «Получить структуру запроса». Система автоматически проанализирует текст и создаст структуру полей, доступных для использования в отчете. Если структура не обновляется, проверьте синтаксис запроса на наличие ошибок. Отсутствие полей в структуре запроса сделает невозможным их использование в качестве ресурсов отчета.
⚠️ Внимание: Изменения в структуре регистров или справочников могут потребовать обновления текста запроса. Всегда проверяйте актуальность имен полей при переносе макета между разными версиями конфигурации.
Конфигурирование параметров и элементов отчета
Параметры позволяют сделать отчет динамическим, давая пользователю возможность влиять на выборку данных. В СКД параметры могут быть как явно объявленными в запросе (через символ &), так и добавленными вручную в список параметров макета. Для каждого параметра необходимо указать Тип значения, например, Дата, Строка или СправочникСсылка.Номенклатура.
Элементы отчета — это сущности, которые непосредственно отображаются в результате. Они делятся на три основные категории: ресурсы, измерения и параметры. Ресурсы обычно представляют собой числовые показатели (суммы, количества), которые подвергаются агрегации. Измерения служат для группировки данных (контрагенты, товары, даты).
При настройке элементов важно правильно выбрать функцию агрегации для ресурсов. По умолчанию система предлагает сумму, но в зависимости от задачи это может быть среднее значение, минимум, максимум или количество. Ошибка в выборе функции агрегации приведет к неверным итоговым цифрам в отчете.
- 🔹 Типы данных: Убедитесь, что тип параметра соответствует типу поля в запросе, иначе возникнет ошибка выполнения.
- 🔹 Представление: Настройте синонимы для полей, чтобы заголовки колонок в отчете были понятны пользователю.
- 🔹 Видимость: Скройте технические поля, которые не нужны для вывода, но используются во внутренних вычислениях.
Для сложных случаев можно использовать вычисляемые поля. Они создаются непосредственно в настройках элементов отчета и позволяют выполнять арифметические операции или логические проверки над существующими данными без изменения основного запроса.
Используйте параметр «Период» стандартного вида, чтобы автоматически получить поля «НачалоПериода» и «КонецПериода» с готовым интерфейсом выбора дат.
Построение схемы данных и настройка связей
Схема данных — это логическая модель, которая связывает наборы данных, параметры и элементы отчета в единую структуру. В большинстве простых отчетов схема генерируется автоматически на основе запроса. Однако для сложных отчетов с несколькими наборами данных или нестандартными связями требуется ручная настройка.
В редакторе схемы данных вы можете определять связи между таблицами, указывая ключевые поля. Это особенно важно при использовании операторов объединения или при работе с регистрами сведений, где связь может быть неочевидной. Правильно настроенная схема гарантирует, что данные будут сгруппированы корректно.
Также в схеме данных настраиваются доступные поля для пользователя. Вы можете ограничить список полей, которые пользователь может добавлять в отчет через интерфейс настройки. Это помогает упростить интерфейс и защитить отчет от некорректных действий.
| Объект схемы | Назначение | Пример использования |
|---|---|---|
| Набор данных | Источник информации | Запрос к регистру продаж |
| Параметр | Вводные данные | Дата начала периода |
| Поле | Элемент вывода | Наименование товара |
| Связь | Условие соединения | Ссылка = Ссылка |
Если в отчете используются несколько наборов данных, необходимо явно указать, как они соотносятся друг с другом. Это делается через создание связей между полями разных наборов. Без этих связей система не сможет корректно сформировать итоговую таблицу.
⚠️ Внимание: Циклические связи в схеме данных могут привести к бесконечному циклу при формировании отчета. Всегда проверяйте граф связей на наличие замкнутых контуров.
Что такое автоматическая схема данных?
Автоматическая схема создается системой на основе анализа запроса. Она подходит для 90% типовых задач, но отключает возможность ручного управления связями и сложной логикой группировки.
Настройка вариантов отчетов и группировок
Варианты отчетов определяют, как именно данные будут сгруппированы и выведены пользователю. Вы можете создать несколько предустановленных вариантов, например, «По контрагентам», «По номенклатуре» или «Детальный оборот». Каждый вариант представляет собой отдельную конфигурацию структуры отчета.
Внутри варианта настраиваются Группировки. Это иерархическая структура, определяющая вложенность строк и колонок. Вы можете добавлять группировки по любым измерениям, доступным в схеме данных. Порядок добавления группировок влияет на итоговую структуру: первая группировка будет самой верхней в иерархии.
Для каждой группировки можно настроить отборы. Это позволяет фильтровать данные непосредственно на уровне группы. Например, можно вывести только те товары, сумма продаж которых превышает определенное значение. Отборы в группировках работают быстрее, чем отборы в запросе, если нужно фильтровать уже сгруппированные данные.
- 📊 Структура: Перетаскивайте поля в область группировок строк или колонок для изменения вида отчета.
- 📊 Итоги: Включайте отображение итогов для группировок, чтобы видеть промежуточные суммы.
- 📊 Сортировка: Задайте порядок сортировки внутри группировок по возрастанию или убыванию.
Использование нескольких вариантов позволяет одному макету закрывать множество потребностей пользователей. Переключение между вариантами происходит мгновенно, так как данные уже загружены, меняется лишь способ их отображения.
☑️ Проверка варианта отчета
Условное оформление и работа с ячейками
Условное оформление — мощный инструмент для визуализации данных. Оно позволяет изменять цвет текста, фона, шрифт или добавлять изображения в ячейки отчета в зависимости от значений данных. Это помогает пользователю мгновенно выделять проблемные зоны или ключевые показатели.
Для настройки оформления необходимо создать новое правило в соответствующей вкладке настроек. В условии правила указывается логическое выражение, например, Сумма < 0 или ПроцентВыполнения < 80. Если условие истинно, к ячейкам применяется заданный стиль.
Область применения оформления может быть различной: отдельные поля, целые строки, заголовки группировок или итоги. Гибкость настроек позволяет создавать сложные сценарии подсветки, например, «светофор» для статусов заказов.
Если ПроцентВыполнения > 100 Тогда
ЦветФона = Зеленый
ИначеЕсли ПроцентВыполнения < 80 Тогда
ЦветФона = Красный
Иначе
ЦветФона = Белый
КонецЕсли;
При использовании условного оформления важно не перегружать отчет цветами. Избыток визуальных эффектов может затруднить восприятие информации. Используйте яркие цвета только для критически важных отклонений.
⚠️ Внимание: Условное оформление вычисляется на клиенте после получения данных. Слишком сложные условия на больших объемах данных могут замедлить отрисовку отчета.
Правила условного оформления применяются последовательно. Если несколько правил подходят к одной ячейке, приоритет имеет правило, расположенное выше в списке.
Отладка, оптимизация и публикация отчета
Завершающим этапом является тестирование макета. Запустите отчет в режиме предприятия и проверьте его работу на различных наборах данных. Особое внимание уделите работе с большими объемами информации и граничным значениям параметров (пустые периоды, отсутствие данных).
Оптимизация производительности часто сводится к оптимизации основного запроса. Используйте план выполнения запроса для выявления узких мест. Убедитесь, что по полям, участвующим в отборах и соединениях, установлены индексы. В СКД также полезно отключать неиспользуемые поля в структуре запроса.
После отладки макет готов к использованию. Его можно вызывать из кода встроенного языка с помощью объекта КомпоновщикНастроекКомпоновкиДанных. Это позволяет встраивать отчеты в обработки, документы или рабочие места пользователей.
- 🚀 Тестирование: Проверьте отчет с пустой базой данных и с максимально возможной выборкой.
- 🚀 Права доступа: Убедитесь, что у пользователей есть права на чтение используемых в запросе таблиц.
- 🚀 Документирование: Добавьте комментарии в модуль объекта или в описание макета для будущих разработчиков.
Регулярный пересмотр существующих отчетов и их оптимизация позволяют поддерживать высокую скорость работы информационной системы. СКД предоставляет все необходимые инструменты для создания профессиональных и быстрых отчетов.
Часто задаваемые вопросы (FAQ)
Как добавить вычисляемое поле в макет СКД?
Вычисляемые поля добавляются в разделе «Элементы отчета». Нажмите кнопку добавления, выберите тип «Поле» и в выражении укажите формулу, используя доступные поля запроса. Например, Сумма / Количество для расчета средней цены.
Почему не работает отбор по параметру в запросе?
Чаще всего проблема заключается в несоответствии типов данных параметра и поля в запросе. Проверьте, что тип параметра в настройках макета совпадает с типом поля, к которому он применяется. Также убедитесь, что имя параметра в запросе точно совпадает с именем в настройках (с учетом регистра).
Можно ли использовать СКД для ввода данных?
Нет, Система Компоновки Данных предназначена исключительно для чтения и отображения данных (отчеты, обработки). Для ввода и изменения данных следует использовать формы документов, справочников или специальные обработки.
Как скрыть нулевые значения в отчете?
Это можно сделать двумя способами. Первый — добавить отбор в настройках группировки или варианта отчета с условием Ресурс Не Равно 0. Второй — использовать условное оформление, чтобы сделать текст белым на белом фоне, хотя этот метод менее корректен.
Как передать параметры из кога в макет СКД?
При создании объекта КомпоновщикНастроекКомпоновкиДанных используйте метод УстановитьПараметр. Передайте имя параметра, определенное в макете, и его значение. Например: Компоновщик.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата)).