В данном разделе рассказывается, каким образом, при помощи встроенного языка 1С:Предприятие, можно настроить начальное отображение сводной таблицы.
Сводная таблица позволяет работать с объектами ПостроительОтчета и РезультатЗапроса. Для того чтобы сводная таблица начала работать с данными объектами, достаточно установить объект в свойство сводной таблицы ИсточникДанных.
Пример установки построителя отчета в качестве источника сводной таблицы:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].ИсточникДанных = ПостроительОтчетаОтчет;
Установка в качестве источника данных результата запроса выполняется аналогичным способом.
Для того чтобы пользователь при открытии отчета сразу получал заполненную таблицу, следует при открытии отчета заполнить оси сводной таблицы.
Для того чтобы поместить некоторое измерение в строки таблицы, следует поместить поле, соответствующее измерению в коллекцию полей Строки. Для того чтобы разместить некоторое измерение в колонках, необходимо поместить соответствующее поле в коллекцию Колонки.
Пример:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить("Номенклатура"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Колонки.Добавить("Контрагент");
В данном примере, в строки сводной таблицы помещается поле "Номенклатура", а в колонки - поле "Контрагент".
Контрагент | ||
Номенклатура | Поставщики | Покупатели |
Клавиатура Keyboard PS/2 | ||
Программное обеспечение | ||
Услуги | ||
Клавиатуры | ||
Принтеры | ||
Мониторы | ||
Мыши | ||
Ноутбуки | ||
Системные блоки и комплектующие |
Для того чтобы сводная таблица отображала ресурсы, необходимо добавить соответствующие поля в коллекцию Данные.
Пример:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Количество"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Сумма");
В данном примере сводной таблице сообщается, что в ней необходимо отображать ресурсы "Количество" и "Сумма".
Контрагент | Данные | |||||
Поставщики | Покупатели | Количество Итог | Сумма Итог | |||
Номенклатура | Количество | Сумма | Количество | Сумма | ||
Клавиатура Keyboard PS/2 | 2 | 6 | 100 077 | 500 377,5 | 100 079 | 500 383,5 |
Программное обеспечение | 59 | 9 155 | 59 | 9 155 | ||
Услуги | 52 | 400 | 52 | 400 | ||
Клавиатуры | 4 | 13 | 203 | 6 485 | 207 | 6 498 |
Принтеры | 73 | 45 918 | 73 | 45 918 | ||
Мониторы | 6 | 1 229 | 85 | 36 527 | 91 | 37 756 |
Мыши | 6 | 7,1 | 387 | 507,7 | 393 | 514,8 |
Ноутбуки | 14 | 21 686 | 14 | 21 686 | ||
Системные блоки и комплектующие | 6 | 8 064 | 59 | 98 185 | 65 | 106 249 |
Итог | 24 | 9 319,1 | 101 009 | 719 241,2 | 101 033 | 728 560,3 |
При необходимости размещения ресурсов по горизонтали, следует поместить в коллекцию Строки коллекцию Данные.
Пример:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить(ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные);
В данном примере ресурсы будут располагаться вертикально.
Контрагент | ||||
Номенклатура | Данные | Поставщики | Покупатели | Итог |
Клавиатура Keyboard PS/2 | Количество | 2 | 100 077 | 100 079 |
Сумма | 6 | 500 377,5 | 500 383,5 | |
Программное обеспечение | Количество | 59 | 59 | |
Сумма | 9 155 | 9 155 | ||
Услуги | Количество | 52 | 52 | |
Сумма | 400 | 400 | ||
Клавиатуры | Количество | 4 | 203 | 207 |
Сумма | 13 | 6 485 | 6 498 | |
Принтеры | Количество | 73 | 73 | |
Сумма | 45 918 | 45 918 | ||
Мониторы | Количество | 6 | 85 | 91 |
Сумма | 1 229 | 36 527 | 37 756 | |
Мыши | Количество | 6 | 387 | 393 |
Сумма | 7,1 | 507,7 | 514,8 | |
Ноутбуки | Количество | 14 | 14 | |
Сумма | 21 686 | 21 686 | ||
Системные блоки и комплектующие | Количество | 6 | 59 | 65 |
Сумма | 8 064 | 98 185 | 106 249 | |
Количество Итог | 24 | 101 009 | 101 033 | |
Сумма Итог | 9 319,1 | 719 241,2 | 728 560,3 |
При необходимости отображения данных по измерениям для каждого ресурса по отдельности, следует помещать коллекцию Данные в коллекцию Строки или коллекцию Колонки перед измерениями, которые требуется отображать отдельно для каждого ресурса.
Пример:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Количество"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Сумма"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить(ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить("Номенклатура");
В данном примере, в сводной таблице данные по номенклатуре будут отображаться отдельно для ресурсов "Количество" и "Сумма".
Контрагент | ||||
Данные | Номенклатура | Поставщики | Покупатели | Итог |
Количество | Клавиатура Keyboard PS/2 | 2 | 100 077 | 100 079 |
Программное обеспечение | 59 | 59 | ||
Услуги | 52 | 52 | ||
Клавиатуры | 4 | 203 | 207 | |
Принтеры | 73 | 73 | ||
Мониторы | 6 | 85 | 91 | |
Мыши | 6 | 387 | 393 | |
Ноутбуки | 14 | 14 | ||
Системные блоки и комплектующие | 6 | 59 | 65 | |
Сумма | Клавиатура Keyboard PS/2 | 6 | 500 377,5 | 500 383,5 |
Программное обеспечение | 9 155 | 9 155 | ||
Услуги | 400 | 400 | ||
Клавиатуры | 13 | 6 485 | 6 498 | |
Принтеры | 45 918 | 45 918 | ||
Мониторы | 1 229 | 36 527 | 37 756 | |
Мыши | 7,1 | 507,7 | 514,8 | |
Ноутбуки | 21 686 | 21 686 | ||
Системные блоки и комплектующие | 8 064 | 98 185 | 106 249 | |
Количество Итог | 24 | 101 009 | 101 033 | |
Сумма Итог | 9 319,1 | 719 241,2 | 728 560,3 |
В случае если источник данных содержит описание реквизитов измерений, возможно программное добавление данных полей в коллекцию Реквизиты.
Пример:
Копировать в буфер обменаЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить("Номенклатура"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Реквизиты.Добавить("Номенклатура.Код");
В данном примере сводной таблице сказано, что необходимо дополнительно отображать реквизит "Номенклатура.Код".
Контрагент | Данные | ||||||
Поставщики | Покупатели | Количество Итог | Сумма Итог | ||||
Номенклатура | Код | Количество | Сумма | Количество | Сумма | ||
Клавиатура Keyboard PS/2 | 00017 | 2 | 6 | 100 077 | 500 377,5 | 100 079 | 500 383,5 |
Программное обеспечение | 00007 | 59 | 9 155 | 59 | 9 155 | ||
Услуги | 00008 | 52 | 400 | 52 | 400 | ||
Клавиатуры | 00005 | 4 | 13 | 203 | 6 485 | 207 | 6 498 |
Принтеры | 00003 | 73 | 45 918 | 73 | 45 918 | ||
Мониторы | 00001 | 6 | 1 229 | 85 | 36 527 | 91 | 37 756 |
Мыши | 00004 | 6 | 7,1 | 387 | 507,7 | 393 | 514,8 |
Ноутбуки | 00033 | 14 | 21 686 | 14 | 21 686 | ||
Системные блоки и комплектующие | 00002 | 6 | 8 064 | 59 | 98 185 | 65 | 106 249 |
Итог | 24 | 9 319,1 | 101 009 | 719 241,2 | 101 033 | 728 560,3 |
Заметим, что при изменении состава коллекций Строки, Колонки, Данные, Реквизиты, сводная таблица автоматически заполняет содержимое табличного документа, в котором она расположена.
Для повышения производительности данных операций, следует перед заполнением настроек сводной таблицы запретить ее обновление, и разрешить обновление после заполнения настроек. При разрешении обновления сводной таблицы, в случае, если настройки сводной таблицы изменялись, содержимое сводной таблицы будет обновлено. Данная возможность реализуется при помощи свойства Обновление.
Пример:
Копировать в буфер обмена// Запретим обновление сводной таблицы ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Обновление = Ложь; // Заполним сводную таблицу ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Строки.Добавить("Номенклатура"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Реквизиты.Добавить("Номенклатура.Код"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Колонки.Добавить("Контрагент"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Количество"); ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Данные.Добавить("Сумма"); // Разрешим обновление сводной таблицы ЭлементыФормы.СводнаяТаблица.ВстроенныеТаблицы[0].Обновление = Истина;
В данном примере было осуществлено запрещение обновления и заполнение настроек, после чего обновление сводной таблицы было разрешено.