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