Почему новые объекты и реквизиты в расширении УТ 11.4 не видны в режиме Предприятие?

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

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

Проблема регистрации метаданных в БСП

Современные конфигурации, включая УТ 11, ERP и Комплексную автоматизацию, построены на базе БСП (Библиотеки стандартных подсистем). Это накладывает определенные ограничения на то, как система "видит" новые данные. Обычного добавления объекта в метаданные расширения недостаточно. Проанализируем ситуацию: система управления доступом в БСП опирается на справочники идентификаторов.

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

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


// Принудительное обновление идентификаторов объектов метаданных
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

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

Особенности настройки прав доступа в расширениях

Часто программисты пытаются решить проблему созданием новой роли внутри расширения. Однако, как показывает практика, новая роль в расширении не всегда подхватывается подсистемой управления доступом БСП автоматически. Проанализируем два подхода к решению проблемы прав:

  1. Заимствование существующей роли: Это самый быстрый и эффективный способ. Мы захватываем в расширение стандартную роль (например, ПолныеПрава или специализированную роль, назначенную пользователю) и в ней проставляем права на наши новые объекты. Как подтверждает опыт участников обсуждения, этот метод работает практически всегда.
  2. Создание новой роли в расширении: Если вы создаете абсолютно новую роль, ее необходимо не просто назначить пользователю, но и корректно внедрить в систему профилей групп доступа. В УТ 11 права настраиваются через Профили групп доступа. Если новая роль не добавлена в профиль, она не будет действовать, даже если флажок в конфигураторе стоит.

Проблема "исчезновения" реквизитов на форме

Рассмотрим очень интересный технический нюанс: реквизит, добавленный в расширение, доступен в процедуре ПриСозданииНаСервере, но пропадает в процедуре ПриОткрытии. Это кажется магией, но на самом деле имеет логическое объяснение.

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

Чтобы избежать этого, выполните следующие действия:

Алгоритм действий для гарантированного отображения объектов

Подводя итог, разберем по шагам правильный алгоритм добавления объектов в расширение УТ 11.4:

  1. Добавляем объект (справочник, документ) в расширение.
  2. Добавляем необходимые реквизиты.
  3. Захватываем (заимствуем) в расширение основную роль пользователя (например, ПолныеПрава).
  4. В этой заимствованной роли устанавливаем галочки прав на наши новые объекты и реквизиты.
  5. Снимаем в свойствах расширения флажок "Безопасный режим" (или настраиваем профили безопасности), так как в безопасном режиме работа с правами может быть ограничена.
  6. Запускаем базу. Если объекты не появились, запускаем обновление метаданных БСП через код: Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника().
  7. Перезапускаем сеанс пользователя.

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

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

← На главную