При разработке в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда новые объекты метаданных, добавленные через механизм расширений, ведут себя непредсказуемо. Одной из самых неприятных проблем является "невидимость" новой табличной части (ТЧ) справочника или документа в схеме компоновки данных (СКД) или консоли запросов в режиме "Предприятие". Рассмотрим подробнее, почему это происходит и как решить данную задачу, основываясь на практическом опыте коллег и особенностях платформы.
Представим ситуацию: мы используем типовую конфигурацию (например, Розница 2.2) на платформе версии 8.3.12. Нам необходимо добавить дополнительную информацию к справочнику Физлица. Мы создаем расширение, заимствуем справочник и добавляем в него новую табличную часть. Однако при попытке построить отчет или выполнить запрос в консоли мы обнаруживаем, что у одного справочника (например, Контрагенты) добавленная ТЧ видна, а у другого (Физлица) — нет.
Выясним причину такого поведения. Платформа 1С работает с расширениями на нескольких уровнях: физическом (создание таблиц в СУБД) и логическом (описание метаданных для механизмов СКД и запросов). Если на логическом уровне происходит сбой, механизм СхемаКомпоновкиДанных просто не получает информацию о существовании новых полей.
Самая распространенная причина, по которой объекты расширения не видны в режиме "Предприятие" — это отсутствие прав доступа. Проанализируем этот момент: даже если у пользователя назначена роль ПолныеПрава в основной конфигурации, она ничего не знает о новых объектах, созданных в расширении.
Разберем по шагам, как правильно настроить права:
Роль (например, с именем ДополнительныеПраваРасширения).ФизическиеЛица) и добавленную к нему табличную часть.Чтение и Просмотр как для самого справочника (в контексте расширения), так и для всех его новых реквизитов и табличных частей.После этого платформа должна позволить механизму запросов "увидеть" новые структуры данных.
Проанализируем технические нюансы платформы 8.3.12. В старых релизах (до 8.3.14) работа с метаданными в расширениях была сопряжена с рядом багов. Если ваше решение не отображается в СКД, стоит проверить РежимСовместимости основной конфигурации.
Если режим совместимости установлен ниже 8.3.11, многие возможности по расширению данных (включая добавление ТЧ) могут работать нестабильно. В таких случаях конструктор запросов в режиме "Предприятие" может игнорировать изменения. Рассмотрим, что можно сделать:
8.3.15 и выше), так как именно в этих версиях была проведена большая работа над стабильностью метаданных расширений.Иногда причина кроется в агрессивном кэшировании. Система может помнить структуру справочника ФизическиеЛица такой, какой она была до подключения расширения. Посмотрим на пример действий для "сброса" состояния:
1.0.0.1 на 1.0.0.2). Это заставляет платформу пересчитать хэш-сумму метаданных при запуске сеанса.Если вышеописанные методы не помогают (что часто случается на платформе 8.3.12 из-за внутренних ошибок релиза), следует рассмотреть альтернативный вариант, который гарантирует 100% результат. Этот метод заключается в комбинированном подходе: данные храним в основной конфигурации, а логику выносим в расширение.
Выполним следующие шаги:
СхемаКомпоновкиДанных и любые консоли запросов увидят структуру данных без проблем.Этот подход ("курочить конфигурацию", как выразились коллеги на форуме) менее изящен с точки зрения идеологии расширений, но он является самым надежным в условиях работы на специфических версиях платформы или в сложных типовых решениях (например, Розница 2.2 с БТСС).
Стоит отметить, что стандартные консоли запросов, написанные много лет назад, могут использовать методы встроенного языка, которые не учитывают динамическое изменение метаданных. Если вы столкнулись с такой проблемой, попробуйте использовать современные инструменты (например, консоль из состава "Инструментов разработчика"), которые напрямую работают с объектом Запрос и его конструктором, более корректно обрабатывающим расширения.
Подводя итог, можно сказать: если ТЧ не видна — сначала проверяем Роли в расширении, затем Режим совместимости, и если ничего не помогает — переносим структуру данных в основную конфигурацию, оставляя расширению только интерфейсную часть.