Почему реквизит Контрагент не появляется в структуре СКД в режиме 1С:Предприятие

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

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

Анализ текста запроса и схемы компоновки данных

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


ВЫБРАТЬ
    ЗаказКлиентаТовары.Ссылка КАК Ссылка,
    ЗаказКлиентаТовары.ДатаОтгрузки КАК ДатаОтгрузки,
    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
    ЗаказКлиентаТовары.Количество КАК Количество,
    ЗаказКлиентаТовары.Цена КАК Цена,
    ЗаказКлиентаТовары.Сумма КАК Сумма,
    ЗаказКлиентаТовары.Ссылка.Контрагент КАК Контрагент
{ВЫБРАТЬ
    Ссылка.*,
    ДатаОтгрузки,
    Номенклатура.*,
    Количество,
    Цена,
    Сумма,
    Контрагент.*}
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
    ЗаказКлиентаТовары.Ссылка.Проведен = ИСТИНА
    И ЗаказКлиентаТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
{ГДЕ
    ЗаказКлиентаТовары.Ссылка.*,
    ЗаказКлиентаТовары.ДатаОтгрузки,
    ЗаказКлиентаТовары.Номенклатура.*,
    ЗаказКлиентаТовары.Количество,
    ЗаказКлиентаТовары.Цена,
    ЗаказКлиентаТовары.Сумма,
    ЗаказКлиентаТовары.Ссылка.Контрагент.*}

В данном запросе мы видим использование фигурных скобок {}. Это расширение языка запросов для СКД. Поля внутри этих скобок становятся доступными для выбора пользователем в настройках отчета. Казалось бы, если Контрагент указан и в основном списке ВЫБРАТЬ, и в блоке расширения, он обязан появиться. Однако в 1С:Предприятии 8 существует механизм, который может «перекрыть» эти настройки на уровне ядра платформы.

Влияние функциональных опций на доступность полей

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

В случае с полем Контрагент ключевую роль играет функциональная опция «Независимо вести партнеров и контрагентов». Проанализируем архитектурную логику 1С:

  1. Партнер — это управленческая сущность (холдинг, филиал, физическое лицо).
  2. Контрагент — это юридическая сущность (реквизиты организации, ИНН, КПП).

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

Как решить проблему: пошаговая инструкция

Рассмотрим порядок действий для восстановления видимости поля Контрагент в вашем отчете.

Шаг 1. Проверка функциональной опции.

Перейдите в режим «1С:Предприятие» под правами администратора. Откройте раздел НСИ и администрирование -> Настройка НСИ и разделов -> CRM и маркетинг. Найдите флаг «Независимо вести партнеров и контрагентов». Если он выключен — установите его. Именно это действие зачастую является «магическим решением», после которого поле появляется в структуре СКД.

Шаг 2. Сброс настроек отчета.

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

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

Шаг 3. Переименование варианта отчета.

Если сброс настроек не помог, попробуйте в Конфигураторе на закладке «Варианты отчета» изменить имя варианта (например, с Основной на Основной_Новый). Это гарантированно создаст «чистую» запись в системных таблицах настроек при следующем запуске отчета.

Технические нюансы обновления конфигурации

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

Посмотрим на пример того, как рекомендуется проектировать универсальные отчеты, чтобы они не зависели от этой настройки:

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

Итоги и рекомендации

Подводя итог нашему разбору, можно выделить основные правила работы с «исчезающими» полями в СКД:

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

← На главную