Как в СКД настроить выбор договора в зависимости от выбранного контрагента

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Разбираем механизм «Связи параметров выбора»

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

Предположим, в вашем отчете определены два параметра: Контрагент (тип СправочникСсылка.Контрагенты) и Договор (тип СправочникСсылка.ДоговорыКонтрагентов). По умолчанию при выборе договора пользователь увидит полный список всех договоров всех контрагентов, что крайне неудобно. Чтобы исправить это, проделаем следующие шаги:

  1. Откроем конструктор схемы компоновки данных и перейдем на вкладку Параметры.
  2. Найдем в списке параметров Договор.
  3. В строке этого параметра найдем колонку Связи параметров выбора. Если вы не видите эту колонку, нажмите правой кнопкой мыши на шапку таблицы параметров, выберите пункт «Установить видимость» и отметьте соответствующий флажок.
  4. Нажмем на кнопку выбора в этой колонке. Перед нами откроется окно настройки связей.

В открывшемся окне нам необходимо добавить новую связь. Давайте проанализируем настройки этой связи:

Использование дополнительных фильтров через «Параметры выбора»

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

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

В этом окне мы можем задать, например:

Система объединит эти фиксированные параметры с динамической связью по владельцу, и пользователь получит идеально отфильтрованный список.

Особенности реализации в управляемых формах

Проанализируем, как эти настройки ведут себя в современных конфигурациях на управляемых формах (таких как УТ 11, БП 3.0 или ERP). Платформа 1С выполняет огромную работу в фоновом режиме:

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

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

Проблемы с обновлением настроек

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

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

Альтернативный метод: Использование выражений

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

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

← На главную