КулЛиб - Классная библиотека! Скачать книги бесплатно 

Разработка сложных отчетов в 1С:Предприятии 8. Система компоновки данных [Елена Юрьевна Хрусталева] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]
Хрусталева Е.Ю.

Разработка сложных отчетов
в "1С:Предприятии 8".
Система компоновки данных. Издание 2
Электронная книга в формате pdf; ISBN 978-5-9677-2509-8.
Электронный аналог издания "Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки
данных " (ISBN 978-5-9677-1698-0, М.: ООО "1С-Паблишинг", 2012; артикул печатной книги по прайслисту фирмы "1С": 4601546097569; по вопросам приобретения печатных изданий издательства
"1С-Паблишинг" обращайтесь к партнеру "1С", обслуживающему вашу организацию, или к другим
партнерам фирмы "1С").

Книга адресована разработчикам прикладных решений в системе «1С:Предприятие
8». Она позволяет самостоятельно изучить возможности системы компоновки
данных.
Для начинающих разработчиков в книге описывается устройство системы
компоновки данных, приводятся простые примеры создания отчетов, снабженные
большим количеством иллюстраций и комментариев.
Значительная часть книги посвящена выполнению практических примеров создания
и настройки сложных отчетов. Эти примеры можно использовать для того, чтобы
попрактиковаться в создании и модификации отчетов, использующих систему
компоновки данных.
Для опытных разработчиков книга содержит подробное описание отдельных
возможностей системы компоновки данных. Эту часть книги можно использовать в
качестве справочного пособия или для более глубокого изучения возможностей
механизма.
Для создания примеров использована платформа «1С:Предприятие» версии
8.2.15.301.
Несмотря на то, что книга готовилась для «1С:Предприятие 8.2», она является
актуальной и для версии 8.3, некоторые доработки, выполненные в версии 8.3, в ней
не рассмотрены, т.к. написана она до выхода этой версии.
Дополнительные материалы
Приложение к книге включает демонстрационные конфигурации, иллюстрирующие
примеры, рассматриваемые в книге. Таким образом, можно самостоятельно
воспроизвести или доработать любой пример из книги, используя имеющиеся
готовые решения. Демонстрационные конфигурации можно установить на
коммерческую или учебную версию 1С:Предприятия.
Скачайте материалы и учебную версию на странице http://its.1c.ru/book_demo/,
раскройте архив и следуйте инструкциям по установке.
Книга выпущена под редакцией Максима Радченко.
Интернет-конференция для начинающих разработчиков
http://devtrainingforum.v8.1c.ru/forum.

Оглавление
Предисловие .........................................................................................................7
Кому предназначена эта книга .......................................................................................................7
Источники информации ..................................................................................................................7
Как читать .........................................................................................................................................7
Структура .........................................................................................................................................8
Что находится на компакт-диске ...................................................................................................8
Глава 1. Устройство системы компоновки данных ........................................9
Схема компоновки данных............................................................................................................12
Наборы данных .........................................................................................................................13
Связи наборов данных..............................................................................................................13
Вычисляемые поля ...................................................................................................................14
Ресурсы ......................................................................................................................................14
Параметры .................................................................................................................................15
Макеты .......................................................................................................................................16
Вложенные схемы .....................................................................................................................16
Настройки...................................................................................................................................17
Пример изменения настроек ........................................................................................................21
Глава 2. Примеры разработки отчетов ...........................................................27
Исходные данные для примеров .................................................................................................27
Пример 1. Набор данных – запрос ...............................................................................................28
Визуальное конструирование ...................................................................................................29

4

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Варианты отчета .......................................................................................................................37
Настройка отдельных группировок ..........................................................................................42
Пример 2 ........................................................................................................................................48
Вычисляемые поля ...................................................................................................................49
Параметры. Период отчета ......................................................................................................50
Быстрые пользовательские настройки....................................................................................53
Системные поля ........................................................................................................................55
Обязательность использования параметров ..........................................................................57
Пример 3. Связь наборов данных ................................................................................................58
Пример 4. Связь таблиц внутри набора данных.........................................................................64
Связывание таблиц в запросе ................................................................................................65
Программный запуск отчета .....................................................................................................69
Пример 5. Набор данных – объединение ....................................................................................72
Пример 6. Автоматическое формирование отчета ....................................................................78
Пример 7. .......................................................................................................................................81
Передача параметров в запрос набора данных....................................................................84
Программная установка параметров отчета...........................................................................90
Пример 8. ......................................................................................................................................92
Извлечение данных по периодам ............................................................................................93
Интерактивное оформление отчета .......................................................................................99
Пример 9. Свободная структура таблицы отчета .....................................................................106
Пример 10. ................................................................................................................................... 112
Связь наборов данных по периодам ..................................................................................... 114
Функциональные опции .......................................................................................................... 119
Пример 11.....................................................................................................................................126
Характеристики в отчете .......................................................................................................127
Вывод данных в диаграмму ..................................................................................................129
Пример 12. ...................................................................................................................................135
Детализация в выбранном периоде .....................................................................................135
Выражения для представления полей .................................................................................138
Характеристики в метаданных ..............................................................................................142
Вывод всех дат в периоде .....................................................................................................147
Пример 13. ...................................................................................................................................152
Пользовательские поля ..........................................................................................................155
Вложенный отчет.....................................................................................................................157
Пример 14. ...................................................................................................................................167
Расчет итогов по полям остатка ...........................................................................................171
Вывод в диаграмму нескольких ресурсов ............................................................................177
Пример 15. ...................................................................................................................................183
Набор данных – объект...........................................................................................................183
Программная компоновка .......................................................................................................189

Оглавление

5

Общий макет оформления .....................................................................................................192
Макет оформления в схеме компоновки ..............................................................................196
Пример 16. ...................................................................................................................................203
Вывод иерархических данных ................................................................................................203
Вывод данных в собственной иерархии...............................................................................204
Стандартная расшифровка полей отчета .............................................................................210
Переопределение поля для расшифровки ........................................................................... 211
Изменение действий расшифровки .......................................................................................215
Пример 17. ...................................................................................................................................218
Язык выражений ......................................................................................................................219
Вывод отчета в общую форму ..............................................................................................228
Фоновое выполнение отчета ..................................................................................................232
Пример 18. Работа с системой компоновки данных из встроенного языка ..........................233
Заполнение наборов данных и компоновка отчета ..............................................................237
Настройка отчета ....................................................................................................................240
Описание схемы компоновки данных ....................................................................................243
Пример 19. Консоль системы компоновки данных ...................................................................247
Глава 3. Справочник разработчика ...............................................................265
Общие возможности ....................................................................................................................265
Получение итогов по всем датам в выбранном периоде .................................................265
Характеристики........................................................................................................................276
Иерархия ..................................................................................................................................291
Расшифровка ...........................................................................................................................309
Расчет итогов по полям остатка.............................................................................................320
Связи наборов данных............................................................................................................325
Расчет итогов...........................................................................................................................332
Использование нескольких схем компоновки для одного отчета .......................................336
Многоязычные отчеты ............................................................................................................339
Поля ..............................................................................................................................................347
Автоматическое заполнение полей .......................................................................................347
Использование автополей ......................................................................................................353
Переопределение представления полей ..............................................................................357
Вычисляемые поля .................................................................................................................359
Пользовательские поля ..........................................................................................................363
Роли полей ...............................................................................................................................366
Поля-реквизиты .......................................................................................................................369
Функциональные опции и права на просмотр поля в отчете ...............................................370
Ресурсы ........................................................................................................................................372
Параметры ...................................................................................................................................378
Использование дат..................................................................................................................379
Использование стандартных периодов .................................................................................380

6

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Макеты..........................................................................................................................................382
Предопределенные макеты ...................................................................................................383
Макеты оформления ...............................................................................................................396
Настройки отчета.........................................................................................................................401
Конструктор настроек ..............................................................................................................401
Варианты отчета .....................................................................................................................404
Пользовательские настройки .................................................................................................409
Хранилище вариантов и хранилище пользовательских настроек ......................................414
Фиксированные настройки......................................................................................................419
Упорядочивание ......................................................................................................................420
Отбор ........................................................................................................................................425
Расположение реквизитов ......................................................................................................430
Настройка группировок ...........................................................................................................432
Расположение ресурсов .........................................................................................................457
Расположение группы выбранных полей ..............................................................................460
Заголовки выбранных полей ..................................................................................................462
Расположение общих итогов ..................................................................................................462
Отображение заголовков, параметров данных и отборов ...................................................466
Настройки диаграмм ...............................................................................................................469
Условное оформление............................................................................................................472
Работа с системой компоновки средствами встроенного языка .............................................476
Установка схемы компоновки данных ...................................................................................476
Редактирование стандартных настроек ...............................................................................477
Работа с параметрами схемы компоновки............................................................................479
Редактирование настроек схемы компоновки .....................................................................480
Редактирование настроек не основной схемы компоновки ................................................481
Вывод отчета ...........................................................................................................................482
Вывод в дерево значений, таблицу значений
для дальнейшей программной обработки.............................................................................483

Предисловие
Кому предназначена эта книга
Целью автоматизации хозяйственной деятельности любой фирмы в конечном
итоге является формирование разнообразной отчетности, удовлетворяющей интересам бухгалтерского, финансового и административного учета.
Для решения этой задачи в платформе «1С:Предприятие» используется
специальный механизм построения аналитической отчетности – cистема
компоновки данных, который рассмотрен в этой книге.

Источники информации
При создании этой книги использовались различные источники информации:
■ материалы информационно-технологической поддержки (ИТС) фирмы
«1С»;
■ материалы конференции партнеров-разработчиков на http://partners.v8.1c.ru;
■ материалы независимых интернет-конференций, посвященных разработке
в системе «1С:Предприятие 8».

Как читать
В книге доступно, шаг за шагом описана работа с системой компоновки
данных. Рассматривается ее общее назначение, и демонстрируются ее разнообразные свойства на многочисленных примерах, основанных на реальных

8

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

задачах и построенных по принципу от простого к сложному. Примеры
содержатся в демонстрационной информационной базе, прилагающейся
к книге. Кроме того, даны ответы на наиболее часто встречающиеся вопросы
разработчиков на партнерских конференциях и других интернет-форумах
по данной теме.
Книгу можно читать как последовательно, так и только отдельные ее главы
в зависимости от потребностей читателя.
Для достаточно опытных разработчиков, а также тех, кто не имеет времени
и желания разбираться во всех деталях системы компоновки данных, будут
полезны общая теоретическая информация о механизме из первой главы
и информация обо всех возможностях и тонкостях системы компоновки
из третьей главы (стр. 265).
Разработчикам, не знакомым с системой компоновки данных и имеющим
мало опыта разработки в «1С:Предприятии», рекомендуется начинать читать
книгу с первой главы, а также поупражняться в создании отчетов, описанных
во второй главе (стр. 27).
Читателям, желающим получить наиболее полное представление о системе
компоновки данных и опыт работы с ней, советуем читать книгу последовательно и внимательно, подробно разбирая заинтересовавшие примеры.

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

Что находится на компакт-диске
1Cv8.dt – файл выгрузки демонстрационной информационной базы с примерами отчетов, описанных в книге.

Глава 1. Устройство
системы компоновки
данных
В данной главе описывается общее устройство системы компоновки данных,
рассматривается последовательность и назначение каждого этапа компоновки. Подробно описываются все составляющие схемы компоновки данных,
структура отчета и его настроек.
Система компоновки данных – мощный и гибкий инструмент для создания
отчетов на основе их декларативного описания. Использование декларативного описания отчетов позволяет реализовать следующие возможности:










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

10

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ совмещение в отчете нескольких таблиц,
■ создание вложенных отчетов и др.
Система компоновки данных состоит из набора элементов, каждый
из которых имеет свое декларативное описание, возможность программного
доступа и сериализации, то есть сохранения в XML или загрузки из XML.
Это позволяет гибко управлять всеми этапами выполнения отчета.
Формирование отчета с использованием системы компоновки данных разбивается на несколько этапов. При этом разбиение на этапы – не логическое,
а физическое. То есть в каждый из этих этапов разработчик может вмешаться,
программно или визуально, выполнить различные этапы компоновки данных
в различных модулях и даже на различных компьютерах (рис. 1.1).

Рис. 1.1. Схема взаимодействия объектов системы компоновки данных

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

Глава 1. Устройство системы компоновки данных

11

состоит из массива элементов, которые можно получать последовательно,
но в большинстве случаев результат компоновки получается целиком.
4. Процессор вывода обрабатывает результат компоновки и выводит его
в различные форматы:
□ табличный документ,
□ HTML-документ,
□ таблица значений,
□ дерево значений.
Процесс разработки отчета с помощью системы компоновки данных и его
дальнейшего использования на практике реализуется следующим образом.
Исходя из прикладной задачи, для которой разрабатывается отчет, разработчик создает схему компоновки данных, в которой описывает наборы
данных, связи между ними, определяет поля отчета, параметры получения
данных и т. п., а также задает стандартные настройки компоновки данных –
структуру отчета, порядок, отбор и другие.
У каждого отчета разработчик может предусмотреть несколько вариантов
настроек, представляющих данные в виде диаграммы, таблицы или группировок, имеющих различный состав полей, итогов и т. п. Разработчик может
описать, какие настройки отчета будут доступны пользователю (пользовательские настройки) и какие из этих настроек будут присутствовать прямо
в форме отчета (быстрые пользовательские настройки). С их помощью
пользователь может настроить вариант отчета под себя и сохранить его для
дальнейшего использования.
Пользователь запускает отчет. При его формировании выполняется
программная компоновка данных и вывод результатов компоновки пользователю. Данные в отчете выводятся в соответствии со стандартными
настройками для основного варианта отчета.
Пользователь может выбрать вариант отчета, являющийся с его точки зрения
наиболее информативным, а может, при желании и соответствующей квалификации, задать собственные настройки и получить другой отчет, основанный
на той же схеме компоновки данных. При этом данные будут представлены
в соответствии с пользовательскими настройками.
Таким образом, на основе одной схемы компоновки данных может быть
получено множество различных отчетов. Применение настроек компоновки
данных, созданных разработчиком или измененных пользователем, к схеме
компоновки данных и определяет конечный результат. Этот процесс может
быть представлен с помощью следующей схемы (рис. 1.2).

12

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 1.2. Схема разработки и использования отчета
с помощью системы компоновки данных

Схема компоновки данных
Основой для компоновки отчета является схема компоновки данных. Создание
схемы компоновки данных может быть выполнено:
■ визуально при помощи конструктора схемы компоновки данных;
■ визуально при помощи любого редактора, позволяющего редактировать
текст XML;
■ программно при помощи объектов встроенного языка системы
«1С:Предприятие».
Схема компоновки данных содержит следующие разделы:









наборы данных,
связи наборов данных,
вычисляемые поля,
ресурсы,
параметры,
макеты,
вложенные схемы,
настройки.

Глава 1. Устройство системы компоновки данных

13

Наборы данных
Наборы данных являются источниками данных для отчета и описывают
способ получения этих данных. Данные можно получить из информационной базы или из некоторых объектов, находящихся в памяти (например,
из таблицы значений). Один отчет может использовать одновременно
несколько наборов данных, отбирая, объединяя и связывая между собой
данные из разных наборов.
Существуют различные виды наборов данных. Они отличаются тем, откуда
получаются данные и как эти данные обрабатываются:
■ Запрос – содержит запрос к базе данных на языке запросов с использованием дополнительных синтаксических элементов (расширений);
■ Объект – содержит информацию о внешнем наборе данных, например,
таблице значений;
■ Объединение – объединяет информацию из нескольких наборов данных.
Разработчик, создавая схему компоновки данных, может добавить в нее
наборы данных такого вида и в таком количестве, которые ему необходимы. В зависимости от вида набора данных нужно выполнить различные
действия для того, чтобы отчет мог использовать данные этого набора.
Например, если используется набор данных – запрос, то в схеме компоновки
данных нужно задать текст запроса, обращающегося к информационной базе
«1С:Предприятия». Если используется набор данных – объект, то в схеме
компоновки нужно описать поля этого набора данных, чтобы система компоновки знала, данные какого типа будут получены из этого набора, затем
с помощью встроенного языка создать внешний набор данных и инициализировать им процессор компоновки данных. Если используется набор
данных – объединение, то в схеме компоновки данных нужно описать
наборы данных, которые входят в это объединение.
Типичные сценарии использования наборов данных содержатся в первых
четырех примерах второй главы стр. 27.

Связи наборов данных
Схема компоновки данных может содержать несколько наборов данных.
В случае, когда требуется получить связанную информацию из этих
наборов, в схеме компоновки данных описывается их связь по какому-то
полю. При связывании наборов данных в схеме компоновки используется
Левое соединение.
Однако в случае, если требуется вывести в отчет все записи из обоих
наборов данных, используется набор данных – объединение. Такой набор
содержит два или более подчиненных набора данных, но информация в них

14

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

не связывается, а объединяется. По аналогии с языком запросов в этом
случае используется Объединение.
Отличие связывания и объединения наборов данных рассматривается
во второй главе на стр. 77.

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

Рис. 1.3. Вывод в отчете вычисляемого поля

Ресурсы
При исполнении отчета с помощью системы компоновки данных из источника данных, например из информационной базы данных, извлекаются
данные для отчета. В базе данных они представлены в виде таблиц. Соответственно, все эти данные можно построчно вывести в отчет. Это детальные
записи. Но поскольку, как правило, эти данные привязаны к некоторым иерархическим данным (например, в отчет выводятся остатки номенклатуры,
где номенклатура содержит многоуровневые группы), то возникает желание
сгруппировать записи в отчете и показать остатки номенклатуры по группам
(например, сколько на складе телевизоров определенной марки и сколько
телевизоров в целом). Для этого система компоновки данных может рассчитывать и добавлять в отчет записи, которые называются итоговыми. Этих
записей в явном виде нет в базе данных, но они получаются в результате
исполнения отчета, на основании некоторой обработки детальных записей,
которую выполняет система компоновки данных.
Эти групповые итоговые данные называются ресурсами схемы компоновки
данных (стр. 370). Обычно данные в отчете группируются по каким-то

Глава 1. Устройство системы компоновки данных

15

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

Рис. 1.4. Вывод ресурсов в группировке

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

Рис. 1.5. Вывод ресурсов в таблице

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

Параметры
Параметры являются критериями получения данных для отчета (стр. 376).
Параметры могут быть явно определены в запросе, например вид номенклатуры (&ВидНоменклатуры), а могут быть параметрами виртуальных таблиц
базы данных, например начало и конец отчетного периода. Как правило, параметры выводятся пользователю перед формированием отчета. Затем заданные
пользователем значения параметров передаются в отчет, и отчет формируется заново, например с новым отчетным периодом (рис. 1.6).

16

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 1.6. Вывод в отчете параметров отчетного периода

Макеты
По умолчанию внешний вид отчета формируется системой автоматически.
Но разработчик может задать собственное расположение и оформление
различных областей отчета. Для этого в схеме компоновки данных создаются
предопределенные макеты (стр. 381). В отличие от стандартных макетов оформления, предопределенные макеты привязаны к одному отчету, его конкретным
полям и структуре. Можно создавать макеты отдельных полей, группировок,
итоговых полей и ресурсов отчета. В приведенном примере группировка
по номенклатуре оформлена с помощью предопределенного макета (рис. 1.7).

Рис. 1.7. Макет группировки «Номенклатура»

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

Глава 1. Устройство системы компоновки данных

17

Рис. 1.8. Вывод вложенного отчета

Пример использования вложенного отчета рассматривается во второй главе
на стр. 157.

Настройки
В схеме компоновки данных разработчик задает стандартные настройки,
которые определяют, как первоначально будет выглядеть отчет, определяет
его иерархическую структуру и настройки как отчета в целом, так и его
отдельных элементов.
Практически то же самое окно настроек, что и в схеме компоновки
данных, будет доступно и пользователю при исполнении отчета в режиме
1С:Предприятие по команде Все действия  Изменить вариант… Но пользоваться этим окном рекомендуется лишь очень опытному пользователю,
понимающему, что он делает.
Иерархическая структура отчета состоит из следующих элементов:
■ Группировка – предназначена для вывода информации в виде обычного
линейного отчета (рис. 1.9).

Рис. 1.9. Вывод группировки

18

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ Таблица – предназначена для вывода информации в виде таблицы
(рис. 1.10).

Рис. 1.10. Вывод таблицы

■ Диаграмма – предназначена для вывода информации в виде диаграммы
(рис. 1.11).

Рис. 1.11. Вывод диаграммы

■ Вложенный отчет – предназначен для вывода вложенного отчета
(см. рис. 1.8).
На первый взгляд элементы структуры отчета Группировка и Таблица похожи.
Но в таблице информация группируется по строкам и по столбцам, а на их
пересечении выводятся групповые итоговые данные – ресурсы. А также
рассчитываются общие итоги по вертикали и горизонтали. В группировке
данные группируются по строкам, и общие итоги рассчитываются только
по вертикали. Группировку можно вывести в табличном виде (горизонтально), а можно – в виде вертикального списка.

Глава 1. Устройство системы компоновки данных

19

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

Рис. 1.12. Настройка списка полей отчета

■ Отбор – с помощью этого элемента настроек разработчик или пользователь может определить условия фильтрации записей в отчете (рис. 1.13).

Рис. 1.13. Настройка отбора

■ Порядок – с помощью этого элемента настроек разработчик или пользователь может определить порядок записей в отчете (рис. 1.14).

Рис. 1.14. Настройка сортировки

20

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ Параметры – с помощью этого элемента настроек разработчик или пользователь может задать значения параметров отчета (рис. 1.15).

Рис. 1.15. Настройка параметров данных

■ Пользовательские поля – с помощью этого элемента настроек пользователь может создать собственные дополнительные поля (рис. 1.16).

Рис. 1.16. Создание пользовательских полей

■ Условное оформление – с помощью этого элемента настроек разработчик
или пользователь может задать условия оформления записей в отчете
(рис. 1.17).

Рис. 1.17. Настройка условного оформления

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

Рис. 1.18. Настройка параметров вывода

Глава 1. Устройство системы компоновки данных

21

В следующем разделе познакомимся с настройками более подробно
на примере конкретного отчета.

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

Рис. 1.19. Отчет «Остатки номенклатуры», первоначально настроенный разработчиком

22

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Структура отчета, созданная разработчиком, имеет вид (рис. 1.20).

Рис. 1.20. Структура отчета в окне настроек

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

Отчет в структуре элементов отчета, нажмем кнопку Добавить в командной

панели окна настроек, добавим новую группировку и укажем поле группировки Склад. Сравним ее с группировкой Детальные записи (рис. 1.21,
1.22).

Рис. 1.21. Выбор поля группировки

Мы видим, что в нижней группировке (Склад) присутствуют только две
записи, то есть данные в отчете сгруппированы по складам. Однако это не
таблица, а группировка, представленная в табличном виде. Если задать
значение параметра вывода Тип макета – Вертикально, то те же данные будут
представлены в виде вертикального списка (рис. 1.23).

Глава 1. Устройство системы компоновки данных

23

Рис. 1.22. Детальные данные отчета «Остатки номенклатуры» и данные,
сгруппированные по складам

Рис. 1.23. Данные отчета «Остатки номенклатуры», сгруппированные по складам,
представленные в виде вертикального списка

В средней части отчета (см. рис. 1.19) находится элемент структуры отчета
Таблица, где по строкам данные группируются по полю Номенклатура, а по
столбцам – по полю Склад. На пересечении строк и столбцов, в ячейках
таблицы, находятся групповые итоговые данные – ресурсы, например,
остаток конкретного товара на конкретном складе. Таким образом, элемент

24

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

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

Рис. 1.24. Добавление вложенной группировки «Номенклатура» в группировку «Склад»

В режиме 1С:Предприятие командой Все действия  Изменить вариант…
пользователь может изменить настройки отчета, его структуру, отбор, упорядочивание записей, оформление и т. п. Настройки отчета могут относиться
как ко всему отчету в целом, так и к его отдельным элементам – группировкам, таблицам, диаграммам (стр. 42). Например, пользователь может
для элемента отчета Номенклатура установить сортировку по полю Конечный
остаток. У каждого элемента настроек есть признак использования в отчете –
флажок слева от его названия. Допустим, пользователь не хочет видеть
в отчете диаграмму. Для этого достаточно просто снять флажок использования у данного элемента структуры отчета. Аналогично можно отключить
в настройках любое поле, отбор, параметр и т. п. В результате сделанных
изменений настройки отчета примут вид, как на рис. 1.25.
Результат выполнения отчета с новыми настройками будет выглядеть, как
на рис. 1.26.

Глава 1. Устройство системы компоновки данных

Рис. 1.25. Окно для редактирования пользовательских настроек

Рис. 1.26. Изменение отчета с помощью пользовательских настроек

25

26

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Очевидно, что обе таблицы очень схожи между собой. Но поскольку первая
таблица представляет собой результат вывода группировки Склад и вложенной
в нее группировки Номенклатура, то данные в ней группируются только
по строкам, и общие итоги выводятся только по вертикали. В соответствии
с новыми настройками записи первой таблицы внутри группировки Номенклатура отсортированы по возрастанию поля Конечный остаток, и диаграмма
в отчет не выводится.
Помимо изменения стандартных настроек в основном варианте отчета пользователь может создать собственный вариант настроек (стр. 37) и затем
сохранить его (Все действия  Сохранить вариант). Например, можно переместить диаграмму в новый вариант отчета, затем перед формированием отчета
выбрать этот вариант, нажав кнопку Выбрать вариант…, и получить отчет,
содержащий только диаграмму остатков номенклатуры.
Однако следует иметь в виду, что окно полных настроек отчета, вызываемое
по команде Все действия  Изменить вариант…, предназначено лишь для хорошо
подготовленного, опытного пользователя. Для большинства же пользователей
следует помещать необходимые им настройки в состав пользовательских
настроек, которые будут доступны в отдельном окне по команде Настройка.
При этом наиболее часто используемые настройки должны быть быстрыми,
то есть располагаться непосредственно в отчетной форме (стр. 99).
При этом для каждого варианта отчета пользователь может создать свои
комбинации пользовательских настроек и сохранить их для дальнейшего
использования (Все действия  Сохранить настройку…). Затем пользователь
может вернуться к этим настройкам, выполнив команду Все действия  Выбрать

настройку…

ВНИМАНИЕ
Сохранение и последующая загрузка пользовательских настроек очень
удобны для пользователя, потому что ему не приходится каждый раз
редактировать настройки вручную. Однако пользователь может выбирать
только те настройки, которые он сам сохранил.

Глава 2. Примеры
разработки отчетов
Данная глава содержит набор практических примеров, основанных
на реальных задачах. Она будет полезна как для начинающих разработчиков,
так и для специалистов, желающих углубить свои знания и навыки по разработке отчетов с помощью системы компоновки данных.

Исходные данные для примеров
Разрабатываемые нами отчеты будут базироваться на данных о хозяйственной
деятельности небольшой фирмы, которая оказывает услуги по сборке,
ремонту и продаже компьютеров и комплектующих к ним.
Приобретение комплектующих отражается в документах ПриходнаяНакладная. Предоставление компьютерных услуг, продажа комплектующих
и собранных системных блоков отражаются в документах РасходнаяНакладная. Оба эти документа формируют движения в регистре накопления
ОстаткиНоменклатуры, который имеет вид Остатки и содержит два измерения –
Номенклатура и Склад и ресурсы – Количество и Цена.
Сборка готовых системных блоков отражается в документах СборкаКомпьютера, который формирует движения типа Приход в регистре
накопления СобранныеСБ. Этот регистр имеет вид Остатки и содержит два
измерения – СБ и Склад, ресурсы – Количество и Стоимость и реквизит – Мастер.

28

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Одновременно при проведении этого документа формируются движения типа
Расход в регистре ОстаткиНоменклатуры. Здесь отражаются комплектующие,
которые были израсходованы при сборке.
Документы РасходнаяНакладная также формируют движения в регистре
накопления Продажи. Этот регистр имеет вид Обороты и содержит два измерения – Номенклатура и Контрагент и ресурсы – Количество и Стоимость.
Документы ПриходнаяНакладная также формируют движения в регистре
сведений Цены. Этот регистр является периодическим и имеет измерение
Номенклатура и ресурс Цена.
В базе данных также содержится регистр сведений ДополнительныеХарактеристики для хранения значений характеристик объектов. Этот регистр
является непериодическим и имеет два измерения – Объект и ВидХарактеристики и ресурс – ЗначениеХарактеристики.

Пример 1. Набор данных – запрос
Практическое знакомство с системой компоновки данных начнем спростого
отчета, целиком реализованного с помощью визуальных средств разработки.
В этом примере подробно, шаг за шагом описываются действия разработчика
по визуальному конструированию отчета с помощью системы компоновки
данных. В следующих примерах эти действия будут лишь кратко перечисляться. Поэтому данный пример будет полезен для новичков, не знакомых
с системой компоновки данных, а остальным просто позволит вспомнить
некоторые моменты разработки отчетов.
После создания отчета мы разработаем другой вариант этого же отчета и на
нем покажем возможности настройки отдельных элементов отчета.
Итак, разработаем отчет, который будет отражать приход, расход и остатки
номенклатуры на складах (рис. 2.1).

Рис. 2.1. Требуемый вид отчета

ПРИМЕЧАНИЕ
Все действия, описанные в этой главе и далее, будут выполняться
на демонстрационной конфигурации, прилагающейся к книге на компактдиске.

Глава 2. Примеры разработки отчетов

29

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

Рис. 2.2. Окно редактирования объекта конфигурации «Отчет»

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

Рис. 2.3. Конструктор макета

30

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Нажмем кнопку Готово. Платформа создаст макет отчета, содержащий схему
компоновки данных, которая в дальнейшем будет доступна на закладке
свойств отчета Макеты наряду с другими макетами отчета.
Затем конструктор макета откроет окно конструктора схемы компоновки
данных. В нем происходит основная работа по визуальному конструированию отчета. Для этого конструктор предоставляет массу разнообразных
возможностей. Но мы пока рассмотрим лишь те из них, которые понадобятся
в нашем отчете. Остальные возможности по мере усложнения будут представлены в других примерах.
Любой отчет основывается на данных, извлекаемых из каких-либо источников по определенным условиям и параметрам. Мы рассмотрим наиболее
простой случай, когда используется один набор данных. Он будет содержать
запрос к базе данных, сформулированный на специальном языке – языке
запросов.
Итак, на закладке Наборы данных добавим новый набор данных – запрос
(рис. 2.4).

Рис. 2.4. Добавление набора данных в окне конструктора схемы компоновки данных

В правом нижнем окне конструктора схемы компоновки данных мы можем
создавать и редактировать текст запроса. Текст запроса можно написать
вручную, но гораздо проще сделать это с помощью конструктора запроса,
нажав кнопку Конструктор запроса (рис. 2.5).

Рис. 2.5. Вызов конструктора запроса

Глава 2. Примеры разработки отчетов

31

Конструктор запроса позволяет визуально конструировать запрос. Даже пользователь, не знакомый с языком запросов, может с помощью конструктора
создать синтаксически правильный запрос.
Мы пока рассмотрим лишь основную закладку конструктора Таблицы и поля.
Остальные возможности по мере усложнения будут представлены в других
примерах. Сначала в списке База данных нам нужно выбрать таблицы, с которыми будет работать запрос. Раскроем ветку Регистры накопления, здесь мы
видим объектную таблицу ОстаткиНоменклатуры, в которой накапливаются
данные об остатках номенклатуры. Ниже находятся несколько виртуальных
таблиц, созданных платформой. Так как в нашем отчете будут отражаться
как остатки, так и данные о приходе и расходе номенклатуры, то очевидно
нам нужна таблица ОстаткиНоменклатуры.ОстаткиИОбороты. Выделим ее.
ПРИМЕЧАНИЕ
Выделенные элементы можно перенести из одного списка в другой
перетаскиванием мышью или двойным щелчком на них. Либо можно
, ,
,
.
использовать кнопки

Перенесем выделенную таблицу в список Таблицы. Раскроем ее. Здесь
отобразятся все доступные для выбора поля этой таблицы. Затем перенесем
в список Поля нужные нам в отчете поля таблицы:
■ Номенклатура,
■ Склад,
■ КоличествоНачальныйОстаток,
■ КоличествоКонечныйОстаток,
■ КоличествоПриход,
■ КоличествоРасход.
Итак, в результате наших действий окно конструктора запроса примет вид
(рис. 2.6).

Рис. 2.6. Выбор данных для запроса

32

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Нажмем ОК и вернемся в конструктор схемы компоновки данных (рис. 2.7).

Рис. 2.7. Конструктор схемы компоновки данных

Итак, мы добавили набор данных – запрос и создали текст запроса, выбирающего данные из информационной базы «1С:Предприятия». Текст
запроса отображается в поле Запрос. Здесь его можно вручную отредактировать или снова вызвать Конструктор запроса для внесения в него изменений.
Так как свойство Автозаполнение включено, платформа автоматически заполнила список доступных полей текущего набора данных исходя из запроса
(стр. 346).
Пока мы не будем рассматривать другие возможности конструктора схемы
компоновки данных, а приступим к настройке отчета, то есть к формированию его структуры и внешнего вида.
Представим наш отчет в виде таблицы, где по строкам данные группируются по позициям номенклатуры, а в колонках – по позициям складов.
Групповые итоговые данные – Ресурсы (стр. 370), например остаток
конкретного товара на конкретном складе, выводятся в ячейках таблицы.

Глава 2. Примеры разработки отчетов

33

Поэтому для того, чтобы увидеть какие-либо значения в таблице, мы должны
определить ресурсы схемы компоновки данных.
ВНИМАНИЕ
Для всех отчетов, где выводятся итоговые данные по каким-либо
группировкам, нужно определить поля ресурсов отчета! Итоговые данные
формируются на закладке Ресурсы.

На закладке Ресурсы схемы компоновки данных в списке Доступные поля
расположены все поля из текущего набора данных отчета. Нажмем кнопку
, чтобы конструктор выбрал все доступные ресурсы, по которым можно
вычислять итоги (рис. 2.8).

Рис. 2.8. Выбор ресурсов отчета

ПРИМЕЧАНИЕ
Поля в список ресурсов можно перенести из списка доступных полей
перетаскиванием мышью или двойным щелчком на них. Либо можно
, ,
,
.
использовать кнопки

В колонке Выражение здесь содержится выражение, по которому будет вычисляться значение ресурса. По умолчанию предлагается функция Сумма,
но доступны и другие распространенные функции агрегирования данных
(см. рис. 2.8).
Теперь перейдем на закладку Настройки и создадим стандартные настройки,
определяющие, как будет выводиться информация в отчет.
Напомним, что иерархическая структура отчета содержит три основных
элемента:
■ Группировка – для вывода информации в виде обычного линейного
отчета;

34

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ Таблица – для вывода информации в виде таблицы;
■ Диаграмма – для вывода информации в виде диаграммы.
Выделим корневой элемент Отчет и добавим в него новую таблицу. Для этого
нужно нажать кнопку Добавить, расположенную в командной панели окна,
или правой кнопкой мыши вызвать контекстное меню элемента Отчет
(рис. 2.9).

Рис. 2.9. Добавление новой таблицы в отчет

В структуре отчета появится элемент Таблица, включающий в себя Строки
и Колонки. Выделим элемент Строки и нажмем кнопку Добавить в командной
панели или клавишу Ins для добавления новой группировки. В появившемся
окне выбора поля группировки выберем поле Номенклатура (рис. 2.10).
ПРИМЕЧАНИЕ
Для выбора поля группировки следует нажать кнопку выбора в строке
и выбрать нужное поле из списка доступных полей. Также можно
использовать механизм «ввод по строке» и ввести в строку Поле первые
буквы имени поля, а платформа выполнит автоподстановку.
Поле

Аналогичным образом в колонки таблицы добавим группировку по полю
Склад. Таким образом мы указали, что в строках таблицы данные будут группироваться по позициям номенклатуры, а в колонках – по позициям складов.

Глава 2. Примеры разработки отчетов

35

Рис. 2.10. Окно выбора группировки

На закладке Выбранные поля перенесем мышью из списка доступных полей
поля, которые будут выводиться в отчет:





КоличествоНачальныйОстаток,
КоличествоПриход,
КоличествоРасход,
КоличествоКонечныйОстаток.

ПРИМЕЧАНИЕ
Добавление доступных полей в список выбранных полей можно
осуществить перетаскиванием мышью, двойным щелчком на доступных
полях либо нажатием кнопки Добавить справа от списка выбранных полей.
Порядок выбранных полей можно изменить позже кнопками Вверх, Вниз
или перетаскиванием мышью.

Поля Номенклатура и Склад можно не переносить. Они все равно будут выводиться в отчет в составе автополей группировок (стр. 352).
В результате окно настроек отчета должно принять вид (рис. 2.11).

36

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.11. Окно настроек отчета

Запустим отчет на исполнение в режиме 1С:Предприятие. Нажмем кнопку
Сформировать. Отчет примет следующий вид (рис. 2.12).

Рис. 2.12. Результат отчета

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

Глава 2. Примеры разработки отчетов

37

Таким образом, мы быстро и легко создали простой отчет Остатки номенклатуры, представив данные в виде таблицы. На этом примере мы научились

создавать и настраивать схему компоновки данных для нового отчета
и рассмотрели следующие ее возможности:

■ создание набора данных на основе запроса, используя конструктор
запроса;
■ создание иерархической структуры отчета – добавление таблицы и группировок в отчет;
■ определение ресурсов для расчета групповых итогов отчета.

Варианты отчета
Теперь продемонстрируем возможности различных настроек отчета.
Настройки могут относиться как ко всему отчету в целом, так и к его
отдельным элементам – группировкам, таблицам, диаграммам. Последнее
может быть полезно, чтобы выделить разные элементы индивидуальными
стилями оформления, установить для каждого элемента свой отбор, сортировку и т. д.
ВНИМАНИЕ
При установке настроек отчета в средней части окна, под деревом структуры
отчета, должна быть выделена кнопка, соответствующая режиму настроек.
Кнопка Отчет – для настройки отчета в целом или кнопка с именем
группировки, например Детальные записи, если настройки относятся только
к ней.

Создадим новый вариант отчета Остатки номенклатуры и на его примере
продемонстрируем несколько вариантов настройки различных элементов
структуры отчета.
У одного и того же отчета может существовать несколько вариантов, представляющих одни и те же данные в различном виде. Например, для отчета
Динамика продаж одним вариантом отчета может служить диаграмма, показывающая продажи товаров по периодам, а другим – табличный отчет,
показывающий продажи товаров в разрезе покупателей. При этом каждый
вариант отчета обладает своим набором пользовательских настроек.
Вернемся в конфигуратор и откроем схему компоновки данных на закладке
Настройки. В левой части окна находится список вариантов отчета.
При создании настроек отчета в первый раз система компоновки данных

38

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

по умолчанию создает Основной вариант настроек. Чтобы добавить новый
вариант, нажмем кнопку Добавить над этим списком. Зададим имя варианта
и его представление как Оформление (рис. 2.13).

Рис. 2.13. Добавление нового варианта настроек

Мы видим, что структура отчета и все его настройки очистились. Но они
не пропали, а стали невидимы, так как относятся к основному варианту
настроек. Если у отчета есть несколько вариантов, то мы видим и можем изменять настройки того варианта, который выделен в данный момент. Причем
вся остальная информация в схеме компоновке данных (ресурсы, параметры,
наборы данных) осталась без изменений. Данные для отчета будут получены с помощью того же запроса к базе данных. Изменятся лишь настройки,
которые определят, как будет представлен отчет.
Добавим в структуру отчета новый элемент Группировка и покажем возможности настройки отдельных элементов отчета.
Элемент Группировка позволяет выводить в отчете не только сгруппированную каким-то образом информацию, но и обычные детальные записи,
выбранные платформой из источников данных согласно нашему запросу.
Выделим корневой элемент Отчет и добавим в него новую группировку
(рис. 2.14).

Глава 2. Примеры разработки отчетов

39

Рис. 2.14. Добавление новой группировки в отчет

В появившемся окне выбора поля группировки оставим поле ввода Поле
пустым, так как мы не хотим группировать записи в отчете. Такая группировка называется Детальные записи.
На закладке Выбранные поля перенесем мышью из списка доступных полей
поля, которые будут выводиться в отчет:
■ Номенклатура,
■ Склад,
■ КоличествоНачальныйОстаток,
■ КоличествоПриход,
■ КоличествоРасход,
■ КоличествоКонечныйОстаток.
Сначала продемонстрируем настройки отчета в целом. Дадим заголовок
отчету. Перейдем на закладку Другие настройки. В средней части окна
настроек выделим кнопку Отчет и введем остатки номенклатуры в строку
Заголовок (рис. 2.15).
ПРИМЕЧАНИЕ
Для установки значения параметра настроек нужно выделить двойным
щелчком поле Значение и, нажав кнопку выбора , выбрать из списка
значений нужный вариант. Флажок использования значения при этом
появится автоматически. Его можно также снять и поставить вручную.

40

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.15. Настройка заголовка отчета

Установим для параметра Макет оформления значение Море (стр. 393).
Важным элементом настроек является присвоение более коротких и понятных
для пользователя заголовков полей отчета. Это можно сделать на закладке
Наборы данных.
Мы видим, что так как свойство Автозаполнение включено (стр. 346), платформа автоматически заполнила колонки Поле, Путь и Заголовок полей
текущего набора данных исходя из запроса. Поясним их назначение:
■ в колонке Поле отображается нередактируемое значение имени поля,
которое платформа автоматически сформировала из текста запроса.
Это внутреннее имя поля, использующееся только в тексте запроса;
■ в колонке Путь содержится строка, содержащая путь к данным, по которому к нему можно обратиться в других закладках конструктора схемы
компоновки данных. Оно может быть отредактировано. Имена полей,
описанные в этой колонке, появляются для разработчика на закладке
выбора полей в отчете, описания вычисляемых полей, полей группировки
и др., поэтому имеет смысл настроить их понятнее для себя;
■ заголовок содержит название поля, под которым поле будет фигурировать
в настройках отчета в режиме 1С:Предприятие и в шапке отчета.
Отредактируем заголовки полей, сделаем их более короткими и понятными.
Для этого нужно установить флажок слева от заголовка поля (рис. 2.16).

Глава 2. Примеры разработки отчетов

41

Рис. 2.16. Установка заголовков полей

Запустим отчет на исполнение в режиме 1С:Предприятие. В открывшемся
окне отчета нажмем кнопку Выбрать вариант… (рис. 2.17). В окне вариантов
отчета мы видим теперь два варианта – Основной и только что созданный
нами вариант Оформление. Выделим его и нажмем кнопку Выбрать.

Рис. 2.17. Выбор варианта отчета

42

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Нажмем кнопку Сформировать. Отчет примет следующий вид (рис. 2.18).

Рис. 2.18. Результат отчета

Мы видим, что в отчет выведена группировка в виде простых детальных
записей. Отчет имеет заголовок, и все его элементы оформлены макетом
оформления Море.
Заметьте, что при прокручивании отчета вниз положение шапки отчета остается зафиксированным. Так происходит потому, что у табличного документа
в форме отчета, в который по умолчанию выводится отчет, автоматически
установлено свойство ФиксацияСверху.

Настройка отдельных группировок
Теперь продемонстрируем настройку отдельных элементов отчета. Настроим
элемент отчета Детальные записи. Для этого выделим режим настроек отчета
Детальные записи и на закладке Другие настройки дадим заголовок группировке – Список номенклатуры на складах, а также установим значения
параметров Расположение общих итогов по вертикали – Нет и Макет оформления – Яркий (стр. 393).
На закладке Сортировка отсортируем записи группировки в порядке убывания
конечного остатка номенклатуры. Для этого перенесем из списка доступных
полей поле КоличествоКонечныйОстаток и установим направление сортировки – По убыванию (рис. 2.20).
На закладке Условное оформление выделим цветом записи группировки
с конечным остатком меньше или равным единице. Для этого нажмем кнопку
Добавить, расположенную в правом верхнем углу окна настроек (рис. 2.21).
Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора
в поле Оформление и установим красный цвет текста и желтый цвет фона.

Глава 2. Примеры разработки отчетов

Рис. 2.19. Редактирование настроек элемента отчета «Детальные записи»

Рис. 2.20. Настройка сортировки элемента отчета «Детальные записи»

Рис. 2.21. Настройка условного оформления элемента отчета «Детальные записи»

43

44

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Затем укажем условие, при наступлении которого будет применяться оформление. Нажмем кнопку выбора в поле Условие и в появившемся окне
добавим новый элемент отбора (рис. 2.22). Для этого нажмем кнопку Добавить
и укажем в графе Левое значение поле КоличествоКонечныйОстаток, в графе
Вид сравнения – Меньше или равно, а в графе Правое значение – 1.

Рис. 2.22. Настройка условного оформления элемента отчета «Детальные записи»

Затем зададим список оформляемых полей. Если мы хотим выбрать все поля
отчета, то можно оставить этот список пустым. Можно указать конкретные
поля, нажав кнопку выбора в поле Оформляемые поля. Для этого в появившемся окне, нажимая кнопку Добавить, нужно выбрать поля, например,
Номенклатура и КоличествоКонечныйОстаток (рис. 2.23).

Рис. 2.23. Настройка условного оформления элемента отчета «Детальные записи»

Затем зададим представление условного оформления как Маленький запас.
Это является хорошим тоном при создании стандартных настроек для пользователя. В результате, открыв окно пользовательских настроек, вместо
непонятной строки «Конечный остаток меньше или равно 1» пользова-

Глава 2. Примеры разработки отчетов

45

тель увидит осмысленное выражение, которое задано в поле Представление.
В результате окно условного оформления должно принять вид (рис. 2.24).

Рис. 2.24. Настройка условного оформления элемента отчета «Детальные записи»

В заключение перейдем на закладку Выбранные поля и раскроем список полей
Автополя (стр. 352). Для этого выделим его, вызовем его контекстное меню
и выберем пункт Развернуть (рис. 2.25).

Рис. 2.25. Раскрытие списка полей «Автополя» группировки «Детальные записи»

Здесь мы видим список полей детальной группировки отчета. Так как начального остатка по номенклатуре у нас нет, уберем признак использования
у поля КоличествоНачальныйОстаток, или можно просто удалить его из списка
(рис. 2.26).
Все настройки, которые мы проделали (рис. 2.19–2.26), касались группировки
отчета Детальные записи.

46

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.26. Выбор полей для группировки «Детальные записи»

Теперь для наглядности добавим в отчет еще одну группировку (внешне
похожую на таблицу) и настроим ее по-другому.
Выделим корневой элемент Отчет и добавим в него группировку по полю
Склад. Выделим группировку Склад и добавим подчиненную ей группировку
Номенклатура.
Переместим группировку Склад вместе с вложенной в нее группировкой
Номенклатура в самый верх структуры отчета. Это можно сделать кнопкой
Вверх в командной панели настроек отчета или перетаскиванием мышью.
Перейдем к настройкам группировки Номенклатура. Для этого выделим режим
настроек этой группировки в средней части окна настроек.
На закладке Отбор установим отбор записей для группировки Номенклатура с конечным остатком больше единицы. Для этого перенесем из списка
доступных полей поле КоличествоКонечныйОстаток. Установим Вид сравнения –
Больше, а Правое значение – 1. Условие отбора примет вид (рис. 2.27).

Рис. 2.27. Настройка отбора для группировки «Номенклатура»

Глава 2. Примеры разработки отчетов

47

ПРИМЕЧАНИЕ
Выделенные пиктограммы справа от элементов структуры отчета
(см. рис. 2.27) отражают наличие настроек – выбранных полей, отбора,
условного оформления, сортировки и т. п. конкретного элемента отчета.

В заключение выделим корневой элемент структуры отчета Отчет и на
закладке Другие настройки установим параметр Расположение полей группировок
в значение Отдельно и только в итогах (рис. 2.28). Это придаст группировке
Склад табличный вид.

Рис. 2.28. Настройка вывода полей группировок для отчета в целом

Запустим отчет на исполнение в режиме 1С:Предприятие. Нажмем кнопку
Сформировать. Отчет примет следующий вид (рис. 2.29).

Рис. 2.29. Результат отчета

48

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Итак, мы видим, что у каждого элемента структуры отчета теперь есть свое
оформление.
В верхней группировке записи сгруппированы по складам и номенклатуре. В результате отбора отражаются только записи с конечным остатком
номенклатуры больше единицы. Заметьте, что заголовок над группировкой,
так же как и макет оформления и список полей отчета, относится не к этой
конкретной группировке, а ко всему отчету в целом. Но поскольку для самой
группировки эти элементы оформления не установлены, она их наследует от
главного отчета.
Детальный список выводится без общих итогов, в порядке убывания конечного остатка номенклатуры. Записи с конечным остатком меньше или равным
единице выделены цветом. В списке отсутствует поле Начальный остаток.
Также список выводится со своим заголовком и макетом оформления.
Итак, на этом примере мы научились создавать новый вариант отчета. Затем
мы познакомились с индивидуальной настройкой каждого элемента структуры отчета. Мы научились устанавливать для них:
■ сортировку,
■ отбор,
■ условное оформление,
■ заголовок, макет оформления и другие.
Таким образом, применяя различные варианты настройки отчета, можно
получить множество отчетных форм, использующих один и тот же набор
данных.

Пример 2
Дальнейшие возможности системы компоновки данных будем изучать
на примере отчета, который будет отражать информацию по собранным
и проданным системным блокам за указанный период (рис. 2.30).

Рис. 2.30. Требуемый вид отчета

Создадим новый объект конфигурации Отчет и назовем его ОтчетПоСистемнымБлокам. Откроем конструктор схемы компоновки данных и добавим
новый набор данных – запрос. Откроем конструктор запроса. В качестве

Глава 2. Примеры разработки отчетов

49

источника данных для запроса выберем виртуальную таблицу регистра накопления СобранныеСБ.ОстаткиИОбороты. В список полей перенесем поля
из этой таблицы:
■ КоличествоНачальныйОстаток,
■ КоличествоКонечныйОстаток,
■ КоличествоПриход,
■ КоличествоРасход,
■ СтоимостьПриход,
■ СтоимостьРасход,
■ СБ,
■ Склад.
Нажмем ОК и вернемся в конструктор схемы компоновки данных. Изменим
заголовки и пути полей на более понятные: Системный Блок (СБ), Начальный
остаток, Конечный остаток. Напомним, что заголовки будут отражаться в шапке
отчета и окне настроек пользователя, а пути – в настройках разработчика,
в выражениях вычисляемых полей, ресурсов и т. п.

Вычисляемые поля
В отчете мы хотим видеть прибыль от продажи собранных системных блоков,
то есть разницу между его продажной стоимостью (поле регистра СтоимостьРасход) и стоимостью комплектующих и услуг, израсходованных на
сборку компьютера (поле регистра СтоимостьПриход). Значит, для этого нам
понадобится создать вычисляемое поле (стр. 358). Перейдем на закладку
Вычисляемые поля и добавим его кнопкой Добавить. Дадим ему имя (Путь
к данным) – Прибыль, в колонку Выражение введем следующий текст
(листинг 2.1).
Листинг 2.1. Выражение для расчета вычисляемого поля «Прибыль»
СтоимостьРасход – СтоимостьПриход

Заголовок для отображения в отчете формируется по умолчанию, но его
можно изменить (рис. 2.31).

Рис. 2.31. Создание вычисляемого поля

50

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Перейдем на закладку Ресурсы и определим поля ресурсов отчета (стр. 370).
Обратите внимание, что созданное ранее вычисляемое поле Прибыль тоже
добавилось в ресурсы отчета, так как по нему можно подсчитывать групповые итоги (рис. 2.32).

Рис. 2.32. Определение ресурсов отчета

Параметры. Период отчета
Теперь определим параметры отчета (стр. 376). Для этого перейдем на
закладку Параметры. Мы видим, что платформа уже создала два параметра:
НачалоПериода и КонецПериода. Эти параметры используются практически
в каждом отчете, так как пользователя интересуют данные о хозяйственной
деятельности за определенный период. Первым параметром в отчет передается дата начала периода расчета итогов, вторым – конец отчетного периода.
В результате отчет будет содержать только данные за указанный период. Мы
можем также добавить свой параметр, но в данном случае нас устраивает
список параметров, предложенный нам по умолчанию (рис. 2.33).

Рис. 2.33. Параметры компоновки данных

Поле Заголовок можно изменить, так как эти заголовки выводятся при запросе
параметров у пользователя. Мы оставим их по умолчанию, но изменим
колонку Тип. Дело в том, что если в отчет передается параметр, содер-

Глава 2. Примеры разработки отчетов

51

жащий значение типа Дата, то дата всегда содержит и время с точностью до
секунды. Однако пользователя, как правило, не интересуют данные в отчете
с такой точностью. И ему незачем указывать еще и время при вводе даты.
Поэтому в колонке Тип нажмем кнопку выбора
и в нижней части окна
редактирования типа данных установим состав даты в значение Дата для
обоих параметров (рис. 2.34).

Рис. 2.34. Редактирование состава даты

Но в таком случае, если пользователь задаст даты периода как 01.12.2011
и 11.12.2011, итоги регистра будут рассчитаны с начала дня 01.12.2011
00:00:00 по начало дня 11.12.2011 00:00:00. То есть данные за 11-е число,
отличные от начала дня, в отчет не попадут, а пользователь, конечно, подразумевал этот день включить. Чтобы этого избежать, внесем в поле Выражение
для параметра КонецПериода следующий текст (листинг 2.2).
Листинг 2.2. Выражение для расчета параметра «КонецПериода»
КонецПериода(&КонецПериода,"День")

Это выражение, сформулированное на языке выражений системы компоновки
данных, содержит функцию КонецПериода(), возвращающую дату, соответствующую концу какого-либо периода, например дня.
ПРИМЕЧАНИЕ
Подробное описание языка выражений системы компоновки данных
содержится во встроенной справке системы, в разделе Справка  Содержание

справки  Встроенный язык  Общие объекты  Система компоновки данных 
Язык выражений системы компоновки данных.

В результате окно параметров компоновки примет следующий вид
(рис. 2.35).

52

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.35. Параметры компоновки данных

Заметим, что у параметров снят флажок Ограничение доступности. Это значит,
что эти параметры будут видны в окне настроек пользователя. Также снят
флажок Запрещать незаполненные значения. В случае установки этого флажка
при использовании параметров в отчете (признак использования слева от
параметра) система проверяет обязательное заполнение параметра. Если
значение параметра не указано, то будет выдана ошибка. В нашем случае
флажок Запрещать незаполненные значения не установлен, поэтому отчет
будет формироваться без ошибки и с пустым значением параметра.

Рис. 2.36. Определение полей и группировок отчета

Определим структуру отчета. На закладке Настройки выделим корневой
элемент Отчет и добавим в него группировку по полю Склад. Выделим группировку Склад и добавим подчиненную ей группировку СистемныйБлок.
Затем на закладке Выбранные поля перенесем из списка доступных полей
поля (рис. 2.36):
■ НачальныйОстаток,
■ КоличествоПриход,

Глава 2. Примеры разработки отчетов

53

■ КоличествоРасход,
■ КонечныйОстаток,
■ СтоимостьПриход,
■ СтоимостьРасход,
■ Прибыль.
На закладке Другие настройки дадим заголовок отчету – Отчет по системным
блокам и установим Макет оформления (стр. 393) – Арктика.

Быстрые пользовательские настройки
В заключение мы должны предоставить пользователю возможность задавать
отчетный период перед формированием отчета. То есть параметры Начало
периода и Конец периода должны быть включены в состав пользовательских настроек. Причем эти настройки должны находиться непосредственно
в отчетной форме, поскольку задавать отчетный период требуется практически всегда. На закладке Параметры установим для каждого из параметров
признак использования (флажок слева от параметра). Затем нажмем кнопку
Свойства элемента пользовательских настроек, расположенную в правом
нижнем углу окна настроек. Установим флажок Включать в пользовательские
настройки и оставим предложенное по умолчанию для свойства Режим редактирования значение Быстрый доступ (рис. 2.37).

Рис. 2.37. Настройки отчета

Флажок Включать в пользовательские настройки означает, что эта настройка
будет доступна пользователю в отдельном окне (2) при нажатии кнопки

54

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Настройка (то есть такая настройка, которой он может пользоваться, но не очень
часто). А режим редактирования, установленный в значение Быстрый доступ,

означает, что эта настройка будет быстрой пользовательской настройкой,
которая будет автоматически отображаться непосредственно в отчетной
форме (1). Это настройка, которая нужна пользователю постоянно, чуть ли не
при каждом запуске отчета, поэтому она всегда на виду (рис. 2.38).

Рис. 2.38. Быстрые (1) и обычные (2) пользовательские настройки

Запустим отчет на исполнение в режиме 1С:Предприятие. В открывшейся
отчетной форме зададим период отчета с 01.12.2011 по 11.12.2011. Нажмем
кнопку Сформировать. Отчет примет следующий вид (рис. 2.39).

Рис. 2.39. Результат отчета

Глава 2. Примеры разработки отчетов

55

Поскольку в базе есть документы по сборке и продаже системных блоков
за 11.12.2011, мы видим, что эти данные попали в отчет.

Системные поля
Немного усовершенствуем наш отчет. Уберем признак использования у поля
НачальныйОстаток. Добавим в список выбранных полей отчета вычисляемое поле, сформированное платформой, показывающее процент прибыли
по каждому системному блоку от ее общей суммы. Для этого раскроем поле
Прибыль и перенесем поле ПроцентОбщий (рис. 2.40).

Рис. 2.40. Добавление поля «% от общей прибыли» в отчет

Выделим режим настроек группировки СистемныйБлок и добавим нумерацию
внутри нее. Для этого раскроем список Системные поля и перенесем поле
НомерПоПорядку так, чтобы поле было первым в списке (рис. 2.41).

56

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.41. Добавление поля «№ по порядку» в группировку «СистемныйБлок»

Запустим отчет на исполнение в режиме 1С:Предприятие. В открывшейся
отчетной форме зададим период отчета с 01.12.2011 по 11.12.2011. Нажмем
кнопку Сформировать. Отчет примет следующий вид (рис. 2.42).

Рис. 2.42. Результат отчета

Глава 2. Примеры разработки отчетов

57

Обязательность использования параметров
Если отчетный период для пользователя не важен, то он может снять признак
использования параметров (флажок слева от параметра). В этом случае отчет
будет формироваться по всем записям регистра СобранныеСБ, находящихся
в базе данных.
При включенном признаке использования параметров также можно не задавать их значения. В этом случае отчет будет формироваться без ошибки,
поскольку у параметров отчетного периода флажок Запрещать незаполненные
значения не установлен (см. рис. 2.35).
Если же, наоборот, отчетный период нужно вводить всегда, то у параметров
в поле Использование можно задать Всегда (рис. 2.43).

Рис. 2.43. Параметры отчета

В этом случае флажок использования параметра в пользовательских
настройках отсутствует, т. е. параметр используется всегда. Если дополнительно к этому установить также флажок Запрещать незаполненные значения
(см. рис. 2.43), то при формировании отчета с пустым значением параметра
будет получена ошибка (рис. 2.44).

Рис. 2.44. Результат отчета

58

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

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

Пример 3. Связь наборов данных
Отчет, разработанный с помощью системы компоновки данных, может
использовать данные из нескольких (в нашем случае двух) наборов данных.
Эти наборы данных описываются каждый по отдельности, а затем в схеме
компоновки данных указывается, каким образом они связаны между собой.
Для демонстрации этой возможности системы компоновки данных разработаем отчет, отражающий информацию о последних ценах поступления
товаров, а также связанную с ней информацию о поставщиках, датах и
номерах документов, которые произвели движения в регистре сведений Цены
(рис. 2.45).

Рис. 2.45. Требуемый вид отчета

Для этого создадим набор данных, получающий информацию из документов
Приходная накладная, и свяжем его с исходным набором, получающим
данные из регистра сведений Цены. Затем мы выведем полученные данные
в табличный документ с помощью конструктора настроек.
Создадим новый объект конфигурации Отчет и назовем его ЦеныКомплектующихОтПоставщиков. Откроем конструктор схемы компоновки данных
и добавим новый набор данных – запрос. Он будет назван по умолчанию
НаборДанных1. Для большей наглядности назовем его Цены. Чтобы ввести
новое имя набора данных, можно дважды щелкнуть по его названию.

Глава 2. Примеры разработки отчетов

59

Откроем конструктор запроса. В качестве источника данных для запроса
выберем виртуальную таблицу регистра сведений Цены.СрезПоследних.
В список полей перенесем поля из этой таблицы (рис. 2.46):
■ Номенклатура,
■ Цена,
■ Регистратор.

Рис. 2.46. Выбор полей для запроса

Поле Регистратор нам понадобится в качестве ссылки на документ ПриходнаяНакладная, который произвел движения в регистре сведений Цены,
чтобы установить связь со вторым набором данных. Нажмем ОК и вернемся
в конструктор схемы компоновки данных. Таким образом, в этом наборе
данных мы получим информацию о последних ценах поступления товаров.
Но нам нужна еще другая, связанная с ней более детальная информация
из документов Приходная накладная.
Выделим корневой элемент дерева наборов данных и добавим еще один набор
данных – запрос. Назовем его Поставщики. Откроем конструктор запроса.
В качестве источника данных для запроса выберем объектную таблицу документа ПриходнаяНакладная. В список полей перенесем поля из этой таблицы
(рис. 2.47):





Ссылка,
Номер,
Дата,
Контрагент.

Рис. 2.47. Выбор полей для запроса

Поле Ссылка нам понадобится в качестве ссылки на регистр сведений Цены,
чтобы установить связь с первым набором данных. Нажмем ОК и вернемся
в конструктор схемы компоновки данных.
Если в схеме компоновки данных присутствуют несколько наборов данных,
то между ними требуется установить связь (стр. 325). На закладке Связи
наборов данных добавим новую строку. Связей в общем случае может быть

60

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

несколько, даже если набора данных только два. В поле Источник связи, то
есть в качестве родительского набора данных, укажем Цены, в поле Приемник
связи, то есть в качестве зависимого набора данных, укажем Поставщики.
В поле Выражение источник выберем из полей родительского набора поле
Регистратор, а в поле Выражение приемник – поле зависимого набора данных –
Ссылка (рис. 2.48).

Рис. 2.48. Создание связи наборов данных

Все связи, созданные в схеме компоновки данных, считаются Левыми внешними соединениями, то есть в отчет будут включены записи из обоих наборов
данных, удовлетворяющих условию связи Регистратор = Ссылка (рис. 2.49).

Рис. 2.49. Связь записей в наборах данных

Кроме того, у родительского набора данных Цены будут отражаться в отчете
все записи, независимо от того, найден ли соответствующий им документ
в наборе данных Поставщики или нет. Поэтому при определении связей
наборов данных требуется внимательно обдумать, какой из наборов данных
будет родительским, а какой – зависимым.
Для быстрого создания стандартных настроек воспользуемся конструктором
настроек, который вызывается нажатием кнопки Открыть конструктор настроек
на закладке Настройки схемы компоновки данных (рис. 2.50).

Глава 2. Примеры разработки отчетов

61

Рис. 2.50. Настройки схемы компоновки данных

Сначала выберем тип отчета Список, что соответствует элементу структуры
отчета Группировка, где информация выводится по строкам (рис. 2.51).

Рис. 2.51. Конструктор настроек. Шаг 1

Нажмем кнопку Далее. На следующем шаге определим поля, выводящиеся
в отчет. Список доступных полей включает поля из обоих наборов данных.
Мышью перетащим из него поля (рис. 2.52):
■ Номенклатура,
■ Контрагент,

62

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ Дата,
■ Номер,
■ Цена.

Рис. 2.52. Конструктор настроек. Шаг 2

Нажмем кнопку Далее. На следующем шаге определим поля для группировки
записей в списке. Мышью перетащим из списка доступных полей поле
Номенклатура (рис. 2.53).

Рис. 2.53. Конструктор настроек. Шаг 3

Нажмем кнопку Далее. На следующем шаге определим поля для сортировки
записей в отчете. Мышью перетащим из списка доступных полей поле Дата
(рис. 2.54).

Глава 2. Примеры разработки отчетов

63

Рис. 2.54. Конструктор настроек. Шаг 4

Нажмем ОК. В результате наших действий в окне настроек появилась группировка Номенклатура и вложенная в нее группировка Детальные записи,
определен список выбранных полей и задано поле сортировки (рис. 2.55).

Рис. 2.55. Настройки схемы компоновки данных

Аналогичный результат можно получить, самостоятельно создавая нужные
элементы настроек, но в данном случае проще и быстрее это сделать
с помощью конструктора настроек. Запустим отчет на исполнение в режиме
1С:Предприятие. Нажмем кнопку Сформировать. Наш отчет примет следующий вид (рис. 2.56).

64

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.56. Результат отчета

Мы видим, что записи в отчете сгруппированы по полю Номенклатура, то есть
для каждой позиции номенклатуры выводится список с указанием поставщика,
даты и номера документа Приходная накладная, в котором было учтено ее поступление. Цена номенклатуры заполняется из регистра сведений Цены. Внутри
каждой группы записи упорядочены по полю Дата. Таким образом, данные
выводятся в отчет с помощью группировки Номенклатура  ДетальныеЗаписи,
представленной в табличном виде. Но это не таблица. Отличие структуры
настроек Группировки и Таблица было рассмотрено в первой главе (стр. 18).

Пример 4. Связь таблиц внутри набора данных
На этом примере мы познакомимся с работой системы компоновки данных
с помощью встроенного языка. Разработаем отчет, отражающий список
номенклатуры с остатками на складах, и реализуем его программный запуск
из списка номенклатуры (рис. 2.57).

Рис. 2.57. Требуемый вид отчета

Глава 2. Примеры разработки отчетов

65

Создадим новый объект конфигурации Отчет и назовем его СписокНоменклатуры. Откроем конструктор схемы компоновки данных и добавим новый

набор данных – запрос. Откроем конструктор запроса. В качестве источника
данных для запроса выберем объектную ссылочную таблицу Номенклатура
и виртуальную таблицу регистра накопления ОстаткиНоменклатуры.Остатки.
Чтобы исключить неоднозначность имен в запросе, переименуем таблицу
Номенклатура в спрНоменклатура. Для этого выделим ее в списке Таблицы
и вызовем ее контекстное меню (рис. 2.58).

Рис. 2.58. Переименование таблицы взапросе

В список полей перенесем поля из этих таблиц (рис. 2.59):






Ссылка,
Родитель,
ВидНоменклатуры,
Склад,
КоличествоОстаток.

Рис. 2.59. Выбор полей для запроса

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

66

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.60. Определение связи между таблицами

Перейдем на закладку Условия и на уровне запроса установим отбор, чтобы
наименования групп не попадали в отчет. Для этого раскроем таблицу
спрНоменклатура, перетащим мышью поле ЭтоГруппа в список условий,
установим флажок Произвольное и внесем в поле Условие следующий текст
(листинг 2.3).
Листинг 2.3. Условие запроса
спрНоменклатура.ЭтоГруппа = ЛОЖЬ

Закладка Условия примет вид (рис. 2.61).

Рис. 2.61. Создание условия запроса

СОВЕТ
Отбор можно применять и в самом запросе, и в настройках отчета. То же
касается сортировки и группировки. Отбор лучше применять в запросе, если
записи, не удовлетворяющие условию запроса, наверняка не понадобятся
в отчете. Сортировку и группировку лучше применять уже в настройках
отчета, чтобы сделать его более гибким.

На закладке Объединения/Псевдонимы изменим имена у полей запроса
на более понятные (рис. 2.62).

Глава 2. Примеры разработки отчетов

67

Рис. 2.62. Установка псевдонимов полей запроса

СОВЕТ
Имена полей лучше изменять в запросе, так как в этом случае в схему
компоновки данных они перенесутся сразу в три колонки: Поле, Путь
и Заголовок, и не нужно будет лишний раз их изменять.

Нажмем ОК и вернемся в конструктор схемы компоновки данных. Текст
запроса, сформированный платформой, примет вид (листинг 2.4).
Листинг 2.4. Текст запроса
ВЫБРАТЬ
спрНоменклатура.Ссылка КАК Номенклатура,
спрНоменклатура.Родитель КАК Группа,
спрНоменклатура.ВидНоменклатуры КАК Вид,
ОстаткиНоменклатурыОстатки.Склад,
ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток
ИЗ
Справочник.Номенклатура КАК спрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки
КАК ОстаткиНоменклатурыОстатки
ПО ОстаткиНоменклатурыОстатки.Номенклатура = спрНоменклатура.Ссылка
ГДЕ
спрНоменклатура.ЭтоГруппа = ЛОЖЬ

Для решения нашей задачи – вывода списка номенклатуры с остатками – мы
выбрали вариант соединения двух таблиц в запросе, чтобы продемонстрировать эту возможность системы компоновки данных. Но эту же задачу можно
решить с использованием двух связанных наборов данных – данных из справочника Номенклатура и регистра накопления ОстаткиНоменклатуры.Остатки.

68

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Второй вариант лучше использовать в том случае, если получение данных
одним запросом породит слишком сложный запрос, когда необходимо выводить в отчет данные с расчетом итогов, без учета дублирующихся записей,
при выводе в результат данных из различных типов наборов данных
(например, из запроса и таблицы значений).
Определим структуру отчета. На закладке Настройки выделим корневой
элемент Отчет и добавим в него группировку по полю Группа. Выделим
группировку Группа и добавим подчиненную ей группировку, не указывая
группировочное поле, – Детальные записи. Затем на закладке Выбранные поля
перенесем из списка доступных полей поля (рис. 2.63):





Номенклатура,
Вид,
Склад,
Остаток.

Рис. 2.63. Определение полей и группировок отчета

На закладке Другие настройки установим Макет оформления (стр. 393) – Яркий.
Запустим отчет на исполнение в режиме 1С:Предприятие. Нажмем кнопку
Сформировать. Наш отчет примет следующий вид (рис. 2.64).

Глава 2. Примеры разработки отчетов

69

Рис. 2.64. Результат отчета

Программный запуск отчета
Теперь реализуем вызов нашего отчета из формы списка справочника
Номенклатура. Для этого создадим основную форму списка справочника
и отредактируем ее. Создадим команду Печать и соответствующую ей кнопку
формы, по нажатию которой содержимое отчета СписокНоменклатуры будет
выводиться в табличный документ и показываться пользователю. В обработчике команды напишем следующий код (листинг 2.5).
Листинг 2.5. Обработчик команды «Печать»
&НаКлиенте
Процедура Печать(Команда)
Результат = ВывестиСписокНоменклатуры();
Результат.ОтображатьСетку = Ложь;
Результат.ОтображатьЗаголовки = Ложь;
Результат.Показать();
КонецПроцедуры

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

70

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Листинг 2.6. Функция «ВывестиСписокНоменклатуры()»
&НаСервереБезКонтекста
Функция ВывестиСписокНоменклатуры()
// В качестве схемы компоновки данных используем макет отчета "Список Номенклатуры".
СхемаКомпоновкиДанных =
Отчеты.СписокНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Получим настройки по умолчанию.
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// Сформируем макет компоновки данных.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
// Выполним компоновку данных.
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Выведем результат компоновки в табличный документ.
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Возврат ДокументРезультат;
КонецФункции

Из комментариев в тексте обработчика видно, что здесь программно реализуются все этапы компоновки данных, которые были описаны в первой главе.
Запустим «1С:Предприятие». Откроем справочник Номенклатура и нажмем
кнопку Печать. На экране появится новый табличный документ с данными
отчета (рис. 2.65).
В данном случае результат отчета выводится в новый табличный документ.
Это сделано, чтобы продемонстрировать изнутри процесс формирования
отчета.
Но можно просто программно открыть форму отчета и при этом передать
в нее параметр СформироватьПриОткрытии, установленный в значение
Истина, чтобы отчет выводился сразу без нажатия кнопки Сформировать.

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

Глава 2. Примеры разработки отчетов

71

Рис. 2.65. Вывод отчета из формы списка справочника «Номенклатура»
Листинг 2.7. Обработчик команды «Отчет»
&НаКлиенте
Процедура Отчет(Команда)
ПараметрыФормы = Новый Структура("СформироватьПриОткрытии", Истина);
ОткрытьФорму("Отчет.СписокНоменклатуры.Форма", ПараметрыФормы);
КонецПроцедуры

Запустим «1С:Предприятие». Откроем справочник Номенклатура и нажмем
кнопку Отчет. На экране появится наш отчет (рис. 2.66).
Результат отчета будет тот же, но поскольку в последнем случае открывается
форма отчета, то пользователю предоставляется стандартный сервис – выбор
варианта отчета, открытие формы пользовательских настроек, работа
с расшифровкой и т. п.
Однако в этом случае (см. листинг 2.7) результат отчета стандартно выводится
в реквизит формы отчета типа ТабличныйДокумент. Если же требуется
выводить результат отчета в другие форматы – таблицу значений, дерево
значений и т. п., то нужно использовать первый вариант (см. листинг 2.6).

72

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.66. Вывод отчета из формы списка справочника «Номенклатура»

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

Пример 5. Набор данных – объединение
Набор данных – объединение предназначен для разработки отчета, содержащего объединенную информацию из различных наборов данных. Такой
набор содержит два или более подчиненных набора данных, но информация
в них не связывается, а объединяется.
В третьем примере (стр. 58) данной главы объяснялось, что при связывании
наборов данных в схеме компоновки используется Левое соединение. То есть
в отчете будут показаны все записи из левого набора данных, описанного
в выражении связи, а из правого набора будут показаны только те записи,

Глава 2. Примеры разработки отчетов

73

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

Рис. 2.67. Требуемый вид отчета

Создадим новый объект конфигурации Отчет и назовем его АнализПоступленияПродаж. Откроем конструктор схемы компоновки данных и добавим
новый набор данных – объединение (рис. 2.68).

Рис. 2.68. Добавление набора данных – объединение

В схеме компоновки данных будет создан набор данных типа Объединение
с именем НаборДанных1. Выделим его в дереве наборов данных и, вызвав его
контекстное меню или нажав кнопку Добавить, добавим в него новый набор
данных – запрос (рис. 2.69).

Рис. 2.69. Добавление набора данных – запрос

74

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Назовем его Поступление. Чтобы ввести новое имя набора данных, можно
дважды щелкнуть по его названию. Откроем конструктор запроса. В качестве
источника данных для запроса выберем табличную часть ПереченьНоменклатуры таблицы документа ПриходнаяНакладная. В список полей перенесем
поля из табличной части этого документа (рис. 2.70):
■ Номенклатура,
■ Количество,
■ Сумма.

Рис. 2.70. Выбор полей для запроса

На закладке Объединения/Псевдонимы изменим имя у поля Количество
на Поступило, Сумма на СуммаПоступления (рис. 2.71).

Рис. 2.71. Изменение имен полей в конструкторе запроса

Нажмем ОК и вернемся в конструктор схемы компоновки данных. Затем
выделим родительский набор данных НаборДанных1 в дереве наборов данных
и добавим в него еще один набор данных – запрос. Назовем его Расход.
Откроем конструктор запроса. В качестве источника данных для запроса
выберем табличную часть ПереченьНоменклатуры таблицы документа РасходнаяНакладная. В список полей перенесем поля из табличной части этого
документа (рис. 2.72):
■ Номенклатура,
■ Количество,
■ Сумма.

Рис. 2.72. Выбор полей для запроса

Глава 2. Примеры разработки отчетов

75

На закладке Объединения/Псевдонимы изменим имя у поля Количество
на Продано, Сумма на СуммаПродажи. Нажмем ОК и вернемся в конструктор
схемы компоновки данных.
На закладке Ресурсы схемы компоновки данных, в списке Доступные поля
расположены все поля из объединенного набора данных отчета. Нажмем
кнопку , чтобы конструктор выбрал все доступные ресурсы, по которым
можно вычислять итоги (рис. 2.73).

Рис. 2.73. Выбор ресурсов для отчета

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

Рис. 2.74. Конструктор настроек. Шаг 2

Нажмем кнопку Далее. На следующем шаге определим поля для группировки
записей в списке. Мышью перетащим из списка доступных полей поле
Номенклатура (рис. 2.75).

76

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Рис. 2.75. Конструктор настроек. Шаг 3

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

Рис. 2.76. Настройки схемы компоновки данных

Запустим отчет на исполнение в режиме 1С:Предприятие. Нажмем кнопку
Сформировать. Наш отчет примет следующий вид (рис. 2.77).
Мы видим, что записи в отчете сгруппированы по полю Номенклатура, и для
каждой позиции номенклатуры выводятся суммарные значения количества
и суммы ее поступления и продажи. Эти данные попадают в отчет путем
объединения информации из документов Приходная накладная и Расходная
накладная.

Глава 2. Примеры разработки отчетов

77

Рис. 2.77. Результат отчета

В заключение продемонстрируем отличие набора данных – объединение
(на рисунке в центре) от связи этих же наборов данных в схеме компоновки
(на рисунке слева и справа). Для наглядности мы вывели в отчет детальные
записи и поочередно расположили слева в выражении связи наборы данных
Поступление и Расход (рис. 2.78).

Рис. 2.78. Результат отчета с использованием объединения
и связывания наборов данных

78

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

Пример 6. Автоматическое формирование
отчета
Теперь на основе полученных знаний усовершенствуем отчет ОтчетПоСистемнымБлокам так, чтобы при открытии отчета задавались значения параметров
по умолчанию и передавались в отчет. Также было бы удобно, чтобы отчет
формировался автоматически, без нажатия кнопки Сформировать.
Для реализации этих возможностей создадим основную форму отчета

ОтчетПоСистемнымБлокам. Создадим обработчик события формы ПриСоз-

данииНаСервере и заполним его следующим образом (листинг 2.8).

Листинг 2.8. Обработчик события формы «ПриСозданииНаСервере»
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Параметры.СформироватьПриОткрытии = Истина;
КонецПроцедуры

В обработчике события параметр СформироватьПриОткрытии устанавливается
в значение Истина. Таким образом, отчет будет формироваться сразу при
открытии формы отчета.
Теперь программно установим значения
и КонецПериода и передадим их в отчет.

параметров

НачалоПериода

Для этого сначала представим последовательность событий, которые возникают в модуле формы отчета и в модуле объекта отчета при формировании
отчета при его открытии (рис. 2.79).
Сначала у формы отчета вызывается событие ПриСозданииНаСервере.
В нем мы задаем необходимость формирования отчета сразу же при его
открытии. Затем происходят четыре события, поставляемые расширением
управляемой формы для отчета.
Сначала выполняется загрузка настроек варианта отчета (основного
или выбранного пользователем при последнем формировании отчета)
в компоновщик настроек. При этом вызываются события ПередЗагрузкойВариантаНаСервере и ПриЗагрузкеВариантаНаСервере.
Очевидно, нам нужно создать обработчик события ПередЗагрузкойВариантаНаСервере, чтобы в нем изменить параметры настроек перед их
загрузкой в компоновщик (листинг 2.9).

Глава 2. Примеры разработки отчетов

79

Рис. 2.79. Последовательность событий при формировании отчета при открытии
Листинг 2.9. Обработчик события «ПередЗагрузкойВариантаНаСервере»
&НаСервере
Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок",
"Продажа системных блоков");
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", '20111201');
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", '20111231');
КонецПроцедуры

В параметре Настройки в обработчик передаются настройки варианта отчета,
имеющие тип НастройкиКомпоновкиДанных. В данном обработчике
методом УстановитьЗначениеПараметра() изменен заголовок отчета,
а также установлены значения параметров начала и конца отчетного периода.
Однако если настройки являются пользовательскими (в нашем случае – это
параметры отчетного периода) и пользователь хоть раз задавал их значения
в форме отчета, то устанавливать их в этом обработчике бесполезно.
Это происходит потому, что после загрузки настроек варианта отчета
восстанавливаются пользовательские настройки, сделанные пользователем при последнем формировании отчета и автоматически сохраненные
платформой. Пользовательские настройки накладываются на настройки

80

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

варианта и загружаются в компоновщик настроек. При этом вызываются
события
ПередЗагрузкойПользовательскихНастроекНаСервере
и ПриЗагрузкеПользовательскихНастроекНаСервере.

Так как в схеме компоновки данных мы указали параметры НачалоПериода и КонецПериода в составе быстрых пользовательских настроек
(стр. 53), то нам нужно создать обработчик события ПередЗагрузкойПользовательскихНастроекНаСервере, чтобы в нем изменить
параметры пользовательских настроек перед их загрузкой в компоновщик
(листинг 2.10).

Листинг 2.10. Обработчик события
«ПередЗагрузкойПользовательскихНастроекНаСервере»
&НаСервере
Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)
Настройки.Элементы[0].Значение = '20111201';
Настройки.Элементы[0].Использование = Истина;
Настройки.Элементы[1].Значение = '20111231';
Настройки.Элементы[1].Использование = Истина;
КонецПроцедуры

В
параметре
Настройки в обработчик
передаются
настройки
варианта отчета, имеющие тип ПользовательскиеНастройкиКомпоновкиДанных. Так как параметра всего два, то можно обращаться к ним по
индексу (0, 1) в коллекции элементов пользовательских настроек. Мы устанавливаем значения параметров начала и конца отчетного периода и задаем
для них признак использования. Эти настройки загружаются в компоновщик
настроек, и отчет формируется с заданными параметрами.
Дальше платформа автоматически вызывает метод СкомпоноватьРезультат(), и происходит событие отчета ПриКомпоновкеРезультата. Отчет
компонуется и выводится пользователю.
Запустим «1С:Предприятие» и откроем наш отчет (рис. 2.80).
Как мы видим, отчет формируется сразу же при его открытии, и параметрам

Начало периода и Конец периода по умолчанию присвоены значения – начало

и конец месяца. Дальше пользователь может произвольно их менять и переформировывать отчет, пользуясь кнопкой Сформировать.

Глава 2. Примеры разработки отчетов

81

Рис. 2.80. Открытие отчетной формы

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

Рис. 2.81. Требуемый вид отчета

Создадим новый объект конфигурации Отчет и назовем его СборкаСистемныхБлоков. Откроем конструктор схемы компоновки данных и добавим
новый набор данных – запрос. Он будет назван по умолчанию НаборДанных1.
Откроем конструктор запроса. В качестве источника данных для запроса
выберем объектную таблицу регистра накопления СобранныеСБ. В список
полей перенесем поля из этой таблицы:
■ СБ,
■ Количество,

82

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

■ Стоимость,
■ Мастер,
■ Регистратор.
Поле Регистратор нам понадобится в качестве ссылки на документ СборкаКомпьютера, который произвел движения в регистре накопления СобранныеСБ,
чтобы установить связь со вторым набором данных. Перейдем на закладку
Условия, раскроем таблицу СобранныеСБ и перетащим мышью поле ВидДвижения в список условий. Оставим предложенное условие по умолчанию. Это
условие нам нужно, чтобы в отчете отражались данные из регистра с видом
движения Приход (рис. 2.82).

Рис. 2.82. Создание условия запроса

На закладке Объединения/Псевдонимы изменим имя у поля СБ на СистемныйБлок. Нажмем ОК и вернемся в конструктор схемы компоновки данных.

Таким образом, в этом наборе данных мы получим информацию о собранных
системных блоках, их количестве, стоимости, мастере, выполнившем сборку.
Но нам нужна еще другая, связанная с ней более детальная информация
из документов по сборке системных блоков. Есть несколько путей осуществления этой задачи, но мы будем получать эти данные из связанного набора
данных.
Добавим еще один набор данных – запрос. Он будет назван НаборДанных2.
Чтобы добавление стало доступным, нужно выделить корневой элемент
дерева наборов данных (рис. 2.83).

Рис. 2.83. Добавление нескольких наборов данных

Глава 2. Примеры разработки отчетов

83

В качестве источника данных для запроса выберем объектную таблицу документа СборкаКомпьютера. В список полей перенесем поля из этой таблицы:
■ Дата,
■ Номер,
■ Ссылка.
Поле Ссылка нам понадобится в качестве ссылки на регистр накопления
СобранныеСБ, чтобы установить связь с первым набором данных. Нажмем
ОК и вернемся в конструктор схемы компоновки данных.
С точки зрения эффективности исполнения отчета лучше получать в дочернем
наборе сразу только те записи, которые удовлетворяют условию связи наборов
данных. Для этого нужно указать в запросе дочернего набора параметр связи
и использовать его в схеме компоновки при описании связи (см. рис. 2.84).
Иначе в дочернем наборе будет получено много лишних записей, которые
затем будут откидываться как не удовлетворяющие условию связи.
В текст запроса добавим условие с параметром Ссылка, в который будет
помещено значение связи набора данных – источника. В результате набор
данных – приемник НаборДанных2 будет получать только те документы
СборкаКомпьютера, которые произвели движения в регистре накопления
СобранныеСБ (листинг 2.11).
Листинг 2.11. Текст запроса для получения набора данных «НаборДанных2»
ВЫБРАТЬ
СборкаКомпьютера.Дата,
СборкаКомпьютера.Номер,
СборкаКомпьютера.Ссылка
ИЗ
Документ.СборкаКомпьютера КАК СборкаКомпьютера
ГДЕ
СборкаКомпьютера.Ссылка В (&Ссылка)

Можно было создать это условие интерактивно, в конструкторе запроса,
аналогично тому, как это сделано для первого набора данных (см. рис. 2.82),
но здесь продемонстрирована возможность сделать это вручную в тексте
запроса.
Для большей наглядности назовем первый набор данных РегистрСБ, второй –
ДокументСБ. Чтобы ввести новое имя набора данных, можно дважды
щелкнуть мышью по его названию. Если в схеме компоновки данных присутствуют несколько наборов данных, то между ними требуется установить связь
(стр. 325).

84

Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных

На закладке Связи наборов данных добавим новую строку. В поле Источник
связи, то есть в качестве родительского набора данных, укажем РегистрСБ,
в поле Приемник связи, то есть в качестве зависимого набора данных, укажем
ДокументСБ. В поле Выражение источник выберем из полей родительского
набора поле Регистратор, а в поле Выражение приемник – поле зависимого
набора данных – Ссылка. В поле Параметр выберем из списка параметров
параметр Ссылка родительского набора данных, в котором будет храниться
значение связи (рис. 2.84).

Рис. 2.84. Создание связи наборов данных

Все связи, созданные в схеме компоновки данных, считаются Левыми внешними соединениями, то есть в отчет будут включены записи из обоих наборов
данных, удовлетворяющих условию связи Регистратор = Ссылка. Кроме
того, у родительского набора данных РегистрСБ будут отражаться в отчете
все записи, независимо от того, найден ли соответствующий им документ
в наборе данных ДокументСБ или нет. Поэтому при определении связей
наборов данных требуется внимательно обдумать вопрос, какой из наборов
данных будет родительским, а какой – зависимым.

Передача параметров в запрос набора данных
Перейдем на закладку Ресурсы и определим доступные поля ресурсов отчета
(стр. 370).

Рис. 2.85. Определение ресурсов отчета

Глава 2. Примеры разработки отчетов

85

На закладке Параметры (стр. 376) мы видим параметры компоновки данных,
созданные платформой (рис. 2.86).

Рис. 2.86. Параметры компоновки данных, созданные платформой

Параметру ВидДвижения по умолчанию установлен тип СистемныеПеречисления.ВидДвиженияНакопления, присвоено значение Приход,
и установлена его недоступность для пользователя. Также недоступен параметр Ссылка, который служит для получения значения связи наборов данных,
используемых в схеме компоновки данных отчета.
Это нас устраивает, но мы не видим здесь автоматически созданных параметров начала и конца периода, так как в обоих наборах данных мы
использовали объектные, а не виртуальные таблицы. В этом случае мы
должны явно задать эти параметры в запросе родительского набора данных.
Откроем конструктор запроса набора РегистрСБ и перейдем на закладку
Условия. Раскроем таблицу СобранныеСБ и перетащим в список условий
поле Период. Отметим, что условие является произвольным, и внесем в поле
Условие следующий текст (листинг 2.12).
Листинг 2.12. Условие запроса для параметра «НачалоПериода»
СобранныеСБ.Период >= &НачалоПериода

Аналогично добавим еще одно условие (листинг 2.13).
Листинг 2.13. Условие запроса для параметра «КонецПериода»
СобранныеСБ.Период