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

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

В процессе разработки отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются с ситуацией, когда стандартные поля метаданных ведут себя непредсказуемо. Типичный пример — работа в конфигурациях уровня 1С:ERP, Комплексная автоматизация или Управление торговлей 11, где логика отображения данных тесно завязана на функциональные опции. Разберем ситуацию, когда функциональная опция Использовать партнеров и контрагентов отключена, и нам необходимо вывести поле Контрагент в отборы отчета, но система упорно подставляет технический заголовок Ссылка.

Почему СКД заменяет имя поля на Ссылка

Проанализируем причину такого поведения системы. Когда в настройках конфигурации отключена определенная функциональная опция, связанные с ней поля в типовых объектах (например, в документе ЗаказКлиента) становятся невидимыми для механизмов платформы на уровне метаданных. Если мы пытаемся «обойти» это ограничение, присоединяя справочник Контрагенты через ЛЕВОЕ СОЕДИНЕНИЕ в тексте запроса СКД, система видит это поле как простую ссылку на объект. Поскольку связь с метаданными через функциональную опцию разорвана, СКД не подтягивает стандартный синоним и заменяет его системным наименованием Ссылка.

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

Способ 1: Изменение заголовка в наборе данных

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

  1. Откроем схему компоновки данных и перейдем на вкладку Наборы данных.
  2. Найдем наше поле, полученное в результате соединения (например, КонтрагентСсылка или Контрагенты.Ссылка).
  3. В колонке Заголовок (Title) вручную впишем текст Контрагент.
  4. Важный момент: проверьте, чтобы в колонке Путь было указано понятное имя без точек, если это возможно, например, просто Контрагент.

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

Способ 2: Настройка свойств пользовательских настроек

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

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

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

Способ 3: Явное указание типа значения

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

Чтобы восстановить корректный интерфейс выбора в отборе, выполним следующие шаги:

  1. В наборе данных СКД найдем наше поле.
  2. В колонке Тип значения нажмем на кнопку выбора.
  3. Снимем галочку «Составной тип данных» (если она не нужна) и выберем конкретный тип: СправочникСсылка.Контрагенты.

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

Способ 4: Использование параметров вместо отборов

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

Посмотрим на пример реализации такого подхода в тексте запроса:


ВЫБРАТЬ
    ЗаказКлиента.Ссылка КАК Заказ,
    ЗаказКлиента.СуммаДокумента КАК Сумма,
    Контрагенты.Ссылка КАК Контрагент
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
        ПО ЗаказКлиента.Контрагент = Контрагенты.Ссылка
ГДЕ
    (&КонтрагентОтбор = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
        ИЛИ Контрагенты.Ссылка = &КонтрагентОтбор)

Для реализации этого метода выполним действия:

  1. На вкладке Параметры создадим параметр КонтрагентОтбор.
  2. Укажем для него тип СправочникСсылка.Контрагенты.
  3. Зададим понятный заголовок — Контрагент.
  4. Включим его в Пользовательские настройки.

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

Способ 5: Влияние режима Автозаполнение

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

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

Подводя итог, отметим, что наиболее эффективным и «чистым» методом является сочетание Способа 1 (Заголовок в наборе данных) и Способа 3 (Явное указание типа). Это позволяет сохранить стандартный механизм отборов СКД, обеспечив при этом дружелюбный интерфейс для конечного пользователя.

← На главную