# Отчеты

# Система компоновки данных: устройство

[Доп. материалы к книге.](https://its.1c.ru/download/book_demo/?book=) Архив распаковывается, устанавливается база из папки report82/conf/setup.exe Весит немного. Затем при добавлении новой базы указать новую и в списке будет данный шаблон.

**Этапы формирования отчета:**

[![1c_reports_main_scheme.JPG](http://bobrobotirk.ru/uploads/images/gallery/2025-02/scaled-1680-/1c-reports-main-scheme.JPG)](http://bobrobotirk.ru/uploads/images/gallery/2025-02/1c-reports-main-scheme.JPG)

1. Разработчик создает схему компоновки данных и стандартные настройки компоновки, которые содержат полную информацию о компоновке.
2. На основе схемы компоновки данных и настроек компоновки, компоновщик макета создает макет компоновки данных, который является уже готовым заданием для процессора компоновки.
3. Процессор компоновки данных в соответствии с макетом компоновки извлекает данные из информационной базы, агрегирует, оформляет эти данные и формирует результат компоновки. Результат компоновки состоит из массива элементов, которые можно получать последовательно, но в большинстве случаев результат компоновки получается целиком.
4. Процессор вывода обрабатывает результат компоновки и выводит его в различные форматы: табличный документ, HTML-документ, таблица значений, дерево значений.

**Схема компоновки данных**

Схема компоновки данных (СКД) – декларативный инструмент создания отчетов. Состоит из набора элементов, у каждого свое декларативное описание и возможность XML сериализации. Создать СКД можно при помощи конструктора, через создание XML документа или через код.

**Состав СКД:**

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

- Запрос – содержит запрос к базе данных на языке запросов с использованием дополнительных синтаксических элементов (расширений)
- Объект – содержит информацию о внешнем наборе данных, например, таблице значений;
- Объединение – объединяет информацию из нескольких наборов данных.

Связи наборов данных.  
Используется для описания правил объединения наборов данных. Аналог соединения и объединения в языке запросов.

Вычисляемые поля.

Ресурсы.  
Групповые итоговые данные. В большинстве случаев необходимо указывать.

Параметры.   
Параметры для набора данных, обычно задается пользователем.

Макеты.

Вложенные схемы.  
Использование данных одного отчета внутри другого.

Настройки.   
Определение стандартных настроек. Аналогичное окно при пользовательской настройке.

# Книги

[Хрусталева Е. Ю. Разработка сложных отчетов](http://bobrobotirk.ru/attachments/8)

# Алгоритм преобразования задачи в реализацию

Дано: есть представление в голове заказчика, как должен выглядеть отчет (таблицы, диаграммы).

**Шаг 1.** В 1С каждый отчет работает только с одной таблицей данных. Использование нескольких независимых (или почти независимых) таблиц достигается за счет вложенных схем и возможной передачи параметров из основной схемы во вложенную. Здесь начинается искусство, похожее на создание классов в нормальных языках: вариантов много, нужно выбрать более простой с одной стороны и функциональный с другой.

Результат: разделение всех необходимых данных на независимые таблицы. ВАЖНО. Под независимой таблицей данных отчета понимается таблица, получившаяся в результате шага 2, т е это может быть объединение нескольких таблиц базы.

**Шаг 2.** За счет наборов данных, связей наборов данных, вычисляемых полей, ресурсов и параметров получаем сырую таблицу, но полностью включающую в себя все строки и столбцы. Деталь: есть группировка на уровне запроса (при создании набора данных через запрос) и группировка на уровне настройки отчета. При работе с отчетами, в наборе данных нужно получать сырую таблицу, без группировок/итоговых расчетов.

Результат: неоформленная таблица с необходимыми данными и полями настроек.

**Шаг 3.** При помощи Настроек используя Макет (один из стандартных или созданный вручную), создается внешнее оформление.

**Шаг 4.** Сборка всего вместе и наслаждение результатом.

# Макеты

**Добавление параметра макета в отчёт:** Для ячейки макета, в которой будет отображаться поле, в палитре свойств установить свойство «Заполнение» в «Параметр». В качестве значения свойства «Параметр» установить имя параметра макета. Затем в списке параметров макета установить в качестве выражения представление выводимого поля.