1с создание сводной таблицы

Обновлено: 04.07.2024

Программная настройка сводной таблицы

В данном разделе рассказывается, каким образом, при помощи встроенного языка 1С:Предприятие, можно настроить начальное отображение сводной таблицы.

Установка источника данных сводной таблицы

Сводная таблица позволяет работать с объектами ПостроительОтчета и РезультатЗапроса . Для того чтобы сводная таблица начала работать с данными объектами, достаточно установить объект в свойство сводной таблицы ИсточникДанных .

Пример установки построителя отчета в качестве источника сводной таблицы:

Установка в качестве источника данных результата запроса выполняется аналогичным способом.

Заполнение сводной таблицы

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

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

В данном примере, в строки сводной таблицы помещается поле "Номенклатура", а в колонки - поле "Контрагент".

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

В данном примере сводной таблице сообщается, что в ней необходимо отображать ресурсы "Количество" и "Сумма".

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

В данном примере ресурсы будут располагаться вертикально.

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

В данном примере, в сводной таблице данные по номенклатуре будут отображаться отдельно для ресурсов "Количество" и "Сумма".

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

В данном примере сводной таблице сказано, что необходимо дополнительно отображать реквизит "Номенклатура.Код".

Заметим, что при изменении состава коллекций Строки , Колонки , Данные , Реквизиты , сводная таблица автоматически заполняет содержимое табличного документа, в котором она расположена.

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

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

Программная настройка сводной таблицы

В данном разделе рассказывается, каким образом, при помощи встроенного языка 1С:Предприятие, можно настроить начальное отображение сводной таблицы.

Установка источника данных сводной таблицы

Сводная таблица позволяет работать с объектами ПостроительОтчета и РезультатЗапроса . Для того чтобы сводная таблица начала работать с данными объектами, достаточно установить объект в свойство сводной таблицы ИсточникДанных .

Пример установки построителя отчета в качестве источника сводной таблицы:

Установка в качестве источника данных результата запроса выполняется аналогичным способом.

Заполнение сводной таблицы

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

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

В данном примере, в строки сводной таблицы помещается поле "Номенклатура", а в колонки - поле "Контрагент".

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

В данном примере сводной таблице сообщается, что в ней необходимо отображать ресурсы "Количество" и "Сумма".

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

В данном примере ресурсы будут располагаться вертикально.

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

В данном примере, в сводной таблице данные по номенклатуре будут отображаться отдельно для ресурсов "Количество" и "Сумма".

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

В данном примере сводной таблице сказано, что необходимо дополнительно отображать реквизит "Номенклатура.Код".

Заметим, что при изменении состава коллекций Строки , Колонки , Данные , Реквизиты , сводная таблица автоматически заполняет содержимое табличного документа, в котором она расположена.

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

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

Значения измерений отображаются в шапке или боковике, а ячейки области данных содержат сводную информацию на пересечении данных измерений. Пользователь имеет возможность методом перетаскивания (drag-n-D_rop) добавить или удалить измерения и ресурсы, поменять их расположение.

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

Если какое-то значение измерения является группировкой, то дважды щелкнув на нем, пользователь может развернуть или свернуть эту группировку. Глубина вложенности группировок неограниченна.


Формирование сводных таблиц
Всегда нужно помнить, что сводная таблица размещается в табличном документе. Добавить ее в табличный документ можно интерактивно или программно. Чтобы вставить сводную таблицу в макет в режиме "Конфигуратор" нужно установить курсор на ячейку макета и выбрать пункт меню "Таблица => Встроенные таблицы => Вставить сводную таблицу". Сводную таблицу можно также добавить в табличный документ программно, как, например, в следующем фрагменте:
Код 1C v 8.х

Чтобы обратиться к сводной таблице средствами встроенного языка, нужно воспользоваться свойством-коллекцией "ВстроенныеТаблицы" объекта "ТабличныйДокумент", например:
Код 1C v 8.х
Самое главное свойство сводной таблицы — это свойство "ИсточникДанных", которое принимает значения типа "РезультатЗапроса" или "ПостроительОтчета". Это свойство определяет, откуда сводная таблица будет брать данные для отображения. Итоги запроса становятся ресурсами (отображаются в области данных), а группировочные поля, по которым они подсчитываются, становятся измерениями.

Следующий фрагмент программы был использован для формирования приведенной выше сводной таблицы:
Код 1C v 8.х


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

Следующий фрагмент включает измерение "Номенклатура" (по строкам), измерение "ПодразделениеКомпании" (по колонкам) и ресурс "СуммаПродажи" (область данных):
Код 1C v 8.х

Здесь мы воспользовались следующими свойствами-коллекциями объекта "СводнаяТаблица":
Поля - Коллекция всех доступных полей сводной таблицы, включая все измерения и ресурсы (в том числе выключенные). Эта коллекция заполняется при назначении источника данных на основе итогов в запросе. Функции из предложения ИТОГИ становятся ресурсами, а группировочные поля, по которым они подсчитываются, становятся измерениями.Используя свойства объекта "ПолеСводнойТаблицы" можно определить тип поля (измерение или ресурс), тип значения (объект "ОписаниеТипов"), прочитать или установить количество открытых уровней.
Строки - Коллекция отображаемых полей сводной таблицы, расположенных в строках (сверху вниз).
Колонки - Коллекция отображаемых полей сводной таблицы, расположенных в колонках (слева направо).
Данные - Коллекция отображаемых полей сводной таблицы, расположенных в области данных.

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

Следующие свойства позволяют управлять внешним видом сводной таблицы:
- ОтображатьПодписиИтогов (отображать строку типа "Отдел розничной торговли Итог")
- ПоложениеИтоговСтрок (сверху или снизу)
- ПоложениеИтоговКолонок (слева или справа)
- Автофиксация (фиксация названий строк и колонок при прокрутке)

Последняя группа свойств, которую мы рассмотрим, позволяет обращаться к областям сводной таблицы. Они содержат объекты типа "ОбластьЯчеекТабличногоДокумента", через которые можно управлять форматированием этих областей:
Область - Область табличного документа, в которой располагается сводная таблица.
ОбластьДанных - Область ячеек табличного документа, в которой располагаются данные сводной таблицы, т.е. ресурсы.
ОбластьЗаголовковКолонок - Область ячеек табличного документа, в которой располагаются заголовки колонок.
ОбластьЗаголовковСтрок - Область ячеек табличного документа, в которой располагаются заголовки строк.

Рассмотрим и последний метод объекта "СводнаяТаблица" — это метод ПолучитьЗначения. Данный метод принимает в качестве параметра область ячеек, а возвращает структуру, содержащую данные сводной таблицы, расположенные в этой области, например:
Код 1C v 8.х
При этом ключи структуры будут содержать имена полей (измерений и ресурсов), а значения структуры — значения измерений и ресурсов.

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

///////////////////////////////////////////////////////////////////////
// ТЗ - обрабатываемая таблица //
// Строки - Колонка для представления ее значений в виде строк //
// Колонки - Колонка для представления ее значений в виде столбцов //
// Значения - Колонка, вычисляемая на пересечении строк и столбцов //
///////////////////////////////////////////////////////////////////////
//Функция преобразует таблицу значений подобно функции в Экселе //
///////////////////////////////////////////////////////////////////////

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Нюанс - значения колонки, указаные в параметре "Колонки" должны соответствовать требованиям для именования колонок (изв. за тавталогию). :D Спасибо за внимательность brr(2). Строка ТЗ_Колонок.ВыбратьСтроки(); оказалась лишней и была удалена. Не надо пользоваться Загрузить.. это гораздо медленнее, чем Выгрузить.

+4 Не надо присоединять колонки к НЕ пустой ТЗ и потом удалять строки, нужно наоборот.

ЗЫ: ну и мини-пример работы функции просто необходим, а то влом смотреть сам код, чтоб понять, что нужно передать в параметры Строки/Колонки/Значения..

После изучения алгоритма, делаем вывод: Строки,Колонки,Значения - идентификаторы 3-х колонок таблицы ТЗ.
Далее: сомнительная конструкция СокрЛП(Строка(ТЗ_Колонок.ПолучитьЗначение(Стр,Колонки)))
В общем случае получим строку с пробелами (недопустимо для идентификаторов колонок)
В идеальном случае, на выходе получим шахматку, если на входе ТЗ с тремя колонками.
Где приближение к Ексель?
Резюме: алгоритм несовершенен. Попробовал адаптировать для работы с перечислением колонок и строк через:

Пришел к выводу, что логику формирования итоговой таблицы надо реализовывать с нуля, т.е. согласен с (6).

Просмотры 18860

Загрузки 0

Рейтинг 12

Создание 08.06.10 06:12

Обновление 09.06.10 00:00

№ Публикации 71502

Тип файла Нет файла

Конфигурация Конфигурации 1cv7

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Не указано

54-ФЗ: Онлайн-кассы для 1С 7.7 (с поддержкой маркировки ЕГАИС, ТАБАКА, ОБУВИ, ЛЕКАРСТВ и пр.)

См. также

27.01.2016 85840 Serginio 116

Расчет страховых взносов в 1С 7.7 "Учет и отчетность предпринимателя, ред. 1.2" с апреля 2020

В этой статье описано, какие небольшие изменения можно внести в модуль документа Начисление налогов с ФОТ, чтобы правильно рассчитывались страховые взносы с 1 апреля 2020 г.

09.04.2020 13900 Юджин58 39

Раздел 9 декларации по НДС за 1 квартал 2019

Ошибка при формировании Раздела 9 декларации по НДС в 1С к.к. 7.70.577.

12.04.2019 7561 eroma 12

Заполнение реквизитов документов из предыдущего документа

Функция для автоматического заполнения реквизитов документов.

04.02.2019 5632 drevilo 2

1С:Предприятие 7.7. Оптимизация. Промо

Разгоняем 1С:Предприятие 7.7. Выжимаем последние соки.

31.01.2009 49399 alexk-is 110

Доначисление страховых взносов на обязательное страхование от НС и ПЗ в Бухгалтерии 7.7 и УСН 7.7 для Договора подряда

Во всех источниках, которые мне встречались, написано, что Страховые взносы НС и ПФ нужно начислять, если это указано в Договоре подряда.

06.09.2017 10526 pentanom 0

Проверка часового пояса

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016 11549 kudenzov 3

[ПОЛЕЗНЯШКА, 7.7] Как посчитать итоги по документам черным запросом с изподвывертом?

Мелкая полезняшка, считает запросом итоговую сумму документов и количество документов.

12.03.2016 20274 CheBurator 18

Как уменьшить количество заблокированных объектов Промо

История о том как я решил пересобрать форму справочника клиентов и чем это все закончилось.

12.01.2012 15782 ShEvOvIcH 18

09.03.2016 33554 Serginio 22

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015 17865 etmarket 14

12.11.2015 48159 Serginio 36

Технология обновления нетиповых конфигураций 1С:Предприятия 7.7 Промо

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

12.12.2008 64153 alexk-is 25

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

Читайте также: