Как добавить новое поле в отбор отчета на СКД и почему оно может не отображаться?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

Часто при доработке типовых отчетов в 1С возникает задача добавить новое поле не только в результат, но и в панель фильтров (отборов). Однако после добавления поля в запрос схемы компоновки данных (СКД) оно не всегда автоматически появляется в настройках. Разберем по шагам, как правильно добавить поле в отбор и что делать, если оно все равно не отображается на форме отчета.

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

Этап 1: Настройка схемы компоновки данных (СКД)

Самая распространенная ошибка — считать, что простого добавления поля в список ВЫБРАТЬ в тексте запроса достаточно. Система компоновки данных должна "знать", как именно вы планируете использовать это поле. Для этого существуют специальные настройки в конструкторе запроса.

Рассмотрим по шагам, как указать, что поле должно быть доступно для отбора:

  1. Откройте схему компоновки данных вашего отчета в конфигураторе.
  2. Перейдите на вкладку "Наборы данных" и откройте конструктор запроса (или используйте внешнее решение, такое как Управляемая консоль запросов, отчетов).
  3. После того как вы добавили поле в запрос, перейдите на вкладку "Компоновка данных" внутри конструктора запроса. Для детального изучения реквизитов пригодится Анализ структуры метаданных.
  4. Найдите в списке полей ваше новое поле (в нашем примере — "Склад").
  5. Обратите внимание на колонки с флажками. Нас интересует колонка "Отбор". Установите в ней флажок для вашего поля. Это действие явно указывает системе, что данное поле может быть использовано в качестве фильтра. Также в СКД существует возможность скрыть столбцы, когда нет данных.

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

После выполнения этих действий поле должно появиться в списке доступных полей на вкладке "Настройки" в разделе "Отбор" в самой схеме компоновки данных.

Этап 2: Поле есть в настройках СКД, но его нет на форме отчета

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

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

Решение А: Сброс пользовательских настроек

Самый простой способ "подтянуть" изменения из СКД на форму — это сбросить сохраненные настройки отчета. Сделать это можно прямо в пользовательском режиме.

  1. Откройте отчет в режиме 1С:Предприятие.
  2. Найдите меню "Еще" (обычно находится в правом верхнем углу формы).
  3. В выпадающем меню выберите пункт "Прочие" -> "Удалить настройки отчета" или "Изменить вариант" -> "Еще" -> "Установить стандартные настройки". Названия могут незначительно отличаться в зависимости от конфигурации, но суть одна — вернуть отчет к первоначальному состоянию, заложенному в конфигурации.

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

Иногда помогает простой трюк — переименование объекта метаданных отчета в конфигураторе. Поскольку настройки часто привязаны к имени, система не найдет старых настроек для "нового" отчета и сформирует их с нуля.

Этап 3: Фильтра нет на форме даже после сброса (продвинутый случай)

Что делать, если вы сбросили настройки, но поле все равно не появилось в быстрых отборах на форме? Это часто случается в сложных типовых отчетах (например, в 1С:Бухгалтерия 3.0), где разработчики создают кастомизированную форму для удобства пользователя.

Проанализируем ситуацию:

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

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

  1. Проверьте полную форму настроек. Сначала убедитесь, что ваше поле в принципе доступно. Нажмите на форме отчета кнопку "Настройки". Должна открыться расширенная форма настроек отчета с видом "Расширенный". Перейдите на вкладку "Отбор". Скорее всего, ваше поле "Склад" будет доступно для добавления в список отборов именно здесь. Если это так, значит СКД настроена верно, и проблема только в отображении на основной форме.
  2. Доработайте управляемую форму. Если вы хотите, чтобы фильтр по складу был виден на основной форме отчета в качестве "быстрого отбора", потребуется доработка в конфигураторе:
    • Откройте форму отчета.
    • Добавьте на нее новый элемент управления, например, ПолеВвода. В его свойствах укажите тип данных, соответствующий вашему полю (например, СправочникСсылка.Склады).
    • Перейдите в модуль формы. Найдите код, который обрабатывает изменение других быстрых отборов (например, процедуру ПриИзменении для поля "Организация").
    • По аналогии напишите код, который будет при изменении значения в вашем новом поле на форме устанавливать или обновлять соответствующий элемент отбора в компоновщике настроек отчета (КомпоновщикНастроек.Настройки.Отбор).

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

← На главную