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

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

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

Анализ проблемы и симптомов

Представим ситуацию: мы используем типовую конфигурацию (например, Розница 2.2) на платформе версии 8.3.12. Нам необходимо добавить дополнительную информацию к справочнику Физлица. Мы создаем расширение, заимствуем справочник и добавляем в него новую табличную часть. Однако при попытке построить отчет или выполнить запрос в консоли мы обнаруживаем, что у одного справочника (например, Контрагенты) добавленная ТЧ видна, а у другого (Физлица) — нет.

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

Решение 1: Проверка и настройка прав доступа в расширении

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

Разберем по шагам, как правильно настроить права:

  1. Откроем наше расширение в конфигураторе.
  2. Создадим в расширении новый объект типа Роль (например, с именем ДополнительныеПраваРасширения).
  3. В окне редактирования роли найдем наш заимствованный справочник (например, ФизическиеЛица) и добавленную к нему табличную часть.
  4. Важно: установим флажки Чтение и Просмотр как для самого справочника (в контексте расширения), так и для всех его новых реквизитов и табличных частей.
  5. Сохраним расширение и обновим конфигурацию базы данных.
  6. В режиме "Предприятие" зайдем в настройки пользователей и добавим созданную роль нужному пользователю (через профили групп доступа или напрямую).

После этого платформа должна позволить механизму запросов "увидеть" новые структуры данных.

Решение 2: Особенности режима совместимости и версии платформы

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

Если режим совместимости установлен ниже 8.3.11, многие возможности по расширению данных (включая добавление ТЧ) могут работать нестабильно. В таких случаях конструктор запросов в режиме "Предприятие" может игнорировать изменения. Рассмотрим, что можно сделать:

Решение 3: Очистка кэша и принудительное обновление метаданных

Иногда причина кроется в агрессивном кэшировании. Система может помнить структуру справочника ФизическиеЛица такой, какой она была до подключения расширения. Посмотрим на пример действий для "сброса" состояния:

  1. Попробуйте изменить версию расширения в его свойствах (например, с 1.0.0.1 на 1.0.0.2). Это заставляет платформу пересчитать хэш-сумму метаданных при запуске сеанса.
  2. Выполните очистку серверного кэша (для клиент-серверного варианта) и локального кэша пользователя.
  3. В некоторых случаях помогает удаление объекта из расширения и его повторное заимствование. При заимствовании убедитесь, что вы не просто переносите ссылку на объект, а позволяете расширению "понимать" структуру родителя.

Решение 4: Обходной путь (изменение основной конфигурации)

Если вышеописанные методы не помогают (что часто случается на платформе 8.3.12 из-за внутренних ошибок релиза), следует рассмотреть альтернативный вариант, который гарантирует 100% результат. Этот метод заключается в комбинированном подходе: данные храним в основной конфигурации, а логику выносим в расширение.

Выполним следующие шаги:

  1. Добавим необходимую табличную часть непосредственно в справочник в основной конфигурации. Это гарантирует, что СхемаКомпоновкиДанных и любые консоли запросов увидят структуру данных без проблем.
  2. В расширении заимствуем форму этого справочника.
  3. Средствами расширения выведем добавленную ТЧ на форму, настроим видимость и логику работы с ней.

Этот подход ("курочить конфигурацию", как выразились коллеги на форуме) менее изящен с точки зрения идеологии расширений, но он является самым надежным в условиях работы на специфических версиях платформы или в сложных типовых решениях (например, Розница 2.2 с БТСС).

Специфика работы конструктора запросов

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

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

← На главную