К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как добавить группировку в динамический список 1С

Как добавить группировку в динамический список 1С через конструктор запроса и СКД: настройка полей группировки, итогов, типичные ошибки и проверка результата.

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

Ключевой момент: если динамический список построен на произвольном запросе, группировку добавляют через настройки компоновки — закладку «Настройки» в свойствах реквизита формы. Для списков без произвольного запроса (основная таблица задана напрямую) доступна только пользовательская группировка через меню «Ещё — Настроить список» в режиме предприятия. Разница принципиальна: в первом случае разработчик задаёт группировку жёстко в конфигураторе, во втором её настраивает пользователь под себя.

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

Как устроена группировка в динамическом списке

Динамический список в управляемых формах работает на основе схемы компоновки данных. Даже если вы просто указали основную таблицу (например, «Документ.РеализацияТоваровУслуг»), платформа внутри формирует настройки СКД, в которых доступны отбор, сортировка, условное оформление и группировка. Поэтому группировка — это не свойство таблицы формы, а настройка самого динамического списка.

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

Важно понимать ограничение: группировка применяется к данным на уровне выборки, а не на уровне запроса. Это значит, что в базу уходит запрос на выборку детальных записей, а группирует их уже механизм компоновки. При больших объёмах данных это влияет на производительность, о чём подробнее ниже.

Добавление группировки в конфигураторе через настройки списка

Это основной способ для разработчика: группировка задаётся один раз и применяется у всех пользователей по умолчанию. Порядок действий одинаков для динамических списков с произвольным запросом и для списков, где задана основная таблица, если вы готовы перейти к ручной настройке.

Откройте форму списка в конфигураторе, найдите в дереве реквизитов формы реквизит типа «ДинамическийСписок» (обычно называется «Список») и откройте его свойства. Если флажок «ПроизвольныйЗапрос» не установлен, а группировку нужно задать жёстко, проще всего открыть закладку «Настройки» — она доступна в палитре свойств динамического списка рядом со свойством «Запрос».

На закладке «Настройки» работает тот же интерфейс, что и в конструкторе настроек СКД. В левой части выберите корневой элемент настроек, затем перейдите на закладку «Группировка» и нажмите «Добавить». В поле группировки укажите реквизит, по которому нужно сгруппировать записи — например, «Контрагент» или «Склад». Тип группировки оставьте «Элементы», если нужны просто группы, или «Иерархия», если поле само иерархическое (например, папки номенклатуры).

После добавления группировки внутрь неё автоматически вкладывается элемент «Авто» для выбранных полей — платформа сама подтянет доступные поля детальных записей. Сохраните форму и откройте список в режиме предприятия: записи должны отображаться сгруппированными, с возможностью сворачивания групп.

Группировка в конфигураторе: порядок действий
  1. 1
    Откройте форму списка и найдите реквизит типа ДинамическийСписок
  2. 2
    В палитре свойств откройте закладку Настройки
  3. 3
    Перейдите на закладку Группировка и нажмите Добавить
  4. 4
    Укажите поле группировки, например Контрагент
  5. 5
    Проверьте тип группировки: Элементы или Иерархия
  6. 6
    Обновите конфигурацию и откройте список в режиме предприятия

Произвольный запрос и группировка: что учесть

Если динамический список использует произвольный запрос, настройки компоновки становятся единственным способом управлять отбором, сортировкой и группировкой. При этом важно не путать группировку СКД с предложением ИТОГИ в тексте запроса: для динамического списка итоги запроса не работают так, как в отчёте, и группировать записи нужно именно настройками компоновки.

Проверьте, что поле, по которому вы группируете, реально присутствует в выборке запроса. Если поле «Контрагент» не выбрано в запросе, его не будет и в доступных полях настроек — конструктор просто не даст его выбрать. Добавьте поле в запрос, после чего оно появится в списке доступных полей на закладке «Группировка».

Ещё одна особенность: для произвольного запроса обязательно задайте ключевое поле (свойство «КлючевоеПоле», обычно «Ссылка»). Без корректного ключевого поля динамический список может вести себя непредсказуемо при группировке: дублировать строки, терять текущую позицию или не обновляться. Ключевое поле должно однозначно идентифицировать строку детальной выборки.

Пользовательская группировка в режиме предприятия

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

Пользовательская настройка сохраняется индивидуально для каждого пользователя и не влияет на остальных. Это удобно, когда разным сотрудникам нужны разные представления одного и того же списка: менеджер группирует заказы по клиентам, а руководитель — по статусам. Если настройка мешает, её всегда можно сбросить кнопкой «Установить стандартные настройки» в том же окне.

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

Итоги по группам и оформление

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

Проверьте, что поле действительно числовое и по нему осмысленно считать сумму. Итог по полю «Номер» или по строковому представлению не имеет смысла, а итог по «СуммаДокумента» при группировке по контрагентам — привычная и ожидаемая пользователем картина.

Дополнительно можно настроить условное оформление строк групп: выделить цветом группы с нулевыми итогами, изменить шрифт заголовков групп. Это делается на закладке «Условное оформление» тех же настроек компоновки и не требует программирования.

Контрольные точки

Как проверить результат

Отображение списка
Норма

Записи объединены в сворачиваемые группы с именем поля группировки

Тревожный признак

Список остался плоским — группировка не добавлена или отключена

Поле группировки
Норма

Поле есть в выборке запроса и в доступных полях настроек

Тревожный признак

Поля нет в списке доступных — его нужно добавить в запрос

Итоги по группам
Норма

В строках групп выводятся суммы по числовым полям

Тревожный признак

Итоги пустые — поле не отмечено как ресурс или нечисловое

Обновление списка
Норма

При изменении данных группы пересчитываются корректно

Тревожный признак

Дубли строк или потеря позиции — проверьте ключевое поле списка

Ограничения и производительность

Группировка динамического списка — удобный, но не бесплатный механизм. Платформа выбирает детальные записи и строит по ним иерархию, поэтому на больших таблицах (сотни тысяч записей и более) список с группировкой может открываться заметно медленнее, чем плоский. Особенно тяжёлый случай — группировка по полю через точку, например «Контрагент.Регион»: выборка требует соединений, а группировка — дополнительной обработки.

Если список большой и группировка обязательна, ограничьте выборку отбором по умолчанию: период, организация, склад. Отбор уменьшает объём данных ещё на стороне СУБД, и группировка выполняется над меньшим набором записей. Также избегайте группировки одновременно с отображением большого числа колонок — каждая колонка добавляет данных в выборку.

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

Типичные ошибки и их устранение

Самая частая проблема — группировка добавлена, но список остался плоским. Причины: группировка добавлена не в корневой элемент настроек, а во вложенную ветку; у элемента группировки снят флажок использования; пользовательские настройки перекрывают настройки конфигуратора. Проверьте флажок слева от группировки и сбросьте пользовательские настройки списка.

Вторая типичная ситуация — после включения группировки перестала работать стандартная команда изменения элемента или позиционирование на текущей строке. Обычно виновато незаполненное ключевое поле произвольного запроса. Укажите в свойстве «КлючевоеПоле» уникальное поле выборки, чаще всего «Ссылка».

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

Типичные ошибки
01
Группировка добавлена, но флажок использования снят — список остаётся плоским
02
Поле группировки отсутствует в выборке запроса — его нельзя выбрать в настройках
03
Не задано ключевое поле произвольного запроса — дубли строк и потеря позиции курсора
04
Использование ИТОГИ ПО в запросе вместо настроек СКД — группировка на форме не появляется
05
Группировка без отбора на огромной таблице — форма открывается слишком долго

FAQ: частые вопросы о группировке динамического списка

Можно ли добавить группировку программно, из кода формы?

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

Почему пользователь не видит кнопку «Настроить список»?

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

Как сгруппировать по периоду — например, по месяцам даты документа?

Добавьте в запрос вычисляемое поле с нужным периодом (начало месяца даты) и группируйте по нему. Группировка напрямую по полю «Дата» даст группу на каждое уникальное значение даты со временем, что практически бесполезно. Вычисляемое поле периода решает задачу корректно.

Можно ли вывести несколько уровней группировки?

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

Группировка сломалась после обновления конфигурации. Что делать?

Чаще всего причина в сохранённых пользовательских настройках, которые конфликтуют с новыми настройками формы. Откройте «Настроить список» и выполните «Установить стандартные настройки». Если не помогло — проверьте, не переименовано ли поле группировки в запросе: настройки ссылаются на поля по именам, и переименование разрывает связь.

Чем группировка списка отличается от отчёта на СКД?

Отчёт формируется по команде и показывает статичный результат, а динамический список живёт постоянно: обновляется при изменении данных и позволяет открывать и редактировать объекты прямо из групп. Если нужна только аналитика без редактирования — сделайте отчёт; если рабочее место с оперативными данными — динамический список с группировкой.

Итог

Что важно запомнить

Группировка динамического списка настраивается через закладку Настройки — Группировка в свойствах списка или пользователем через «Ещё — Настроить список». Поле группировки должно присутствовать в выборке запроса, ключевое поле — задано, а на больших таблицах группировку обязательно сочетайте с отбором. Итоги запроса для отображения групп не используются — только настройки компоновки.