Отчеты и Аналитика · 10 мин
СКД в 1С: автозаполнение полей и как добавить новое поле
Как работает автозаполнение полей в СКД 1С, как добавить поле в набор данных, ресурсы и вычисляемые поля, типичные ошибки и проверка результата.
Автозаполнение в СКД (системе компоновки данных) — это механизм, который сам формирует список доступных полей отчёта на основе набора данных. Когда флажок «Автозаполнение» включён на закладке «Настройки», компоновщик берёт поля из запроса и автоматически создаёт для них элементы выбранных полей, ресурсов и порядка. Это удобно для быстрого старта, но часто становится источником путаницы: разработчик добавляет поле в запрос, а в отчёте оно не появляется, или наоборот — лишние поля мешают настроить структуру.
Добавить поле в отчёт на СКД можно несколькими путями: через текст запроса набора данных, через вычисляемые поля, через ресурсы и через закладку «Наборы данных» с ручным описанием полей. Выбор способа зависит от того, откуда берутся данные и нужно ли поле вычислять формулой. Ниже разобраны все варианты с точными действиями в конструкторе схемы компоновки.
Материал ориентирован на работу в конфигураторе 1С:Предприятие 8.3 с управляемыми формами, но логика СКД одинакова и для обычных форм. Предполагается, что отчёт уже создан и открыт конструктор схемы компоновки данных.
Как работает автозаполнение полей в СКД
Флажок «Автозаполнение» находится на закладке «Настройки» схемы компоновки, рядом с деревом настроек. Когда он установлен, СКД при каждой загрузке схемы пересматривает список доступных полей и сама заполняет выбранные поля, ресурсы, группировки и порядок. Пользователь в режиме предприятия видит эти поля без дополнительной настройки.
Ключевой момент: автозаполнение берёт поля не «из воздуха», а из описания наборов данных. Источником служит либо список полей запроса (если набор построен на запросе), либо вручную заполненная таблица «Поля» на закладке «Наборы данных» (для объектов и объединений). Поэтому первый шаг при добавлении поля — всегда проверить, есть ли оно в наборе данных.
Автозаполнение удобно отключать, когда структура отчёта уже настроена и не должна меняться при доработке запроса. Иначе каждое новое поле запроса будет «выползать» в отчёт, ломая привычный вид для пользователей. Отключение флажка не удаляет уже настроенные элементы — оно лишь прекращает автоматическое дополнение.
Добавление поля через запрос набора данных
Самый частый сценарий — поле берётся из базы данных через запрос. Откройте схему компоновки, перейдите на закладку «Наборы данных» и откройте конструктор запроса (кнопка «Конструктор запроса» или прямое редактирование текста). Добавьте нужное поле в секцию выборки, например реквизит документа или регистра.
После закрытия конструктора СКД обновит список полей набора. Если запрос редактировался вручную, убедитесь, что у поля корректный псевдоним — именно псевдоним станет именем поля в компоновке. Например, строка «Продажи.СуммаОборот КАК Сумма» создаст поле «Сумма», доступное в настройках отчёта.
- 1Откройте отчёт в конфигураторе, перейдите к основной схеме компоновки данных
- 2На закладке «Наборы данных» откройте конструктор запроса
- 3Добавьте нужное поле в список выборки, задайте понятный псевдоним
- 4Нажмите «ОК» и проверьте, что поле появилось в списке полей набора
- 5На закладке «Настройки» убедитесь, что поле доступно и добавлено в выбранные поля
- 6Сохраните схему и запустите отчёт в режиме предприятия
Если поле добавлено в запрос, но в списке доступных полей не видно, чаще всего помогает кнопка обновления схемы или повторное открытие конструктора. Реже причина в том, что запрос содержит ошибку и СКД не смогла разобрать его поля — тогда при открытии конструктора появится сообщение об ошибке, которое нужно устранить первым делом.
Вычисляемые поля: когда запроса недостаточно
Вычисляемые поля нужны, когда значение не хранится в базе, а рассчитывается по формуле из других полей: процент от суммы, разница между датами, конкатенация строк. Они добавляются на закладке «Вычисляемые поля» схемы компоновки.
Для создания поля нажмите «Добавить», укажите путь к данным (имя, под которым поле будет видно в отчёте), заголовок и выражение. Выражение пишется на языке выражений СКД, который похож на язык запросов, но поддерживает собственные функции. Например, выражение для наценки может выглядеть как деление разницы цены и себестоимости на себестоимость.
Важное ограничение: вычисляемое поле не участвует в итогах по ресурсам автоматически. Если нужно, чтобы по нему считались итоги, поле дополнительно добавляют в ресурсы с выражением агрегации — например, «Сумма(Наценка)» или «Среднее(Наценка)». Без этого в группировках и общем итоге колонка останется пустой.
Ресурсы и роль полей в итогах
Ресурсы — это поля, по которым СКД рассчитывает итоги в группировках. На закладке «Ресурсы» перечисляются числовые поля с выражениями агрегации: Сумма, Количество, Максимум, Минимум, Среднее. Если добавленное поле должно показывать итоги, его обязательно нужно включить в ресурсы.
Типичная ситуация: поле «Сумма» добавлено в запрос и отображается в детальных записях, но в итогах по группировке стоит пусто. Причина — поле не является ресурсом. Решение: на закладке «Ресурсы» добавить строку с полем «Сумма» и выражением «Сумма(Сумма)».
Способы добавить поле
Подходит для данных из базы. Ограничение: поле должно существовать в источнике или вычисляться средствами языка запросов.
Подходит для формул над другими полями. Ограничение: не участвует в итогах без добавления в ресурсы.
Подходит для наборов-объектов и объединений, где список полей задаётся вручную на закладке «Наборы данных».
Добавление поля в настройки отчёта вручную
Когда автозаполнение отключено, поле нужно добавить в структуру отчёта самостоятельно. На закладке «Настройки» выберите нужный уровень: весь отчёт, группировку или таблицу. На вкладке «Выбранные поля» нажмите «Добавить» и выберите поле из списка доступных. Если поля нет в списке — оно отсутствует в наборе данных или вычисляемых полях, возвращайтесь к предыдущим разделам.
Порядок полей в списке выбранных определяет порядок колонок в отчёте. Перемещайте элементы кнопками «Вверх» и «Вниз» или перетаскиванием. Для группировок действует правило: выбранные поля группировки наследуются от родительского уровня, если у группировки включено автозаполнение, либо задаются отдельно.
Для таблиц и диаграмм поля распределяются по строкам и колонкам. Здесь важно, чтобы числовые ресурсы попали в область данных таблицы, а измерения — в строки и колонки. Ошибка в распределении приводит к пустой таблице или к дублированию колонок.
Как проверить результат
Поле видно в дереве доступных полей на закладке «Настройки»
Поля нет — оно не добавлено в запрос или вычисляемые поля
Колонка заполнена данными в строках отчёта
Колонка пустая — ошибка в выражении или нет данных в источнике
В группировках и общем итоге считаются суммы
Итоги пустые — поле не добавлено в ресурсы
Типичные ошибки и ограничения
Самая распространённая ошибка — добавить поле в запрос и забыть, что автозаполнение отключено. Поле есть в данных, но не выводится, потому что никто не добавил его в выбранные поля. Вторая по частоте — конфликт имён: поле с таким именем уже существует в другом наборе данных при объединении, и СКД берёт не то значение.
При работе с несколькими наборами данных помните о связях: поле из дочернего набора доступно только при корректно настроенной связи наборов на закладке «Связи наборов данных». Если связь не задана или задана неверно, поле либо пустое, либо отчёт выдаёт задвоенные строки из-за декартова произведения.
Ограничение вычисляемых полей: в выражении нельзя обращаться к агрегатным функциям других ресурсов напрямую. Для расчётов «итог от итога» используют выражения ресурсов или пользовательские поля. Также вычисляемые поля не участвуют в отборах на уровне запроса — фильтрация по ним выполняется уже после получения данных, что может замедлять большие отчёты.
Проверка результата и безопасная доработка
После добавления поля проверьте отчёт в три этапа. Сначала откройте схему и убедитесь, что поле есть в списке доступных. Затем сформируйте отчёт в режиме предприятия и посмотрите детальные записи. Наконец, сверните данные в группировку и проверьте итоги. Только прохождение всех трёх проверок гарантирует, что поле работает полностью.
Перед изменением схемы типового отчёта в конфигурации на поддержке снимите копию или используйте расширение конфигурации. Прямая правка типового отчёта усложнит обновления: при очередном обновлении конфигурации ваши изменения могут быть затёрты. Внешний отчёт или расширение — безопасный путь для доработок.
FAQ
Почему поле есть в запросе, но не видно в настройках отчёта?
Проверьте три причины: запрос содержит синтаксическую ошибку (СКД не смогла разобрать поля), поле добавлено в набор, но схема не была пересохранена, либо вы смотрите настройки группировки, у которой список доступных полей ограничен связью наборов. Откройте конструктор запроса — если он ругается, исправьте текст запроса.
Как добавить поле, которого нет в базе данных?
Используйте вычисляемое поле на закладке «Вычисляемые поля»: задайте имя, заголовок и выражение на языке выражений СКД. Если значение должно участвовать в итогах, дополнительно добавьте поле в ресурсы с агрегатной функцией.
Что делать, если при включённом автозаполнении появляются лишние поля?
Снимите флажок «Автозаполнение» на закладке «Настройки» и вручную оставьте в выбранных полях только нужные. Автозаполнение удобно на этапе разработки, но для готового отчёта структуру лучше зафиксировать.
Почему по новому полю не считаются итоги?
Поле не включено в ресурсы. Откройте закладку «Ресурсы», добавьте строку с этим полем и укажите выражение агрегации, например Сумма(ИмяПоля). Без ресурса СКД выводит значения только в детальных записях.
Можно ли добавить поле в отчёт программно, без конструктора?
Да, через объектную модель СКД: получить схему, найти набор данных, добавить поле в коллекцию полей, затем программно настроить выбранные поля компоновщика настроек. Это используется в расширениях и при динамическом формировании отчётов, но требует аккуратности с типами полей.
Поле добавлено, но в отчёте пустые значения. В чём причина?
Чаще всего в источнике нет данных по условиям отбора, либо поле берётся из связанного набора с неверно настроенной связью. Проверьте запрос в консоли запросов с теми же параметрами и убедитесь, что связи наборов данных заданы по корректным полям.
Что важно запомнить
Новое поле в отчёте СКД появляется из трёх источников: запроса набора данных, вычисляемых полей и ручного описания полей набора. Автозаполнение лишь подхватывает эти поля в настройки. Для итогов поле обязательно добавляйте в ресурсы, а готовую структуру отчёта фиксируйте, отключая автозаполнение.